sexta-feira, 4 de maio de 2012

Por que Java?




Os prazos para conclusão dos projetos são curtos, as exigências dos clientes são muitas, e a concorrência não dá trégua. Atualmente muitas soluções são híbridas, precisam rodar no computador, fazer comunicação com um hardware específico, ter acesso disponível via Web, e estar disponível também em equipamentos móveis, como celulares.

É inviável desenvolver um projeto utilizando muitas soluções, imaginem um projeto com alguns módulos desenvolvidos em C, outros desenvolvidos em C#, PHP, e as aplicações do celular desenvolvidas em Java. Utilizamos quatro linguagens diferentes para construir uma solução, precisamos de uma equipe com conhecimento variado, e em caso de desfalque de um membro da equipe, nem sempre é possível realocar, pois o recurso disponível pode não ter conhecimento na linguagem desejada.

Sempre que possível optamos por utilizar uma única linguagem, mas são poucas as que nos permitem ter tanta flexibilidade como o Java. Com o Java podemos desenvolver aplicações para várias plataformas, Windows, Linux, FreeBSD, Mac etc. A aplicação pode ser Web ou Desktop, ou ambas, utilizando o Webstart ou o Applet. Inicialmente o Applet era pesado e lento, o que não acontece mais nos dias de hoje devido ao poder de processamento das máquinas. É possível também desenvolver uma aplicação Web com cara de Desktop sem ter a preocupação com as incompatibilidades dos navegadores. Todas as opções de interfaces disponíveis para aplicação Desktop como o Swing e o Awt estão disponíveis para serem utilizadas no Applet.


Já desenvolvi um Applet para comunicação com hardware específico, trabalhando tanto com a RS232 e USB. A comunicação entre o PC e o hardware funciona muito bem, e no tempo esperado. Esta solução resolveu um problema de uma aplicação que é Web, e precisava comunicar-se com periféricos utilizando um navegador. A vantagem do uso de Applets, é que o desenvolvedor não fica limitado a alguns navegadores e sistemas operacionais, como é o caso do uso do ActiveX.

Uma das vantagens de desenvolver em Java, é que o desenvolvedor consegue atingir várias plataformas e Hardwares diferentes. Uma rotina escrita para calcular um CRC por exemplo, pode ser reutilizada numa aplicação Desktop, numa aplicação Web, num Celular e até mesmo numa aplicação específica escrita para rodar num determinado processador. Java não tem limites, não é difícil entender o motivo que levou a Google escolher o Java como linguagem para o Android.




Programo também em C, C++, C#, Object Pascal(Delphi). Já trabalhei em vários projetos, posso dizer que cada caso é um caso, e muitas vezes dependendo do projeto você não pode utilizar sua linguagem preferida. O meu objetivo não é falar bem ou mal desta ou daquela linguagem de programação, mas sim, esclarecer que projetos são diferentes, e muitas vezes precisam de uma solução diferente. Ao mesmo tempo tenha cuidado para não diversificar demais, e criar uma babilônia de linguagens diferentes, onde ninguém mais se entende.



O Java para algumas coisas depende de outras linguagens que possam gerar código nativo. Sempre que necessário eu utilizo C para fazer a interface entre o Java e o Sistema Operacional. O Java oferece uma forma simples para permitir que o programa comunique-se com o meio externo, utilizando o JNI, Java Native Interface. No Windows você pode criar uma DLL (Dynamic Link Library), no Linux você cria uma SO (Shared Object), sempre dentro do formato JNI.

É possível também compilar o java para código nativo, o GCJ pode ser utilizado para compilar o Java. Já fiz alguns testes que funcionaram perfeitamente, mas nunca precisei utiliza-lo pois o Java de forma "interpretada" sempre atendeu bem aos meus requisitos. Acredito que se você precisa compilar o Java para código nativo, em algum momento no seu projeto você tomou a decisão errada, ou então não está sabendo como resolver o problema. Neste caso sugiro dar uma olhada no JNI, como já mencionei acima.



A Microsoft tentou criar seu próprio Java, mas não conseguiu ir muito longe e desistiu. Para tentar concorrer com o Java da Sun a Microsoft criou a plataforma .NET, que, aliás,  atualmente estou utilizando com a linguagem C#. O que posso dizer sobre a linguagem C#, é que é uma linguagem simples e com boa curva de aprendizado, sua sintaxe é parecida com o Java e C. Já a plataforma, deixa muito a desejar, agora por exemplo saiu a versão 4 do .NET, e acredite se quiser, programas compilados para versões menores não rodam na versão 4, e programas compilados para a versão 4 não rodam em versões anteriores. Se alguém descobriu alguma forma de compatibilizar sem precisar recompilar, por favor, me avisem.




O objetivo aqui é esclarecer e chamar a atenção dos desenvolvedores, gerentes e diretores, para não entrarem na conversa de fanfarrões e novatos quando for decidir qual tecnologia utilizar para desenvolver as soluções, prestem muita atenção no que tem no mercado, suas vantagens e desvantagens, e não saiam desenvolvendo simplesmente poque algumas pessoas tem preferência por esta ou aquela tecnologia. Este alerta é principalmente para a diretoria, depois de tomar a decisão errada, não adianta dizer que a concorrência desenvolveu um produto similar, em menos tempo e menos recursos.


Para não dizerem que estou do lado do Java, "fica a dica", se a sua solução roda somente em Windows, e não existe possibilidade futura de ser necessário usar em outras plataformas, utilize .NET com a linguagem C#, neste caso, na minha opinião é sem dúvida a melhor solução. Porém, se você pensou em multiplataforma, esqueça .NET/Mono, você e sua equipe terão muito trabalho e pouco retorno, neste caso sim, recomendo Java, e claro, caso seja uma aplicação que requeira muito processamento gráfico, não tem saída, o jeito é usar C ou C++.

Boa sorte!!!

Verifique a classificação das linguagens mais usadas.


Nenhum comentário:

Postar um comentário