Mostrando postagens com marcador JPA. Mostrar todas as postagens
Mostrando postagens com marcador JPA. Mostrar todas as postagens

terça-feira, 28 de dezembro de 2010

Slides JavaOne 2010 USA, Brasil e TDC2010

Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces foi o tema apresentado no JavaOne nos Estados Unidos (San Francisco) e aqui no Brasil este ano. Contudo, o título que melhor descreveria a apresentação seria Dicas e Truques sobre performance em aplicações Web com JSF, JPA e AJAX.

Junto com o Danival Taffarel Calegari, fiz uma prévia deste tema no evento TDC2010 (The Developers Conference 2010 - Globalcode) em português. Depois fizemos vários ajustes e a tradução para inglês antes do JavaOne 2010 USA. Quando soubemos que o evento seria trazido para o Brasil, encaminhamos o mesmo tema como proposta de palestra. Foi aprovada e, após uma nova tradução para o português e algumas melhorias, realizamos a palestra duas vezes aqui no Brasil.

A primeira apresentação aqui no Brasil, no JavaOne, foi realizada no dia 08/12 (quarta-feira) às 16h. Para nossa surpresa, a lotação da sala foi máxima e infelizmente muitas pessoas ficaram de fora por falta de lugar. Mas, uma surpresa maior ainda foi sermos convidados para uma segunda apresentação no dia 09/12 (quinta-feira) às 14h. Esta segunda apresentação foi sugerida para atender aquelas pessoas que ficaram na fila e não conseguiram entrar na sala. Tivemos uma grande fila novamente, mas desta vez, todos puderam entrar na sala, mesmo alguns ficando em pé e outros sentados no chão, resultado numa nova lotação. Assim, fechamos 4 apresentações sobre o tema proposto.

O feedback da nossa apresentação nos USA foi muito bom. Mas, o resultado das apresentações aqui no JavaOne do Brasil foi muito melhor ainda.


Agora compartilho os slides usados nestas quatro apresentações em três versões.



Esta última versão contem um vídeo (screencast) da aplicação de demonstração (implementação de referência) desenvolvida para demonstrar as dicas e truques apresentadas nos slides.

O projeto criado como implementação de referência das dicas e truques apresentadas está disponível como um projeto open source no SourceForge através do link: JavaOne Catalog Prototype.

Enjoy it!

By Spock
Twiiter: @drspockbr
http://linkedin.spock.com.br/
http://facebook.spock.com.br/
http://www.springbrasil.com.br/

segunda-feira, 24 de maio de 2010

Palestra aceita para o JavaOne 2010

Este ano terei mais uma vez o privilégio de participar como palestrante do JavaOne, o maior evento Java do mundo.

No ano passado, com o tema "Enterprise Web 2.0 Architecture: from pristine Java EE to fully-loaded frameworks" (slides) e junto com o Vinicius Senger (sócio e co-fundador da Globalcode), apresentamos este tema num período de 60 minutos para uma sessão do tipo BoF (Birds of a Feather). Foi uma experiência ímpar apresentar uma palestra neste evento e totalmente em inglês.

Agora, para este ano, o tema será "Performance Tips and Tricks: Java EE, Persistence API and JavaServer Faces". Desta vez, vou apresentar junto com o Danival Calegari (arquiteto de software na Matera Systems e instrutor da unidade Globalcode em Campinas).

Neste evento teremos o objetivo de apresentar algumas técnicas (boas práticas atualizadas de desenvolvimento com JSF+JPA e design patterns) para melhorar a performance de aplicações Web 2.0 implementadas através de JSF com Ajax e acesso a banco de dados relacional via JPA com grande volume de dados. Para ilustrar estas técnicas, apresentaremos um estudo de caso através de uma aplicação usada como "implementação de referência" para ajudar a resolver problemas de performance encontrados em alguns projetos de consultoria realizados ao longo deste último ano.

O vídeo a seguir apresenta uma versão simplificada da aplicação demo que será usada para apresentar as "dicas&truques" sobre performance em aplicações Web 2.0:


O JavaOne 2010 acontecerá dos dias 19 a 23 de setembro em San Francisco, USA.

Segue uma tradução para português do resumo enviado para a organização do evento:

Dicas e Truques sobre performance em Java EE, JPA e JSF
"Desde o lançamento do JavaServer Faces no Java EE, tornou-se possível desenvolver aplicações Web 2.0 usando um modelo efetivo de componentes visuais com a mesma semântica de aplicações desktop baseando em Swing. O modelo de eventos tornou-se efetivo após a popularização do Ajax ao promover RIA. Todavia, performance e escalabilidade são afetadas por velhos padrões de projetos quando são aplicados na arquitetura da aplicação. Novos padrões de projeto devem ser aplicados para atingir os requisitos de performance neste novo cenário.

Esta sessão apresentará algumas dicas e truques para melhoria efetiva da performance de interfaces Web usando Ajax e o gerenciamento do contexto de persistência JPA."

Até a data do evento, vamos melhorar a aplicação de referência, preparar os slides em inglês e refinar o texto do que será dito durante a apresentação.

Será uma aventura e tanto!


Read it in English!

segunda-feira, 4 de janeiro de 2010

EJB 3: Uma evolução sob os conceitos do Hibernate e Spring

Definitivamente o modelo de componentização definido no Java EE 5 e 6 evoluiu e melhorou muito. Mas, sem dúvida muita dessa evolução se deve às pressões do Hibernate e Spring Framework. Estes dois últimos frameworks nasceram baseados no conceito de POJO, que nada mais é do que a concepção de um modelo de componentização baseado em classes Java sem as regras impostas pelo EJB (curioso, sem o EJB não existiria o Hibernate ou o Spring).

O Hibernate nasceu da idéia de promover um modelo de persistência mais simples que o proposto pelos EJBs do tipo Entity Beans definido na especificação EJB 2.x. Este foi o primeiro tipo de EJB a sofrer com a evasão de desenvolvedores com o surgimento deste framework e a conscientização sobre os problemas nos Entity Beans. A partir de um modelo baseado em JavaBeans e o uso do JDBC, o Hibernate usa a Reflection API para gerar os SQLs necessários para persistir o estado de beans em diversos banco de dados relacionais, além de definir o conceito de dialeto para resolver as diferenças de sintaxe do SQL usado entre as diferentes implementações de banco de dados. Ao resolver efetivamente a persistência dos objetos em banco de dados relacional, a morte dos entity beans estava decretada. Não foi atoa que no Java EE 5, numa tentativa de resgatar um padrão efetivo entre os desenvolvedores, surgiu o JPA usando os mesmos conceitos do Hibernate e promovendo uma API padrão com base em vários dos seus conceitos. A morte oficial dos entity beans no EJB!

Já o Spring Framework nasceu para combater os problemas resultantes das idéias usadas nas definições de outro tipo fundamental de componente do modelo proposto pelos EJBs: os Session Beans. Usando a mesma proposta do Hibernate, o Spring Framework adotou o JavaBean como modelo de componentização aliado aos serviços enterprise com o auxílio da programação orientada a aspectos (AOP). Assim, o Spring Framework decretou a morte dos EJBs do tipo Session Beans.

O Java EE 5, apesar de manter compatibilidade com as versões anteriores, aplica os mesmos conceitos usados pelo Hibernate e Spring Framework (JavaBeans e injeção de dependências, por exemplo), numa tentativa de evitar o êxodo de desenvolvedores da padronização. Dando o braço a torcer, o EJB 3 aplica um modelo baseado em POJOs (que ironia!) até eliminar a obrigatoriedade das interfaces home, remota e local (favorecendo uma modelagem OO efetiva, uso de herança, polimorfismo, design patterns e interfaces de negócios). Contudo, o Java EE 5 trouxe uma novidade que impôs uma evolução nos frameworks que foram os seus carrascos: O uso de anotações para eliminar configurações em XML. Poderíamos dizer que o EJB 3 não é uma mera cópia dos conceitos usados no Hibernate e Spring, mas também traz uma inovação ao fazer copy/paste/modify. Curioso foi ver que o Hibernate e o Spring foram obrigados a evoluir.

Contudo, podemos notar que o EJB 3.0 deixou de fora muitas das melhorias já presentes no Hibernate/Spring. No JPA 1.0 podemos notar a falta do mecanismo de "Criteria" e no EJB a falta de uma modularização mais flexível além dos tradicionais JAR, WAR e EAR. Tanto que agora no EJB 3.1 e JPA 2.0, várias melhorias tentam eliminar as deficiências reclamadas pela comunidade que já não existiam em versões antigas do Hibernate e Spring Framework.

Muitos se questionam hoje se deveriam usar o Hibernate e o Spring considerando as evoluções do EJB 3 e JPA estabelecidas pelo Java EE 5 e 6. Acredito que pela simplicidade e padronização proporcionados no Java EE deveríamos usar o EJB e JPA. Mas, considerando as limitações deveríamos levar em consideração o uso do Hibernate e do Spring Framework. Apesar de não serem frameworks padrões, e por isso mesmo, não estão limitados às imposições políticas de vários interesses, estes frameworks têm a liberdade de evoluir e experimentar idéias inviáveis até o momento no Java EE, além de propiciar a integração com outros frameworks que também não são padrões e são legados ainda em uso pela comunidade (por exemplo: Struts, iText, Quartz, etc). Muitos conhecem as vantagens de usar o Hibernate diretamente em detrimento das limitações do JPA. No Spring temos a modularização através de OSGi e o uso pleno do AOP como parte da modelagem dos componentes de negócios das aplicações enterprise.

Apesar das melhorias amplamente comentadas no Java EE 6 através do EJB 3.1 e JPA 2.0, ainda é evidente muitas das vantagens do uso direto do Hibernate e do Spring Framework.