Monday 5 April 2010

Java e ainda e uma linguagem de futuro garantido ???

Ola hoje vou falar um pouco sobre se o Java ainda e uma linguagem de futuro, vou tentar expor os pro e os contras e MINHA opniao, mas isso NAO quer dizer que e a VERDADE, cada uma vai tirar suas proprias conclusoes, ok. O objetivo disso nao e por lenha na fogueira entre .Net e Java de jeito nenhum. E somente mesmo pros e contras.
Vamos la
Antes de tudo, curto Java mas nao sou aquele fanatico, tenho mais de 20 anos de experiencia trabalhando com sistemas, ja morei for a do pais a trabalho e atualmente estou na Australia, ja fiz sistemas em Basic (NX-80, TRS80, CP/M, Quick Basic e outras versoes), C (em Mainframes, superminis Cobra e Scopus, lembram..., e sistemas DOS/Windows 3.11/95/98/XP), C++ (Windows 3.11, OS/2 um tipo de Unix da IBM), COBOL (para os mesmos tipos de maquinas que fiz usando C), Datafles, Progress e Visual Basic desde a versao 4 ate a 6, FoxPro desde a versao 2.0 ate as ultimas, e por fim Java que venho usando a anos (em todos ambientes que existe uma JVM rodando, do Windows ao OS/390 da IBM).
Gosto muito de ver que os desenvolvedores Java sao bem fieis a tudo que e relacionado ao Java porem muitos carecem de um feeling para ver que existe muita coisa boa la for a tb, e que Java nao e maior maravilha em linguagens de programacao, mas o q me irrita e que muitos querem por todos os patterns e EJB que eles conhecem em um sistema de pequeno. E aquela velha comparacao “Qdo voce tem uma martelo como unica ferramenta, todos os seus problemas se parecem com pregos”. Acho que nao preciso dizer mais.
Java saiu em 1995 como uma linguagem de Scripts, e evoluiu para um linguagem completa, nao e a famosa bala de prata das linguagens mas chegou bem proximo, e ao meu ver foi por ter tantos ramos que ela esta falhando. Com a compra pela Oracle as coisas deverao comecar a mudar o ano que vem, pois ainda e muito cedo para se ter uma ideia do que ira acontecer, pois tudo sera expeculacao. Porem se tem muito indicios que algumas coisas irao mudar com quase certeza.
Apos alguns anos trabalhando com Java pude constatar que, Swing nao e um ambiente ideal para desktop, e pesado com um visual ultrapassado e consome muita memoria, e nao teve grandes melhorias nas ultimas versoes do Java, ate teve, mas nada que realmente chamasse a atencao, por isso vejo com muita frequencia o .Net dominar nessa area, por varios fatores que vou falar ja ja.
Swing e a aposta da Sun, agora Oracle, pois nao sei se vai dar muita enfase nessa area daqui para frente em atualizar e melhorar essa “area” do universo Java, contra a SWT que mesmo nao sendo tao portavel e muito melhor que Swing, quem nao gostar que faca a comparacao e nao precisa ir longe, e so olhar o Eclipse e o NetBeans e ver a velocidade que cada um roda e o visual de cada um.
Entao para desktop applications Swing nao vale a pena, a nao ser que voce seja um bitolado em tudo que vinha da Sun (Oracle). Hoje temos varias linguagem que podem fazer sistemas para desktop com muito mais recursos do que Java Swing.
Como nao tenho mais desenvolvido sistemas para Swing a anos e somente fuçado, sao essas minhas conclusoes a respeito do Swing.

Java ME / Java FX, ao meu ver tinha tudo para dar certo, mas a JVM muito grande e pesada inviabilizou tudo, e a falha da Sun em produzir uma versao light para a mobiles fez com que muitas companhias nao dessem suporte para a mesma, a Apple e uma caso a parte, quer ser diferente, elitizada para faturar mais, basicamente falando. Mas a maior falha da Sun foi lancar o FX que deu um tiro no proprio pe, afinal colocou um produto muito similar ao ME com mais recursos visuais e todos que apostaram no ME se sentiram traidos com o FX pq se precisava de atualizacoes nas JVM para rodar o FX. Depois a Sun quiz colocar o FX como um concorrente do Flash e do Silverlight da MS que tambem nao enquadrou, a base ate hoje e minuscula de desenvolvedores e agora com a Oracle talvez nunca mais vai chegar la.

Java EE, aqui sim e o nicho do Java, e onde ele e forte e onde nas ultimas versoes teve as melhores melhorias, chamar atualmente o programador Java de futuro “COBOL guy” nao esta errado pois e o que ja esta acontecendo, vejo ainda muitos novos projetos sendo desenvolvidos em Java mas 95% deles para Web, e principalmente para Server side, ocupando o lugar de muitos sistemas que eram feitos em COBOL, muitas vezes. Sim nessa area nao se tem uma linguagem com tantos frameworks como Java. Struts e JSF 1.2 hoje sao os dominantes e deverao ficar por muito anos ainda, afinal empresas que gastam milhoes para criar um sistema nao vao trocar apos alguns anos somente pq um novo e melhor framework veio, eles sao vao trocar se trocar quando realmente nao tiver mais jeito, e ao meu ver eles estao certos, pois os sistemas adquiridos por elas sao mais uma engrenagem na maquina de fazer dinheiro.
Essa e a area em que o Java bate qualquer linguagem por uma larga margem, afinal e a unica lingugagem que e plataforma independente para servidores e possue muitos recursos mesmo para quem nao que mais usar EJB, existe muita coisa boa por ae, e por sinal muitas muito boas e de graca, sendo ao meu ver o Spring a melhor de todas e se voce tiver conhecimento suficiente de EJBs e Spring voce nao precisa de mais nada afinal os dois tem pontos muito fortes que podem ser aproveitados e bem. Em server side nada bate o java hoje e nao devera bater por muitos anos.
Agora no lado do cliente a coisa muda de figura, com as novas linguagens baseadas na JVM e mesmo Flash, Silverlight, PHP, ASP e outras muitas delas hoje tem muitos mais recursos para se desenvolver um Rich Client do que as tecnologias Java propriamente ditas, como JSF, Struts, Tapestry, JSP e por ai vai. Claro que se tivessemos IDEs com melhores suportes para a parte visual ajudaria em muito o desenvolvimento dessas, se voce acha que o Eclipse e NetBeans sao otimos, voce deveria dar uma olhada na IDE do .Net, que voce ira mudar radicalmente de ideia e bem rapido. Ja vi uns malucos fazendo sistemas para bancos em .Net para rodar me server side, e me garantiram que estava sendo uma tarefa herculea, devido a falta de recursos para o mesmo e muitos deles me falaram se fosse em Java estariam longe e com muito mais seguranca, o que acredito mesmo.
E ja vi muito tambem de programadores Java reclamando que para trabalhar com client side usando Java nao e tao facil qto usando algumas dessas linguagens que citei aqui em cima, principalemente se falando em manutencao, afinal 90% da vida de um sistema e manutencao e somente 10% e a concepcao do mesmo.
Agora a pergunta Java vai estar no meio de nos por muitos anos ainda ?
SIM definitivamente vai por muitos anos ainda, mas no seu nicho, nao consigo visualizar grandes projetos usando Java para o lado do cliente, tambem nao vi grandes melhorias no Java SE 7, e algumas boas no EE 6 (JSF 2.0 e EJB 3.1 sao as melhores). Tambem nao vejo muito mais o que “inventar” para colocar dentro do pacote, nao acredito tambem que a Oracle vai se empenhar tanto qto a Sun em prover um Java tao update e de graca, o que esta parecendo e que vai acontecer e uma ruptura e nao estar muito longe de acontecer, pois de um lado temos a Oracle que comprou a Sun recentemente e ainda ta pondo a casa no lugar, no outro temos a IBM que e a maior desenvolvedora de Java do mundo e ambas competem em muitas areas. E facil de ver que muitas das novas implementacoes do Java serao pagas e que a IBM nao vai deixar barato, se isso acontecer, e vai implementar suas necessidades na JVM logo em seguida. E com isso logo logo iremos ter duas JVMs, muito similares mas nao 100% compativeis.
Agora se voce quer um conselho em que linguagem comecar te dou tres escolhas e as tres sao OTIMAS, mas em primeiro lugar de todas para se aprender e a linguagem C, depois Java e .Net
E so ver que C roda em OS/390, Unix, Linux e Windows como Java, e .Net por causa do grande numero de plataformas Windows existente. Claro que ha as discrepancias, entre as plataformas, mas muito do codigo do C pode rodar em outras plataformas sendo somente recompilados na mesma.
O que esta faltau para o Java deslanchar nas outras areas que mencionei aqui, ao meu ver, foram uma JVM mais rapida e compacta, um JCP program mais eficaz e rapido ou quem sabe mesmo um gerador de codigo nativo, que vai contra a premissa da JVM mas que daria muito mais velocidade ao Java, ou mesmo um hardware da JVM que pudesse ter updates para ter as novas implementacoes ou mesmo algo hbrido, como algumas funcoes que nao se muda tanto da JVM em um processador, que pudesse ser setada na JVM ne, e outras ele usaria da JVM software. Acho que essa ansia por ter mais Java classes a cada versao nao foi e nao e saudavel para o Java em si, retrocompatibilidade e bom, mas ate um certo ponto, uma hora ira ter que haver uma ruptura para que se tenha algo com mais qualidade e melhor e que isso venha logo antes que seja tarde demais.
Hoje o Java ainda esta no embalo provido pela Sun no passado, mas logo logo isso vai passar se a Oracle nao se mobilizar e muito rapido. Se a Oracle realmente fazer a licao de casa e correr atras sim o Java podera se eternizar como linguagem, mas se nao, os programadores Java de hoje se tornacao os Coboleros de hoje no futuro.
Acho sim que Java e uma linguagem bem verbose, mas acho isso muito saudavel tb, afinal quem nunca teve problemas com aqueles milhares de processos invisiveis acontecendo por de tras dos bastidores sem que vc saiba, e que te tras um resultado que voce nao quer? E isso e um dos segredos do sucesso do Java sobre as outras linguagens, esse negocio de um comando ou classe fazer um mundo e utopico e ate a MS viu isso, por isso acho que isso e uma das forcas do Java tambem. Vale lembrar que o mercado de linguagens vale bilhoes hoje e que a MS NAO dorme no ponto.
Bom dei um cobrida bem superficial mesmo sobre o que se tem do Java e o que nao se tem uma olhada tb muito superficial nas especulacoes sobre o futuro do Java.
Por favor se voce tiver alguma duvida, nao gostar ou mesmo se falei alguma besteira aqui e so falar que posso corrigir, afinal como disse minha palavra nao e final. Mas por favor nao venha com grosserias ok.
Abs.