Sou programador C# e há algum tempo venho estudando Java
pra possibilidade de desenvolver um novo sitema “desktop” que
seja multiplataforma pra justamente poder implantar redes Linux
em empresas que não querem cair nas licenças da MS.
Blz, Java é perfeito pra isso, tenho feito alguns testes (usando EJB tb)
e notei q há uma diferença de performance mesmo, como já ouvi
falar aqui mesmo no forum, mas n seria nada que viesse a fazer eu
mudar de idéia. Mas tem um outro “problema” rolando, pesquisei,
pesquisei e não encontrei nenhum relato de algo parecido com o q
eu quero fazer, um sistema de médio/grande porte para desktops,
quase “nada” web, só vjo falar do programa feito para IR.
Sei q deve existir, mas talvez n seja muitos, mesmo pq o grande lance
do Java, pelo q me parece, é Web mesmo e estão tentando dar um pouco
mais de atenção a aplicações Swing. E daí eu penso, será q se fizermos
o sistema em Java teremos um melhor destaque, ou estamos entrando
numa “fria”, por gastar mais tempo de aprendizado e não valer a pena
justamente por não ter tanto espaço (para desktops)…
Só queria algumas opniões d quem já vive n apenas no mundo java, mas
sim no contexto SWING.
Eu tenho feito aplicações desktop usando Swing e estou plenamente satisfeito. É muito flexível, tem um design inteligente e até hoje não me deixou na mão.
Existem muitos tópicos aqui no GUJ sobre o Swing e dá para ver que muitos não são de estudantes, mas de pessoal que efetivamente o utiliza na prática.
Talvez o único problema é que aplicações desktop maiores geralmente interoperam com outros sistemas, com COM, ou com hardware (portas seriais, por exemplo). E nesse ponto, o Java é complicadinho.
É muito fácil interoperar com COM através de groovy. Com outros sistemas, você precisa criar classes auxiliares, para atuar sobre o process. No caso de operar com o hardware, há muita coisa pronta na Internet. Se o seu hardware for muito específico, aí talvez você tenha que recorrer ao JNI, o que é mais difícil do que simplesmente acessar a .dll em outras linguagens, como o C++.
Já fez alguma apliação de médio porte usando EJB?
Apesar de preferir o WCF (.net) eu vi q o EJB é bem bacana, mas
tb vi muita gente daqui falando q é um elefante branco, esse tipo
de coisa q me “assusta”.
Cara não concordo quanto ao que vc disse sobre lentidão, ja venho utilizando java a quase quatro anos, trabalho com aplicações swing direto, e o q vejo muito é q existe a reclamação por “velocidade” mas os programadores não tomam os devidos cuidados quanto a criação das classes, mapeamento, e ate mesmo na implementação das telas, ai seja em qual linguagem for, com certeza teremos programas lentos se implementados desta forma, ja trabalhei em projetos que fazem comunicação com catracas, leitores biometricos, cameras digitais, existe sim um grau maior de complexidade para fazer essa comunicação, mas nada que torne inviavel o seu uso!
Não quero q tome essa minha opnião como verdade absoluta, pois é apenas a minha visão sobre uma tecnologia q venho utilizando a alguns anos e estou muito satisfeito com ela!
[quote=UpTheIrons]Já fez alguma apliação de médio porte usando EJB?
Apesar de preferir o WCF (.net) eu vi q o EJB é bem bacana, mas
tb vi muita gente daqui falando q é um elefante branco, esse tipo
de coisa q me “assusta”.[/quote]
EJB é uma tecnologia que não deve ser usada quando não for necessário.
Segundo o tutorial da Sun:
[quote]You should consider using enterprise beans if your application has any of the following requirements:
The application must be scalable. To accommodate a growing number of users, you may need to distribute an application?s components across multiple machines. Not only can the enterprise beans of an application run on different machines, but also their location will remain transparent to the clients.
Transactions must ensure data integrity. Enterprise beans support transactions, the mechanisms that manage the concurrent access of shared objects.
The application will have a variety of clients. With only a few lines of code, remote clients can easily locate enterprise beans. These clients can be thin, various, and numerous.[/quote]
Sua aplicação responde a um desses requisitos? Não? Então não use, pois você só estará contribuindo para que EJB seja vista como um elefante branco.
Eu não falei lentidão, falei q notei uma diferença de performance, e como disse,
n foi tanta diferença a ponto de eu desistir por isso.
Sei q códigos podem piorar ou melhorar isso, mas os testes q fiz foram ultra-pequenos,
nada alem de gerar uma lista, com um certo volume de dados, após ter acessado um
banco e passar com List e com Collection.
Mas como disse, n é com isso q me importo pq a diferença n foi brusca.
Se eu for desenvolver esse sistema pensando no Windows, com certeza eu
faria em C# pq é a linguagem q domino, n haveria motivos pra mudar, mas
a idéia é atender a Linux tb, só q até então, n vi nenhum relato de uma empresa
por menor q seja, (rede com 20 pcs por ex) q seja linux. A minha idéia era
poder fazer isso mas preciso pesquisar muito antes, por isso estou aqui e por
isso sua opnião é de extrema valia.
You should consider using enterprise beans if your application has any of the following requirements:
The application must be scalable. To accommodate a growing number of users, you may need to distribute an application?s components across multiple machines. Not only can the enterprise beans of an application run on different machines, but also their location will remain transparent to the clients.
Transactions must ensure data integrity. Enterprise beans support transactions, the mechanisms that manage the concurrent access of shared objects.
The application will have a variety of clients. With only a few lines of code, remote clients can easily locate enterprise beans. These clients can be thin, various, and numerous.
Um pouco do primeiro item (quase nada), mas o terceiro acho q devo levar em consideração.