Estou pensando em desenvolver uma aplicação com as seguintes caracteristicas:
Backend: Java
Frontend(Opção 1): JavaFX
Frontend(Opção 2): HTML5 + CSS3
Quero começar do jeito certo, internacionalizando a aplicação com resource bundle, etc, etc, etc. Porém, também quero que a minha aplicação rode via desktop, mas que seja acessível também via web.
Resumindo minha dúvida: Quais as ferramentas para se desenvolver uma aplicação Java que rode via Desktop e também via web? Meu backend muda ao desenvolver para um e para outro? ou apenas as interfaces? agradeço desde já.
Obs.: Ouvi falar em Java Web start, mas pelo que li ele projeta uma aplicação java desktop para a web, mas não faz o contrário.
Cara, você pode desenvolver sua aplicação java web como quiser (vraptor + html5 + css) e usar o electron para desktop.
O electron vai embarcar sua aplicação dentro de um navegador para rodar desktop.
Apenas uma ideia…
A x da questão não é ferramenta e sim arquitetura de software! Vc tem que fazer uma arquitetura que dar suporte a isso. Como seria?
Crie a arquitetura da sua solução, no qual vc consiga criar varias camadas de front-end em tecnologias e paradigmas diferentes reusando as mesmas camadas internas de serviço e negocio da solução. Eu tenho vários projetos assim, no qual tenha o mesmo sistema com Swing, JavaFX, Android, JSF e Rest tudo no mesmos sistema. Quando vc altera uma regra de negocio, vc altera todos os sistema ao mesmo tempo.
Se tiver interesse em curso, eu ensino tudo isso nesse curso - https://for-j.myedools.com/aqt-m1-introducao-a-arquitetura-de-software-com-java
Obrigado também @FernandoFranzini. Estou com sua pagina em meus favoritos e espero em breve poder realizar o curso. Conversei hoje com um amigo e grande desenvolvedor, e montei a seguinte estrutura de estudo para inserção no mercado de trabalho:
Consegui entender também que o Backend ideal trabalha para diversas front-end, e que não existe uma universal, e mesmo que seja possível, não é viavel comercialmente pois cada tela, seja ela mobile, desktop ou web, tem suas particularidades.
Já vi páginas espetaculares se reduzirem a projetos caseiros simplesmente por desenvolverem uma interface web sem considerar a estrutura de acesso via mobile. Facebook mesmo tem dificuldade em portabilizar recursos do browser desktop para browsers mobile, apesar dos esforços.
Acho que o que pude aprender nesta discussão foi que o modelo ideal de projeto deve contemplar um backend robusto com linguagem de programação e banco de dados(na maioria dos casos) e um front-end para cada tipo de cliente (web, desktop, mobile, até mesmo acesso via console lynx por exemplo).
Meu intuito como aspirante a “aspirante de programador”, é máximizar meu conhecimento em Java SE e java EE, e com isso virar um expert em desenvolvimento para multiplataformas.