
Vejamos as principais novidades:
JPA 2.1 (JSR-338)
Agora a JPA irá suportar chamadas a procedures de maneira transparente, sem a necessidade de usar código específico de nenhuma implementação:
//prepara a procedureStoredProcedureQuery query = EntityManager.createStoredProcedureQuery("processaBoletos");//registra os parametros da procedurequery.registerStoredProcedureParameter(1, String.class, ParameterMode.OUT); //saídaquery.registerStoredProcedureParameter(2, Integer.class, ParameterMode.IN); //entradaquery.setParameter(2, 001); //seta o parametroquery.execute();String resposta= query.getOutputParameterValue(1); |
Podemos também invocar qualquer função que esteja disponível no banco de dados, através do novo comando
FUNCTION da JPQL: SELECT cFROM Cliente cWHERE FUNCTION(‘EhClienteEspecial’, c.id) |
Os
EntityListeners da JPA agora também estão integrados com o CDI, permitindo receber por injeção qualquer dependência usando o @Inject: class PedidoListener{ @Inject private GeredorDeNumero gerador; @PrePersist public void geraNumero (Object o){ Pedido p = (Pedido) o; P.setNumero(gerador.novoNumero()); }} |
Também foi incluído o suporte a operações de update e delete em lote usando criteria, além de outras funcionalidades.
CDI 1.1 (JSR-346)
Apenas pequenas mudanças e melhorias serão incluídas nessa versão. Entre algumas das novidades esperadas estão permitir a ordenação de Interceptors e Decorators, uma API para criação de contextos personalizados, injeção de objetos estáticos e criação de eventos relacionados a API de Servlets, como inicio/fim de um
HTTPServletRequest por exemplo.EJB 3.2 (JSR-345)
Aqui o foco é continuar facilitando cada vez mais a configuração e o uso de EJBs. Agora teremos suporte a transações dentro de callbacks do ciclo de vida dos beans:
@Statefulpublic class CarrinhoBean{ @PersistenceContext private EntityManager em; @TransactionAttribute @PrePassivate public void armazenaNoBanco(){ // algum código transacional } ...} |
As configurações sobre quais interfaces serão expostas nos beans também foram simplificadas:
public interface Agendador{}public interface Executador{} //todas as interfaces são locais @Stateless public class AgendadorBean implements Executador, Agendador{ ...}//todas as interfaces são remotas@Remote@Statelesspublic class AgendadorBean implements Executador, Agendador{ ...} |
Caso deseje que apenas uma das interfaces seja exposta, é só adicionar a anotação desejada:
@Remotepublic interface Agendador{}//apenas a interface Agendador é exposta como remota@Statelesspublic class AgendadorBean implements Executador, Agendador{ ...} |
JSF 2.2 (JSR-344)
Algumas features que antes só estavam disponíveis através do Seam3 agora fazem parte da especificação. Isso acontece com a tag
viewAction e a possibilidade de receber injeção de dependências via CDI em qualquer componente do JSF, como Validator, Converters e até mesmo em componentes customizados.Uma nova annotation
@ViewScoped foi criada em substituição a atual para permitir integração do CDI com ManagedBeans neste escopo. E falando em escopos, o @FlowScoped foi adicionado para ajudar na criação de fluxos pré-definidos, como wizards, sequências de passos em algum fluxo de negócio, etc.Além destas, ainda há uma integração melhor com HTML5, suporte a configuração programática, um novo componente para upload de arquivos usando ajax, e muitas outras, como é possível ver na lista de novidades no JSF 2.2
JAX-RS 2.0 (JSR-339)
Agora com suporte a uma API de cliente, é possível implementar chamadas a um serviço rest de maneira portável entre os servidores sem a necessidade de bibliotecas externas:
Client client = ClientFactory.newClient();//Dispara uma requisição GET para a url http://.../produtos?nome=Caneta .queryParam("nome", "Caneta") .request().get(Produto.class); |
Outras novidades são a integração com Bean Validation, suporte a requisições assíncronas tanto na API cliente quanto na servidor, filtros e interceptors.
JMS 2.0 (JSR-343)
JMS foi uma das especificações que mais sofreram alterações, removendo a maior parte do código desnecessário para enviar mensagens:
@Statelesspublic class EnviadorDeMensagens @Resource(lookup = "jms/connectionFactory") ConnectionFactory connectionFactory; @Resource(lookup="jms/fila") Queue fila; public void sendMessageNew (String msg) { try (JMSContext context = connectionFactory.createContext();){ context.send(fila,msg); } }} |
Além de outras alterações e novas funcionalidades, como o suporte a Paas, melhorias nos Message Driven Beans e envio de mensagens com hora marcada.
Bean Validation 1.1 (JSR-349)
As anotações de validação agora podem ser utilizadas em parametros de métodos:
public void login (@NotNull String login, @NotNull String pass){ ...} |
Componentes como
ConstraintValidator agora são integrados ao CDI, além de outras pequenas mudanças.Outras especificações foram adicionadas ao JavaEE, como JCACHE para gerenciamento de cache de objetos, Batch para execução de tarefas em lote, similar ao Spring Batch, JSON-P com as mesmas funcionalidades do JAX-B, mas para Json. Na lista completa de funcionalidades do JavaEE 7 você pode acompanhar todas as JSRs e conhecer mais sobre as novas especificações e evoluções da plataforma Java.
Fonte: Mário Amaral - Caelum





