SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Java 8 e o futuro
Thiago Gonzaga
ZUP IT
@thiguetta
Quién soy jo?
• Bacharel em ciência da computação pela UNESP
• Desenvolvedor desde 2004, em Java desde 2007
• Evangelista Java, palestrante e entusiasta de
tecnologias livres e Open Source.
• Coordenador de Eventos do Grupo de Usuários
Java.
• Desenvolve Java na ZUP IT
Agenda
• 20 anos de Java
• Java como software livre.
• Por que Java?
• Métodos Default, classes anônimas e interfaces funcionais.
• Expressão Lambda e Method Reference
• Coleções e Streams
• Opcionais, API de Data e APIs Legadas da Sun.
• O que vem por ai: Java 9?
• JCP e como contribuir
• Faça o Java 9
Java como SL
• Sun começou a liberar em 2006 (partes do código)
• 2007 Java tornou-se livre de fato.
• Oracle comprou a Sun em 2009.
• Comunidade ficou apreensiva.
• Oracle já informou que não irá fechar o código.
• Com ajuda da comunidade as últimas bibliotecas
ainda sob patente foram reimplementadas.
Por que Java?
• De acordo com o Lifehacker
• Java: One of the Most Practical Languages to
Learn
• "Once you've learned Java, you can learn
other OOP languages pretty easily"
• http://lifehacker.com/which-programming-
language-should-i-learn-first-1477153665
Métodos Default
Evoluir sem quebrar
(Re)Lembrando de
Classes anônimas
Implementar interfaces no ato da instanciação
Interfaces Funcionais
Interfaces com uma única declaração de método
Expressões Lambda
Notação de implementação de interfaces funcionais
(params) -> {bloco de código}
Interfaces Funcionais
Comuns
• Predicate<T> - expressão booleana.
• Consumer<T> - processa um valor
• Function<T, R> - recebe e retorna um valor
Method Reference
Referência para métodos já implementados
Method Reference
• Instancia
• objeto::nomeDoMetodoInstancia
• Estático
• Classe::nomeDoMetodoEstatico
• Construtor
• Classe::new
Coleções
• Novos métodos
• forEach
• removeIf
• sort
• replaceAll
• stream
Stream
• Principais métodos
• map
• reduce
• filter
• collect
Code
Nova API de Datas
• Instant
• Period
• Duration
• LocalDateTime
• ZoneDateTime
• DateFormatter
Optional
Wrapper para evitar NullPointerException
Base64
Java 9
• Data de lançamento: 22/09/2016
• JSON API leve (JEP 198)
• HTTP 2 e websockets (JEP 110)
• API de processos do sistema operacional (JEP 102)
• Melhoria de Locking de Monitores (JEP 143)
• Cache de código segmentado (JEP 197)
• Melhoria no processo de compilação (JEP 199)
• Modularização do código da JDK (JEP 201)
• Javadoc em HTML 5
JCP e como contribuir
• JCP - Java Community Process (jcp.org)
• Comitê que define os padrões de Java
• Composto pelas principais empresas de TI do mundo e
comunidade.
• Brasil tem uma cadeira cativa ocupada pelo SOUJAVA
• JSR - Java Specification Request
• Adote uma JSR (https://glassfish.java.net/adoptajsr)
• Adote a OpenJDK (https://java.net/projects/adoptopenjdk)
Obrigado
Thiago Gonzaga
@thiguetta
thi_gonzaga@yahoo.com.br

Mais conteúdo relacionado

Destaque

Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...
Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...
Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...Lippo Group Digital
 
Presentación del tabaco
Presentación del tabacoPresentación del tabaco
Presentación del tabacoMichelleivette
 
SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS jacqueline llamuca
 
Técnicas de recuperação para atletas
Técnicas de recuperação para atletasTécnicas de recuperação para atletas
Técnicas de recuperação para atletasFernando Farias
 
ASME Section VIII Div 1. design training
ASME Section VIII Div 1.  design trainingASME Section VIII Div 1.  design training
ASME Section VIII Div 1. design trainingSam Jose
 
What is Eddystone
What is EddystoneWhat is Eddystone
What is Eddystonebfonics
 

Destaque (10)

Computer Studies
Computer StudiesComputer Studies
Computer Studies
 
Elevating Entrepreneurial Ecosystems
Elevating Entrepreneurial EcosystemsElevating Entrepreneurial Ecosystems
Elevating Entrepreneurial Ecosystems
 
Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...
Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...
Analisis performa kecepatan mapreduce pada hadoop menggunakan tcp packet flow...
 
El sentido del tacto
El sentido del tactoEl sentido del tacto
El sentido del tacto
 
Presentación del tabaco
Presentación del tabacoPresentación del tabaco
Presentación del tabaco
 
SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS
 
Técnicas de recuperação para atletas
Técnicas de recuperação para atletasTécnicas de recuperação para atletas
Técnicas de recuperação para atletas
 
ASME Section VIII Div 1. design training
ASME Section VIII Div 1.  design trainingASME Section VIII Div 1.  design training
ASME Section VIII Div 1. design training
 
Concrete
Concrete Concrete
Concrete
 
What is Eddystone
What is EddystoneWhat is Eddystone
What is Eddystone
 

Semelhante a Java 8 e futuro

14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdfgabriel-colman
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemPetronio Candido
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
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
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosRafael Chaves
 
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
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5Helder da Rocha
 

Semelhante a Java 8 e futuro (20)

Java8
Java8Java8
Java8
 
14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf14-programacao-bd-Object Relational Mapper.pdf
14-programacao-bd-Object Relational Mapper.pdf
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Aula 1 - Seja um programador Java
Aula 1 - Seja um programador JavaAula 1 - Seja um programador Java
Aula 1 - Seja um programador Java
 
ANTLR & ANTTLRWorks
ANTLR & ANTTLRWorksANTLR & ANTTLRWorks
ANTLR & ANTTLRWorks
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da Linguagem
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Linguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem JavaLinguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem Java
 
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
 
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutosTDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
TDC SP 2016 - Construindo um microserviço Java 100% funcional em 30 minutos
 
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
 
1213 java
1213 java1213 java
1213 java
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5JustJava 2005: Web Services em Java com o JWSDP 1.5
JustJava 2005: Web Services em Java com o JWSDP 1.5
 

Mais de Thiago Gonzaga

Big Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoBig Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoThiago Gonzaga
 
Keynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteKeynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteThiago Gonzaga
 
Concurrency 1.0: Concorrência em Ambientes Corporativos
Concurrency 1.0: Concorrência em Ambientes CorporativosConcurrency 1.0: Concorrência em Ambientes Corporativos
Concurrency 1.0: Concorrência em Ambientes CorporativosThiago Gonzaga
 
Virtualização e cloud computing
Virtualização e cloud computingVirtualização e cloud computing
Virtualização e cloud computingThiago Gonzaga
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia JavaThiago Gonzaga
 

Mais de Thiago Gonzaga (8)

Big Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começandoBig Data: Seus problemas estão apenas começando
Big Data: Seus problemas estão apenas começando
 
Software Livre
Software LivreSoftware Livre
Software Livre
 
Keynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - JavanoroesteKeynote Abertura 20 Dias de Java - Javanoroeste
Keynote Abertura 20 Dias de Java - Javanoroeste
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Concurrency 1.0: Concorrência em Ambientes Corporativos
Concurrency 1.0: Concorrência em Ambientes CorporativosConcurrency 1.0: Concorrência em Ambientes Corporativos
Concurrency 1.0: Concorrência em Ambientes Corporativos
 
Virtualização e cloud computing
Virtualização e cloud computingVirtualização e cloud computing
Virtualização e cloud computing
 
Compweek
CompweekCompweek
Compweek
 
Introdução a Tecnologia Java
Introdução a Tecnologia JavaIntrodução a Tecnologia Java
Introdução a Tecnologia Java
 

Java 8 e futuro

  • 1. Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta
  • 2. Quién soy jo? • Bacharel em ciência da computação pela UNESP • Desenvolvedor desde 2004, em Java desde 2007 • Evangelista Java, palestrante e entusiasta de tecnologias livres e Open Source. • Coordenador de Eventos do Grupo de Usuários Java. • Desenvolve Java na ZUP IT
  • 3. Agenda • 20 anos de Java • Java como software livre. • Por que Java? • Métodos Default, classes anônimas e interfaces funcionais. • Expressão Lambda e Method Reference • Coleções e Streams • Opcionais, API de Data e APIs Legadas da Sun. • O que vem por ai: Java 9? • JCP e como contribuir • Faça o Java 9
  • 4.
  • 5. Java como SL • Sun começou a liberar em 2006 (partes do código) • 2007 Java tornou-se livre de fato. • Oracle comprou a Sun em 2009. • Comunidade ficou apreensiva. • Oracle já informou que não irá fechar o código. • Com ajuda da comunidade as últimas bibliotecas ainda sob patente foram reimplementadas.
  • 6. Por que Java? • De acordo com o Lifehacker • Java: One of the Most Practical Languages to Learn • "Once you've learned Java, you can learn other OOP languages pretty easily" • http://lifehacker.com/which-programming- language-should-i-learn-first-1477153665
  • 8.
  • 9. (Re)Lembrando de Classes anônimas Implementar interfaces no ato da instanciação
  • 10.
  • 11. Interfaces Funcionais Interfaces com uma única declaração de método
  • 12.
  • 13. Expressões Lambda Notação de implementação de interfaces funcionais
  • 14.
  • 15. (params) -> {bloco de código}
  • 16.
  • 17. Interfaces Funcionais Comuns • Predicate<T> - expressão booleana. • Consumer<T> - processa um valor • Function<T, R> - recebe e retorna um valor
  • 18. Method Reference Referência para métodos já implementados
  • 19. Method Reference • Instancia • objeto::nomeDoMetodoInstancia • Estático • Classe::nomeDoMetodoEstatico • Construtor • Classe::new
  • 20.
  • 21. Coleções • Novos métodos • forEach • removeIf • sort • replaceAll • stream
  • 22. Stream • Principais métodos • map • reduce • filter • collect
  • 23. Code
  • 24. Nova API de Datas • Instant • Period • Duration • LocalDateTime • ZoneDateTime • DateFormatter
  • 25. Optional Wrapper para evitar NullPointerException
  • 27. Java 9 • Data de lançamento: 22/09/2016 • JSON API leve (JEP 198) • HTTP 2 e websockets (JEP 110) • API de processos do sistema operacional (JEP 102) • Melhoria de Locking de Monitores (JEP 143) • Cache de código segmentado (JEP 197) • Melhoria no processo de compilação (JEP 199) • Modularização do código da JDK (JEP 201) • Javadoc em HTML 5
  • 28. JCP e como contribuir • JCP - Java Community Process (jcp.org) • Comitê que define os padrões de Java • Composto pelas principais empresas de TI do mundo e comunidade. • Brasil tem uma cadeira cativa ocupada pelo SOUJAVA • JSR - Java Specification Request • Adote uma JSR (https://glassfish.java.net/adoptajsr) • Adote a OpenJDK (https://java.net/projects/adoptopenjdk)