SlideShare uma empresa Scribd logo
1 de 55
E o Java, hein?
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/
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
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/
Mas o Java não morreu?
https://www.tiobe.com/tiobe-index/
Mas o Java não morreu?
http://pypl.github.io/PYPL.html
Mas o Java não morreu? Vagas
https://medium.com/development-io/the-7-most-in-demand-programming-languages-of-2018-9c1b7fc0abc6
Mas o Java não morreu?
https://insights.stackoverflow.com/survey/2018/#most-popular-technologies
Mas o Java não morreu?
O que está rolando?
Java 9 -> Java 10 -> Java 11 -> Java 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)
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
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
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)
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).
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.
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.
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
E a evolução técnica da linguagem?
● Próxima release?
○ https://openjdk.java.net/projects/jdk/12/
Microprofile
Microprofile
Microprofile
E o Java EE 8?
Fonte: https://vaadin.com/blog/-/blogs/vaadin-community-survey-learn-more-about-our-users-
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
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)
E o Java EE 8? - Disponível!
E o futuro do Java EE 8?
E o Java EE 9? EE4J? Jakarta?
E o spring? Para onde vai?
Fonte: https://www.udemy.com/spring-framework-video-tutorial/
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
E esse tal de microserviços?
Fonte: http://comunytek.com/en/introduction-to-microservices/
E esse tal de microserviços?
Nosql
● Spring Data
● JNosql
Java é complicado para configurar...
Java é complicado para configurar…(Maven archetype)
Java é complicado para configurar...Spring Boot
Java é complicado para configurar...SdkMan
Java é complicado para configurar...JHipster
Java é complicado para configurar...Verboso? Spark
Java é complicado para configurar...Pronto, já
pode ser hipster
Ah, não gosto de Java (linguagem)
Ah, não gosto de Java (linguagem)
Ah, não gosto de Java (linguagem)
JVM é tão hipster que roda as linguagens
mais hipsters
● Javascript (nashhorn)
● http://j-php.net/
● http://www.jython.org/
● http://jruby.org/
Não gostei de nada disso. Tem outra opção?
Dúvidas?
Fim.
Referências
● Java 9:
○ http://hipsters.tech/e-o-futuro-do-java-hipsters-27/
○ https://www.linkedin.com/pulse/o-java-9-est%C3%A1-pronto-e-voc%C3%AA-fernando-almeida
○ http://www.java9countdown.xyz/
○ https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6
○ http://openjdk.java.net/projects/jdk9/
○ https://en.eventials.com/Globalcode/tdc-sp-2017-stadium-sabado-8/
○ https://dzone.com/articles/jdk-9-is-feature-complete
○ https://www.pluralsight.com/blog/software-development/java-9-new-features
○ https://www.slideshare.net/SimonRitter/55-new-features-in-jdk-9
○ http://blog.takipi.com/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont/
○ Shell:
■ https://digaotutoriais.wordpress.com/2016/04/17/java-9-introducao-ao-jshell-projeto-kulla/
■ http://blog.caelum.com.br/java-9-na-pratica-repl
○ Private interfaces:
■ https://stackoverflow.com/questions/29040821/java-9-private-interface-methods-example-use-case
■ http://blog.joda.org/2016/09/private-methods-in-interfaces-in-java-9.html
■ http://www.journaldev.com/12850/java9-private-methods-in-interface
Referências
○ Strings:
■ https://blogs.oracle.com/java/strings-in-java-9
■ http://cr.openjdk.java.net/~shade/density/state-of-string-density-v1.txt
■ http://vojtechruzicka.com/java-9-compact-strings/
○ Módulos:
■ https://en.eventials.com/Globalcode/tdc-sp-2017-stadium-sabado-8/
■ http://www.devmedia.com.br/introducao-ao-java-9-conheca-os-novos-recursos/34481
■ http://www.argonavis.com.br/palestras/tdc2017/tdc_java9.pdf
■ https://www.pluralsight.com/blog/software-development/java-9-new-features
○ Outras novidades:
■ Reactive streams:
■ http://javasampleapproach.com/java/java-9/java-9-flow-api-reactive-streams
■ http://javasampleapproach.com/java/java-9/java-9-flow-api-example-publisher-and-subscriber
■ http://www.javaworld.com/article/3198904/learn-java/java-9s-other-new-enhancements-part-6-concurrency.html
■ Http 2 client:
■ https://www.infoq.com/articles/Java9-New-HTTP-2-and-REPL
■ https://blog.idrsolutions.com/2017/05/why-http2-client-in-java-9-is-important/
■ https://jaxenter.com/http-2-ready-for-java-9-130105.html
■ https://labs.consol.de/development/2017/03/14/getting-started-with-java9-httpclient.html
■ https://dzone.com/articles/java-9-http-20
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
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
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
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
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/

Mais conteúdo relacionado

Mais procurados

Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipseFilipe Bezerra Sousa
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaPaulo César M Jeveaux
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Raphael Marques
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoTchelinux
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaRosicleia Frasson
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkDr. Spock
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebCícero Quarto
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Manoel Campos da Silva Filho
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEBruno Borges
 

Mais procurados (18)

Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Java Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo JavaJava Scripting - Linguagens Interpretadas pelo Java
Java Scripting - Linguagens Interpretadas pelo Java
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
Aplicações desktop (GUI) e aplicações ricas para internet (RIA)
 
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo FilhoDesenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Introdução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide WebIntrodução aos computadores e à World Wide Web
Introdução aos computadores e à World Wide Web
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 

Semelhante a Java: linguagem, plataforma e evolução

Java, historico e futuro
Java, historico e futuroJava, historico e futuro
Java, historico e futuroFabiano Souza
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerMaterial da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerManoel Pimentel Medeiros
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIYitzhak Stone
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2Saulo Arruda
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228MoisesInacio
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01rollbackpt
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
As muitas faces do java
As muitas faces do javaAs muitas faces do java
As muitas faces do javaPedro Cavalero
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7pt_programar
 
Applets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inApplets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inSerge Rehem
 

Semelhante a Java: linguagem, plataforma e evolução (20)

Java, historico e futuro
Java, historico e futuroJava, historico e futuro
Java, historico e futuro
 
Java em 2021
Java em 2021Java em 2021
Java em 2021
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara SengerMaterial da palestra sobre Queue Java na InfoQ - Por Yara Senger
Material da palestra sobre Queue Java na InfoQ - Por Yara Senger
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Java OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMIJava OO Middleware - JEE / EJB / RMI
Java OO Middleware - JEE / EJB / RMI
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Como Sobreviver Com Java2
Como Sobreviver Com Java2Como Sobreviver Com Java2
Como Sobreviver Com Java2
 
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
Algaworks ebook-java-ee-7-com-jsf-primefaces-e-cdi-2a-edicao-20150228
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
TDC 2012 - JDF
TDC 2012 - JDFTDC 2012 - JDF
TDC 2012 - JDF
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
As muitas faces do java
As muitas faces do javaAs muitas faces do java
As muitas faces do java
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Novidades de Java EE 7
Novidades de Java EE 7Novidades de Java EE 7
Novidades de Java EE 7
 
Applets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-inApplets - O Retorno: A Nova Geração do Java Plug-in
Applets - O Retorno: A Nova Geração do Java Plug-in
 

Mais de Antonio Lazaro Carvalho Borges (8)

Java pode ser_hipster
Java pode ser_hipsterJava pode ser_hipster
Java pode ser_hipster
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
O uso do Wiki como ferramenta de gestão do conhecimento
O uso do Wiki como ferramenta de gestão do conhecimentoO uso do Wiki como ferramenta de gestão do conhecimento
O uso do Wiki como ferramenta de gestão do conhecimento
 
UMA SOLUÇÃO BASEADA EM GESTÃO DE CONHECIMENTO PARA ARMAZENAMENTO/RECUPERAC...
UMA SOLUÇÃO BASEADA EM GESTÃO DE CONHECIMENTO PARA ARMAZENAMENTO/RECUPERAC...UMA SOLUÇÃO BASEADA EM GESTÃO DE CONHECIMENTO PARA ARMAZENAMENTO/RECUPERAC...
UMA SOLUÇÃO BASEADA EM GESTÃO DE CONHECIMENTO PARA ARMAZENAMENTO/RECUPERAC...
 
Jsf 2 slideshare
Jsf 2 slideshareJsf 2 slideshare
Jsf 2 slideshare
 
Mobile day-ufba-2014-slideshare
Mobile day-ufba-2014-slideshareMobile day-ufba-2014-slideshare
Mobile day-ufba-2014-slideshare
 
Jpa de a à z por que conhecer jpa
Jpa de a à z  por que conhecer jpa Jpa de a à z  por que conhecer jpa
Jpa de a à z por que conhecer jpa
 
Palestra Carreira Java Bahia Meeting
Palestra Carreira Java Bahia MeetingPalestra Carreira Java Bahia Meeting
Palestra Carreira Java Bahia Meeting
 

Java: linguagem, plataforma e evolução

  • 1. E o Java, hein?
  • 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
  • 9. Mas o Java não morreu?
  • 10. O que está rolando?
  • 11. Java 9 -> Java 10 -> Java 11 -> Java 12
  • 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)
  • 27. E o Java EE 8? - Disponível!
  • 28. E o futuro do Java EE 8?
  • 29. E o Java EE 9? EE4J? Jakarta?
  • 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/
  • 33. E esse tal de microserviços?
  • 35. Java é complicado para configurar...
  • 36. Java é complicado para configurar…(Maven archetype)
  • 37. Java é complicado para configurar...Spring Boot
  • 38. Java é complicado para configurar...SdkMan
  • 39. Java é complicado para configurar...JHipster
  • 40. Java é complicado para configurar...Verboso? Spark
  • 41. Java é complicado para configurar...Pronto, já pode ser hipster
  • 42. Ah, não gosto de Java (linguagem)
  • 43. Ah, não gosto de Java (linguagem)
  • 44. Ah, não gosto de Java (linguagem)
  • 45. JVM é tão hipster que roda as linguagens mais hipsters ● Javascript (nashhorn) ● http://j-php.net/ ● http://www.jython.org/ ● http://jruby.org/
  • 46. Não gostei de nada disso. Tem outra opção?
  • 48. Fim.
  • 49. Referências ● Java 9: ○ http://hipsters.tech/e-o-futuro-do-java-hipsters-27/ ○ https://www.linkedin.com/pulse/o-java-9-est%C3%A1-pronto-e-voc%C3%AA-fernando-almeida ○ http://www.java9countdown.xyz/ ○ https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6 ○ http://openjdk.java.net/projects/jdk9/ ○ https://en.eventials.com/Globalcode/tdc-sp-2017-stadium-sabado-8/ ○ https://dzone.com/articles/jdk-9-is-feature-complete ○ https://www.pluralsight.com/blog/software-development/java-9-new-features ○ https://www.slideshare.net/SimonRitter/55-new-features-in-jdk-9 ○ http://blog.takipi.com/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont/ ○ Shell: ■ https://digaotutoriais.wordpress.com/2016/04/17/java-9-introducao-ao-jshell-projeto-kulla/ ■ http://blog.caelum.com.br/java-9-na-pratica-repl ○ Private interfaces: ■ https://stackoverflow.com/questions/29040821/java-9-private-interface-methods-example-use-case ■ http://blog.joda.org/2016/09/private-methods-in-interfaces-in-java-9.html ■ http://www.journaldev.com/12850/java9-private-methods-in-interface
  • 50. Referências ○ Strings: ■ https://blogs.oracle.com/java/strings-in-java-9 ■ http://cr.openjdk.java.net/~shade/density/state-of-string-density-v1.txt ■ http://vojtechruzicka.com/java-9-compact-strings/ ○ Módulos: ■ https://en.eventials.com/Globalcode/tdc-sp-2017-stadium-sabado-8/ ■ http://www.devmedia.com.br/introducao-ao-java-9-conheca-os-novos-recursos/34481 ■ http://www.argonavis.com.br/palestras/tdc2017/tdc_java9.pdf ■ https://www.pluralsight.com/blog/software-development/java-9-new-features ○ Outras novidades: ■ Reactive streams: ■ http://javasampleapproach.com/java/java-9/java-9-flow-api-reactive-streams ■ http://javasampleapproach.com/java/java-9/java-9-flow-api-example-publisher-and-subscriber ■ http://www.javaworld.com/article/3198904/learn-java/java-9s-other-new-enhancements-part-6-concurrency.html ■ Http 2 client: ■ https://www.infoq.com/articles/Java9-New-HTTP-2-and-REPL ■ https://blog.idrsolutions.com/2017/05/why-http2-client-in-java-9-is-important/ ■ https://jaxenter.com/http-2-ready-for-java-9-130105.html ■ https://labs.consol.de/development/2017/03/14/getting-started-with-java9-httpclient.html ■ https://dzone.com/articles/java-9-http-20
  • 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/