martes, 15 de diciembre de 2015

Aclarando dudas sobre Java 8

La versión final de la aplicación thrust_java ya está en el repo desde ayer, quiero aclarar algunos conceptos técnicos, ya que me he encontrado con cosas con las que nunca me había encontrado y he tenido que programarlas, algunas nuevas de Java 8 y otras no.


  • CompletableFuture: la forma de tratar los futuros, en Java 8 es muy similar a la forma que tiene Scala para tratarlos
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html http://19drops.com/blog/2014/10/09/future-in-scala-java/ https://docs.oracle.com/javase/8/docs/technotes/guides/concurrency/changes8.html 
  • Métodos sobre colecciones:
      • forEach: es un nuevo método en Java 8 para recorrer colecciones.
https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html
  • Clase Optional: una clase que puede o no puede tener valor, tiene muchos métodos, algunos de los usados en el proyecto han sido:
      • empty() : devuelve un opcional vacío
      • of(valor) : devuelve un opcional con el valor indicado
      • ofNullable(valor) : devuelve un opcional describiendo el valor especificado, si este es nulo devuelve un opcional vacío
      • orElse(valor) : devuelve el valor si la clase desde la que se invoca no es nula
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
  • Métodos sobre Arrays: se han usado algunos nuevos métodos de Java 8 sobre Arrays como:
      • emptyList() : devuelve una lista vacía
      • asList(valores) : genera una lista con los valores indicados
https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html
  • Librerías: se han usado la librería Gson y Typesafe:
      • Gson : librería de Google para tratar los json en Java 

https://github.com/google/gson

      • Typesafe: librería para leer archivos de configuración
https://github.com/typesafehub/config
  • Streams: extensión de Java Collections para procesar colecciones de forma que tenga un estilo funcional. Algunas operaciones que se pueden encontrar en el proyecto sobre Streams : filter, findFirst, orElseThrow
https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/
  • Consumer: esta interfaz acepta un solo argumento y no devuelve ningún valor, son usadas ya que este tipo de comportamiento en el lenguaje Scala viene implícito.
http://baddotrobot.com/blog/2015/07/14/scala-implicit-functions/
https://docs.oracle.com/javase/8/docs/api/java/util/function/Consumer.html
https://blog.idrsolutions.com/2015/03/java-8-consumer-supplier-explained-in-5-minutes/

El repositorio en github es el siguiente: https://github.com/DanielGarciaMandillo/java-thrust 

Hasta la próxima!

No hay comentarios:

Publicar un comentario