Ferramentas, frameworks para criação de Aplicação Desktop/Web

Pessoal… Estou pensando em fazer uma aplicação Desktop.

A mesma servirá para mecânicas. Portanto, ela será simples. A aplicação possuirá: telas de cadastros, telas de pesquisa, relatórios, agenda e impressão de nota fiscal.

Gostaria de saber então, a opinião de vocês caros amigos, quais ferramentas, frameworks, APIs, utilitários, para ter um melhor desempenho.

Lembrando-lhes, que a aplicação começará Desktop, e na medida que conseguir clientes, irei então, aplica-la na Web.

Desde já, agradeço a atenção de todos que contribuir aqui neste tópico.

Abraço.

Java Swing para Desktop
Primefaces ou ZK para WEB

Lembrando que nem toda mecânica tem internet no estabelecimento. Portando, minha opinião é que se concentre no Java Swing, MySql, Jasperreport com Irereport, IDE Netbeans ou Eclipse (para Java Swing prefiro o Netbeans) e MySql Workbench para mexer com o banco de dados.

Abs
Rodrigo

[quote=rsantik]Java Swing para Desktop
Primefaces ou ZK para WEB

Lembrando que nem toda mecânica tem internet no estabelecimento. Portando, minha opinião é que se concentre no Java Swing, MySql, Jasperreport com Irereport, IDE Netbeans ou Eclipse (para Java Swing prefiro o Netbeans) e MySql Workbench para mexer com o banco de dados.

Abs
Rodrigo[/quote]

Foi o mesmo que estava pensando em utilizar também… Swing, Jasper e MySql…

Valeu pela dica amigo, abraço.

Acho o JavaFX bem interessante e bem melhor que o Swing.

Tens como me citar, apenas alguns aspectos, em achar o JavaFX mais interessante que o swing?
Pois sou bem leigo no JavaFX…

Obrigado.

Atualmente tem sido feito um investimento em interface com usuário no Java, uma vez que esta havia sido deixado de lado durante algum tempo. A resposta da Oracle para isso é o Java FX.

O Java FX irá substituir o Swing como interface para usuário. Veja:
http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6

Na minha opinião algumas das vantagens do JavaFX é uma melhor separação das camadas, já que as telas podem ser escritas em FXML. Uma outra coisa legal é que a mesma aplicação pode rodar desktop e no browser.

Java FX = Flash = Silverlight

É um tiro no pé que a Oracle vai dar!

Eu ainda vou de Java Swing… Esse Java FX ta uma cara no mercado e até agora não pegou, foi um fracasso!!! O pessoal fazer um componentes de cadastro, uma coisa aqui ou ali, mas um sistema comercial… até agora não vi!

rsantik o JavaFX ficou muito tempo congelado, mais agora as coisas andam bem mais agitadas…

Inclusive a versão 2.1 já vem integrada ao Java 7.

Realmente é uma tecnologia bem nova, tem alguns riscos, mais a própria Oracle está dizendo que será o substituto do Swing, e como já vem integrado ao Java 7 não concordo com o “tiro no pé”.

Eu aconselho fortemente o uso de uma plataforma madura pra desenvolver um aplicativo Desktop. Gosto muito do Eclipse RCP e recomendo que você dê uma olhada.

Se quiser alguns exemplos de aplicativos feitos nela, procure pelo Xmind e RssOwl. O Lars Vogel tem uns tutoriais muito bons sobre ela também (http://www.vogella.com/).

Algumas dicas:

Se você tem um plano de ter versões também Web… você deverá obrigatoriamente dividir seu software em Camadas.
Eu recomendaria fazer toda a parte de negócio objetos em Pojos… totalmente desacoplados, desta forma permitindo utilização tanto em Web, quanto em Desktop.
Faria também a camada de persistência separada (em DAO)… usar ou não hibernate vai depender da sua necessidade de extração de dados…
Para apresentação usaria SWT (tenho usado muito ultimamente)… com componentes que existem nativos no SO… a performance vale a pena, mesmo pq provavelmente não lidará de imediato com máquinas parrudas.
Em segundo plano faça a versão web, mas tratando ela como uma simples camada de apresentação.

Outra coisa que pode fazer mas vai impactar sua produtividade e fazer a ligação entre camada de apresentação e negócios toda através de webservices… isso facilitará a construção de uma terceira versão mobile, mas tem de ver até que ponto esse impacto vale a pena!

@w1lson Primeiramente, valeu pela contribuição! O que eu me questiono é o seguinte, qual será o tempo, que a Oracle irá levar, para substituir o Swing por JAVAFX?
Essa parte ao qual você relacionou, sobre rodar desktop e o browser é bem interessante, mas é simples assim mesmo?
Será que tem suporte o suficiente para começar a implementar com essa tecnologia?

@rsantik Primeiramente, valeu pela contribuição! Um tiro no pé? Qualquer que seja a tecnologia, vive em constantes mudanças, sejam elas impactantes, ou não… E para a equipe da Oracle aceitar a alteração de Swing para JavaFX, não seria então, algo viável?

@Ataxexe Primeiramente, valeu pela contribuição! Eclipse RCP? Vou dar uma olhada sobre essa plataforma, obrigado!

@jmmenezes Primeiramente, valeu pela contribuição! Menezes, eu irei dividir minha aplicação em camadas, independentemente da tacnologia, ou plataforma que vou utilizar… Pelo fato de ficar mais organizado e questão de praticidade em manutenção também.
SWT ? Será que é interessante, pelo fato de utilizar componentes nativos? Não estariamos batendo em uns dos quesitos principais do Java, que seria rodar em qualquer SO… De fato, não vou lidar com máquinas parrudas, pelo contrário, seriam máquinas potencialmentes, fracas. Valeu pela dica…

@ViniGodoy Desculpe-me pela duplicação de tópicos, mas fiz isso pelo fato de ninguém ter contribuido no tópico… Pensei então, que os usuários, iam em fóruns especificos… Já tachados…

Abraço a todos.

Estou com uma dúvida, não em relação a ferramentas, mas acho que tem bem a ver com o caso citado (Desktop / Web).

Também estou para começar a desenvolver um sistema e não estou conseguindo resolver o que vale mais a pena. É mais ou menos o mesmo caso. A princípio é um sistema Desktop, será utilizado apenas localmente. Mas talvez futuramente possa valer a pena ter versão Web.

A minha dúvida é se não valeria a pena já desenvolver para Web (jsp) e disponibilizar assim (mesmo localmente). Não sei até que ponto seria estranho (e mesmo se teria outros problemas) a pessoa ter que acessar o navegador para ter acesso ao sistema.

Sei que cada caso é um caso, mas qual a opinião a respeito de sistema desta maneira. Exite? É comum? Vale a pena?

buiutb,

Pelo que ocorreu no passado, acredito que o Swing não deva ser retirado do Java, ele vai continuar lá. O Java FX foi incluído já no Java 7, não é mais um componente opcional.

Atualmente a Oracle já incentiva o uso do Java FX.

Sobre a facilidade de rodar no browser e desktop dê uma procurada por Java WebStart + Java FX.

Já existem vários livros escritos sobre Java FX.

sdr81 e buiutb,

Desenvolver um sistema Web e rodar em um servidor de aplicação local também é uma solução. Eu trabalho em um projeto grande, de um sistema que trabalha com este modelo.

É bastante comum você ter um servidor de aplicação, onde o acesso à aplicação é apenas local.

Se depois surgir a necessidade de colocar na internet é bem fácil. Na minha opinião essa seria a melhor escolha no caso de vocês dois. Não se esqueça de seguir as dicas do jmmenezes.

Abraço

@sdr81 Obrigado por participar! Pois é amigo, estava pensando nisso também, ainda mais que agora o JBoss AS7 veio com força total em tempo de start do servidor… Que era uma coisa, um pouco chato… ficar esperando tantos segundos para deploy e startar o servidor de aplicação…

@w1lson Valeu novamente por contribuir! Parece ser bem interessante o JavaFX… eu vou pesquisar a respeito disso!

@w1lson Onde eu trabalho, também funciona assim… Rodando em Jboss Seam… Estou pensando seriamente em fazer direto web… Porém o unico problema… é que tem que estar conectado na internet, e a maioria das empresas que irei vender o produto… Possuem internet, porém, com uma velocidade ‘bem’ baixa… fazendo com que pareça que o sistema é lento…

Valeu pela dica pessoal…

w1lson
Valeu por responder. Saber que é bem usado já me anima mais em fazer desta forma. Uma dúvida que tenha é a seguinte. O usuário precisa acessar o navegador (Chrome, Firefox, IE, etc) e aí sim acessar o sistema né!!?? Não existe um componente que faça esse “meio campo”? Ou seja, acessaria o sistema, este teria apenas um componente que disponibilizaria o site (sistema). Confesso que não procurei saber sobre isso ainda.

buiutb
Tendo o servidor de aplicações instalado na rede local não teria problema a conexão de internet ser lenta, ou mesmo ter conexão com a internet. Ou estou errado?

[quote=sdr81]w1lson
Valeu por responder. Saber que é bem usado já me anima mais em fazer desta forma. Uma dúvida que tenha é a seguinte. O usuário precisa acessar o navegador (Chrome, Firefox, IE, etc) e aí sim acessar o sistema né!!?? Não existe um componente que faça esse “meio campo”? Ou seja, acessaria o sistema, este teria apenas um componente que disponibilizaria o site (sistema). Confesso que não procurei saber sobre isso ainda.

buiutb
Tendo o servidor de aplicações instalado na rede local não teria problema a conexão de internet ser lenta, ou mesmo ter conexão com a internet. Ou estou errado?[/quote]

Em relação ao navegador, é possível fazer um programa em C, C++ ou se for internet explorer até mesmo VB que abra um programa que carregue a tela do navegador (sem a possibilidade do usuário digitar algo na barra de endereços)… mas não sei se existe real necessidade nisso, você tem de analisar, até hoje só vi um caso, onde o sistema ficava dentro de um supermercado e era web e para ninguem sair usando a internet (e não ficar com cara de navegador) fizemos uma coisa dessas!

Ter o servidor de aplicações instalado na rede local pode ser um problema em 2 casos:
1 - O servidor não é tão parrudo e digamos, vai consumir muito recurso pois todo o processamento ocorrerá nele, diferente se for um servidor só de banco de dados, onde o processamento do programa será distribuido entre as estações.
2 - Poderá exigir um pouco mais da administração do servidor. (Dependendo do servidor, nada muito critico)

E em relação ao SWT, realmente ele não é tão portável como o Swing, mas atende bem… O Eclipse RCP possui o SWT e muito mais… é uma plataforma completa… o SWT seria uma forma “mais baixa” de falar direto com os componentes do SO, porém também multi-plataforma (ele é a base do Eclipse), usando a implementação de cada SO! No geral tem de tomar alguns cuidados, e não é tão compatível em ambientes esquisitos como por exemplo Solaris usando CDE… mas no geral, quando é desktop e quer multi-plataforma geralmente se precisa de Linux/Mac/Windows e se tomar os cuidados basicos, consegue ter uma aplicação com uma performance e consumo de memória bem próxima de uma aplicação em C++, com a vantagem de usar Java e reaproveitar os componentes em outros lugares!

Você já ouvir falar do Vuze (antigo azureus) ? é um client P2P torrent feito com SWT… sem dizer o Eclipse…

jmmenezes
Agora que você falou que lembrei… Na época de faculdade fiz um trabalho que implementei um navegador em C++. Tem um componente que faz isso bem fácil. Ainda mais que é somente para exibir o sistema.

Eu pensei isso justamente para não ficar com cara de navegador, para que pareça mais “software” mesmo (o Dicionário Aurélio Digital, por exemplo, é feito assim - só não sei qual linguagem foi usada). A questão de não poder digitar endereço e ir para outro lugar também acho interessante. Mas realmente não tem uma necessidade extrema, tem que ser avaliado.

Em relação ao servidor de aplicações local, realmente tem esses detalhes, mas em caso de necessidade, acho que da para usar, principalmente em caso de internet muito lenta ou mesmo se a aplicação for rodar em poucas máquinas, assim não exigiria muito do servidor.

Obrigado pela resposta.

A resposta sobre SWT deve ter sido para buiutb

[quote=sdr81]w1lson
Valeu por responder. Saber que é bem usado já me anima mais em fazer desta forma. Uma dúvida que tenha é a seguinte. O usuário precisa acessar o navegador (Chrome, Firefox, IE, etc) e aí sim acessar o sistema né!!?? Não existe um componente que faça esse “meio campo”? Ou seja, acessaria o sistema, este teria apenas um componente que disponibilizaria o site (sistema). Confesso que não procurei saber sobre isso ainda.

buiutb
Tendo o servidor de aplicações instalado na rede local não teria problema a conexão de internet ser lenta, ou mesmo ter conexão com a internet. Ou estou errado?[/quote]

w1lson… De fato, o servidor de aplicação não precisa estar conectado com a internet… Pois seria algo local…

[quote=jmmenezes]
Em relação ao navegador, é possível fazer um programa em C, C++ ou se for internet explorer até mesmo VB que abra um programa que carregue a tela do navegador (sem a possibilidade do usuário digitar algo na barra de endereços)… mas não sei se existe real necessidade nisso, você tem de analisar, até hoje só vi um caso, onde o sistema ficava dentro de um supermercado e era web e para ninguem sair usando a internet (e não ficar com cara de navegador) fizemos uma coisa dessas!

Ter o servidor de aplicações instalado na rede local pode ser um problema em 2 casos:
1 - O servidor não é tão parrudo e digamos, vai consumir muito recurso pois todo o processamento ocorrerá nele, diferente se for um servidor só de banco de dados, onde o processamento do programa será distribuido entre as estações.
2 - Poderá exigir um pouco mais da administração do servidor. (Dependendo do servidor, nada muito critico)

E em relação ao SWT, realmente ele não é tão portável como o Swing, mas atende bem… O Eclipse RCP possui o SWT e muito mais… é uma plataforma completa… o SWT seria uma forma “mais baixa” de falar direto com os componentes do SO, porém também multi-plataforma (ele é a base do Eclipse), usando a implementação de cada SO! No geral tem de tomar alguns cuidados, e não é tão compatível em ambientes esquisitos como por exemplo Solaris usando CDE… mas no geral, quando é desktop e quer multi-plataforma geralmente se precisa de Linux/Mac/Windows e se tomar os cuidados basicos, consegue ter uma aplicação com uma performance e consumo de memória bem próxima de uma aplicação em C++, com a vantagem de usar Java e reaproveitar os componentes em outros lugares!

Você já ouvir falar do Vuze (antigo azureus) ? é um client P2P torrent feito com SWT… sem dizer o Eclipse…[/quote]

Interessante esse navegador ao qual você citou… Mas acho que para aplicação em que eu irei fazer, não precisaria tanto disso… Mas, bem interessante…

O servidor não é tão parrudo? o que você quis dizer com isso?
Acho que se eu fizesse dessa forma, me facilitaria a o percurso de aprendizado, pois, já trabalho com programação Web Java…

Então, não seria mais interessante usar o Eclipse RCP, pois, você mesmo comentou, que é uma plataforma completa?

Posso precisar de certos módulos para frente e o SWT, talvez, não irá me resolver… Mas vou pensar bem…
Valeu pela dica, novamente…

Pessoal, aproveitando o tópico…

Se for para colocá-lo realmente na web… Conhecem algum serviço de hospedagem que dão suporte a JBoss ?
Que dê suporte a TOMCAT eu já achei, porém, com JBoss, não achei nada ainda, que me agradasse.

Estou relatando isso… Pois fazendo intranet o custo para mim, seria menor… Porém, concordam que daria um trabalho/esforço maior pelo fato de que cada computador que for instalar, tem então que configurar etc… Já hospedando em algum lugar, iria só rodá-lo na browser e beleza… Porém, o problema maior para isso… é que… necessita da internet, e como vou fazer para pequenas empresa…
A internet pode sofrer oscilações, cair e etc… Porém, não podem deixar de usar a aplicação…

Complicado essa decisão… Mas, já estive bem mais longe, e só com o questionamento de todos, acredito que esse final de semana ainda, decido que tecnologia utilizar.

Abraço a todos.