SlideShare una empresa de Scribd logo
1 de 35
Java 8Java 8
PERU JUGPERU JUG
JoseJose
DiazDiaz
@joeday@joeday
zz
Nuevos TemasNuevos Temas
Lambda expressionsLambda expressions
Nashorn y JavaScriptNashorn y JavaScript
Compact ProfilesCompact Profiles
Date and Time APIDate and Time API
Java FX 8Java FX 8
Participación de la ComunidadParticipación de la Comunidad
Java ME 8Java ME 8
Java SE 8 y la JVMJava SE 8 y la JVM
LambdaLambda
ExpressionsExpressions
Lambda ExpressionsLambda Expressions
Collection<Person> people = ..;Collection<Person> people = ..;
Iterator<Person> it =Iterator<Person> it =
people.iterator();people.iterator();
while (it.hasNext()) {while (it.hasNext()) {
Person p = it.next();Person p = it.next();
if (p.getAge()>18)if (p.getAge()>18)
it.remove();it.remove();
}}
Abstracción sobreAbstracción sobre
comportamientocomportamiento
interface Predicate<T> {interface Predicate<T> {
boolean test(T t);boolean test(T t);
}}
class Collections {class Collections {
public static<T>public static<T>
void removeAll(Collection<T>void removeAll(Collection<T>
coll,coll,
Predicate<T> pred){Predicate<T> pred){
......
}}
}}
Abstracción sobreAbstracción sobre
comportamientocomportamiento
Collections.removeAll(people,Collections.removeAll(people,
new Predicate<Person>() {new Predicate<Person>() {
public boolean testpublic boolean test
(Person p){(Person p){
return p.getAge() > 18;return p.getAge() > 18;
}}
}}
});});
Abstracción sobreAbstracción sobre
comportamientocomportamiento
Collections.removeAllCollections.removeAll
(people,(people,
p -> p.getAge() > 18);p -> p.getAge() > 18);
Otro EjemploOtro Ejemplo
int highestWeight = 0;int highestWeight = 0;
for (Person p: people) {for (Person p: people) {
if (p.getGender() ==if (p.getGender() ==
MALE){MALE){
int weight =int weight =
p.getWeight();p.getWeight();
highestWeight =highestWeight =
maxmax
(highestWeight,(highestWeight,
weight);weight);
}}
}}
Otro EjemploOtro Ejemplo
int highestWeigh =int highestWeigh =
people.stream()people.stream()
.filter( p -> p.getGender() ==.filter( p -> p.getGender() ==
MALE)MALE)
.mapToInt(p -> p.getWeight()).mapToInt(p -> p.getWeight())
.max();.max();
En paraleloEn paralelo
int highestWeigh =int highestWeigh =
people.people.parallelStream()parallelStream()
.filter( p -> p.getGender() ==.filter( p -> p.getGender() ==
MALE)MALE)
.mapToInt(p -> p.getWeight()).mapToInt(p -> p.getWeight())
.max();.max();
Agregar operacionesAgregar operaciones
Set<Seller> sellers = new HashSet<>();Set<Seller> sellers = new HashSet<>();
for(Txn t: txns){for(Txn t: txns){
if(t.getBuyer().getAge() >= 65)if(t.getBuyer().getAge() >= 65)
sellers.add(t.getSeller());sellers.add(t.getSeller());
}}
List<Seller> sorted = new ArrayList<>(sellers);List<Seller> sorted = new ArrayList<>(sellers);
Collections.sort(sorted,Collections.sort(sorted,
new Comparator<Group>() {new Comparator<Group>() {
public int compare(Seller a, Seller b){public int compare(Seller a, Seller b){
returnreturn
a.getName().compareTo(b.getName());a.getName().compareTo(b.getName());
}}
});});
for(Seller s: sorted)for(Seller s: sorted)
System.out.println(s.getName());System.out.println(s.getName());
Agregar operacionesAgregar operaciones
txns.stream()txns.stream()
.filter(t -> t.getBuyer().getAge() >= 65).filter(t -> t.getBuyer().getAge() >= 65)
.map (t -> t.getSeller).map (t -> t.getSeller)
.distinct().distinct()
.sort (comparing(s -> s.getName())).sort (comparing(s -> s.getName()))
.forEach(s -> System.out.println.forEach(s -> System.out.println
(s.getName());(s.getName());
Default methodsDefault methods
Sabemos que no podemos agregar nuevosSabemos que no podemos agregar nuevos
métodos a interfaces. Rompe lasmétodos a interfaces. Rompe las
implementaciones existentes.implementaciones existentes.
Es un gran problema si tu core API tiene mas deEs un gran problema si tu core API tiene mas de
15 años15 años
Los default methods te permiten agregarLos default methods te permiten agregar
nuevos métodos a interfaces existentesnuevos métodos a interfaces existentes
Default methodsDefault methodsCollection<Person> peopleCollection<Person> people
= ..;= ..;
int highestWeigh =int highestWeigh =
people.stream()people.stream()
......
interface Collection<T> {interface Collection<T> {
......
default Stream<T>default Stream<T>
stream() {stream() {
......
}}
AbstraerAbstraer
comportamientocomportamiento
Los default methods son necesarios porque yaLos default methods son necesarios porque ya
existen core library classes como Collections,existen core library classes como Collections,
con mas de 15 años.con mas de 15 años.
Sin default methods no se podría soportarSin default methods no se podría soportar
lambdas en core library classes.lambdas en core library classes.
Otro ejemploOtro ejemplo
““Buscar artistas con albums que tienen menosBuscar artistas con albums que tienen menos
de 8 tracks”de 8 tracks”
Otro ejemploOtro ejemplo
Set<Artists> artists =Set<Artists> artists =
albums.stream()albums.stream()
.filter(album ->.filter(album ->
album.getTracks().size() < 8)album.getTracks().size() < 8)
.map(album -> album.getArtist()).map(album -> album.getArtist())
.collect(toSet());.collect(toSet());
““Aquí decimos que dados los elementos de album,Aquí decimos que dados los elementos de album,
selecciona uno que tenga 8 tracks, y por cada uno de ellosselecciona uno que tenga 8 tracks, y por cada uno de ellos
obtén el artista y luego colecciona ellos en un set”.obtén el artista y luego colecciona ellos en un set”.
NashornNashorn
JavaScriptJavaScript
CompactCompact
ProfilesProfiles
Date andDate and
TimeTime
APIAPI
Java FXJava FX
88
ParticipacióParticipació
nn
De la ComunidadDe la Comunidad
Java MEJava ME
88
Java SE 8 yJava SE 8 y
JVMJVM
Descargar Java 8Descargar Java 8
http://www.oracle.com/technetwork/java/javase/downloads/index.http://www.oracle.com/technetwork/java/javase/downloads/index.
LibrosLibros
LibrosLibros
VideosVideos
http://www.oracle.com/events/us/en/java8/index.hhttp://www.oracle.com/events/us/en/java8/index.h
http://www.jfokus.se/jfokus/video.jsphttp://www.jfokus.se/jfokus/video.jsp
Java MagazineJava Magazine
http://bit.ly/1hblvXWhttp://bit.ly/1hblvXW
http://java.dzone.com/articles/java-8-released-http://java.dzone.com/articles/java-8-released-
lambdaslambdas
http://java.dzone.com/articles/5-features-java-8-http://java.dzone.com/articles/5-features-java-8-
will-changewill-change
http://java.dzone.com/articles/interface-default-http://java.dzone.com/articles/interface-default-
methods-javamethods-java
http://java.dzone.com/articles/java-8-will-http://java.dzone.com/articles/java-8-will-
revolutionize#.UzHHrHWa4yc.twitterrevolutionize#.UzHHrHWa4yc.twitter
http://bit.ly/1fkT2http://bit.ly/1fkT2
KZKZ
Presentaciones de JUGsPresentaciones de JUGs
http://www.slideshare.net/ktoso/javaone-http://www.slideshare.net/ktoso/javaone-
2013-java-82013-java-8
http://www.slideshare.net/mitemitreski1/state-of-http://www.slideshare.net/mitemitreski1/state-of-
the-lambdathe-lambda
http://www.slideshare.net/ramonypp/java-8-http://www.slideshare.net/ramonypp/java-8-
project-lambdaproject-lambda
Documentación Java 8Documentación Java 8
http://docs.oracle.com/javase/8/http://docs.oracle.com/javase/8/
docs/docs/
PreguntasPreguntas
GraciasGracias
PERU JUGPERU JUG
http://itpjava.http://itpjava.
orgorg
JoseJose
DiazDiaz
@joeday@joeday
zz

Más contenido relacionado

Destacado

World Hunger
World HungerWorld Hunger
World Hunger
crhowell
 
Vorlesewettbewerb
VorlesewettbewerbVorlesewettbewerb
Vorlesewettbewerb
midiasvidal
 
intership certificate
intership certificateintership certificate
intership certificate
Jiaxi An
 

Destacado (20)

Ipe14
Ipe14Ipe14
Ipe14
 
Metodologías agiles
Metodologías agilesMetodologías agiles
Metodologías agiles
 
Ejemplos de sitios con HTML5 + CSS3 + jQuery
Ejemplos de sitios con HTML5 + CSS3 + jQueryEjemplos de sitios con HTML5 + CSS3 + jQuery
Ejemplos de sitios con HTML5 + CSS3 + jQuery
 
Himansu Pati
Himansu PatiHimansu Pati
Himansu Pati
 
JoeDayz Presentation
JoeDayz PresentationJoeDayz Presentation
JoeDayz Presentation
 
World Hunger
World HungerWorld Hunger
World Hunger
 
Polinter05
Polinter05Polinter05
Polinter05
 
Ipe18
Ipe18Ipe18
Ipe18
 
Las hojas (matisse)
Las hojas (matisse)Las hojas (matisse)
Las hojas (matisse)
 
Ipe23
Ipe23Ipe23
Ipe23
 
SEO voor recruitment
SEO voor recruitmentSEO voor recruitment
SEO voor recruitment
 
World Hunger
World HungerWorld Hunger
World Hunger
 
¿Qué es un Coding dojo?
¿Qué es un Coding dojo?¿Qué es un Coding dojo?
¿Qué es un Coding dojo?
 
Introducción a HTML5 & CSS3
Introducción a HTML5 & CSS3Introducción a HTML5 & CSS3
Introducción a HTML5 & CSS3
 
Recruitmentsite optimaliseren met Google Analytics door Jordy van Gent @Netwe...
Recruitmentsite optimaliseren met Google Analytics door Jordy van Gent @Netwe...Recruitmentsite optimaliseren met Google Analytics door Jordy van Gent @Netwe...
Recruitmentsite optimaliseren met Google Analytics door Jordy van Gent @Netwe...
 
Universal Analytics kennissessie voor Online Recruitment specialisten
Universal Analytics kennissessie voor Online Recruitment specialistenUniversal Analytics kennissessie voor Online Recruitment specialisten
Universal Analytics kennissessie voor Online Recruitment specialisten
 
SEO voor recruitment. Online Recruitment Bootcamp presentatie van Netwerven
SEO voor recruitment. Online Recruitment Bootcamp presentatie van NetwervenSEO voor recruitment. Online Recruitment Bootcamp presentatie van Netwerven
SEO voor recruitment. Online Recruitment Bootcamp presentatie van Netwerven
 
Online Adversting voor recruitment. Online Recruitment Bootcamp van Netwerven
Online Adversting voor recruitment. Online Recruitment Bootcamp van NetwervenOnline Adversting voor recruitment. Online Recruitment Bootcamp van Netwerven
Online Adversting voor recruitment. Online Recruitment Bootcamp van Netwerven
 
Vorlesewettbewerb
VorlesewettbewerbVorlesewettbewerb
Vorlesewettbewerb
 
intership certificate
intership certificateintership certificate
intership certificate
 

Similar a Novedades de Java 8 por PERU JUG

Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
jaircazarin
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - Algoritmia
Daniel Gómez
 

Similar a Novedades de Java 8 por PERU JUG (20)

Kit de supervivencia para Java 8 : como prepararse para Java 9
Kit de supervivencia para Java 8 :  como prepararse para Java 9Kit de supervivencia para Java 8 :  como prepararse para Java 9
Kit de supervivencia para Java 8 : como prepararse para Java 9
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Java 8: Expresiones Lambdas y API Stream BarCamp RD 2016
Java 8: Expresiones Lambdas y API Stream BarCamp RD 2016Java 8: Expresiones Lambdas y API Stream BarCamp RD 2016
Java 8: Expresiones Lambdas y API Stream BarCamp RD 2016
 
Java 8
Java 8Java 8
Java 8
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Introducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidianoIntroducción a Apache Spark a través de un caso de uso cotidiano
Introducción a Apache Spark a través de un caso de uso cotidiano
 
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
Rompiendo dependencias contenidas en ensamblados .NET mediante la refactoriza...
 
Framework .NET 3.5 10 Linq
Framework .NET 3.5 10 LinqFramework .NET 3.5 10 Linq
Framework .NET 3.5 10 Linq
 
Java 7- Java Day Guatemala
Java 7- Java Day GuatemalaJava 7- Java Day Guatemala
Java 7- Java Day Guatemala
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - Algoritmia
 
Lambdas y API Stream #PerúJUG #Java20
Lambdas y API Stream #PerúJUG #Java20Lambdas y API Stream #PerúJUG #Java20
Lambdas y API Stream #PerúJUG #Java20
 
Java8 : Más allá de las Expresiones Lambdas
Java8 :  Más allá de las Expresiones LambdasJava8 :  Más allá de las Expresiones Lambdas
Java8 : Más allá de las Expresiones Lambdas
 
Best Practices
Best PracticesBest Practices
Best Practices
 
Curso php y_mysql
Curso php y_mysqlCurso php y_mysql
Curso php y_mysql
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
Taller completo
Taller completoTaller completo
Taller completo
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)
 
Progra
PrograProgra
Progra
 
Programacion Funcional en el Mundo Real - Introduccion a F#
Programacion Funcional en el Mundo Real - Introduccion a F#Programacion Funcional en el Mundo Real - Introduccion a F#
Programacion Funcional en el Mundo Real - Introduccion a F#
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Novedades de Java 8 por PERU JUG