quarta-feira, 4 de fevereiro de 2009

Spring na Java Magazine by Spock

Finalmente consegui ter uma cópia da edição 65 da revista Java Magazine. Já fazem 10 dias que tive notícias de colegas que assinam a revista dizendo que já receberam. Mas, até hoje ainda não está nas bancas!

Estava ancioso para por as mãos nesta edição para ver como ficou o artigo que escrevi sobre o Spring Framework.

O artigo descreve uma aplicação simples e completa usando Spring Framework, JSF e JPA. Através de configurações em XML e anotações, os serviços de transação e persistência são ilustrados no desenvolvimento de DAOs e componentes de negócios gerenciados pelo Spring e acessados através de telas na web com JSF. As principais funcionalidades do Spring Framework e as partes que compõem o Spring Portfólio também são descritas neste artigo.

Uma aplicação completa para web é presentada, desde a modelagem simples de casos de uso até códigos em classes Java, interfaces e diagramas UML de classes e sequência, mostrando como usar o Spring Framwork para simplificar o desenvolvimento de aplicações.

Nem tudo é perfeito ... Por mais que revisemos o artigo e que exista um editor extremamente criterioso durante a revisão, sempre sobram alguns erros. Para a tranquilidade de todos, não são erros técnicos, mas sim, pequenos erros ortográficos e posicionamento de figuras e listagens em páginas diferente de onde são referênciados.

Aqui estão algumas erratas que encontei após uma nova leitura do texto através da revista:
  • Pág. 54, 1a. coluna, 3o. parágrafo: A figura 1 citada aparece na página 53 exigindo do leitor a mudança de página;
  • Pág. 60, 1a coluna, 3o parágrafo: Aparece a palavra "componentes" onde deveria ser "componente" resultando em: "Em alguns casos não é possível configurar um componente gerenciado pelo Spring através de anotações";
  • Pág 60, 1a coluna, 3o e 4o parágrafos: O início do 4o parágrafo repete a mesma informação apresentada no final do 3o. parágrafo;
  • Pág. 61, 1a coluna, 1o parágrafo: Uma das anotações do Spring está grafada com um s a mais: @Respository, e o certo seria: @Repository;
  • Pág. 61, 1a coluna, 4o parágrafo: A listagem 5 é referenciada nesta página e o conteúdo desta listagem está na página 62, exigindo do leitor a mudança de página.
  • Pág 63, 1a coluna: As listagens 7 e 8 são citadas nesta página, mas o conteúdo destas listagens estão na página 64, exigindo do leitor a mudança de página.
Como podem verificar não são problemas sérios. Alguns são inevitáveis por conta da necessidade de diagramação e outros foram descuido do escritor que vos escreve :)

De qualquer maneira, o artigo ficou muito bom e muito bem apresentado na Java Magazine. Está bem diagramado e com o conteúdo na medida certa. Contudo, para não estender o tamanho do texto, foi necessário colocar somente os códigos fontes e diagramas necessários para o entendimento do assunto apresentado. Em alguns códigos, trechos considerados irrelevantes foram omitidos sem prejuízo para a compreenção. Mas, a DevMedia disponibilizou para download o projeto Eclipse completo que fiz para a aplicação demonstrada no artigo. Quem se interessar pode fazer o download clicando aqui. O zip baixado tem um arquivo "leiame.txt" com os pré-requisitos e passos para instalação.

Show de bola foi a dobradinha com o artigo nesta mesma edição da Java Magazine que traz a tradução da entrevista com o Rod Johnson (criador do Spring e fundador da SpringSource) realizada no JavaOne2008. Eu ajudei a escrever algumas perguntas que foram realizadas pela Yara Senger (Globalcode) e Melissa Villela (Globalcode) durante o evento. Não perdi a oportunidade de questionar os seguintes pontos:
  • A plataforma Spring pretende ser uma alternativa viável à própria plataforma Java EE, e não apenas uma alternativa a EJB?
  • Depois do EJB 3 no Java EE 5, porque deveríamos continuar usando Spring nas aplicações enterprise?
Não foi surpresa ouvir uma resposta positiva para a primeira pergunta e um bom argumento para continuarmos com o Spring. Tem um bom tempo que percebo a intenção do Spring de ser um forte concorrente da plataforma Java EE e isto motivou a minha pergunta. Ele também cita que mesmo com as melhorias no Java EE 5, o EJB 3 ainda continua contendo grande parte do legado "por baixo dos panos" e que diversas funcionalidades continuam limitadas e falham em atingir os objetivos propostos por algumas tecnologias, como por exemplo AOP! Com estas respostas ficou claro para mim que não adianta mais ficar comparando Spring com EJB. O Spring Framework é apenas uma parte da plataforma. Já temos um servidor de aplicações Spring com suporte fantástico a OSGi que implementará no futuro alguns dos profiles especificados para o Java EE 6. Também não podemos esquecer das diversas bibliotecas e frameworks que compõem o chamado Spring Portfólio. Agora temos que comparar as plataformas para decidirmos qual arquitetura implantar no nosso sistema corporativo: Spring Platform versus Java EE Platform!

Por fim, comento no artigo os passos necessários para se tornar um profissional certificado em Spring Framework (S2CP - SpringSource Certified Professional). No início deste ano fiz a prova de certificação. Depois conto os detalhes em outro post.

Quem quiser comentar estes artigos da edição 65 da Java magazine é só mandar para blog@spock.com.br ou escrever comentários para este post.

Then, enjoy!

domingo, 14 de dezembro de 2008

A caneta Java no TDC Floripa

No TDC 2008 fiz uma demonstração da caneta que roda java. Aproveitei o evento e preparei alguns slides que usei na apresentação resumindo algumas características do hardware e software.

Lugar legal para compartilhar apresentações é o slideshare.

quarta-feira, 10 de dezembro de 2008

The Beer Book


Dica imperdível para os apreciadores de cerveja. Apreciadores de verdade!

The Beer Book de Tim Hampson

O livro traz comentários de mais de 1700 cervejas de mais de 800 cervejarias do mundo. Conta a história de várias cervejarias e muitas fotos das garrafas e rótulos das cervejas. Além de algumas anotações de vários apreciadores.

Muito bom, vale a pena conferir!

Vejam outros comentários:
Then enjoy!

terça-feira, 4 de novembro de 2008

A Microsoft comprou a SpringSource?

Tem muita gente acreditando nisso!

Com o recente lançamento do site InfoQ no Brasil com artigos traduzidos para o português, alguns dasavisados acabaram acreditando.

Os 20 melhores artigos de 2008 da InfoQ em inglês foram traduzidos para o português e um deles incluiu a pegadinha de primeiro de abril realizada pelo Rod Johnson (criador do Spring Framework e CEO da SpringSource).

Vejam video abaixo.

Muitos caíram no erro pelo site não ter divulgado inicialmente que era uma piada de primeiro de abril. Mas, alguns leitores espertos perceberam o deslize e avisaram o site para correção.
Links para os artigos na InfoQ:
Fonte: InfoQ.

sexta-feira, 31 de outubro de 2008

A guerra dos navegadores

Segue um documentário muito interessante que conta a história do surgimento dos browsers. Também fala da guerra entre a Netscape e Microsoft que determinou a morte do browser Netscape e ascensão do Internet Explorer.



Fonte: Discovery Brasil.

quarta-feira, 22 de outubro de 2008

LinkedIn usa Spring Framework

Achei muito legal ter lido no blog do Matt Raible (Raible Designs) que o site de relacionamentos profissionais LinkedIn usa Spring Framework.

Ele participou de uma palestra onde um integrante da equipe de desenvolvimento do site contou as experiências de uso do Spring. Interessante foram alguns números apresentados pelo Matt: 2 data centers (~600 máquinas), ~100 serviços (componentes), ~30-40 interfaces, ~1000 arquivos de configuração do Spring e atualmente 30 milhões de usuários com a taxa de crescimento de 1 milhão a cada 2-3 semanas! Uau! Tudo rodando num cluster de ~600 máquinas com o Tomcat! Isso mesmo, TOMCAT! Agora eles querem evoluir a solução para usar modularização através de OSGi e Spring Dynamic Modules for OSGi (que facilita tremendamente o uso de OSGi). Tudo isso para prover hotdeploy e múltiplas versões dos componentes, além da distribuição automatizada no ambiente em cluster.

Este mesmo caso de sucesso será apresentado no evento SpringOne que acontecerá no final deste ano nos USA com o título Case Study: Spring at LinkedIn.

Legal também foi a frase que vi no blog do pessoal do LinkedIn: LinkedIn is 99% Java but 100% Mac. Nos outros 1% estão usando C++, Ruby on Rails e Groovy/Grails.

Contudo, fiquei muito espantando quando soube que tem alguns poucos loucos querendo remover o Spring Framework de uma aplicação funcionando muito bem em produção simplesmente por ter birra do Spring e birra de frameworks. Se pelo menos estivessem substituíndo por EJB 3 ou JBoss Seam com um servidor de aplicações decente como o JBoss Application Server, aí eu aceitaria. Mas a insanidade leva a quererem usar servlets puro ou talvez Struts puro. Vai entender!

Quanto mais pesquiso sobre o Spring Framework vejo que tornou-se um padrão de fato. Não precisa ir muito longe em cliques ou páginas de resultado da busca no Google para ver muitos outros casos de sucesso de arquiteturas funcionando muito bem com o Spring Framework.

Não deixem de visitar o blog do pessoal do LinkedIn em (http://blog.linkedin.com/) ou o blog do Matt Raible em (http://raibledesigns.com/).

segunda-feira, 13 de outubro de 2008

JBoss Seam: Injection vs Outjection

Injection - A capacidade do JBoss Seam de atribuir uma referência válida para um objeto (Seam Component) num atributo de outro componente. Esta capacidade é realizada através das anotações @In e @DataModelSelection, por exemplo. Quando o Seam encontra estas anotações num atributo de um Seam Component, localiza um objeto num dos contextos com o nome indicado e injeta no atributo.

Outjection - Que também podemos chamar de ejeção, é a capacidade do JBoss Seam de expor um objeto referenciado por um atributo de um Seam Component num dos contextos do Seam. Ejetar significa o Seam pegar a referência para um objeto armazenado num atributo privado de um Seam Component e armazenar num dos contextos com um nome associado. Ao expor o atributo, mesmo privado, este estará disponível para injeção em outros Seam Components via injection ou para acesso via Expression Language (EL) numa tela JSF. Esta capacidade é realizada pelo Seam através da anotação @Out. Contudo, no momento de ejetar um atributo como Seam Component num dos contextos, o Seam pode realizar alguma transformação do objeto como, por exemplo, na anotação @DataModel onde o Seam encapsula uma lista de objetos num JSF Data Model antes de armazená-lo no contexto. Assim, quando o usuário seleciona um item num Data Table numa tela JSF, o JSF sabe qual objeto foi selecionado e o Seam recupera este objeto para injetar num outro atributo do Seam Component que foi marcado com a anotação @DataModelSelection.

Sobre os contextos do Seam escrevi os posts Sobre os contextos do JBoss Seam e Seam Contexts Ilustrados. Neste último post cito a diferença entre Context Variable e Instance Variable. Considerando estes dois conceitos, podemos definir como injeção o movimento realizado pelo Seam de uma referência para um objeto do Context Variable para o Instance Variable. Já ejeção significa o movimento de um Instance Variable para um Context Variable. Nestes movimentos, o Seam pode realizar transformação dos objetos.
  • Anotações que realizam injeção: @In e @DataModelSelection.
  • Anotações que realizam ejeção: @Out, @DataModel, @Factory e @Name.
Then, any issue let me know! Post comments!