Java para desktop é perda de tempo?

Minha dúvida é basicamente essa. estudar essa linguagem para desenvolver apenas aplicações para desktop é perda de tempo?
na verdade, quero mais a opniao de voces. uma linguagem multiplataforma, funciona em dispositivos moveis, com uma grande robustes no desenvolvimento para web, até porque o mercado de trabalho voltado para java, a grande parte é para desenvolvimento para web.
claro que nenhum conhecimento adguirido é um desperdicio de tempo, mas tendo em vista que minha vontade é desenvolves sistemas para desktop seria interesante investir em outras linguagens que sejam menos voltada para web?

Gosto muito de Java. Muito mesmo.
Acho válido aprender a trabalhar um pouco com Swing, mas comercialmente acho que não vale a pena.

Java é para Web. Ponto.
Para desktop acredito que existam soluções muito melhores como o Qt (C++) e o C#.

[]'s

[quote=davidbuzatto]Gosto muito de Java. Muito mesmo.
Acho válido aprender a trabalhar um pouco com Swing, mas comercialmente acho que não vale a pena.

Java é para Web. Ponto.
Para desktop acredito que existam soluções muito melhores como o Qt (C++) e o C#.

[]'s[/quote]

Acredito que o número de aplicações para Web hoje sejam muito maiores. Mas ainda há empresas contratando programadores para Java Desktop. Em sites de Emprego relacionados a Java, sempre tem alguma coisa.

O mercado é muito variado, conheço empresas que tem projetos voltados mais para lado “desktop” da coisa mas que acabam dando mais ênfase em projetos web. Mas certamente aprender java desktop, já faz com que o programador fique com uma carga de conhecimentos java muito boa para engressar na parte web.

:slight_smile:

Depende… se você está falando do mercado desktop, o de aplicações que vão para o usuário final, tais como players de vídeo, browsers e game, sim é pura perda de tempo. Seria mais interessante investir seu tempo em plataformas que as empresas de desktop usam, no caso:

  • C++ e QT;
  • C++ e MFC;
  • C#

[quote=ViniGodoy]Depende… se você está falando do mercado desktop, o de aplicações que vão para o usuário final, tais como players de vídeo, browsers e game, sim é pura perda de tempo. Seria mais interessante investir seu tempo em plataformas que as empresas de desktop usam, no caso:

  • C++ e QT;
  • C++ e MFC;
  • C#

[/quote]

MFC ainda é usada em projetos novos? Ouvi dizer que é um parto trabalhar com ela.

A tendencia é ela sumir mesmo.

Especialmente depois do WinForms e do Win8.

Vlw pessoal. realmente sempre tive interesse na linguagem c++, mas na minha opinião, o maior problema da linguagem é a falta de conteúdo dela na web.
conheço um pouco de c# e acho bem interessante, fiz um teste pesquisando no google sobre baixar arquivos com c++, não encontrei, mas fazendo a mesma pesquisa para c# encontrei muito material, isso desânimo no aprendizado de qualquer coisa

[quote]Vlw pessoal. realmente sempre tive interesse na linguagem c++, mas na minha opinião, o maior problema da linguagem é a falta de conteúdo dela na web.
conheço um pouco de c# e acho bem interessante, fiz um teste pesquisando no google sobre baixar arquivos com c++, não encontrei, mas fazendo a mesma pesquisa para c# encontrei muito material, isso desânimo no aprendizado de qualquer coisa[/quote]

Desculpinha esfarrapada, hein?

Dica de materiais: http://pontov.com.br/site/cpp/46-conceitos-basicos/88-roadmap-c
Veja nos links, há um livro inteiro para iniciantes completamente gratuito.

Sobre o compilador, visual C++:
http://pontov.com.br/site/cpp/41-visual-c
http://msdn.microsoft.com/pt-br/library/60k1461a.aspx

Para um bom guia de referência:
http://www.cplusplus.com/reference/

Para material sobre QT:
http://qt.nokia.com/learning

Sobre a linguagem C:
http://pontov.com.br/site/cpp/61-aprendendo-o-c

E isso é só uma pequeníssima fração do conteúdo que existe na web.
Provavelmente, o C e o C++ estão entre as linguagens com maior conteúdo na internet.

O forte do Java é justamente a plataforma.
Invista no conhecimento da plataforma !

Vlw pessoal, agradeço mais uma vez pela ajuda.
vou estudar C++ a fundo, apesar de ainda achar sua sintax estranha, mas isso nao é problema, só uma questão de costume
vou estudar o básico pela internet depois comprar algum livro para iniciante
o que acho interessante também é o fato de poder escolher desenvolver com o C++ puro ou com o .Net, tornando depois o aprendizado de C# mais fácil que depois tornará o aprendizado em Java também mais fácil :stuck_out_tongue:
Mas se possível me tira uma dúvida, o Java vem se atualizado com o tempo, Java 1.4, 1.5, 1.6 etc, o .Net também, o C++ também vem se atualizado com o tempo?
ótimos link vinygodoy, dei uma olhada por alto, ótimo ponto de partida

Tanto o C++ quanto o C# estão se atualizando frequentemente.

Se há algo que é constante em informática é que as coisas ou se atualizam (e muito frequentemente) ou morrem.

Que eu saiba, nem o Java, nem o C# ou o C++ estão mortos.

Recentemente houve uma atualização grande na sintaxe do C++ (C++11, antigamente chamado de C++0X) que nem foi ainda completamente implementada, para ter uma idéia. O C++ não é mais aquele da edição 1 do livro do Stroustrup :slight_smile:

[quote=entanglement]Tanto o C++ quanto o C# estão se atualizando frequentemente.

Se há algo que é constante em informática é que as coisas ou se atualizam (e muito frequentemente) ou morrem.

Que eu saiba, nem o Java, nem o C# ou o C++ estão mortos.

Recentemente houve uma atualização grande na sintaxe do C++ (C++11, antigamente chamado de C++0X) que nem foi ainda completamente implementada, para ter uma idéia. O C++ não é mais aquele da edição 1 do livro do Stroustrup :)[/quote]

E nem o do deitel. Gosto dessa linguagem porque sempre existem novas especificações. É realmente muito flexível.

[quote=matheuslmota][quote=ViniGodoy]Depende… se você está falando do mercado desktop, o de aplicações que vão para o usuário final, tais como players de vídeo, browsers e game, sim é pura perda de tempo. Seria mais interessante investir seu tempo em plataformas que as empresas de desktop usam, no caso:

  • C++ e QT;
  • C++ e MFC;
  • C#

[/quote]

MFC ainda é usada em projetos novos? Ouvi dizer que é um parto trabalhar com ela.[/quote]

Ou as pessoas usam Qt (devido também ao fato de ser multiplataforma - portanto fica super-fácil escrever um programa desktop relativamente leve que funcione no Windows e no MacOSX e no Linux com uma base comum de código) ou então WinForms e Metro (Windows 8 ). Não é porque a Nokia (que era a dona do Qt) está indo para o buraco que você vai ficar sem pai nem mãe, já que a Nokia vendeu o negócio para a Digia, que parece bem melhor das pernas porque não depende de algum mal-humor do sr. Stephen Elop.

Eu já trabalhei com MFC tempo suficiente para saber que ela é muito complicada de se usar - uma coisa boboca como mudar a fonte de apenas um label em um form já é complicada demais para o meu gosto, a menos que você comece a usar forms HTML em programas MFC, deixando-os muito pesados. Além disso, como MFC depende muito de wizards, se você tiver cometido um erro bobo em um diálogo qualquer, o mais rápido é salvar o código dos eventos em algum lugar, matar a classe que representa o diálogo, e rodar o wizard tudo de novo. Argh argh argh.
EDIT - eu tinha me esquecido que não é necessário redesenhar a tela, apenas reassociar o resource com a classe refeita com o Wizard e reassociar os eventos - mesmo assim é um porre.

[quote=entanglement][quote=matheuslmota][quote=ViniGodoy]Depende… se você está falando do mercado desktop, o de aplicações que vão para o usuário final, tais como players de vídeo, browsers e game, sim é pura perda de tempo. Seria mais interessante investir seu tempo em plataformas que as empresas de desktop usam, no caso:

  • C++ e QT;
  • C++ e MFC;
  • C#

[/quote]

MFC ainda é usada em projetos novos? Ouvi dizer que é um parto trabalhar com ela.[/quote]

Ou as pessoas usam Qt (devido também ao fato de ser multiplataforma - portanto fica super-fácil escrever um programa desktop relativamente leve que funcione no Windows e no MacOSX e no Linux com uma base comum de código) ou então WinForms e Metro (Windows 8 ). Não é porque a Nokia (que era a dona do Qt) está indo para o buraco que você vai ficar sem pai nem mãe, já que a Nokia vendeu o negócio para a Digia, que parece bem melhor das pernas porque não depende de algum mal-humor do sr. Stephen Elop.

Eu já trabalhei com MFC tempo suficiente para saber que ela é muito complicada de se usar - uma coisa boboca como mudar a fonte de apenas um label em um form já é complicada demais para o meu gosto, a menos que você comece a usar forms HTML em programas MFC, deixando-os muito pesados. Além disso, como MFC depende muito de wizards, se você tiver cometido um erro bobo em um diálogo qualquer, o mais rápido é salvar o código dos eventos em algum lugar, matar a classe que representa o diálogo, e rodar o wizard (e desenhar a tela - argh) tudo de novo. Argh argh argh.
[/quote]

Eu já trabalhei com a MFC e você tem total razão. Esse Framework é uma bagunça total. Em contrapartida o qt segue totalmente Orientado a Objetos e utiliza MVC. O mecanismo mas prático que já vi para implementar o padrão Observer é o sistema de sinais e slots dele.

Só esclarecendo (pq meu post foi meio desleixado mesmo).

Citei a MFC pelos seguintes motivos:
a) É interessante conhecer a API do Windows, os padrões da Microsoft, e a bagunça que a MFC foi;
b) Se você está querendo se tornar um profissional do mercado desktop, provavelmente vai ter que manter sistemas feitos nisso.

Obviamente, não é para sair criando novos sistemas nisso. Com QT, hoje em dia, nem sequer isso faz sentido.

Até porque, pelo que me informei, após o Metro, o Windows não só trata uma nova interface gráfica, mas também uma nova API, mais simples de usar. Portanto, passa a ter cada vez menos sentido estudar MFC e os livros WinAPI do Petzold.

Amém, se depender de mim, nunca mais declaro um lpszNome.

Eu não tenho experiência desktop fora Swing mas Qt pelo que leio na internet também não é a bala de prata pra todas as situações não

Em muitos casos ele é igual ao Swing, adicionando overhead por não usar controles nativos e também não simulando perfeitamente a aparência nativa, fora o tamanho do .exe

Dúvida que isso afete? Tenta escrever um concorrente do uTorrent (superleve) com ele e faça as pessoas usarem. Tenta concorrer com apps nativas no Mac onde o pessoal é bitolado pela aparência nativa

O VLC, player de vídeo q eu uso é feito em Qt e eu odeio o tempo de carregamento dele, mas não sei se a culpa é do Qt

É obvio, não existe bala de prata.

O QT tem uma premissa forte, a de ser portável em muitas plataformas e isso obviamente vai contra o ideal do MicroTorrent.
Existem outras alternativas com outras premissas, e o que não falta no mundo C++ são escolhas.

Eu mesmo já fiz games usando APIs leves, como a SDL. Ou mesmo WinAPI + DirectX direto.

Você pode usar wxWidgets, GTK ou mesmo, fazer um app usando diretamente a API do sistema operacional.

Quanto a isso, o QT é infinitamente melhor que o Swing. As diferenças sempre foram pequenas e, nas últimas versões, isso melhorou bastante.

Não creio que seja por isso. Já fiz aplicativos QT que ficaram muito leves.
Outros aplicativos famosos como Virtual Box, Skype, Maya, Mathematica, Adobe Photoshop Elements, também são feitos em QT.

[quote=yschmitzz]Minha dúvida é basicamente essa. estudar essa linguagem para desenvolver apenas aplicações para desktop é perda de tempo?
na verdade, quero mais a opniao de voces. uma linguagem multiplataforma, funciona em dispositivos moveis, com uma grande robustes no desenvolvimento para web, até porque o mercado de trabalho voltado para java, a grande parte é para desenvolvimento para web.
claro que nenhum conhecimento adguirido é um desperdicio de tempo, mas tendo em vista que minha vontade é desenvolves sistemas para desktop seria interesante investir em outras linguagens que sejam menos voltada para web?[/quote]

Primeiro tem que definir o que significa “aplicação para desktop” : jogos ? editores ? front-ends para aplicações coorporativas ? pontos de venda (pdv) ? etc…

Para desktop , em java , o assunto é javaFX. Swing não é mais relevante. Vc teria que criar algo parecido ao Fx para aproveitar o swing (binding sobretudo).
Mas para jogos, por exemplo, isso é menos relevante e swing se resume a java2D em FX dá para fazer melhor com 3D e efeitos de iluminação.

Existem muitas aplicações java desktop emboras as mais famosas sejam o eclipse e o netbeans, existem editores de SQL por exemplo e players de musica. É que quando se usa swing o cara tem tendencia a fazer um UI que é feio , mas isso não é culpa do swing é culpa do artista. Java é tão capaz de criar UI atraentes como qualquer outra linguagem, mas com minimo esforço.

Para distribuição também é simples. Desde o tradicional instalador até jws tudo é válido, e até applets que se convertem em aplicações dektop.

Jogos é um campos mais lato e tlv ajam opções melhores dependendo do que vc quer fazer.

Se vc quer algo que funcione também em android ou iphone não ha nada por enquanto e a sua opção é programar nativamente nesses caras ou em html 5 usando canvas. Mas a Oracle está prometendo que o javaFX chegará a essas plataformas também … a ver vamos…

Para aplicações coorporativas o html é rei e frameworks como wicket, zk ou vaaddin podem ser mais produtivos e fornecer resultados visualmente atraentes. Mas tudo depende da aplicação.

Aprender java desktop não é perda de tempo até porque os frameworks web estão migrando para arquiteturas mais parecidas com desktop, e tudo o que vc pode fazer em web pode fazer em desktop. Imagine assim : fazer desktop é como criar seu proprio browser. mas continuará podendo usar web por baixo dos panos como REST por exemplo.

É tudo uma questão de arquitetura, design e constrangimentos. A principio tudo é possivel.
A questão é se compensa financeiramente.

Se vc fizer o proximo angry birsds em java, todos vão usar e não vai ser por ser em java que não vai ficar conhecido. Mas o produto tem que ser bom.
E fazer um bom produto tem a mesma dificuldade em qualquer linguagem.

[quote=victorcosta]Eu não tenho experiência desktop fora Swing mas Qt pelo que leio na internet também não é a bala de prata pra todas as situações não

Em muitos casos ele é igual ao Swing, adicionando overhead por não usar controles nativos e também não simulando perfeitamente a aparência nativa, fora o tamanho do .exe

Dúvida que isso afete? Tenta escrever um concorrente do uTorrent (superleve) com ele e faça as pessoas usarem. Tenta concorrer com apps nativas no Mac onde o pessoal é bitolado pela aparência nativa

O VLC, player de vídeo q eu uso é feito em Qt e eu odeio o tempo de carregamento dele, mas não sei se a culpa é do Qt[/quote]

Quanto aos wigets do qt e aparência nativa você tem razão, mas comparando com o swing o overhead dele é mínimo(para falar a verdade não dá para comparar). O kde é todo escrito nele e hoje é um dos desktops mais leves e com mais recursos para linux. O shell unity 2d do ubuntu é escrito nele.
O vlc junto com o mplayer são os players mais bem sucedidos do mundo opensource. A lentidão no carregamento é o tempo que ele leva para checar se hà updates. Os widgets são muito rápidos até porque o esquema de sinais e slots é o mais avançado dos toolkits gráficos.

http://doc.qt.nokia.com/4.7-snapshot/signalsandslots.html