Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8...

29
Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta

Transcript of Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8...

Page 1: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Java 8 e o futuroThiago Gonzaga ZUP IT @thiguetta

Page 2: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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

Page 3: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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

Page 4: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 5: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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.

Page 6: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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

Page 7: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Métodos DefaultEvoluir sem quebrar

Page 8: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 9: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

(Re)Lembrando de Classes anônimasImplementar interfaces no ato da instanciação

Page 10: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 11: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Interfaces FuncionaisInterfaces com uma única declaração de método

Page 12: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 13: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Expressões LambdaNotação de implementação de interfaces funcionais

Page 14: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 15: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

(params) -> {bloco de código}

Page 16: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 17: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Interfaces Funcionais Comuns

• Predicate<T> - expressão booleana.

• Consumer<T> - processa um valor

• Function<T, R> - recebe e retorna um valor

Page 18: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Method ReferenceReferência para métodos já implementados

Page 19: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Method Reference• Instancia

• objeto::nomeDoMetodoInstancia

• Estático

• Classe::nomeDoMetodoEstatico

• Construtor

• Classe::new

Page 20: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência
Page 21: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Coleções• Novos métodos

• forEach

• removeIf

• sort

• replaceAll

• stream

Page 22: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Stream

• Principais métodos

• map

• reduce

• filter

• collect

Page 23: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Code

Page 24: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Nova API de Datas• Instant

• Period

• Duration

• LocalDateTime

• ZoneDateTime

• DateFormatter

Page 25: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

OptionalWrapper para evitar NullPointerException

Page 26: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Base64

Page 27: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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

Page 28: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

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)

Page 29: Java 8 e o futuro - SINDADOS-BAHIAsindadosba.org.br/wp-content/uploads/2015/07/Material-da...Java 8 e o futuro Thiago Gonzaga ZUP IT @thiguetta Quién soy jo? • Bacharel em ciência

Obrigado

Thiago Gonzaga @thiguetta [email protected]