Java para desktop é perda de tempo?

[quote=Aldeir]Não podemos esquecer dos velhos aplicativos para frente de caixa, controle de estoque, etc
que dificilmente sairão do mercado.
Sistemas ERP’s, enfim varias aplicações ainda poderão continuar sendo desenvolvidas com Java para desktop.
[/quote]

Sistemas de automação comercial são difíceis de serem produzidos em Java, já que quase sempre é necessário comunicação via porta serial / porta paralela com dispositivos como leitora de código de barra, máquinas de frente de caixa etc. e o suporte a tais dispositivos é muito pobre em Java.
Sem falar que quando se precisa ter acesso à uma máquina de frente de caixa, como a da Bematech, é necessário fazer o uso de alguma DLL que não foi projetada para ser usada com Java e isso é uma fonte de dores de cabeça.

Sim, quanto a isso concordo com você. Citei apenas como exemplo.
Quanto aos equipamentos da Bematech, eles dão sim ferramentas de apoio, inclusive emuladores desses equipamentos, para você testar suas aplicações, mas concordo com a dor de cabeça.
Recentemente fiz uma aplicação para um cliente que queria usar para impressoras matriciais, foi um pé no saco, mas deu certo.

Talvez eu esteja puxando a sardinha para Java porque realmente adoro a linguagem, e não sou muito fã das tecnologias da Microsoft, como por exemplo a linguagem C#, mas concordo que também é uma linguagem espetacular.

Citei C# somente como comparativo.

[quote=Aldeir]Sim, quanto a isso concordo com você. Citei apenas como exemplo.
Quanto aos equipamentos da Bematech, eles dão sim ferramentas de apoio, inclusive emuladores desses equipamentos, para você testar suas aplicações, mas concordo com a dor de cabeça.
Recentemente fiz uma aplicação para um cliente que queria usar para impressoras matriciais, foi um pé no saco, mas deu certo.

Talvez eu esteja puxando a sardinha para Java porque realmente adoro a linguagem, e não sou muito fã das tecnologias da Microsoft, como por exemplo a linguagem C#, mas concordo que também é uma linguagem espetacular.

Citei C# somente como comparativo. [/quote]

Para sistemas corporativos java é uma ótima opção sim(tanto desktop como web). O debate do pessoal acima se refere ao cenário desktop em que você iterage entre várias aplicações simultâneamente. Isso fica ruim com java.

Imagina se o seu office, photoshop, media player, browser, gerenciador de arquivos fossem escritos em java? Ia precisar de um servidor para ser usado como máquina de usuário para rodar isso de maneira adequada(com fluidez).

Tem gente aí que fala que é preconceito. Isso não tem nada a ver. É só um caso de uso que a java(plataforma) não resolve o problema de maneira adequada.

Java é pesadão mesmo. Da mesma forma que a Microsoft não redesenvolveu o MS Office em .NET, apesar de no começo ter anunciado que faria isso. Lembro que os primeiros beta do Windows Vista tinha muita coisa em .NET e a cada novo beta o númeor de código .NET diminuiu. Isso foi muito discutido na época e a MS justificou que a plataforma ainda estava amadurecendo.

Eu mesmo fui programador de Delphi, VB5, VB6 e Visual C++ Builder (e antes disso de Clipper e Pascal, mas aí estamos indo longe demais o Tunel do Tempo).

[quote]Mas de qualquer forma, eu estava me referindo a velha discussão se vale a pena aprender programar para desktop. Para mim acho que software desktop não vai morrer tão cedo e ainda há um nicho de mercado ativo.
[/quote]

Com certeza. Eu mesmo estou no mercado desktop há muitos anos (se vcs não notaram, eu raramente apareço nos tópicos de desenvolvimento web), e não vejo ele desacelerar.
Aliás, até pelo contrário. A introdução do Metro e dos dispositivos móveis deu foi um boom no mercado (apps. para dispositivos móveis são aplicações desktop).
A web também abriu portas para a distribuição de aplicações, coisa que na época em que só havia apps desktop por aí, não tinhamos (você até podia fazer o software, mas muitas vezes jamais conseguiria distribui-lo para um grande mercado sem um publisher).

Há certas indústrias, como as de engenharia, onde sequer faz sentido falar em aplicações web. Aplicativos que são usados para controlar dispositivos ou tomar decisões em tempo real.
Sem falar nos aplicativos “de prateleira”, para o usuário de PC.

A grande vantagem é que as tecnologias Desktop e web estão se aproximando. No Windows 8, por exemplo, já vai ser possível programar usando HTML 5 e Javascript para criar suas telas. No caso do QT e do próprio JavaFX, linguagens como a QML e o Groovy tornam o código bastante declarativo, bem similar ao que um desenvolvedor web já encontra. Do outro lado, a web também torna-se cada vez mais responsiva, o javascript cada vez mais poderoso e mais e mais idiomas de desktop vão sendo incorporados as páginas.

[quote]Creio que grande parte dos problemas levantados em relação ao Java podem ser contornados ou não são significativos para grande parte das situações. Por exemplo, que mal tem utilizar um instalador para resolver questões de empacotamento e deploy?

É claro que nenhuma tecnologia é mágica e haverá situações específicas em que talvez o Java não seja a melhor escolha. Isso não é demérito da plataforma.
Bom, se Java não fosse viável para desktop o Netbeans e Eclipse não seriam escritos nessa linguagem, as maiores referências de softwares desktop desenvolvidos em Java.[/quote]

O Eclipse não é feito inteiramente na plataforma Java. Ele depende da SWT, que usa JNI. É claro que o SWT é confiável e maduro, mas não é Java padrão (não dá para usa-lo para defender a plataforma, pois roda fora da VM).
No caso, podemos citar como apps desktop o Netbeans, o MySQL Workbench e o Vuze. Ainda assim, dois deles são apps para desenvolvedores. Dá para contar no dedos quantos aplicativos desktop de mercado famosos usando somente a plataforma Java temos por aí (além do Vuze, alguém conhece mais algum?). Agora, não significa que seja impossível, ou mesmo inviável, desenvolver aplicações corporativas em Java desktop. Note que eu fui cuidadoso, desde o primeiro post, ao falar que estava falando do mercado de aplicações para consumidores, e não empresas.

Basta ver como exemplo softwares de SAP, que são em Java. Na Siemens mesmo, utilizei Java por vários anos com muito sucesso (embora tenha sofrido um pouco com a descontinuação repentina da javax.comm). Eu gosto de usar o Java para desktop em meus estudos também, como é o caso desse editor de imagens, que fiz para o mestrado.

Vale lembrar que, mesmo fora da plataforma Java, temos frameworks maduros e garantidos, como a SWT, RXTX, DirectShowJava, Javacv e a LWJGL. É através deles que surgiram não só o Eclipse, mas o Minecraft, Taikodom e outros aplicativos conhecidos. Não vejo problema em usa-los, pois são muito bons. Só estou gostaria de fazer aqui a diferenciação entre “conseguir fazer aplicações usando linguagens Java” e “defender o Java como plataforma para desktop”. Usando a linguagem Java, você consegue fazer muita coisa, pois pode recorrer a bindings como esses que rodam fora da plataforma e resolvem o problema. Já na plataforma java, mantida pela Oracle, e garantida em todas as VMs java padrão, a coisa aperta.

O fato é que, na minha opinião, os problemas, são sim, demérito para a plataforma (no quesito desktop). Eu acho engraçado que nós vivemos ouvindo no GUJ que “linguagens são ferramentas e o programador tem que se adaptar a cada caso”. Essa frase rola por aqui pelo menos uma vez por semana. Mas chega um tópico desses, onde o Java claramente não é a melhor ferramenta, e o pessoal defende a plataforma com unhas e dentes. É a mesma coisa em tópicos sobre games.

Se falarmos em defender a plataforma como um todo, as coisas são bem diferentes, por exemplo, ao fazer apps usando a plataforma Android, mesmo que usando linguagem Java.
Ele não só nasceu para isso, como a Google tomou bastante cuidado, associando poder, facilidade de implementação e conceitos modernos de programação desktop.

Como fã da linguagem, e da plataforma Java como um todo, é o que eu torço também. :)[/quote]

Vini… o Vuze usa SWT… Já teve outro tópico que falamos sobre apps. java e lembro de termos chegado a conclusão (pelo menos a maioria) que não existe nada muito grande desktop que seja tudo com a plataforma Java… e sim a maior parte das coisas grandes desktop estão na linguagem Java usando bind para outras coisas.

PS: Gostei do editor de imagem!

1 curtida