Javali 2009 e Java EE 6.0
Consegui um tempo nessa manha para ir no Javali 2009, no prédio do SERPRO aqui em Porto Alegre. O evento é legal, tem gente importante e com muito conhecimento, e além de tudo é grátis. Eu como não vou no FISL desse ano vi uma boa oportunidade de participar.
Sobre os assuntos abordados, eu queria comentar sobre o Java EE 6.0. Tenho me interessado bastante e acompanhado de perto desde o ano passado. Seu lançamento está previsto para setembro desse ano, e promete muitos novos recursos. Parece que agora vai ser possível desenvolver sistemas usando Java EE puro sem ficar com um sentimento de “tem alguma coisa errada ai”.
Junto com a evolução do Java EE, tem a evolução do GlassFish, com a promessa de mais poder e mais facilidade. Ao mesmo tempo. Foi comentado sobre as capacidades do GlassFish em rodar aplicações DJango com Jython, Ruby on Rails com JRuby além do Grails com o Groovy. Com isso as pessoas aproveitarão todas facilidades das linguagens dinamicas e continurão desenvolvendo sem usar Java EE puro
.
Brincadeiras a parte, a evolução do Java EE para mim é muito positiva, apesar de um pouco demorada. A ultima versão do Java EE saiu em 2005. São 4 anos sem muitas novidades “oficiais”. A vantagem é que parece que a Sun (ou a Oracle agora) vai atender aos desejos dos desenvolvedores.
Para mim, as grandes novidades são o uso de anotações em todas configurações, quase eliminando os arquivos xml (o web.xml já era) e modularização através dos profiles, que vai facilitar a criações de aplicações simples, sem a commplexidade atual do Java EE. Sempre ouvi que com Java era simples fazer coisas complexas e difícil fazer coisas simples, agora parece que vai mudar esse cenário.
Ainda tem grandes melhorias no JSF 2.0, que para quem tem algum tipo de preconceito com o JSF deveria olhar de novo. O EJB 3.1 mais facil do que nunca (as features de timer são muito legais). E o JPA 2.0 que agora terá os recursos que faltava e que me faziam continuar usando a API do Hibernate (sim Criteria, eu estou olhando pra você).
A Oracle, a Sun Microsystems e perguntas ainda sem respostas
A Sun estava mal das pernas, todo mundo sabia, a IBM estava se oferecendo para comprar, todo mundo também sabia. O que ninguém sabia, ou esperava, era que a Oracle iria fechar o negócio primeiro, e levou a Sun Microsystems por 7,4 bilhões de dólares. Então agora, todos nós que trabalhamos com Java, podemos dizer que trabalhamos com produtos Oracle. O que ninguém sabe ainda é se isso é bom ou ruim.
A Oracle é uma empresa gigante, está entre as maiores empresas de software junto com a Microsoft, SAP e IBM. A Oracle tem uma receita milionária não só pelo seu famoso banco de dados, mas também por servidores de aplicação, ERP’s, e até mesmo servidores de e-mail. É uma empresa saudável (diferente do que era a Sun Microsystems) e crescendo rapidamente. Muito do seu crescimento veio de aquisições, a Oracle tem comprado empresas dos mais variados ramos, sempre voltado para o mundo empresarial. Sua ultima grande compra foi justamente a Sun, que é conhecida mundialmente por seus servidores, e pela Plataforma Java, e a Oracle é talvez a empresa que mais ganhe dinheiro com a Plataforma Java, o que faz a compra ter sentido.
Já a Sun é uma empresa estranha. É a responsável pela maior plataforma de desenvolvimento não Microsoft mas não consegue ganhar dinheiro com isso. É conhecida pela qualidade do seu hardware e o solaris, mas atualmente também não consegue ganhar dinheiro com isso. O presidente da Sun, Jonathan Schwartz, assumiu prometendo fazer a empresa crescer, mas comprou uma empresa de storage, a StorageTek, por 4 bilhões. Mais da metade do que a Sun inteira foi vendida. Teve ainda o MySQL por 1 bilhão também sem muito retorno. E então começaram as especulações sobre sua venda.
O fato é que a Oracle tem uma grande vantagem sobre a Sun. Seus vendedores. Explico, o “pre-venda” e o marketing da Oracle em cima das grandes empresas é muito forte. É quase uma IBM dos anos 80 com seu bordão “ninguém nunca foi demitido por comprar IBM”. Eles vendem muito, e pior (ou melhor, depende) vendem qualquer coisa.
Em geral, os produtos menores que a Oracle vende são bem fracos, pra não dizer ruins. Já trabalhei com o servidor de sistema corporativo de email deles e era muito pior que a maioria dos produtos semelhantes open source. Mas o da Oracle tinha a grande vantagem de ser da Oracle. Eles iam enrolando, enrolando até sair uma nova versão, menos ruim, e vinha o papo: agora está melhor. Estava mesmo, mas ainda muito inferior que a concorrencia. Mas isso não importava muito.
O que vamos ver agora, é como essa “vantagem” da Oracle vai trabalhar em favor dos produtos da Sun. Mais especificamente em cima do Java, que tem uma base gigantesca de desenvolvedores, que estão ansiosos por mais agilidade no desenvolvimento java. De fato a Sun fez um bom trabalho com o Java, mas o desenvolvimento é muito lento, é o que eu chamo de “devagar e sempre”. Algumas tecnologias são implementadas por desenvolvedores terceiros, e muitos anos depois são incorporadas ao Java. Outro detalhe é que a Sun não tem uma real penetração dentro da maioria das corporações, coisa que a Oracle tem, principalmente com seu banco de dados .
Mas algumas questão estão completamente abertas e por enquanto ninguém consegue responder.
- O que vai realmente acontecer com o Java?
É só especulação no momento, mas realmente ninguém sabe. Muitos ainda preferiam que a IBM comprasse a Sun por causa da Plataforma Java. O que se pode afirmar é que é praticalmente impossivel uma grande reviravolta no seu desenvolvimento já que a muito tempo ele é feito em colaboração de muitas empresas, incluindo a Oracle, atravéz do JCP. - O NetBeans vai deixar de ser financiado ou o JDeveloper vai morrer?
Dizem por ai que a Oracle estava querendo reescrever sua IDE. Nesse caso a chance de o NetBeans crescer e virar a IDE padrão da Oracle é grande. Caso contrario pode ser que a IDE fique sem patrocínio. - Como será a continuidade do Open Office?
Nessa questão eu tenho a esperança que a Oracle vai melhorar muito o desenvolvimento do Open Office. A Sun usava o Open Office quase como um espalhador do JRE. Já a Oracle pode usar como arma contra a Microsoft e o Office. - Será o fim dos processadores SPARC?
Talvez. O SPARC é cada vez menos usado em detrimento aos processadores baseados no x86. Questão de custo/benefício. - O que vai acontecer com o Solaris?
Mistério. Pode ser que a Oracle resolva fazer alguma coisa interessante com ele. Talvez não. - E a grande questão: Como fica o MySQL nessa história toda?
O MySQL é a grande preocupação da maioria das pessoas na aquisição da Sun pela Oracle. Banco por banco a Oracle já tem um monte, de vários tamanhos. O MySQL sobra. A Oracle pode por seu nome nele e faze-lo ainda mais onipresente. Ou pode matar ele. O que se pode esperar é que caso a Oracle descontinue o MySQL a comunidade open source vai se encarregar de dar continuidade ao seu desenvolvimento.
Com o tempo todas essas perguntas terão uma resposta final, só nos resta esperar. Eu como desenvolvedor Java fico torcendo para que boas novidades aparecam.
ATUALIZAÇÃO: Achei esse artigo na Computer World que mostra que nos ultimos 2 anos, com a Sun, a Oracle já comprou 24 empresas.
Integrando JavaServer Faces, RichFaces e jQuery. Muito simples.
Passada as férias, gostaria de falar de algo que tenho trabalhado, e estou gostando bastante. Se trata do JavaServer Faces. Comecei a olhar ele com desconfiança, mas por se tratar da opção “padrão” do Java fui ver a fundo o que ele era capaz de fazer. Posso dizer que usar o JavaServer Faces, com o RichFaces, vendo as novas características que serão introduzidas na versão 2.0 (junto com o Servlets 3.0) é uma experiência que eu recomendo.
Algumas coisas me chamaram atenção. Como montar uma tabela a partir de uma lista de objetos. Depois, apos a tabela receber um click eu conseguir recuperar o objeto inteiro da linha selecionada. Sem me preocupar em passar parâmetros, receber ids, buscar objetos. É uma funcionalidade simples, mas para fazer funcionar também é simples, e isso me agrada muito. As vezes no Java algumas coisas simples não são simples de fazer funcionar.
Outra coisa que gostei no JSF foi a possibilidade de expansão dele. Não fico preso ao que vem pronto. E tentando expandir as funcionalidades que estava tentando integrar o RichFaces com a biblioteca ajax jQuery. Confesso que passei algum trabalho, mas o trabalho foi ficando bom quando fui descobrindo que eu não precisava fazer nada.
O RichFaces já vem com o jQuery, isso facilita muito. Mas o que facilita mais ainda é que já existem tags para uso do JQuery dentro do arquivo do JSF. Achei pouca documentação então posto aqui um exemplo.
Eu queria usar o componente de calendário do jQuery. Mas eu queria também que fosse possível editar com o teclado a data. Mas além disso eu queria que a data tivesse formatação de data, e para isso usar o jQuery.
Para fazer essa mistura funcionar é realmente muito simples. Primeiro deve-se adicionar o JavaScript do jQuery:
Então é preciso criar a mascara de data com o jquery. Para isso existe a tag rich:jQuery. Ela faz as chamadas diretas as funções do jQuery sem usar Javascript.
Depois é só criar o campo da data, e atribuir a ele uma classe igual ao que descrita na propriedade seletor.
Resolvido. Temos um componente de data bonito e funcional. Com a capacidade de ter um calendário e ao mesmo tempo editar com o teclado formatando corretamente a data.
Esse é só um pequeno exemplo das possibilidades. O jQuery é um ótimo framework javascript e junto com o RichFaces fornecem ferramentas poderosas para o desenvolvimento web.
Rapidinha: EJB 3.1 empacotado em WAR no Glassfish v3.
O Java EE, seguindo o lema “devagar e sempre”, está indo para um caminho que eu estou achando bem interessante. Um exemplo é a nova capacidade de empacotar um EJB dentro de um WAR.
No blog do Arun Gupta da Sun, ele mostra como fazer esse processo. Instalar o suporte a EJB 3.1 no Glassfish v3, criar um EJB com anotação, e também com anotação fazer injeção de dependência do EJB em um servlet. O interessante é que é simples e eficiente.
Java para Web com JSF e Hibernate na Seminfo 2008

Nesse sábado, durante a Seminfo 2008 em Torres/RS, irei ministrar um mini-curso sobre desenvolvimento Web com Java usando JSF e Hibernate.
Espero que alguém se interesse, e espero que a galera goste.
NetBeans 6.x em inglês, e com um melhor look and feel
O NetBeans tem evoluído muito nas ultimas versões, adicionando muitos recursos e melhorando deficiências. Mas algumas “melhorias” pra mim são questionáveis. Uma delas é a tradução para o português.
É uma questão bem pessoal, eu prefiro qualquer IDE em inglês. Uso o Eclipse diariamente em inglês e é assim que eu estou acostumado. E para minha surpresa, com um grande esforço, o NetBeans já a um tempo, vem todo em português, facilitando a vida de muitos iniciantes, e dificultando a vida de quem está acostumado com a versão na língua inglesa.
Mas o problema não é exatamente a tradução para o português. O problema é que eu baixo e instalo o NetBeans, e quando vou rodar ele está todo em português, sem qualquer pergunta, sem qualquer escolha, e pior, sem qualquer opção para mim alterar o idioma. Acho isso uma falha grave. Acredito que seria muito simples ter uma opção nas preferências para alterar o idioma da IDE.
Junto com o idioma, uma coisa que não me agrada é o look and feel que vem por padrão quando rodo o NetBeans no Ubuntu. Ele tem um padrão meio Gnome, mas acho bem mal acabado, por isso prefiro o padrão Metal do Java.
Para alterar o idioma e o Look and Feel (ou apenas um deles), acesse o local de instalação do NetBeans, e dentro do subdiretório etc procure o arquivo chamado netbeans.conf.
Dentro desse arquivo, localize a linha que começa com: netbeans_default_options=
Depois do sinal de igual, tem vários parametros entre aspas. Dentro das aspas, adicione:
- Para alterar o idioma: -J-Duser.language=en -J-Duser.region=US
- Para alterar o Look and Feel: --laf javax.swing.plaf.metal.MetalLookAndFeel
Resolvido. Não se esqueça de deixar um espaço entre um parametro e outro.
Uma boa dica é, usando o Java 6.0, é possivel instalar o Substance plugin no NetBeans que troca o skin dele pela própria IDE. Mais informações em http://wiki.netbeans.org/LookAndFeel
03/04/08Aplicações com alta performance.
Estou trabalhando em um tipo de aplicação inédita para mim até então. Aplicações que fazem “o meio de campo”. Não é HTML, não é Swing, não roda no Tomcat, não tem tela. Recebe mensagens, trata mensagens, chama outras aplicações, redireciona mensagens.
Mas um comentário chamou minha atenção:
// Se demorar mais de 40 milisegundos, avisa
Sim, isso mesmo, 40 milisegundos para executar um procedimento pode ser uma eternidade. Aliado a isso, já estou achando normal ouvir coisas como:
Pacotes com 700 bytes? Muito grande, precisamos reduzir
Sim, 700 bytes podem ser desastrosos nesse tipo de aplicação.
Essa passou a ser minha realidade. A aplicação que eu estou trabalhado, processa milhares de mensagens por segundo, e qualquer byte a menos é uma grande vitória. Ela possui praticamente uma “arvore de threads”. Se em uma chamada não responder em menos de 40 milisegundos, pode significar mensagens sem processamento.
Isso é Java Roots. Não existe espaço para frameworks, nem pacotes que possam dar problemas sem a gente saber onde mexer, nem fazer o processamento ficar mais demorado. Nossa ultima vitória foi reduzir em quase 10% o tempo de acesso a disco mudando algumas classes do Java.
Estou curtindo muito, sem contar que fiquei as ultimas duas semanas só mexendo em código sem rodar nada.
O Java não vai morrer. Pelo menos não nas próximas décadas
Ufa, semana difícil essa, muita gente falando sobre a reportagem da Computerword falando sobre as ameaças ao Java. Não que o problema seja a repercussão do assunto.
O problema é as paranóias e as besteiras que saem por ai. No GUJ, já tem gente achando que o Java vai acabar. Já o MeioBit, talvez o maior blog de tecnologia do Brasil, aproveitou bem a oportunidade para fazer o que eles tem feito bem nos últimos tempos, propaganda de produtos da Microsoft. (Foi você que pensou isso ai que você esta pensando sobre o MeioBit e a Microsoft. Eu não insinuei nada)
Quero registrar aqui alguns comentários que fiz sobre esse assunto.
Primeiro, a plataforma Java não vai acabar. Não vai acabar tão cedo, e talvez não acabe nunca. Digo nunca no sentido de que é quase impossível ele virar coisa do passado nos próximos 20 anos.
O que me faz pensar isso? Simples, é só ver o que as empresas usam para desenvolver seus softwares HOJE. Sim, HOJE, as grandes empresas usam JAVA. Não quer dizer que elas não usam .NET, Ruby e mais outras tecnologias. Mas as grandes, principalmente bancos e multinacionais, estão desenvolvendo cada vez mais com o JAVA. Muitas delas também estão usando .NET, mas um numero muito maior esta relacionada com a plataforma JAVA.
Outro fato é que as grandes fornecedoras de tecnologia como Oracle, SAP, IBM entre tantas outras, tem como frente de desenvolvimento principal o JAVA. Junto a esses fatos está o que a plataforma Java está em constante evolução. O Java hoje não é o que é a 10 anos atrás, está muito melhor e melhorando sempre e isso tudo é o que garante que por muitos anos a principal plataforma de desenvolvimento corporativo vai ser JAVA.
Então, se hoje a plataforma Java é a solução adotada pela maioria das grandes empresas, vamos ter desenvolvimento por muito tempo, e depois ninguém vai dizer: “Agora joga fora e faz de novo em .NET”.
Para o Java morrer ele precisa virar legado. Só que a cada ano, mais e mais software está sendo desenvolvido em Java. Então não adianta pensar a curto prazo, porque provavelmente o Java só vai estar maior ainda.
Se algum dia a plataforma Java virar legado, ainda existirá por muitas décadas. Hoje, ainda tem anuncio para desenvolvedor Cobol e Clipper no jornal. Talvez só uma pessoa que tenha muito pouco conhecimento de desenvolvimento de software e do mercado é que compararia o Java com o Cobol. São coisas completamente diferente e em nada se compara.