Java 8 Conhecendo as principais novidades
Java 8Conhecendo as principais novidades
Quem sou eu
Agenda
1. Como o Java evolui?2. A nova API de Data e Hora3. Default Methods e Functional Interfaces4. O que são Lambdas?5. Method Reference6. Streams
1. Como o Java evolui?
Java SE Java EE
● Linguagem Java● Compilador● Máquina Virtual
● Bibliotecas padronizadas
● Servidor de Aplicação
Especificação Implementação
● JCP - Process● JSR 337 - Spec● Especificação de
Referência● Expert Group e
Contribuidores
● Implementações de fornecedores
● Precisam seguir o padrão
● Liberdade para implementar
Especificação Implementação
JPA Hibernate, Eclipse Link ...
JSF
Servidor Java EE
JVM
Mojarra, MyFaces ...
Wild Fly, Glassfish, TomEE
OpenJDK, HotSpot, JRockit
2. A nova API de Data e Hora
java.util.Date Java 1.0
● Que 12 se refere ao ano, mês ou dia?● Mês 12 não é dezembro, é janeiro!● Ano 12 não é ano 12, é 1913!● Há um horário na data?● Que timezone é esse?
java.util.Calendar Java 1.1
…
● Mutável e não thread-safe● Bastante verboso● Não pode ser formatado, usa Date● Não pode ser criado a partir de um Date● Possui bugs e problemas de performance
java.time.LocalDate Java 8.0
● Fácil de Usar● Design fluente● Imutável, thread-safe● ISO 8601 – Formato: ANO-MES-DIA● Dezembro é 12!
// qual foi o dia da semana do último natal?
// qual foi o dia da semana do último natal?
// trabalhando com períodos
// o que mais?
● Cálculos com datas e horas● Nível de nanosegundos● Fuso horário● Comparação (isAfter, isBefore, isEqual)● Duração● Formatação simples● Interoperações com Date e Calendar
3. Default Methods e Functional Interfaces
Default Methods
…
Default Methods
…
Default Methods
Default Methods
Default Methods
Functional Interfaces
…
etc...
4. O que são Lambdas?
Classe anônima
Classe anônima
Lambdas!
Lambdas!
Lambdas!
Lambdas!
Lambdas!
Lambdas! Outros exemplos
5. Method Reference
Method Reference
Method Reference
6. Streams
Streams
Streams
Streams
Streams
Para saber mais
Obrigado! =)
Meu blog: rsaraiva.comMeu twitter: @rubenssaraiva