SlideShare a Scribd company logo
© by mimacom ag
05/05/2014
© mimacom ag
Summary
2
• New features and concepts
• New and extended APIs
• Performance improvements
• Conclusion
• Q & A
© mimacom ag
New features and concepts
3
• Interface changes
• Lambda expressions
• Streams
• Nashorn
• Java FX improvements
© mimacom ag
Interface changes
4
• Interfaces can now define static methods:
• Interfaces can now define default methods:
© mimacom ag
Interface changes
5
• Functional interfaces:
• An interface is functional if it defines exactly one abstract
method.
• Default and static methods are not abstract, so they can be
defined without compile errors.
• This annotation has been introduced to declare interfaces as
functional: @FunctionalInterface
• Runnable, Comparator or Cloneable are some examples of
functional interfaces.
© mimacom ag
Lambda expressions
6
• Functional Interfaces + Lambda Probably the biggest feature
since generics.
• They are basically used to instantiate functional interfaces, for
instance:
© mimacom ag
Lambda expressions
7
• Concrete examples:
© mimacom ag
Lambda expressions
8
• A lambda is compatible with a functional interface when their
inputs, output and checked exceptions match.
• Lambdas can capture variables outside the lambda body if the
variables are effectively final.
• Lambdas can’t be used to control the flow of the application:
© mimacom ag
Lambda expressions
9
• Advantadges:
• Less code to write.
• Flexibility to instantiate interfaces.
• Alternative to anonymous inner classes.
• Disadvantages:
• More difficult to debug.
© mimacom ag
Streams
10
• A sequence of elements supporting sequential and parallel
aggregate operations.
• A stream can be used just once.
• The most common way to obtain a stream is from collections:
© mimacom ag
Streams
11
• Two kind of operations:
• Intermadiate: Keep the stream open and allow to concatenate
operations with the same stream.
• Some of them: Filter, map, flatMap, peek, distinct, sorted,
etc.
• Terminal: It must be the final operation, once this one is
executed, the stream is consumed and is no longer available.
• Some of them: forEach, toArray, reduce, collect, sum, min,
max, etc.
© mimacom ag
Streams
12
• A couple of examples:
© mimacom ag
Nashorn
13
• New JS engine, Rhino’s successor.
• Ability to access Java classes from JS… and
viceversa.
• Nashorn + Avatar.js Node.js functionality
© mimacom ag
Nashorn
14
• Why use Nashorn (extracted from Oracle):
• Can reuse existing Java libraries and middleware
• Can take advantage of multiple cores
• Can be secured using the Java security model
• Can be managed using existing Java tools
• VisualVM, MBeans, Flight Recorder, Mission Control
• Can access Java Platform APIs to complement node APIs
• BigInteger, Date, Calendar, XML, SQL, Multicast, etc
• Small enough for embedded usage (less than 2Mb)
© mimacom ag
JavaFX improvements
15
• It is the sustitute of Swing and it has been
improved in java 8.
• New look with Modena theme.
© mimacom ag
JavaFX improvements
16
• True 3D support.
• Video & audio recording.
• Printing support
• Added new controls
• Fully open source.
© mimacom ag
New and extended APIs
17
• New java.time API
• java.util.function
• Collection API additions
• Other additions
© mimacom ag
New java.time API
18
• Similar to JodaTime library.
• Instead of include JodaTime in the JDK, it was
redesigned from scratch.
• Useful value types:
• LocalDateTime, LocalDate, LocalTime.
• Year, Month, YearMonth. MonthDay, DayOfWeek.
• Instant, Period, ZonedDateTime.
© mimacom ag
Java.util.function
19
• Set of functional interfaces widely used in the new APIs of Java 8.
• Here are a few:
• Function<T, R> - take a T as input, return an R as ouput.
• Predicate<T> - take a T as input, return a boolean as output.
• Consumer<T> - take a T as input, perform some action and
don't return anything.
• Supplier<T> - with nothing as input, return a T.
• BinaryOperator<T> - take two T's as input, return one T as
output, useful for "reduce" operations.
© mimacom ag
Colletion API additions
20
• The ability that interfaces can define default methods have
introduced a lot of additionson the colletion interfaces. Some of
them:
• Iterable.forEach(Consumer)
• Iterator.forEachRemaining(Consumer)
• Collection.removeIf(Predicate)
• Collection.spliterator()
• List.sort(Comparator)
• List.replaceAll(UnaryOperator)
• Map.forEach(BiConsumer)
• …
© mimacom ag
Other additions
21
• There are several additions with a lot of new classes and new
methods:
• Concurrency API additions.
• IO/NIO API additions.
• New methods and classes in java.lang, java.util and in several places more.
© mimacom ag
Performance improvements
22
© mimacom ag
Conclusion
23
• A lot of additions in this release.
• Lambdas and functional interfaces will change a little bit the way
people is developing.
• But several of them were already in antoher languages, so Oracle
has not invented nothing new.
• It seems that they have worked really hard to improve
performance, let’s see if it is true!!!
© mimacom ag 24
References
• http://docs.oracle.com/javase/8/docs/api/overview-summary.html
• http://www.techempower.com/blog/2013/03/26/everything-about-
java-8/
• http://www.infoq.com/articles/nashorn
• https://avatar.java.net/
• http://java.dzone.com/articles/whats-new-java-8-part-i-javafx
• https://blogs.oracle.com/thejavatutorials/entry/learn_more_about
_performance_and
© mimacom ag 25
© mimacom ag
customer oriented
User friendly
Competently
Qualitatively
Efficient
26
…the open source integrator

More Related Content

What's hot

Massif - the love child of Matlab Simulink and Eclipse
Massif - the love child of Matlab Simulink and EclipseMassif - the love child of Matlab Simulink and Eclipse
Massif - the love child of Matlab Simulink and Eclipse
Ákos Horváth
 
C tour Unix
C tour UnixC tour Unix
C tour Unix
Melvin Cabatuan
 
Valgrind
ValgrindValgrind
Valgrind
Melvin Cabatuan
 
operator overloading in C++
operator overloading in C++operator overloading in C++
Operator Overloading & Function Overloading
Operator Overloading & Function OverloadingOperator Overloading & Function Overloading
Operator Overloading & Function Overloading
Meghaj Mallick
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web Framework
VMware Tanzu
 
Neutronium
NeutroniumNeutronium
Neutronium
John Nestor
 
Inline functions
Inline functionsInline functions
Inline functions
DhwaniHingorani
 
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Apache Flink Training Workshop @ HadoopCon2016 - #1 System OverviewApache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Apache Flink Taiwan User Group
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward
 
Unary operator overloading
Unary operator overloadingUnary operator overloading
Unary operator overloading
Md. Ashraful Islam
 
Java 8 Bootcamp
Java 8 BootcampJava 8 Bootcamp
Java 8 Bootcamp
Mohamed Ben Hassine
 

What's hot (12)

Massif - the love child of Matlab Simulink and Eclipse
Massif - the love child of Matlab Simulink and EclipseMassif - the love child of Matlab Simulink and Eclipse
Massif - the love child of Matlab Simulink and Eclipse
 
C tour Unix
C tour UnixC tour Unix
C tour Unix
 
Valgrind
ValgrindValgrind
Valgrind
 
operator overloading in C++
operator overloading in C++operator overloading in C++
operator overloading in C++
 
Operator Overloading & Function Overloading
Operator Overloading & Function OverloadingOperator Overloading & Function Overloading
Operator Overloading & Function Overloading
 
New in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web FrameworkNew in Spring Framework 5.0: Functional Web Framework
New in Spring Framework 5.0: Functional Web Framework
 
Neutronium
NeutroniumNeutronium
Neutronium
 
Inline functions
Inline functionsInline functions
Inline functions
 
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Apache Flink Training Workshop @ HadoopCon2016 - #1 System OverviewApache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
 
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...Flink Forward SF 2017: Malo Deniélou -  No shard left behind: Dynamic work re...
Flink Forward SF 2017: Malo Deniélou - No shard left behind: Dynamic work re...
 
Unary operator overloading
Unary operator overloadingUnary operator overloading
Unary operator overloading
 
Java 8 Bootcamp
Java 8 BootcampJava 8 Bootcamp
Java 8 Bootcamp
 

Similar to Java8

Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
Jim Bethancourt
 
Java8
Java8Java8
Stream Processing with Apache Apex
Stream Processing with Apache ApexStream Processing with Apache Apex
Stream Processing with Apache Apex
Pramod Immaneni
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9
Gal Marder
 
Intro to Apache Apex @ Women in Big Data
Intro to Apache Apex @ Women in Big DataIntro to Apache Apex @ Women in Big Data
Intro to Apache Apex @ Women in Big Data
Apache Apex
 
Lambdas in Java 8
Lambdas in Java 8Lambdas in Java 8
Lambdas in Java 8
Tobias Coetzee
 
Deep Dive into Apache Apex App Development
Deep Dive into Apache Apex App DevelopmentDeep Dive into Apache Apex App Development
Deep Dive into Apache Apex App Development
Apache Apex
 
Java 8
Java 8Java 8
Java 8
vpulec
 
Java SE 8 library design
Java SE 8 library designJava SE 8 library design
Java SE 8 library design
Stephen Colebourne
 
OOPS-Seminar.pdf
OOPS-Seminar.pdfOOPS-Seminar.pdf
OOPS-Seminar.pdf
Rithiga6
 
Building your first aplication using Apache Apex
Building your first aplication using Apache ApexBuilding your first aplication using Apache Apex
Building your first aplication using Apache Apex
Yogi Devendra Vyavahare
 
Building Your First Apache Apex Application
Building Your First Apache Apex ApplicationBuilding Your First Apache Apex Application
Building Your First Apache Apex Application
Apache Apex
 
Optimica Compiler Toolkit - Overview
Optimica Compiler Toolkit - OverviewOptimica Compiler Toolkit - Overview
Optimica Compiler Toolkit - Overview
Modelon
 
Developing Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's GuideDeveloping Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's Guide
Mohanraj Thirumoorthy
 
Java SE 8 - New Features
Java SE 8 - New FeaturesJava SE 8 - New Features
Java SE 8 - New Features
Naveen Hegde
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
Nikita Shounewich
 
Performance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen BorgersPerformance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen Borgers
NLJUG
 
Function Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
Function Mesh for Apache Pulsar, the Way for Simple Streaming SolutionsFunction Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
Function Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
StreamNative
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
Christian Nagel
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
GlobalLogic Ukraine
 

Similar to Java8 (20)

Functional Programming in Java
Functional Programming in JavaFunctional Programming in Java
Functional Programming in Java
 
Java8
Java8Java8
Java8
 
Stream Processing with Apache Apex
Stream Processing with Apache ApexStream Processing with Apache Apex
Stream Processing with Apache Apex
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9
 
Intro to Apache Apex @ Women in Big Data
Intro to Apache Apex @ Women in Big DataIntro to Apache Apex @ Women in Big Data
Intro to Apache Apex @ Women in Big Data
 
Lambdas in Java 8
Lambdas in Java 8Lambdas in Java 8
Lambdas in Java 8
 
Deep Dive into Apache Apex App Development
Deep Dive into Apache Apex App DevelopmentDeep Dive into Apache Apex App Development
Deep Dive into Apache Apex App Development
 
Java 8
Java 8Java 8
Java 8
 
Java SE 8 library design
Java SE 8 library designJava SE 8 library design
Java SE 8 library design
 
OOPS-Seminar.pdf
OOPS-Seminar.pdfOOPS-Seminar.pdf
OOPS-Seminar.pdf
 
Building your first aplication using Apache Apex
Building your first aplication using Apache ApexBuilding your first aplication using Apache Apex
Building your first aplication using Apache Apex
 
Building Your First Apache Apex Application
Building Your First Apache Apex ApplicationBuilding Your First Apache Apex Application
Building Your First Apache Apex Application
 
Optimica Compiler Toolkit - Overview
Optimica Compiler Toolkit - OverviewOptimica Compiler Toolkit - Overview
Optimica Compiler Toolkit - Overview
 
Developing Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's GuideDeveloping Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's Guide
 
Java SE 8 - New Features
Java SE 8 - New FeaturesJava SE 8 - New Features
Java SE 8 - New Features
 
AngularJS Basics
AngularJS BasicsAngularJS Basics
AngularJS Basics
 
Performance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen BorgersPerformance van Java 8 en verder - Jeroen Borgers
Performance van Java 8 en verder - Jeroen Borgers
 
Function Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
Function Mesh for Apache Pulsar, the Way for Simple Streaming SolutionsFunction Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
Function Mesh for Apache Pulsar, the Way for Simple Streaming Solutions
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 

Java8

  • 1. © by mimacom ag 05/05/2014
  • 2. © mimacom ag Summary 2 • New features and concepts • New and extended APIs • Performance improvements • Conclusion • Q & A
  • 3. © mimacom ag New features and concepts 3 • Interface changes • Lambda expressions • Streams • Nashorn • Java FX improvements
  • 4. © mimacom ag Interface changes 4 • Interfaces can now define static methods: • Interfaces can now define default methods:
  • 5. © mimacom ag Interface changes 5 • Functional interfaces: • An interface is functional if it defines exactly one abstract method. • Default and static methods are not abstract, so they can be defined without compile errors. • This annotation has been introduced to declare interfaces as functional: @FunctionalInterface • Runnable, Comparator or Cloneable are some examples of functional interfaces.
  • 6. © mimacom ag Lambda expressions 6 • Functional Interfaces + Lambda Probably the biggest feature since generics. • They are basically used to instantiate functional interfaces, for instance:
  • 7. © mimacom ag Lambda expressions 7 • Concrete examples:
  • 8. © mimacom ag Lambda expressions 8 • A lambda is compatible with a functional interface when their inputs, output and checked exceptions match. • Lambdas can capture variables outside the lambda body if the variables are effectively final. • Lambdas can’t be used to control the flow of the application:
  • 9. © mimacom ag Lambda expressions 9 • Advantadges: • Less code to write. • Flexibility to instantiate interfaces. • Alternative to anonymous inner classes. • Disadvantages: • More difficult to debug.
  • 10. © mimacom ag Streams 10 • A sequence of elements supporting sequential and parallel aggregate operations. • A stream can be used just once. • The most common way to obtain a stream is from collections:
  • 11. © mimacom ag Streams 11 • Two kind of operations: • Intermadiate: Keep the stream open and allow to concatenate operations with the same stream. • Some of them: Filter, map, flatMap, peek, distinct, sorted, etc. • Terminal: It must be the final operation, once this one is executed, the stream is consumed and is no longer available. • Some of them: forEach, toArray, reduce, collect, sum, min, max, etc.
  • 12. © mimacom ag Streams 12 • A couple of examples:
  • 13. © mimacom ag Nashorn 13 • New JS engine, Rhino’s successor. • Ability to access Java classes from JS… and viceversa. • Nashorn + Avatar.js Node.js functionality
  • 14. © mimacom ag Nashorn 14 • Why use Nashorn (extracted from Oracle): • Can reuse existing Java libraries and middleware • Can take advantage of multiple cores • Can be secured using the Java security model • Can be managed using existing Java tools • VisualVM, MBeans, Flight Recorder, Mission Control • Can access Java Platform APIs to complement node APIs • BigInteger, Date, Calendar, XML, SQL, Multicast, etc • Small enough for embedded usage (less than 2Mb)
  • 15. © mimacom ag JavaFX improvements 15 • It is the sustitute of Swing and it has been improved in java 8. • New look with Modena theme.
  • 16. © mimacom ag JavaFX improvements 16 • True 3D support. • Video & audio recording. • Printing support • Added new controls • Fully open source.
  • 17. © mimacom ag New and extended APIs 17 • New java.time API • java.util.function • Collection API additions • Other additions
  • 18. © mimacom ag New java.time API 18 • Similar to JodaTime library. • Instead of include JodaTime in the JDK, it was redesigned from scratch. • Useful value types: • LocalDateTime, LocalDate, LocalTime. • Year, Month, YearMonth. MonthDay, DayOfWeek. • Instant, Period, ZonedDateTime.
  • 19. © mimacom ag Java.util.function 19 • Set of functional interfaces widely used in the new APIs of Java 8. • Here are a few: • Function<T, R> - take a T as input, return an R as ouput. • Predicate<T> - take a T as input, return a boolean as output. • Consumer<T> - take a T as input, perform some action and don't return anything. • Supplier<T> - with nothing as input, return a T. • BinaryOperator<T> - take two T's as input, return one T as output, useful for "reduce" operations.
  • 20. © mimacom ag Colletion API additions 20 • The ability that interfaces can define default methods have introduced a lot of additionson the colletion interfaces. Some of them: • Iterable.forEach(Consumer) • Iterator.forEachRemaining(Consumer) • Collection.removeIf(Predicate) • Collection.spliterator() • List.sort(Comparator) • List.replaceAll(UnaryOperator) • Map.forEach(BiConsumer) • …
  • 21. © mimacom ag Other additions 21 • There are several additions with a lot of new classes and new methods: • Concurrency API additions. • IO/NIO API additions. • New methods and classes in java.lang, java.util and in several places more.
  • 22. © mimacom ag Performance improvements 22
  • 23. © mimacom ag Conclusion 23 • A lot of additions in this release. • Lambdas and functional interfaces will change a little bit the way people is developing. • But several of them were already in antoher languages, so Oracle has not invented nothing new. • It seems that they have worked really hard to improve performance, let’s see if it is true!!!
  • 24. © mimacom ag 24 References • http://docs.oracle.com/javase/8/docs/api/overview-summary.html • http://www.techempower.com/blog/2013/03/26/everything-about- java-8/ • http://www.infoq.com/articles/nashorn • https://avatar.java.net/ • http://java.dzone.com/articles/whats-new-java-8-part-i-javafx • https://blogs.oracle.com/thejavatutorials/entry/learn_more_about _performance_and
  • 26. © mimacom ag customer oriented User friendly Competently Qualitatively Efficient 26 …the open source integrator

Editor's Notes

  1. Interface changes: ha habido cambios bastante significativos en lo que a interfaces se refiere Lambda expressions: es quizá la mayor novedad en esta versión junto con los cambios en las interfaces, no es nada nuevo ya que otros lenguajes como Scala o Groovy lo incorporan Streams: Son secuencias de elementos sobre los cuales se pueden aplicar operaciones de forma secuencial o paralela Nashorn: Es el nuevo motor JS que sustituye a Rihno Java FX: Es el cliente UI de java y ha mejorado mucho a nivel visual y a nivel de soporte 3D
  2. De esta manera nos podemos ahorrar el tener una clase con métodos estáticos que interactúen con las interfaces, se pueden tener esos métodos definidos directamente en las interfaces. Los métodos por defecto son como su propio nombre indican la implementación por defecto que tendrán esos métodos si la clase que implementa la interfaz no lo implementa.
  3. Para que una interfaz sea funcional ha de cumplir solo una norma, declarar un único método abstracto. La anotación no es obligatoria, pero se recomienda encarecidamente para que se muestren ciertos errores de compilación.
  4. Las lambda expressions junto con las interfaces funcionales son quizá la mayor novedad desde la introducción de genéricos en java 5. Es un concepto que ya esta en otros lenguajes como Scala o Groovy, así que no es que hayan inventado nada nuevo. Sirven principalmente para instanciar las interfaces funcionales,
  5. - Las lambda expressions pueden tener varias formas, por ejemplo: Comma-separated list of inputs with specified types on the left, a block with a return on the right Lo mismo de arriba pero con inferencia de tipo el codigo mas simplificado Single parameter with inferred type on the left, a return value on the right No inputs on left (official name: &amp;quot;burger arrow&amp;quot;), return value on the right Single parameter with inferred type on the left, a block with no return (void return) on the right Tmabién pueden hacer referencia a métodos, ya sean estáticos, no estáticos, de una variable capturada de fuera de la expression o incluso referencias a constructores.
  6. Todo ha de coincid9ir con la interfaz funcional, tanto lo sargumentos de entrada, como la salida, como las excepciones que se lancen, una lambda no puede lanzar excepciones que no han sido declaradas en la interfaz funcional. Solo se pueden usar variables efectivamente finales en el cuerpo de las lambda. Que una variable sea efectivamente final quiere decir que se ha declarado con el modificador final o que no se ha modificado despues de su asignación. No se puede romper un bucle dentro de una lambda expression, se seguira ejecutando el codigo para el resto de elementos.
  7. - Como ya he dicho en la introduccion, los streams son Son secuencias de elementos sobre los cuales se pueden aplicar operaciones de forma secuencial o paralela. Solo pueden ser usados una vez, no se pueden reutilizar, si se obtiene otra vez un stream del mismo objeto, será uno totalmente nuevo. Típicamente los streams se obtienen de las colecciones.
  8. steps: Obtain a stream from some source. Perform one or more intermediate operations. Perform one terminal operation. Uno puede hacer muchas operaciones intermedias con un stream siempre y cuando luego haga una operacion terminal. Es muy habitual ver lambda expressions en dichas operaciones.
  9. En el primer ejemplo se aplican operaciones para transformar el stream a sus equivalentes primitivos, que tienen sus métodos especificos. En el segundo se aplican ciertas operaciones intermedias y al final se usa el método collect a la que se le puede pasar la interfaz a la que quieres transformar el stream resultante.
  10. Nashron es el nuevo motor JS que viene incluido con java 8, es el sucesor de Rhino Con Nashorn es posible ejecutar codigo Java desde JS y código JS en Java. Avatar.js es un proyecto de Oracle cuyo objetivo es adaptar toda la funcionalidad existente en Node.js, dando compatibilidad incluso a muchos de los módulos de Node. Por que?
  11. Os preguntaréis por que ustilizar Nashron si ya está node que funciona muy bien, según la gente de Oracle hay varios motivos, yo creo que la única situación que si que seria muy util es cuando hay que soportar código antiguo en Java.
  12. Es el conjunto de paquetes y componentes para crear aplicaciones java de escritorio. Java FX es el sustituto de Swing, aunque Swing aún se puede usar en el futuro será completamente sustituido. Las aplicaciones de swing seguro que recordais que son bastante feas, pues bien con este nuevo tema, visualmente mejoran mucho
  13. - Con la incursion de los métodos estaticos en las interfaces y de los default methods se han introducido muchos métodos en APIs ya existentes - Date: toda la API de fechas ha sido rediseñada desde cero (JodaTime style)
  14. Joda time es la librería estandar. que casi todo desarrollador Java utiliza cuando el API de Java se queda corta en cuanto a funcionalidad. Aunque es muy similar a JodaTime, Oracle optó por rediseñarla desde cero porque Oracle consideraba que tenía pequeños fallos de diseño, que prácticamente ningún desarrollador notaria, pero que los tenía.
  15. Son un conjunto de interfaces muy útiles y que son ampliamente usadas en los métodos nuevos que aceptan Lambda expressions. Cada una de las interfaces anteriores se pordian instanciar con lambdas que cumplan esas condiciones.
  16. Como ahora las interfaces pueden definir métodos por defecto se han añadido muchos métodos a las interfaces de las APIs de collection, como las que podeis ver. En Varias de ellas veréis interfaces funcionales como argumentos, esto es un indicativo de la importancia de ellas junto de las lambdas para poder usarlas.
  17. Concurrency additions son para hacer más eficiente la concurrencia. IO/NIO: la mayoria de los nuevos métodos es para interactuar con streams. Ha habido muchisimos métodos y APIS nuevas, especialmente en esos dos paquetes, pero también en muchos otros paquetes. Como ejemplo se puede ver que la ordenación ha mejorado muchisimo y ahora es mas facil realizar ordenaciones complejas.
  18. Se supone que se ha trabajado mucho en el rendimiento de la JVM en esta versión. O al menos eso dijeron en el screen cast del mes pasado. Supongo que a muchos de vosotros os ha pasado el típico error de permgen space, pues bien esto no debería pasar más: Para empezar porque se elimina el Permgen space, así que si da algún error ya no será el mismo. Se sustituye por MetaSpace, que no tiene limitado su tamaño por defecto, es dinámico y se puede limitar como argumento al arrancar la JVM Se han añadido nuevos métodos y clases en el paquete java.util.concurrent para aumentar el rendimiento y la escalabilidad de las aplicaciones concurrentes. La Tiered compilation es una característica que se introdujo en java 7 pero se ha habilitado por defecto. La máquina virtual se puede arrancar en modo cliente o modo servidor y en función de esto se tuneará de una manera u otra, pues bien antes del tiered compilation el arranque de la server VM era mucho mayor que el del client mode, ahora con esta caracteristica ambos tiempos son similares.
  19. Qué me parece a mi esta nueva release?