SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Java 8 para o dia a dia
Exemplos práticos de como aplicar as novas apis no
seu trabalho
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
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)
Java 8 para web [2]
Clouds com suporte no PAAS
- Amazon
- Openshift
- Bluemix
- Azure (demanda configuração adicional)
Novas funções da collection
- Sort
- ForEach
- RemoveIf
Exemplos na classe: NovidadesCollection.java
Novas funções da api de map
- ForEach
- Remove (preciso - por chave e valor)
- Replace
- ComputeIfPresent, ComputeIfAbsent
- GetOrDefault
Exemplos na classe: NovidadesMap.java
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
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.
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.
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.
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.
Exemplo de código
Classes
- CarrosIdadeProcessor.java
- VariasManeirasDeSeEscreverLambda.java
- ImportacaoArquivo.java
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.
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.
Outras várias funções da stream
- Distinct
- FindAny, FindFirst
- First, Last
- Min, max, count
- Collect
- Reduce
Exemplos na classe: CalculadoraIdadeCarro.java
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.
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
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
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.
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
Links da palestra
Código no github:
https://github.com/RicardoRFaria/PalestraJava8
Recomendação de livro:
http://www.casadocodigo.com.br/products/livro-java8

Mais conteúdo relacionado

Semelhante a Java 8 para o dia a dia

JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaRegis Magalhães
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRodrigo Recio
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Vinicius Pulgatti
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Engenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galoEngenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galoGuilhermePetrosky
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao javaNécio de Lima Veras
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDBHugo Souza
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Bruno Caimar
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves PagesAmanda Luz
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 

Semelhante a Java 8 para o dia a dia (20)

JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
Java 02 Iniciando Uso Java
Java 02 Iniciando Uso JavaJava 02 Iniciando Uso Java
Java 02 Iniciando Uso Java
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO, Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
Apresentação Java, SOA, MICROSERVICE, HTTP, HTTPS, VERSIONAMENTO DE CONTRATO,
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Engenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galoEngenharia da Computação: Resumo servlet + jsp br galo
Engenharia da Computação: Resumo servlet + jsp br galo
 
Java8
Java8Java8
Java8
 
Minicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up SystemsMinicurso Ruby on Rails - Wake Up Systems
Minicurso Ruby on Rails - Wake Up Systems
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Unidade iii aula 02 - introdução ao java
Unidade iii   aula 02 - introdução ao javaUnidade iii   aula 02 - introdução ao java
Unidade iii aula 02 - introdução ao java
 
Sistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOASistemas Distribuídos: RMI, CORBA e SOA
Sistemas Distribuídos: RMI, CORBA e SOA
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
Rails na pratica
Rails na praticaRails na pratica
Rails na pratica
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
 
JSP - Java Serves Pages
JSP - Java Serves PagesJSP - Java Serves Pages
JSP - Java Serves Pages
 
Java 01
Java 01Java 01
Java 01
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 

Java 8 para o dia a dia

  • 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.
  • 12. Exemplo de código Classes - CarrosIdadeProcessor.java - VariasManeirasDeSeEscreverLambda.java - ImportacaoArquivo.java
  • 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