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]