© 2013 KMS Technology
JAVA 8 FEATURES
TRUNG NGUYEN
TECHCON 2014
KMS TECHNOLOGY VIETNAM
JAVA VERSION HISTORY
JDK 1.0 (1996) JDK 1.1 (1997)
inner classes
JavaBeans, JDBC, RMI,
reflection, JIT
JDK 1.2 (1998)
stri...
JAVA 8 RELEASE (MAR 18, 2014)
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
JAVA 8 ...
LAMBDA EXPRESSIONS
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Others
JAVA 8 FEAT...
LAMBDA EXPRESSION
JAVA 8 FEATURES
Functions in Functional Programming
Functions in Java
 Are arguments, return values fro...
LAMBDA EXPRESSION SYNTAX IN JAVA
(arguments) -> { body }
JAVA 8 FEATURES
anonymous inner class
lambda expression
single-li...
METHOD REFERENCES
JAVA 8 FEATURES
Lambda expressions only call an existing method
 Reference to a static method
 Referen...
WHY LAMBDA EXPRESSIONS IN JAVA?
JAVA 8 FEATURES
 Encourage functional programming
 Easier to distribute processing of co...
HOW LAMBDA EXPRESSIONS WORK?
The lambda expression is represented by a new method, and is
invoked at run-time using invoke...
STREAM API
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Others
JAVA 8 FEATURES
DEFINITION OF STREAM
JAVA 8 FEATURES
Streams are a FP design pattern for processing
sequences of elements sequentially or ...
STREAM IN JAVA 8 - EXAMPLE
Given a list of photos, I want to find 5 photo names
that follow top 3 photos whose average rat...
IMPERATIVE STYLE
JAVA 8 FEATURES
STREAM STYLE
JAVA 8 FEATURES
Coding in Stream API-way
 Internally iterates through the elements
 Manipulate the collecti...
STREAM OPERATIONS
JAVA 8 FEATURES
Intermediate operations
- Lazy processing
- Stateless: filter, map, flatMap, peek
- Stat...
DEFAULT METHODS
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Others
JAVA 8 FEATURES
How to add forEach(Consumer) method into List interface?
persons.forEach(person -> personRepo.save(person));
DEFAULT METHO...
CLASS-EXTENDED IN JAVA 8
JAVA 8 FEATURES
Multiple Inheritances  behaviors only, no state
‘Diamond Problem’  Solving manu...
CLASS-EXTENDED IN OTHER LANGUAGES
Scala Traits (or Ruby Mix-ins)
JAVA 8 FEATURES
C# Extension Methods
NEW DATE & TIME API
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Others
JAVA 8 FEA...
DATE AND TIME API
 Immutable-value classes
 Domain-driven design
 Separation of chronologies
JAVA 8 FEATURES
Problems o...
NEW DATE AND TIME API EXAMPLE
JAVA 8 FEATURES
 LocalDate, LocalTime, LocalDateTime, ZonedDateTime
 Clock, Duration, Peri...
NEW JAVASCRIPT ENGINE (NASHORN)
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Other...
NEW JAVASCRIPT ENGINE (NASHORN)
JAVA 8 FEATURES
Why Nashorn Engine?
 Full 100% ECMA262-compliant (edition 5.1)
 Compiles...
OTHER FEATURES
Java 7
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Java 8
Others
JAVA 8 FEATURES
OTHER FEATURES
JAVA 8 FEATURES
Static Methods on Interfaces
At beginning, Java allows static fields and static inner types...
OTHER FEATURES (CON’T)
JAVA 8 FEATURES
Repeating Annotations
Method Parameter Reflection
 How to get name of method param...
CONCLUSIONS
New Features in Java 8
Lambda Expressions
Default Methods
Stream API
New Date/Time APINashorn
Others
JAVA 8 FE...
RESOURCES
• http://www.oracle.com/technetwork/java/javase/8-
whats-new-2157071.html
• http://www.techempower.com/blog/2013...
Questions
JAVA 8 FEATURES
THANK YOU
© 2013 KMS Technology
Upcoming SlideShare
Loading in …5
×

Java 8 Features

2,157 views

Published on

My presentation slides in KMS TechCon 2014, an internal technology event at KMS Technology Vietnam company.

"Java 8 is one of the most highly anticipated programming language updates in many years. Let me give you an introduction about its new features: Lambda expressions, Method references, Default Methods, Stream API, new JS Engine, new Date/Time API and more..."

Published in: Software, Technology, Education
1 Comment
13 Likes
Statistics
Notes
No Downloads
Views
Total views
2,157
On SlideShare
0
From Embeds
0
Number of Embeds
225
Actions
Shares
0
Downloads
125
Comments
1
Likes
13
Embeds 0
No embeds

No notes for slide

Java 8 Features

  1. 1. © 2013 KMS Technology
  2. 2. JAVA 8 FEATURES TRUNG NGUYEN TECHCON 2014 KMS TECHNOLOGY VIETNAM
  3. 3. JAVA VERSION HISTORY JDK 1.0 (1996) JDK 1.1 (1997) inner classes JavaBeans, JDBC, RMI, reflection, JIT JDK 1.2 (1998) strictfp keyword Swing API, Collections API J2SE 1.3 (2000) JNDI, JPDA JAVA 8 FEATURES J2SE 1.4 (2002) assert keyword Image IO API, Java Web Start J2SE 5.0 (2004) generics, annotations, enum, varagrs Java SE 6 (2006) Performance improvements Scripting Language, Java Compiler API Java SE 7 (2011) try statement, invokedynamic in JVM String in switch, diamond operation
  4. 4. JAVA 8 RELEASE (MAR 18, 2014) Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 JAVA 8 FEATURES Others
  5. 5. LAMBDA EXPRESSIONS Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  6. 6. LAMBDA EXPRESSION JAVA 8 FEATURES Functions in Functional Programming Functions in Java  Are arguments, return values from other functions  Are variables and be able stored in data structures  No new types such as function types  Functional Interfaces: are interfaces with exactly one method  java.util.function package Consumer, Function, Predicate, Supplier, BiFunction, DoubleConsumer, IntPredicate, LongSupplier, … Lambda Expressions are functions without declaration of access modifier, return value declaration, and name
  7. 7. LAMBDA EXPRESSION SYNTAX IN JAVA (arguments) -> { body } JAVA 8 FEATURES anonymous inner class lambda expression single-line lambda expression no-parameter lambda expression
  8. 8. METHOD REFERENCES JAVA 8 FEATURES Lambda expressions only call an existing method  Reference to a static method  Reference to an instance method of a particular object  Reference to an constructor // int Comparator.compare(T t1, T t2) // void Consumer.accept(T t) // T IntFunction.apply(int value)
  9. 9. WHY LAMBDA EXPRESSIONS IN JAVA? JAVA 8 FEATURES  Encourage functional programming  Easier to distribute processing of collections over multiple threads  More succinct and clear than anonymous inner classes Is Lambda Expression a syntactic-sugar for Anonymous Inner Class?
  10. 10. HOW LAMBDA EXPRESSIONS WORK? The lambda expression is represented by a new method, and is invoked at run-time using invokedynamic & LambdaMetafactory JAVA 8 FEATURES JVM generation JVM translation Lambda Expression is not a syntactic-sugar for Anonymous Inner Class
  11. 11. STREAM API Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  12. 12. DEFINITION OF STREAM JAVA 8 FEATURES Streams are a FP design pattern for processing sequences of elements sequentially or in parallel
  13. 13. STREAM IN JAVA 8 - EXAMPLE Given a list of photos, I want to find 5 photo names that follow top 3 photos whose average rating is higher than 6, sorted by rating and the total amount of ratings given JAVA 8 FEATURES
  14. 14. IMPERATIVE STYLE JAVA 8 FEATURES
  15. 15. STREAM STYLE JAVA 8 FEATURES Coding in Stream API-way  Internally iterates through the elements  Manipulate the collection data easier and faster  Focus on "what" to do instead of "how" to do it  The ability to use multiple processor cores for collection processing
  16. 16. STREAM OPERATIONS JAVA 8 FEATURES Intermediate operations - Lazy processing - Stateless: filter, map, flatMap, peek - Stateful: distinct, sorted, skip - Short-circuiting : limit Terminal operations - Eager processing - forEach, reduce, collect, max, count - Short-circuiting: anyMatch, allMatch, noneMatch, findFirst, findAny - Escape-hatch: iterator, spliterator
  17. 17. DEFAULT METHODS Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  18. 18. How to add forEach(Consumer) method into List interface? persons.forEach(person -> personRepo.save(person)); DEFAULT METHODS JAVA 8 FEATURES Default Methods allow to add default implementations to new and/or existing methods of existing interface
  19. 19. CLASS-EXTENDED IN JAVA 8 JAVA 8 FEATURES Multiple Inheritances  behaviors only, no state ‘Diamond Problem’  Solving manually
  20. 20. CLASS-EXTENDED IN OTHER LANGUAGES Scala Traits (or Ruby Mix-ins) JAVA 8 FEATURES C# Extension Methods
  21. 21. NEW DATE & TIME API Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  22. 22. DATE AND TIME API  Immutable-value classes  Domain-driven design  Separation of chronologies JAVA 8 FEATURES Problems of current Date Time API  Date, Calendar and SimpleDateFormatter are not thread-safe  Poor API design: years start at 1900, months start at 0  No Non-timezone dates/times, durations, periods and intervals New Date and Time API Great but not a Java Standard API Joda-Time
  23. 23. NEW DATE AND TIME API EXAMPLE JAVA 8 FEATURES  LocalDate, LocalTime, LocalDateTime, ZonedDateTime  Clock, Duration, Period, ZoneId, ZoneOffset Domain-driven Date and Time Date and Time API classes
  24. 24. NEW JAVASCRIPT ENGINE (NASHORN) Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  25. 25. NEW JAVASCRIPT ENGINE (NASHORN) JAVA 8 FEATURES Why Nashorn Engine?  Full 100% ECMA262-compliant (edition 5.1)  Compiles JS to Java byte-code based on invokedynamic  Not match V8 performance, but 2-10x faster than Rhino  jjs command line tool Applying Nashorn: Avartar.js and Project Avatar
  26. 26. OTHER FEATURES Java 7 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Java 8 Others JAVA 8 FEATURES
  27. 27. OTHER FEATURES JAVA 8 FEATURES Static Methods on Interfaces At beginning, Java allows static fields and static inner types in interface, why not static methods? Yes, it is in Java 8 Optional Class Type Annotations 3rd-parties like Checker Framework use Java Compiler Plug-in and Pluggable Annotations Processing APIs to develop their own analyses
  28. 28. OTHER FEATURES (CON’T) JAVA 8 FEATURES Repeating Annotations Method Parameter Reflection  How to get name of method parameters?  java.lang.reflect.Executable.getParameters  Compile the source file with the -parameters
  29. 29. CONCLUSIONS New Features in Java 8 Lambda Expressions Default Methods Stream API New Date/Time APINashorn Others JAVA 8 FEATURES Change the way we write applications
  30. 30. RESOURCES • http://www.oracle.com/technetwork/java/javase/8- whats-new-2157071.html • http://www.techempower.com/blog/2013/03/26/everyt hing-about-java-8/ • http://www.takipiblog.com/2014/03/18/5-features-in- java-8-that-will-change-how-you-code/ • http://java.dzone.com/articles/think-twice-using-java-8 • http://www.infoq.com/articles/java-8-vs-scala • Duke 8 image [http://www.takipiblog.com/] • Stream image [http://ricianh.blogspot.com/]
  31. 31. Questions JAVA 8 FEATURES
  32. 32. THANK YOU © 2013 KMS Technology

×