Material da palestra – Java 8 e o futuro

Propaganda
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-programminglanguage-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
•
•
Estático
•
•
objeto::nomeDoMetodoInstancia
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
[email protected]
Download