1. Java 8 para o dia a dia
Exemplos práticos de como aplicar as novas apis no
seu trabalho
2. Desenvolvedor desde 2012
Java Web, AngularJS e Android
Certificações OCJP e OCJPA
Email: ricardo.faria@outlook.com.br
https://github.com/RicardoRFaria
https://br.linkedin.com/in/ricardorfaria/pt/
Ricardo Faria
3. Java 8 para web
Frameworks com suporte:
- Spring 4+ o que inclui Spring Boot
- JSF (dependendo do ambiente)
Containers com suporte:
- Tomcat, Jersey e Undertow (Servlet)
- Wildfly 8 (Java EE)
- Glassfish 4.1 (Java EE)
4. Java 8 para web [2]
Clouds com suporte no PAAS
- Amazon
- Openshift
- Bluemix
- Azure (demanda configuração adicional)
5. Novas funções da collection
- Sort
- ForEach
- RemoveIf
Exemplos na classe: NovidadesCollection.java
6. Novas funções da api de map
- ForEach
- Remove (preciso - por chave e valor)
- Replace
- ComputeIfPresent, ComputeIfAbsent
- GetOrDefault
Exemplos na classe: NovidadesMap.java
7. String Join
Com a vinda do java 8, String ganhou um novo
método chamado join(), utilizado para
concatenar várias strings.
Exemplo na classe: StringJoin.class
8. Lambda functions
- São funções inline, que implementam uma
interface funcional;
- Tipo, parâmetro e retorno inferidos
automaticamente pela JVM;
- Lambdas não podem manter estado e nem
modificar variáveis do escopo anterior.
9. Interfaces funcionais
- Apenas um método abstrato
- Interfaces já existentes podem ser funcionais
(Ex: Runnable)
- A annotation @FunctionalInterface demarca
uma interface funcional, mas não é
obrigatória.
10. Métodos default
- O modificar default permite implementar
um método na interface;
- Não precisam ser reimplementados, mas
podem;
- Não pode ser final.
11. Criar outra collection para filtrar algo.
NUNCA MAIS!
- O filter permite filtrar collection com base
em um Predicate;
- Predicate que é uma interface funcional do
java 8, portanto podemos utilizar Lambda.
13. Interface x Classe abstrata
- Interfaces não podem ter métodos final,
classes abstratas podem;
- Classes podem implementar várias
interfaces, mas somente extender uma classe
abstrata.
14. Stream
- As stream são a base para criação do lambda
no Java;
- Streams são divididas entre serial e parallels;
- São imutáveis, ou seja, não modificam a
collection;
- Não devem ser reaproveitadas.
15. Outras várias funções da stream
- Distinct
- FindAny, FindFirst
- First, Last
- Min, max, count
- Collect
- Reduce
Exemplos na classe: CalculadoraIdadeCarro.java
16. Cuidados com Stream
- Processamento collections que tem outras
collections;
- Repetição de etapas da stream em mais de
uma linha do seu código;
- Parallels apenas para os casos necessários;
- Streams que ultrapassam 2 linhas de código.
17. Stream Collector
Utilizada para colletar resultados de streams;
A classe estática Collectors provê vários coletores
prontos como:
- Agrupadores
- Média, Soma, Mínimo, Máximo
- Conversões em collections
Exemplos em: CollectorsNaPratica.java
18. Optional<T>
Optionals são wrappers genéricos que representam um
objeto que pode ser nulo;
Retornado por streams quando o resultado pode ser nulo;
Caso o objeto seja nulo, é possível efetuar ações como:
- Retornar um objeto como no pattern “NullObject”;
- Lançar uma exception
Exemplo na classe: OptionalNaPratica.java
19. Nova api de tempo
A terceira api de tempo provida no java agora
trás solução para diversos problemas que
encontramos no dia a dia, como:
- Duração;
- Intervalo entre períodos;
- Manipulação dos tempos;
- Representação em outros formatos.
20. Vantagens da nova api de tempo
- Separação de conceitos clara;
- Você escolhe se tempo, data ou os dois serão
utilizados;
- A api utiliza internamente valores sem
formato, permitindo fácil formatação;
- Imutável portanto thread safe.
Exemplo na classe: TimeNaPratica.java
21. Links da palestra
Código no github:
https://github.com/RicardoRFaria/PalestraJava8
Recomendação de livro:
http://www.casadocodigo.com.br/products/livro-java8