O documento discute as tendências e evolução da linguagem Java. Apresenta as principais mudanças nas versões Java 8 até Java 12, incluindo novas funcionalidades como lambdas, módulos e inferência de tipo local. Também aborda tópicos como microserviços, bancos NoSQL, Spring Boot e o futuro do Java EE e Spring Framework.
2. Quem sou eu e por que estou aqui?
Antonio Lazaro Carvalho Borges
● antonio.lazaro@gmail.com
● @antonio_lazaro
● https://www.slideshare.net/antoniolazarobr
● https://www.linkedin.com/in/antonio-lazaro-
carvalho-borges-a78a1514/
3. Nosso grupo de Java
● https://pt-br.facebook.com/javabahia
● http://javabahia.blogspot.com.br/
● https://medium.com/javabahia
● https://twitter.com/javabahia
● https://www.youtube.com/soujava
4. Mas o Java não morreu?
Fonte: http://www.jb.com.br/internacional/noticias/2017/05/01/bbc-homem-mais-velho-do-
mundo-morre-na-indonesia-aos-146-anos/
5. Mas o Java não morreu?
https://www.tiobe.com/tiobe-index/
6. Mas o Java não morreu?
http://pypl.github.io/PYPL.html
7. Mas o Java não morreu? Vagas
https://medium.com/development-io/the-7-most-in-demand-programming-languages-of-2018-9c1b7fc0abc6
8. Mas o Java não morreu?
https://insights.stackoverflow.com/survey/2018/#most-popular-technologies
12. Mudança na forma de evoluir o Java - Tempo de release menor
● 7 - 28/07/2011
● 8 - 14/04/2015 (4 anos | 194 semanas | 45 meses | 1357 dias)
● 9 - 27/07/2017 (2 anos | 119 semanas | 27 meses | 836 dias)
● 10 - 20/03/2018 (8 meses | 34 semanas | 237 dias)
● 11 - 25/09/2018 (6 meses | 27 semanas | 190 dias)
● 12 - 19/03/2019 (6 meses | 25 semanas | 176 dias)
13. Java Release Train
● Java 8 - Lambda atrasou lançamento pelo menos 2x. Data inicial era 2013, foi
lançado em 2015.
● Java 9 - Project Digsaw atrasou lançamento em quase 1 ano
O que fazer para atender demanda de mercado?
1. Update-releases - A cada 3 meses
2. Feature-releases - A cada 6 meses
3. Long-term-support-release (LTS) - A cada 3 anos
14. Java Release Train
1. Update-releases (trimestrais)
a. Correção de bugs
b. Correção de aspectos de segurança
2. Feature-releases (semestrais)
a. Lançamento de novas funcionalidades
b. Atualizações de APIs
c. Melhorias na JVM
3. Long-term-support-release (LTS) (3 anos)
a. Maior estabilidade e garantia de continuidade de uma release
b. Oracle JDK 8 para atualizar a partir de Janeiro de 2019 deve ter licença
comercial
15. Java Release Train
1. Beneficios:
a. Oportunidade de melhorar a linguagem
b. Flexibilidade na evolução
c. Melhorias para a plataforma trazendo mais segurança e qualidade para o
projeto
1. Característica
a. Versionamento baseado em tempo (http://openjdk.java.net/jeps/322)
16. Então Java não é mais free?
1. Não! Java is still free.
(https://docs.google.com/document/d/1qKmU9Jfa3exLMYkgaERbzntGhmpYGf5
V7pPcgKj03ds/edit#heading=h.p3qt2oh5eczi)
Oracle JDK 8 está no processo de "Fim de Atualizações Públicas" o que significa que não haverá mais atualizações
gratuitas para fins comerciais ao final de Janeiro de 2019. Porém, desde o Java SE 9, a Oracle está disponibilizando
também o builds OpenJDK que são livres para uso comercial, e há também builds gratuitos do OpenJDK de outras
empresas como AdoptOpenJDK, Azul, IBM, Red Hat, Linux distros e outros.
Essas empresas provaram que suas implementações atendem a todos os requisitos da especificação Java SE ao
passarem pelos testes de Technology Compatibility Kit (TCK).
17. Então Java não é mais free?
Continuando com o Java SE 8
Algumas pessoas querem continuar utilizando o Java SE 8 por vários motivos.
1. Oracle proverá atualizações públicas do Oracle JDK 8 até, pelo menos, Dezembro de 2020, para uso
em computador pessoal e Janeiro de 2019 para uso comercial. Depois disso, os usuários podem ou
ir para o plano pago ou utilizar o binário de Java SE 8 / OpenJDK 8 de outra empresa.
a. Você pode também continuar utilizando o Oracle JDK 8 por tempo indefinido sem updates.
1. Caso você não esteja utilizando o Oracle JDK 8, então o seu atual provedor de Java SE 8 /
OpenJDK 8 proverá atualizações de maneira grátis e/ou planos de suportes pagos para você
escolher.
18. Então Java não é mais free?
Usando Java SE 11 (LTS)
Você tem várias opções. Leia com atenção, em especial dado que o Oracle JDK está mudando a partir do Java SE 11.
1. A partir do Java SE 11, a Oracle passa a fornecer seu próprio JDK (baseado no OpenJDK) através de:
a. Binários OpenJDK da Oracle - sob licença Open Source existente GPLv2+CE, e
b. Oracle JDK - Sob uma licença comercial paga (mas gratuita para desenvolvimento), para aqueles que
não desejem utilizar a GPLv2+CE, ou que estejam utilizando o Oracle JDK com um produto ou serviço
da Oracle.
NOTA: A Oracle planeja fornecer atualizações para seus Binários do OpenJDK por duas atualizações trimestrais e
posteriormente migrar os usuários para a próxima versão, a cada seis meses (incluindo a versão LTS)
2. Você também pode utilizar as distribuições binárias do Java SE / OpenJDK de diversos outros fornecedores,
incluindo distribuições Linux, AdoptOpenJDK, Azul, IBM, Oracle, Red Hat, e outros. . Isso inclui atualizações
por períodos variados, dependendo se é uma versão LTS ou não.
19. E a evolução técnica da linguagem?
● Java 8
○ Stream Collections
○ Default methods para interfaces
○ Lambda
○ Method reference
● Java 9
○ Java 9 REPL (JShell)
○ Private methods in Interfaces
○ Melhorias no gerenciamento de Strings (30-50% menos de consumo de memória)
○ Java 9 Module System (Jigsaw Project or JPMS - Java Platform Module System)
○ Reactive Streams (Publish-Subscribe Framework)
○ HTTP 2 Client
○ Process API
● Java 10
○ Local Variable Type Inference (https://slides.com/mateusmalaquias/contatos-imediatos-var-java10#/)
○ Time-Based Release Versioning
● Java 11
○ Remoção Java EE e Corba Modules
○ Release LTS
○ Local-Variable Syntax for Lambda Parameters
20. E a evolução técnica da linguagem?
● Próxima release?
○ https://openjdk.java.net/projects/jdk/12/
24. E o Java EE 8?
Fonte: https://vaadin.com/blog/-/blogs/vaadin-community-survey-learn-more-about-our-users-
25. E o Java EE 8?
● JSF 2.3 (JSR 372)
a. Websockets
b. Multi-field validation
c. Java time Support
d. UI Data e ui:repeat supports Map and Itarable
● Servlet 4.0 (JSR 369)
a. Support to HTTP 2
● Jax-RS 2.1 (JSR 370)
a. Reactive API
b. Support for SSE (Server Sent Events)
c. Improved CDI Integration
d. Support for Non-blocking IO in Providers
26. E o Java EE 8?
● CDI 2.0 (JSR 365)
a. Java SE BootStrap
b. Asynchronous Events
● Bean validation 2.0 (JSR 380)
a. Support for LocalTime, Optional
b. Customized constraint validations
● JSON-B (JSR 367)
a. Standardize means of converting Json to Java Objects and vice-versa
(Gson, Jackson, etc).
● Java EE Security API (JSR 375)
● JCache (JSR 107)
30. E o spring? Para onde vai?
Fonte: https://www.udemy.com/spring-framework-video-tutorial/
31. E o spring? Para onde vai?
● JDK 8 minimum requirement
● Support for Java 9
● Http 2 on client and server
● Reactive streams based controllers
● Support for Kotlin language
● Support for running on a server programmatically
● Testing improvements with Junit 5 suport
● Mais informações: https://github.com/spring-projects/spring-framework/wiki/What%27s-
New-in-the-Spring-Framework
32. E esse tal de microserviços?
Fonte: http://comunytek.com/en/introduction-to-microservices/
51. Referências
■ Process API:
a. http://www.javaworld.com/article/3176874/java-language/java-9s-other-new-enhancements-part-3.html
b. https://blog.oio.de/2016/09/02/process-api-java-9/
c. http://www.baeldung.com/java-9-process-api
○ Java 10:
■ http://openjdk.java.net/projects/jdk10/
■ Valhalla
■ https://en.wikipedia.org/wiki/Project_Valhalla_(Java_language)
■ https://www.javacodegeeks.com/2016/10/value-project-valhalla.html
■ http://www.oracle.com/technetwork/java/jvmls2016-goetz-3126134.pdf
■ Money:
■ http://javamoney.github.io/
■ http://www.baeldung.com/java-money-and-currency
■ http://www.mscharhag.com/java/java-jsr-354-money-and-currency-api
52. Referências
■ Java EE 8:
a. https://www.slideshare.net/rcuprak/java-ee-8-update
b. http://blog.rahmannet.net/2017/03/vaadin-community-survey-confirms-java.html
c. https://javaee-guardians.io/java-ee-adoption-surveys/
d. Java EE Guardians:
i. https://javaee-guardians.io/
ii. http://eldermoraes.com/2017/06/07/top-20-java-ee-experts-to-follow-on-twitter/
e. JSRs:
i. JEE: https://www.jcp.org/en/jsr/detail?id=366
ii. Servlet 4.0: https://jcp.org/en/jsr/detail?id=369
iii. JSON-p 1.1: https://jcp.org/en/jsr/detail?id=374
iv. JSON-B 1.0: https://jcp.org/en/jsr/detail?id=367
v. CDI: 2.0: https://www.jcp.org/en/jsr/detail?id=365
1. https://medium.com/javabahia/finalmente-cdi-2-0-foi-lan%C3%A7ado-2911eec56ac8
2. https://otaviojava.wordpress.com/2016/04/28/cdi-2-0/
3. http://www.cdi-spec.org/news/2017/05/15/CDI_2_is_released/
4. http://www.cdi-spec.org/news/2017/02/01/CDI_2_is_in_public_review/
5. https://www.slideshare.net/ThorbenJanssen/cdi-20-deep-dive
6. http://www.mastertheboss.com/jboss-frameworks/cdi/introduction-to-cdi-2-0-api
53. Referências
i. Bean validation 2.0: https://www.jcp.org/en/jsr/detail?id=380
1. http://beanvalidation.org/news/2016/07/15/bean-validation-2-0-is-coming/
2. http://beanvalidation.org/news/2017/08/07/bean-validation-2-0-is-a-spec/
3. http://beanvalidation.org/
4. http://in.relation.to/2017/08/07/and-here-comes-hibernate-validator-60/
5. http://beanvalidation.org/specification/
6. http://in.relation.to/2017/08/07/and-here-comes-hibernate-validator-60/
ii. JEE Security: https://www.jcp.org/en/jsr/detail?id=375
■ Spring 5:
a. https://spring.io/blog/2016/09/22/new-in-spring-5-functional-web-framework
b. http://www.baeldung.com/spring-5-functional-web
c. https://dzone.com/articles/whats-new-in-spring-framework-5
d. https://dzone.com/articles/new-in-spring-5-functional-web-framework
e. https://www.slideshare.net/AliakseiZhynhiarousk/reactive-spring-framework-5
54. Referências
i. Microprofile:
1. https://microprofile.io/faq
2. https://microprofile.io/projects
a. http://tomee.apache.org/apache-tomee.html
b. https://www.payara.fish/
c. https://developer.ibm.com/wasdev/websphere-liberty/
d. http://wildfly-swarm.io/
ii. Microservices:
1. Lagom:
a. https://www.lagomframework.com/
b. https://github.com/lagom/lagom
c. http://www.baeldung.com/lagom-reactive-microservices
d. https://www.infoq.com/news/2016/03/lagom-microservices-framework
2. Vertx
a. http://vertx.io/
b. http://tutorials.jenkov.com/vert.x/index.html
c. https://www.infoq.com/br/news/2012/05/vertx
55. Referências
i. Nosql
1. Jnosql:
a. https://otaviojava.wordpress.com/tag/jnosql/
b. https://github.com/JNOSQL
c. http://jnosql.org/
2. Spring data:
a. http://projects.spring.io/spring-data/
ii. Spring boot:
1. https://projects.spring.io/spring-boot/
2. https://start.spring.io/
iii. JHipster:
1. https://jhipster.github.io/