com Java EE 7 Java 8 na prática · Java EE 7 Jetty: EJBs com OpenEJB Que depende de OpenWebBeans...

22
Java 8 na prática com Java EE 7 Michael Nascimento Santos

Transcript of com Java EE 7 Java 8 na prática · Java EE 7 Jetty: EJBs com OpenEJB Que depende de OpenWebBeans...

Java 8 na prática com Java EE 7Michael Nascimento Santos

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

Onde rodar?

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! :-)

Servidores

9.2.6

GlassFish 4.11.7.1

8.2

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)

Faça testes objetivos para os seus cenários!

Lambda

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() 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

java.time com ...

Retenção de parâmetros

Default e static em interfaces

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!

Agradecimentos● Janario Oliveira● João Bosco Monteiro● Rodrigo Santos