sexta-feira, 3 de outubro de 2008

EJB 3 versus Spring

O objetivo dos frameworks é esconder a complexidade dos desenvolvedores (como, por exemplo, controle de transações, segurança e persistência), facilitar o reúso de código, melhorar a produtividade e conseqüentemente melhorar a qualidade do software. E neste ponto podemos dizer que tanto Spring quanto o EJB 3 cumprem muito bem este objetivo.

O que podemos dizer então sobre os dois frameworks:
  • O framework Spring é um framework popular, Open Source e é desenvolvido inicialmente pela empresa Interface21 Inc. Sua arquitetura é baseada principalmente em arquivos de configuração XML. O framework Spring não é um padrão de mercado e não possui apoio de grandes empresas como IBM, Oracle e Sun.
  • O framework EJB 3 é um padrão de mercado definido pela JCP e é suportado pelas maiores empresas que utilizam J2EE. Possuem implementações disponíveis pelas empresas Jboss e Oracle. EJB 3 faz forte uso de anotações disponíveis a partir de Java 5. As versões anteriores de EJB se mostraram pouco produtivas e complicadas, o que foi modificado na versão 3 do framework.

Uma vantagem que vejo é o fato de EJB 3 ser independente de empresas. Como exemplo disto, temos o fato do Oracle usar o TopLink como implementação da especificação JPA e o JBoss ter como implementação o Hibernate.

Por outro lado temos que podemos rodar o Spring em qualquer servidor de aplicação, mas pelo fato do Spring não ser um padrão da indústria estamos travados ao Spring e os serviços fornecidos por ele.

Outra vantagem do EJB 3 é o fato de como o framework está fortemente acoplado com o servidor, estes servidores podem melhorar suas performance atuando em conjunto com o framework. A integração entre JTA e JPA com os servidores é bem alta o que faz com que os servidores sejam extremamente otimizados para este tipo de operação com EJB3.
Uma vantagem do Spring seria a facilidade de utilizar a injeção de quaisquer componentes. Com EJB 3 só se possui controle dos componentes que são Beans do EJB e também do contexto de persistência.

Com relação a XML ou anotação, temos EJB 3 utilizando preferencialmente anotações e Spring utilizando preferencialmente XML. Isto, podemos dizer que é a gosto do freguês. Particularmente prefira a anotações por ser menos verboso, mais robusto, além de possuir verificação de consistência em tempo de compilação.

Como conclusão, temos que ambos, são ótimos frameworks, sendo que cada um deles possui suas vantagens. Particularmente em um projeto novo decidiria pelo EJB 3 devido ao maior suporte das grandes empresas e por ser um padrão.

É isto aí pessoal. Espero que isto ajude alguém...

quarta-feira, 3 de setembro de 2008

Questões de Struts para prova de seleção

Questões de Struts:

Como configurar o web.xml para utilizar o framework Struts?
Deve primeiramente configurar a ActionServlet que receberá todas as requisições e depois mapear alguma extensão como .do para o nome mapeado da servlet acima.

Quais são as classes principais do framework Struts?
As classes principais são:
ActionServlet, ActionForm, Action, ActionMapping, ActionForward e ActionErrors.

O que são classes Action?
Classes Action são responsáveis por realizar a adaptação entre a requisição http e a lógica de negócio correspondente. O controle selecionará a cada requisição a Action especifica, criará uma instância se necessário e chamará o método execute.

Uma Action é ou não Thread Safe?
Não. Apenas uma instancia da Action será utilizada para todas as requisições e por isto ela deve ser feita de uma maneira Thread Safe.

Qual arquivo deve ser alterado para prover suporte ao tiles?
Para prover suporte ao tiles deve ser alterado o arquivo struts-config para prover suporte a ele e deve ser definido um arquivo chamado tiles-def.xml.

Struts provê suporte ao Validator por default?
Não. Plugins adicionais devem ser utilizados para prover suporte ao Validate.

Estas são apenas algumas questões e possíveis respostas. Espero que estas perguntas ajudem.

Questões de EJB para prova de seleção

Questões de EJB:

Quais são os diferentes tipos de Enterprise Beans?

Os tipos de Enterprise Beans são Stateless Session Bean, Stateful Session Beans, Entity Beans e Message Driven Beans.

O que são Entity Beans?

Entity Beans são utilizados para representar os dados que serão persistidos no banco de dados. Eles provêem uma interface para dados que deveriam normalmente ser acessados utilizando JDBC ou outra API.

Qual a diferença entre Container-Managed Persistent (CMP) Bean e Bean-Managed Persistent (BMP)?

CMP é mais simples para desenvolver e mais difícil para o servidor EJB suportar, pois toda lógica de sincronização com a base de dados é realizada automaticamente pelo Container. Com CMP o Container é responsável por controlar a persistência de um Entity Bean.

Com BMP o Enterprise Bean é responsável por controlar o sincronismo do estado do objeto com o banco de dados. BMP permite ao desenvolvedor a flexibilidade de realizar operações que são muito complicadas para o Container ou utilizar um SGBD que não é suportado pelo Container.

O que é Bean Managed Transaction?

Se o desenvolvedor não deseja que o Container gerencie as transações pode-se programar todas as operações manualmente escrevendo o código JDBC apropriado. Para se utilizar o Bean Managed Transaction todo controle de transação deve ser feito pelo desenvolvedor. Utilizar BMT pode tornar sua implementação incompatível com algumas bases de dados e pode aumentar a quantidade de código a ser escrita.

É isto pessoal. Se quiserem mais perguntas e respostas sobre EJB me avisem. Em breve posto algumas perguntas e respostas sobre outras tecnologias.

segunda-feira, 1 de setembro de 2008

Resultado da prova

Olá pessoal,

Desculpem mais um bom tempo sem postar. Estava fazendo um curso estas últimas semanas sobre JSF e não estava tendo muito tempo. A boa notícia é que fui aprovado na parte 3 da certificação de arquiteto e agora com o fim do curso terei mais tempo de postar no site.

Como próximo tópico para os posts colocarei algumas perguntas frequentes em provas de arquitetura e desenvolvimento. Todas as perguntas com uma resposta bem resumida. Agradeço muito aqueles que continuam lendo os posts.

quinta-feira, 3 de julho de 2008

Certificação SCEA

Olá pessoal,

Acabei de fazer hoje a parte 3 da certificação de arquiteto (SCEA). Para fazer pesquisei antes no site do javaranch algumas dicas sobre esta parte da certificação. A que achei mais interessante foi a seguinte:


Responda as seguintes perguntas e tome nota. As perguntas estão em Inglês propositalmente, pois a parte 3 deve ser respondida em Inglês. Inclusive é interessante responder estas perguntas durante a parte 2, pois isto te ajuda a verificar se sua solução está completa.

1) How does your design handle Scalability?
2) How does your design handle performance?
3) How does your design handle security?
4) How does your design handle Reliability?
5) How does your design handle Availability?
6) How does your design handle Extensibility?
7) How does your design handle Manageability?
8) How does your design handle Maintainability?

Para cada uma das perguntas abaixo responda também "Porque você escolheu?".

1) How does your design support session/state handling?
2) How does your design handle persistence?
3) How does your client tier talk to business tier?
4) How does your design handle Qos 5 Sec in peak time?
5) How does your design handle transactions?
6) How does your design handle authentication and authorization?

É isto aí pessoal. Espero ter ajudado...