SlideShare una empresa de Scribd logo
1 de 11
Un vistazo a Java 8
Septiembre 2018
Amador Marín - Germán González
Contenidos
● default and static methods in Interfaces
● forEach() method in Iterable interface
● Functional Interfaces and Lambda Expressions
● Java Stream API for Bulk Data Operations on Collections
● Java Time API
● Collection API improvements
● Concurrency API improvements
● Java IO improvements
● Miscellaneous Core API improvements
● Java ahora y lo que viene
default and static methods in Interfaces
Los métodos default (implementación por defecto) pueden ser agregados a cualquier interface.
Cualquier clase que implemente la interface pero que no haga override del método, obtendrá la
implementación por defecto.
Permitió agregar nuevos métodos a las interfaces sin romper todas las implementaciones ya existentes
(backward compatibility).
Los métodos static no pueden ser sobre escritos en las clases que implementan la interface. Si
agregamos la annotation @Override, obtendremos un error de compilación.
forEach()
Programación imperativa vs declarativa.
Ej: Imprimir una lista de String
Functional Interfaces and Lambda Expressions
Una functional interface está definida como una interface con exactamente un método abstracto. También
puede tener muchos métodos default. Usan la annotation @FunctionalInterface (opcional). Nuevas functional
interfaces en java.util.function.
- Predicate: Recibe un argumento y retorna un Boolean.
- BinaryOperator: Recibe 2 argumentos y retorna uno del mismo
tipo.
- Function: Recibe un argumento de tipo T y retorna otro de tipo R.
Functional Interfaces and Lambda Expressions
Uno de los mayores beneficios de las functional interface es la posibilidad de usar lambda expressions.
La sintaxis principal es “parameters -> body”.
Hay 4 reglas de oro sobre la sintaxis:
- Es opcional declarar el tipo de los parámetros.
- Es opcional usar paréntesis si sólo tiene un parámetro.
- Es opcional usar llaves “{}”, a menos que necesites colocar varias sentencias o bloques de varias líneas.
- Es opcional el “return” si tienes una expresión simple que retorna un valor.
Java Stream API for Bulk Data Operations on
Collections
Se agregó el API java.util.stream para realizar diferentes operaciones a las Collection.
Permite ejecución secuencial o paralela (a diferencia del Iterator) que es muy útil para procesar valores
que no estén en orden y en grandes volúmenes. Algunos streams primitivos son: IntStream, DoubleStream, and
LongStream.
Algunos métodos son:
filter: Consultar por una condición en cada uno de los elementos del stream y generar una lista filtrada.
map: Aplica una función a cada elemento del stream.
reduce: Hacer una reducción de los elementos del stream usando una función de acumulación y retornando un
Optional.
sorted: Ordenar los elementos del stream pasando como parámetro un Comparator.
findFirst: Operación de corto circuito para encontrar el primer elemento que cumpla la condición.
<Java 8 Java 8
Clase Date en java.util y en java.sql.
Ambas con el mismo nombre.
Define clases separadas para Date, Time,
DateTime, Timestamp, Timezone.
java.util.Date contiene date y time,
mientras que java.sql.Date contiene sólo
date.
Métodos como plus, minus, format,
parsing, obtener partes separadas en
date/time.
Todas las clases Date son mutable, por lo tanto
no son thread safe.
Date Time API son inmutable y buenas para
ambientes multithreaded.
No proveen internacionalización, no hay
soporte para timezone
Funciona con el sistema ISO-8601 y con otros
calendarios no ISO (java.time.chrono).
Clase abstracta java.text.DateFormat para
el parsing y formatting. SimpleDateFormat. *
Métodos format() y parse() ya definidos en
todas las clases en vez de usar otra clase.
Java Time API
*Necesidad de usar librerías de terceros Joda Time.
Java ahora y lo que viene
Según Stackoverflow en su Developer Survey Results 2018, Java está en la posición 5 de 25, entre las
tecnologías más populares con un 45.3% (posición 2, si descartamos HTML, CSS, SQL). Java 8 (82%).
El JDK 8 de Oracle no recibirá más actualizaciones públicas después de Enero 2019.
A partir de Java 11 (~ Septiembre 2018):
- Oracle JDK y OpenJDK tendrán paridad de características.
- Java 9 no será más soportado y/o actualizado y no habrá más soporte para Java 10.
- Puedes descargar Oracle JDK gratis y usarlo para entornos de desarrollo, prueba, creación de prototipos o
demostración.
- Nuevo ciclo de lanzamiento semestral.
- Precio de implementaciones en Servidores y la Nube (Cloud) = $25 por procesador por mes, precio para
escritorios (Desktop) = $2.50 por usuario por mes (Java SE Subscription Data Sheet).
JDK 12 Early-Access Builds. Latest build: 12 (2018/9/20).
DEMO
https://github.com/taichi2000/stream-lambda
Gracias!

Más contenido relacionado

La actualidad más candente

Introducción a la programación orientada a aspectos
Introducción a la programación orientada a aspectosIntroducción a la programación orientada a aspectos
Introducción a la programación orientada a aspectosTensor
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - SemáforosJuan Rojas
 
Introduccion a Programacion Reactiva
Introduccion a Programacion ReactivaIntroduccion a Programacion Reactiva
Introduccion a Programacion ReactivaAndres Almiray
 
Tarea ecuaciones laplace
Tarea ecuaciones laplaceTarea ecuaciones laplace
Tarea ecuaciones laplaceMajoveinte
 

La actualidad más candente (8)

Lisp
LispLisp
Lisp
 
Introducción a la programación orientada a aspectos
Introducción a la programación orientada a aspectosIntroducción a la programación orientada a aspectos
Introducción a la programación orientada a aspectos
 
Hilos en java
Hilos en javaHilos en java
Hilos en java
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - Semáforos
 
Programación: conceptos básicos
Programación: conceptos básicos Programación: conceptos básicos
Programación: conceptos básicos
 
Introduccion a Programacion Reactiva
Introduccion a Programacion ReactivaIntroduccion a Programacion Reactiva
Introduccion a Programacion Reactiva
 
Clase 4 JAVA 2012
Clase 4 JAVA 2012Clase 4 JAVA 2012
Clase 4 JAVA 2012
 
Tarea ecuaciones laplace
Tarea ecuaciones laplaceTarea ecuaciones laplace
Tarea ecuaciones laplace
 

Similar a Un vistazo a java 8

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 2016Eudris Cabrera
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas característicasFernando Petrola
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...Eudris Cabrera
 
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 9Eudris Cabrera
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Marco Antonio Ordoñez Valverde
 
1. tipos de datos abstractos
1. tipos de datos abstractos1. tipos de datos abstractos
1. tipos de datos abstractosFernando Solis
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubGlobalLogic Latinoamérica
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 

Similar a Un vistazo a java 8 (20)

Java 8: Más funcional que nunca
Java 8: Más funcional que nuncaJava 8: Más funcional que nunca
Java 8: Más funcional que nunca
 
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 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
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
 
Introducción a scala
Introducción a scalaIntroducción a scala
Introducción a scala
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
 
Lenguaje de Alto Nivel (I Bimestre)
Lenguaje de Alto Nivel (I Bimestre)Lenguaje de Alto Nivel (I Bimestre)
Lenguaje de Alto Nivel (I Bimestre)
 
1. tipos de datos abstractos
1. tipos de datos abstractos1. tipos de datos abstractos
1. tipos de datos abstractos
 
Functional SE.pdf
Functional SE.pdfFunctional SE.pdf
Functional SE.pdf
 
Laboratorio interfaces
Laboratorio interfacesLaboratorio interfaces
Laboratorio interfaces
 
Introduccion java
Introduccion javaIntroduccion java
Introduccion java
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Java 8
Java 8Java 8
Java 8
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
Unidad i poo avanzada
Unidad i   poo avanzadaUnidad i   poo avanzada
Unidad i poo avanzada
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 

Un vistazo a java 8

  • 1. Un vistazo a Java 8 Septiembre 2018 Amador Marín - Germán González
  • 2. Contenidos ● default and static methods in Interfaces ● forEach() method in Iterable interface ● Functional Interfaces and Lambda Expressions ● Java Stream API for Bulk Data Operations on Collections ● Java Time API ● Collection API improvements ● Concurrency API improvements ● Java IO improvements ● Miscellaneous Core API improvements ● Java ahora y lo que viene
  • 3. default and static methods in Interfaces Los métodos default (implementación por defecto) pueden ser agregados a cualquier interface. Cualquier clase que implemente la interface pero que no haga override del método, obtendrá la implementación por defecto. Permitió agregar nuevos métodos a las interfaces sin romper todas las implementaciones ya existentes (backward compatibility). Los métodos static no pueden ser sobre escritos en las clases que implementan la interface. Si agregamos la annotation @Override, obtendremos un error de compilación.
  • 4. forEach() Programación imperativa vs declarativa. Ej: Imprimir una lista de String
  • 5. Functional Interfaces and Lambda Expressions Una functional interface está definida como una interface con exactamente un método abstracto. También puede tener muchos métodos default. Usan la annotation @FunctionalInterface (opcional). Nuevas functional interfaces en java.util.function. - Predicate: Recibe un argumento y retorna un Boolean. - BinaryOperator: Recibe 2 argumentos y retorna uno del mismo tipo. - Function: Recibe un argumento de tipo T y retorna otro de tipo R.
  • 6. Functional Interfaces and Lambda Expressions Uno de los mayores beneficios de las functional interface es la posibilidad de usar lambda expressions. La sintaxis principal es “parameters -> body”. Hay 4 reglas de oro sobre la sintaxis: - Es opcional declarar el tipo de los parámetros. - Es opcional usar paréntesis si sólo tiene un parámetro. - Es opcional usar llaves “{}”, a menos que necesites colocar varias sentencias o bloques de varias líneas. - Es opcional el “return” si tienes una expresión simple que retorna un valor.
  • 7. Java Stream API for Bulk Data Operations on Collections Se agregó el API java.util.stream para realizar diferentes operaciones a las Collection. Permite ejecución secuencial o paralela (a diferencia del Iterator) que es muy útil para procesar valores que no estén en orden y en grandes volúmenes. Algunos streams primitivos son: IntStream, DoubleStream, and LongStream. Algunos métodos son: filter: Consultar por una condición en cada uno de los elementos del stream y generar una lista filtrada. map: Aplica una función a cada elemento del stream. reduce: Hacer una reducción de los elementos del stream usando una función de acumulación y retornando un Optional. sorted: Ordenar los elementos del stream pasando como parámetro un Comparator. findFirst: Operación de corto circuito para encontrar el primer elemento que cumpla la condición.
  • 8. <Java 8 Java 8 Clase Date en java.util y en java.sql. Ambas con el mismo nombre. Define clases separadas para Date, Time, DateTime, Timestamp, Timezone. java.util.Date contiene date y time, mientras que java.sql.Date contiene sólo date. Métodos como plus, minus, format, parsing, obtener partes separadas en date/time. Todas las clases Date son mutable, por lo tanto no son thread safe. Date Time API son inmutable y buenas para ambientes multithreaded. No proveen internacionalización, no hay soporte para timezone Funciona con el sistema ISO-8601 y con otros calendarios no ISO (java.time.chrono). Clase abstracta java.text.DateFormat para el parsing y formatting. SimpleDateFormat. * Métodos format() y parse() ya definidos en todas las clases en vez de usar otra clase. Java Time API *Necesidad de usar librerías de terceros Joda Time.
  • 9. Java ahora y lo que viene Según Stackoverflow en su Developer Survey Results 2018, Java está en la posición 5 de 25, entre las tecnologías más populares con un 45.3% (posición 2, si descartamos HTML, CSS, SQL). Java 8 (82%). El JDK 8 de Oracle no recibirá más actualizaciones públicas después de Enero 2019. A partir de Java 11 (~ Septiembre 2018): - Oracle JDK y OpenJDK tendrán paridad de características. - Java 9 no será más soportado y/o actualizado y no habrá más soporte para Java 10. - Puedes descargar Oracle JDK gratis y usarlo para entornos de desarrollo, prueba, creación de prototipos o demostración. - Nuevo ciclo de lanzamiento semestral. - Precio de implementaciones en Servidores y la Nube (Cloud) = $25 por procesador por mes, precio para escritorios (Desktop) = $2.50 por usuario por mes (Java SE Subscription Data Sheet). JDK 12 Early-Access Builds. Latest build: 12 (2018/9/20).