Alguém aqui usa Java + Swing para fazer programas comerciais?

Tenho uma dúvida em relação ao uso de Java + Swing: hoje em dia é viável programar em Java comercialmente fazendo programas voltados ao desktop usando Swing?

Alguém aqui trabalha em alguma empresa nessa área :?:

[quote=ceklock]Tenho uma dúvida em relação ao uso de Java + Swing: hoje em dia é viável programar em Java comercialmente fazendo programas voltados ao desktop usando Swing?

Alguém aqui trabalha em alguma empresa nessa área :?:
[/quote]

Se vc tem profissionais habilitados na equipe a trabalhar com Java e o cliente não tem nada contra qual o problema?

O problema é que só se vê vagas para programação JavaEE. Nada contra, mas surgiu essa dúvida. Talvez com o Java 7 as pessoas achem o Java menos lento. O Java 6 já melhorou bastante esse aspecto, mas muita gente ainda fala da lentidão do Java. E de fato, muitos programas desktop feitos em Java demoram muito para inicializar.

[quote=ceklock]O problema é que só se vê vagas para programação JavaEE. Nada contra, mas surgiu essa dúvida. Talvez com o Java 7 as pessoas achem o Java menos lento. O Java 6 já melhorou bastante esse aspecto, mas muita gente ainda fala da lentidão do Java. E de fato, muitos programas desktop feitos em Java demoram muito para inicializar.
[/quote]

O grande problema do java no desktop é a pobre integração com o SO nativo e falta de profissionais dedicado a essa plataforma (comparado com outras tecnologias como Delphi e plataforma MS). Quanto a diferença de performance é praticamente insignificante na maioria das aplicacoes comerciais.

Eu uso Swing e acho o resultado satisfatório. O segredo penso eu está na sua arquitetura e na sua JTable.

É viável sim. O Swing é uma ferramenta confiável para o desenvolvimento de interfaces com o usuário. Desde que haja a separação correta entre a interface com o usuário, as regras de negócio e a persistência não há problema para o desenvolvimento de aplicativos comerciais sérios. Também, nada impede de utilizar juntamente as tecnologias JEE.

att.

Isto depende de uma série de fatores, como por exemplo uma aplicação que utiliza uma grande quantidade de recursos de banco de dados, ou uma arquitetura mau modelada. A quantidade de memória que a o java se usa no windows quando sua aplicação é executadao não muito diferente do que o .Net Framework tb utiliza.

Acontece que o java EE é o segmento java mais utilizado, pois é maduro e possui padrões em sua api que facilitam o desenvolvimento.

[quote=ceklock]O problema é que só se vê vagas para programação JavaEE. Nada contra, mas surgiu essa dúvida. Talvez com o Java 7 as pessoas achem o Java menos lento. O Java 6 já melhorou bastante esse aspecto, mas muita gente ainda fala da lentidão do Java. E de fato, muitos programas desktop feitos em Java demoram muito para inicializar.
[/quote]

Essa demora para inicializar não se deve ao java deve-se aos programadores.
Em desktop vc tem que saber muito mais sobre java e OO do que em EE ou web. Não dá para fazer desktop com um bando de juniors… alguem precisa ter feito antes e saber das armadilhas.
Desktop é muito menos trivial que web ou EE mas é muito mais rico , “podre de rico” como se diz hoje. Vc consegue fazer qq coisa que imaginar em termos de ui. O problema é que com a pouca qualidade dos programadores em geral e a falta de frameworks web, é muito mais dificil.

Em web vc já tem o browser que cuida de todos os eventos do usuário , em desktop vc tem que programar tudo isso do zero.

[quote=sergiotaborda][quote=ceklock]O problema é que só se vê vagas para programação JavaEE. Nada contra, mas surgiu essa dúvida. Talvez com o Java 7 as pessoas achem o Java menos lento. O Java 6 já melhorou bastante esse aspecto, mas muita gente ainda fala da lentidão do Java. E de fato, muitos programas desktop feitos em Java demoram muito para inicializar.
[/quote]

Essa demora para inicializar não se deve ao java deve-se aos programadores.
Em desktop vc tem que saber muito mais sobre java e OO do que em EE ou web. Não dá para fazer desktop com um bando de juniors… alguem precisa ter feito antes e saber das armadilhas.
Desktop é muito menos trivial que web ou EE mas é muito mais rico , “podre de rico” como se diz hoje. Vc consegue fazer qq coisa que imaginar em termos de ui. O problema é que com a pouca qualidade dos programadores em geral e a falta de frameworks web, é muito mais dificil.

Em web vc já tem o browser que cuida de todos os eventos do usuário , em desktop vc tem que programar tudo isso do zero.[/quote]

Concordo com o que o sérgio disse, e acrescento que com as máquinas de hoje e com melhorias como o compilador JIT o swing não perde em nada para linguagens “nativas” como delphi e afins, talvez o que deixa o swing com cara de malvado é o fato de sua curva de aprendizado ser muito maior em relação com as opções do mercado e isso querendo ou não desanima as pessoas que pensam em migrar.

Mais ou menos… As vezes pode ser culpa do programador sim, mas grandes programas feitos em Java, como o Netbeans por exemplo, costumam ter uma demora maior para inicializar do que programas pré-compilados. Essa demora deve-se ao fato de ter que carregar a maquina virtual e todas as classes do programa, e fazer a compilação Just In Time. Mas fora isso concordo que é tranquilo, só que essa demora na inicializacao de programas maiores as vezes faz as pessoas ficarem com a impressão de que o Java é lento (só pra deixar claro, nunca achei o Java lento, só to falando isso pq é o q muita gente fala e eu não concordo).

http://en.wikipedia.org/wiki/Just-in-time_compilation

Eu usava Swing para fazer sistemas na indústria. Como boa parte deles dava feedbacks em tempo real, seria pouquíssimo viável fazer em web.

Olá

Só uma observação porque li uma frase sobre JTable que me deixou horrorizado… se bem que em 1999/2000 participei de sistemas em Java que acessavam a base de dados diretamente via rede local.

Swing serve para sistemas desktop. Só que sistema desktop não tem nada a a ver com aqueles sisteminhas isolados que antigamente no milênio passado a gente fazia em Clipper, VB o Delphi.

Desde 2001 que todos que me conhecem sabem que se o chinês da pastelaria da esquina contratar alguém para fazer um sisteminha de fluxo de caixa, um dia o Seu Ling Ching vai querer viajar para China e consultar o sistema de lá.

Então o que sempre fiz em todos os sistemas Swing que partipei depois que a Sun lançou os servlets, eram sistemas com camada de apresentação Swing porém acessando um servidor via UrlConnection (ou com ajuda de HttpClient) e no servidor instalava a base de dados.

Resumindo…

Não programe em Java o que em Clipper, VB ou Delphi ficaria muito melhor. Aproveito o que o Java tem de bom é fácil e use protocolo http para se comunicar.

[]s
Luca

É verdade. Temos que saber separar as diferentes camadas da aplicação para poder migrar de Swing pra Web sem maiores problemas.

Swing é apenas uma camada de apresentação.

[quote=Luca]Olá

Só uma observação porque li uma frase sobre JTable que me deixou horrorizado… se bem que em 1999/2000 participei de sistemas em Java que acessavam a base de dados diretamente via rede local.

Swing serve para sistemas desktop. Só que sistema desktop não tem nada a a ver com aqueles sisteminhas isolados que antigamente no milênio passado a gente fazia em Clipper, VB o Delphi.

Desde 2001 que todos que me conhecem sabem que se o chinês da pastelaria da esquina contratar alguém para fazer um sisteminha de fluxo de caixa, um dia o Seu Ling Ching vai querer viajar para China e consultar o sistema de lá.

Então o que sempre fiz em todos os sistemas Swing que partipei depois que a Sun lançou os servlets, eram sistemas com camada de apresentação Swing porém acessando um servidor via UrlConnection (ou com ajuda de HttpClient) e no servidor instalava a base de dados.

Resumindo…

Não programe em Java o que em Clipper, VB ou Delphi ficaria muito melhor. Aproveito o que o Java tem de bom é fácil e use protocolo http para se comunicar.

[]s
Luca [/quote]

Mais ou menos… As vezes pode ser culpa do programador sim, mas grandes programas feitos em Java, como o Netbeans por exemplo, costumam ter uma demora maior para inicializar do que programas pré-compilados. Essa demora deve-se ao fato de ter que carregar a maquina virtual e todas as classes do programa, e fazer a compilação Just In Time. Mas fora isso concordo que é tranquilo, só que essa demora na inicializacao de programas maiores as vezes faz as pessoas ficarem com a impressão de que o Java é lento (só pra deixar claro, nunca achei o Java lento, só to falando isso pq é o q muita gente fala e eu não concordo).
[/quote]

O problema do NetBeans não é o swing e sim o sistema de plugins. É a inicilização dos plugins que demora , não o swing. O mesmo acontece com o Eclipse que é SWT (supostamente é “nativo”) . Acontece porque o eclipse tb tem plugins.

Além disso o JIT é feito em paralelo , não consome tempo da aplicação.

Bom, que demora alguns microsegundos a mais pra inicializar é um fato, mas um operador de caixa de supermercado ou de banco não precisa abrir o aplicativo a cada cliente da fila, logo esse argumento não faz sentido para a maioria dos casos onde uma aplicacao desktop seria utilizada.

Sim, desenvolver interfaces não é pra qualquer um. Se tudo que vc fez na sua vida foi programar para containers web ou servidores de aplicação onde é inclusive recomendado não criar threads, fique sabendo que aplicações desktop são inerentemente multi-threads. E ai é que separamos os homens dos meninos.

Mais ou menos… As vezes pode ser culpa do programador sim, mas grandes programas feitos em Java, como o Netbeans por exemplo, costumam ter uma demora maior para inicializar do que programas pré-compilados. Essa demora deve-se ao fato de ter que carregar a maquina virtual e todas as classes do programa, e fazer a compilação Just In Time. Mas fora isso concordo que é tranquilo, só que essa demora na inicializacao de programas maiores as vezes faz as pessoas ficarem com a impressão de que o Java é lento (só pra deixar claro, nunca achei o Java lento, só to falando isso pq é o q muita gente fala e eu não concordo).
[/quote]

O problema do NetBeans não é o swing e sim o sistema de plugins. É a inicilização dos plugins que demora , não o swing. O mesmo acontece com o Eclipse que é SWT (supostamente é “nativo”) . Acontece porque o eclipse tb tem plugins.

Além disso o JIT é feito em paralelo , não consome tempo da aplicação.

[/quote]

Não sei não. O Eclipse parece bem mais leve que o Netbeans.

Inerentemente multi-threads? O que você quer dizer com isso?

Saber otimizar o código para múltiplas threads é bom, mas não é absolutamente necessário em aplicações desktop.

Inerentemente multi-threads? O que você quer dizer com isso?

Saber otimizar o código para múltiplas threads é bom, mas não é absolutamente necessário em aplicações desktop.
[/quote]

vc já leu algum tutorial básico de swing ou precisou fazer alguma coisa alem de uma tela simples?

A primeira lição que se aprende é toda atualização de tela precisa ser feito de uma thread específica, isso sem falar se vc precisar exibir animações, conectar com banco de dados ou um webservice, ou ainda ler arquivos, sem travar a tela.

Bom, não sei o que vc chama de “otimizar código para múltiplas threads” mas sem saber threads vc não vai muito longe em swing e outros frameworks, como Cocoa no mac.

Uso Swing há muito tempo, e com exceção do SwingUtilities.invokeLater() e algumas poucas animações feitas com o uso de threads, eu praticamente não uso threads no código.

Prefiro usar apenas quando há real necessidade, pois isso faz o código ficar mais difícil de manter. E real necessidade é quando tem algum código pesado a ser processado, que pode demorar para o usuário receber uma resposta.

Ah é? Me mostre o link do tutorial da Sun aonde está escrito isso.