Java 8 para o dia a dia

361 visualizações

Publicada em

Exemplos práticos de como aplicar as novas apis no seu trabalho
Projeto no github desta palestra: https://github.com/RicardoRFaria/PalestraJava8

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
361
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java 8 para o dia a dia

  1. 1. Java 8 para o dia a dia Exemplos práticos de como aplicar as novas apis no seu trabalho
  2. 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. 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. 4. Java 8 para web [2] Clouds com suporte no PAAS - Amazon - Openshift - Bluemix - Azure (demanda configuração adicional)
  5. 5. Novas funções da collection - Sort - ForEach - RemoveIf Exemplos na classe: NovidadesCollection.java
  6. 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. 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. 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. 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. 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. 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.
  12. 12. Exemplo de código Classes - CarrosIdadeProcessor.java - VariasManeirasDeSeEscreverLambda.java - ImportacaoArquivo.java
  13. 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. 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. 15. Outras várias funções da stream - Distinct - FindAny, FindFirst - First, Last - Min, max, count - Collect - Reduce Exemplos na classe: CalculadoraIdadeCarro.java
  16. 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. 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. 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. 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. 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. 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

×