com java ee 7 java 8 na prática · java ee 7 jetty: ejbs com openejb que depende de openwebbeans...
TRANSCRIPT
Agenda● Onde rodar?● Lambda● parallelStream() vs Concurrency Utilities● java.time com JSF / JPA / JAX-RS● Retenção de parâmetros● Default e static methods em interfaces
Usamos na maioria dos projetos servidores open-source
Fizemos um estudo de onde rodar e características de performance
Onde rodar?● Suíte de testes
○ JSF (ViewAccessScoped, @PostConstruct, Stateless e Stateful, com JDBC, com JPA…)
○ JAX-RS, mesmo que acima○ JAX-WS○ @Async / @Schedule○ Ainda tá crescendo! :-)
Onde rodar?● TomEE: não tinha release que suportasse
Java EE 7
● Jetty: ○ EJBs com OpenEJB○ Que depende de OpenWebBeans○ Que carrega o mundo inteiro○ E um monte de erros :-S
Onde rodar?● GlassFish e WildFly
○ Pequenos glitches○ Performance bastante próxima, com leve vantagem
para o GlassFish em casos de maior carga○ WildFly ganhou (alegria do Janario)
Lambda● Não elimina HQL / SQL / Whatever QL
● Cenários:○ Processamentos massivos dos mesmos dados○ Lógica complexa de negócios○ Elementos que naturalmente já estão em RAM
parallelStream() vs Concurrency
● parallelStream() não foi pensado para Java EE :-S○ Falta de isolamento○ Configuração dos pools
● Só resta usar stream() as is ou Concurrency Utilities ou reescrever stream (me avisem!)
● Mais referências no fim dos slides
Default e static methods em interfaces
● Default○ Evolução de interfaces○ Possível de implementar sem estado○ Flexibilidade de hierarquia de classes○ Uso de lambda
● Static○ Factories
● No Java 9, private methods!
Conclusão● Algumas coisas trazem valor imediato
(lambda & streams, default & static methods em interfaces)
● Outras exigem esforço (java.time + Java EE, retenção de parâmetros)
● Outras... não dá! (parallelStream())● Java EE 8 vai melhorar as coisas!
Referências● A Java™ Parallel Calamity (um pouco
exagerado)● Think twice before using Java 8 parallel
streams● Custom thread pool in Java 8 parallel stream● When to use parallel streams● Converters JPA (impl, não testei, só achei!)
Referências● Mais converters JPA (também não testados)● Issue para suportar java.time no Hibernate
(feita apenas para o 5.0)● Issue para suportar java.time no JPA em si● Issue para suporte do CDI ao Java SE 8● Repeating annotations no Java EE