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

Post on 08-Jul-2020

0 views 0 download

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

Java 8 e o futuroThiago 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 DefaultEvoluir sem quebrar

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

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

Expressões LambdaNotaçã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 ReferenceReferê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

OptionalWrapper 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