SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
What’s New in Java 8?
John Clingan
Oracle
Product Manager – Java EE, GlassFish,
EclipseLink, Avatar
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2
The following is intended to outline our general product
direction. It is intended for information purposes only, and may
not be incorporated into any contract. It is not a commitment to
deliver any material, code, or functionality, and should not be
relied upon in making purchasing decisions. The development,
release, and timing of any features or functionality described
for Oracle s products remains at the sole discretion of Oracle.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3 3
Lambda (JSR 335)
Date/Time API (JSR 310)
Type Annotations (JSR 308)
Compact Profiles
Lambda-Form Representation for Method Handles
Remove the Permanent Generation
Improve Contended Locking
Generalized Target-Type Inference
DocTree API
Parallel Array SortingBulk Data Operations
Unicode 6.2
Base64
Prepare for Modularization
Parameter Names
TLS Server Name Indication
Configurable Secure-Random Number Generation
Java SE 8
Nashorn
Enhanced Verification Errors
Fence Intrinsics
Repeating Annotations
HTTP URL Permissions
Limited doPrivileged
http://openjdk.java.net/projects/jdk8/features
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4
Java SE 8:
Enhancing The Core Java
Platform
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5
Java SE 8
!  Biggest change in the Java language since Java SE 5
!  Significant enhancements to the class libraries
!  The main goal of these changes are …
–  Better developer productivity
–  More reliable code
–  Better utilization of multi-core / multi-processor systems
!  Code is no longer inherently serial or parallel
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6
Lambda Expressions
!  Almost all machines now are multi-core, multi-processor, or both
!  We need to make it simpler to write multi-threaded Java code
–  Java has always had the concept of threads
–  Even using the concurrency utilities and fork-join framework this is hard
!  Let’s add better library code
–  This is good, but sometimes we need to change the language too
!  The answer: Lambda expressions and the streams API
!  Backwards compatible with existing APIs like Collections.
Why Do We Need Them?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7
Lambda & Streams Demos
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8
Stream Sources
!  From collections and arrays
–  Collection.stream()
–  Collection.parallelStream()
–  Arrays.stream(T array) or Stream.of()
!  Static factories
–  IntStream.range()
–  Files.walk()
!  Roll your own
–  java.util.Spliterator()
Many Ways To Create
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9
Stream Sources
!  Access to stream elements
!  Decomposition (for parallel operations)
–  Fork-join framework
!  Stream characteristics
–  ORDERED
–  DISTINCT
–  SORTED
–  SIZED
–  SUBSIZED
–  NONNULL
–  IMMUTABLE
–  CONCURRENT
Manage Three Aspects
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10
Optional<T>
!  Used in new Java 8 APIs to replace null
!  Indicates that reference may, or may not have a value
!  Makes developer responsible for checking
Reducing NullPointerException Occurences
Optional<GPSData> maybeGPS = Optional.of(gpsData);
maybeGPS = Optional.ofNullable(gpsData);
maybeGPS.ifPresent(GPSData::printPosition);
GPSData gps = maybeGPS.orElse(new GPSData());
maybeGPS.filter(g -> g.lastRead() < 2).ifPresent(GPSData.display());
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11
java.util.function Package
!  Predicate<T>
–  Determine if the input of type T matches some criteria
!  Consumer<T>
–  Accept a single input argumentof type T, and return no result
!  Function<T, R>
–  Apply a function to the input type T, generating a result of type R
!  Plus several more
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12
Annotations On Java Types
!  Annotations can currently only be used on type declarations
–  Classes, methods, variable definitions
!  Extension for places where types are used
–  e.g. parameters
!  Permits error detection by pluggable type checkers
–  e.g. null pointer errors, race conditions, etc
public void process(@notnull List data) {…}
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13
Concurrency Updates
!  Scalable update variables
–  DoubleAccumulator, DoubleAdder, etc
–  Multiple variables avoid update contention
–  Good for frequent updates, infrequent reads
!  ConcurrentHashMap updates
–  Improved scanning support, key computation
!  ForkJoinPool improvements
–  Completion based design for IO bound applications
–  Thread that is blocked hands work to thread that is running
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14
Parallel Array Sorting
!  Additional utility methods in java.util.Arrays
–  parallelSort (multiple signatures for different primitives)
!  Anticipated minimum improvement of 30% over sequential sort
–  For dual core system with appropriate sized data set
!  Built on top of the fork-join framework
–  Uses Doug Lea’s ParallelArray implementation
–  Requires working space the same size as the array being sorted
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15
Date And Time APIs
!  A new date, time, and calendar API for the Java SE platform
!  Supports standard time concepts
–  Partial, duration, period, intervals
–  date, time, instant, and time-zone
!  Provides a limited set of calendar systems and be extensible to others
!  Uses relevant standards, including ISO-8601, CLDR, and BCP47
!  Based on an explicit time-scale with a connection to UTC
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16
Base64 Encoding and Decoding
!  Currently developers are forced to use non-public APIs
–  sun.misc.BASE64Encoder
–  sun.misc.BASE64Decoder
!  Java SE 8 now has a standard way
–  java.util.Base64.Encoder
–  java.util.Base64.Decoder
–  encode, encodeToString, decode, wrap methods
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17
Nashorn JavaScript Engine
!  Lightweight, high-performance JavaScript engine
–  Integrated into JRE
!  Use existing javax.script API
!  ECMAScript-262 Edition 5.1 language specification compliance
!  New command-line tool, jjs to run JavaScript
!  Internationalised error messages and documentation
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18
Native Memory Usage
!  No more tuning PermGen
–  PermGen – Artificial memory limitation
–  Metaspace – Regular native allocation
!  Limited only by process address space
!  Can force a limit: -XX:MaxMetaspaceSize=<size>
–  Part of the HotSpot, JRockit convergence
!  Class data sharing across processes – Experimental feature
–  Available on all platforms, -Xshare:[off|on|auto]
–  Reduce footprint and startup sharing JDK classes between processes
No more “java.lang.OutOfMemoryError: PermGen space”
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19
Multistep Optimization
!  Interpreter " Client Compiler " Server Compiler
–  Fast initial compilation
–  Keep peak performance
–  Enabled by default
!  Improve time to performance
–  Startup of large applications
–  Performance for short running applications
Tiered Compilation
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20
Java EE Application Deployment
Tiered Compilation
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21
JSR 292 - InvokeDynamic
!  Complete rewrite of the VM support for JSR 292
–  Improved stability, maintainability and performance
!  Lambda
–  Avoid repeated calculations during capture
–  No allocation for non-capturing Lambdas
–  On par or faster than inner classes
!  JavaScript Engine – Nashorn
–  Incremental inlining of MethodHandle invocations
Major Updates
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22
JavaScript Engine - Nashorn
JSR 292 - InvokeDynamic
JDK 8 updates double performance of a couple of these
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23
Java Mission Control
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.24
JavaFX 8
New Stylesheet
24
Caspian vs Modena
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25
JavaFX 8
!  Customisable
–  Configurable key combinations to exit full screen mode
–  Ability to prevent user exiting full screen mode
Improvements To Full Screen Mode
// Set the key combination that the user can use to exit
stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
// Setup the click handler so we can escape from full screen
Rectangle r = new Rectangle(0, 0, 250, 250);
r.setOnMouseClicked(e -> stage.setFullScreen(false));
// Set full screen again
stage.setFullScreen(true);
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26
JavaFX 8
!  New API for printing
–  Currently only supported on desktop
!  Any node can be printed
Printing Support
PrinterJob job = PrinterJob.createPrinterJob(printer);
job.getJobSettings().setPageLayout(pageLayout);
job.getJobSettings().setPrintQuality(PrintQuality.HIGH);
job.getJobSettings().setPaperSource(PaperSource.MANUAL);
job.getJobSettings().setCollation(Collation.COLLATED);
if (job.printPage(someRichText))
job.endJob();
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27
JavaFX 8
!  DatePicker
!  TreeTableView
New Controls
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.28
JavaFX 8
!  Gestures
–  Swipe
–  Scroll
–  Rotate
–  Zoom
!  Touch events and touch points
Touch Support
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.29
JavaFX 8
!  Predefined shapes
–  Box
–  Cylinder
–  Sphere
!  User-defined shapes
–  TriangleMesh, MeshView
!  PhongMaterial
!  Lighting
!  Cameras
3D Support
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.30
Compact Profiles
Approximate static footprint goals
Compact1 Profile
Compact2 Profile
Compact3 Profile
Full JRE 54Mb
30Mb
16Mb
11Mb
[Migration path for CDC,
logging and SSL]
[Adds XML, JDBC, RMI]
[Adds mgmt, naming, more
security, compiler support]
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.31
Java SE Public Updates Schedule
GA Date
Notification of
End of Public Updates
End of Public Updates
Java SE 1.4.2 Feb 2002 Dec 2006 Oct 2008
Java SE 5 May 2004 Apr 2008 Oct 2009
Java SE 6 Dec 2006 Feb 2011 Feb 2013
Java SE 7 July 2011 Mar 2014 April 2015
Java SE 8 Mar 2014 Mar 2016* TBD
For details see, http://www.oracle.com/technetwork/java/eol-135779.html
* Or later. Exact date TBD.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.32
Books
!  “Java SE 8 for the Really Impatient” (Horstmann)
!  “Functional Programming in Java: Harnessing the Power of Java 8
Lambda Expressions” (Subramaniam)
!  “Mastering Lambdas: Java Programming in a Multicore World” (Naftalin)
!  “Java 8 in Action: Lambdas, Streams, and functional-style
programming” (Urma, Fusco, Mycroft)
!  “Java 8 Lambdas: Pragmatic Functional Programming” (Warburton)
!  “Java in a Nutshell” (Evans, Flanagan)
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.33
Where Next?
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.34
Java 9 And Beyond
!  Modularisation of the Java platform
–  Project Jigsaw
!  Foreign function interface
–  Like JNA
!  Enhanced volatiles
Java Never Stops
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.35
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.36
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.37
Java SE Lifetime Support Policy
GA Date Premier Support Extended Support
Java SE 1.4.2 Feb 2002 Feb 2010 Feb 2013
Java SE 5 May 2004 May 2011 May 2015
Java SE 6 Dec 2006 Dec 2015 Jun 2018
Java SE 7 July 2011 July 2019 July 2022
Java SE 8 Mar 2014 Mar 2022 Mar 2025
For details see, http://www.oracle.com/support/library/brochure/lifetime-support-middleware.pdf
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.38
Java SE Platform enhanced with enterprise-grade features for
monitoring, manageability, and analytics.
# 24x7 support, offered in 27 local languages
# Security updates on older and current releases
# Only source for Java SE 6 updates after Feb 2013
# Monitor, manage, and profile Java desktop applications
# Enterprise JRE features i.e., Java SE usage tracking
Java SE Commercial Products
Java SE Suite
Java SE Platform hardened for mission
critical applications having extreme and
predictable computing needs.
# Soft real-time deterministic garbage collector for
mission critical applications
# Memory leak server for dynamic memory leak
detection on mission critical production systems
Java SE Support
Oracle Premier Support for Java SE.
# 24x7 support, offered in 27 local languages
# Security updates on older and current releases
# Only source for Java SE 6 updates after Feb 2013
# Enterprise JRE features i.e., update control
Java SE Advanced Desktop and Java SE Advanced

Contenu connexe

Tendances

Java compilation
Java compilationJava compilation
Java compilationMike Kucera
 
Core java introduction
Core java introductionCore java introduction
Core java introductionBeenu Gautam
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?Arun Gupta
 
Reversing and Patching Java Bytecode
Reversing and Patching Java BytecodeReversing and Patching Java Bytecode
Reversing and Patching Java BytecodeTeodoro Cipresso
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in actionMarco Molteni
 
Introduction to Loops in Java | For, While, Do While, Infinite Loops | Edureka
Introduction to Loops in Java | For, While, Do While, Infinite Loops | EdurekaIntroduction to Loops in Java | For, While, Do While, Infinite Loops | Edureka
Introduction to Loops in Java | For, While, Do While, Infinite Loops | EdurekaEdureka!
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12NexSoftsys
 
Java EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudJava EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudArun Gupta
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationFredrik Öhrström
 
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0Introduction tojavaandxml lc-slides01-fp2005-ver 1.0
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0Sanjay Yadav
 
Applying Anti-Reversing Techniques to Java Bytecode
Applying Anti-Reversing Techniques to Java BytecodeApplying Anti-Reversing Techniques to Java Bytecode
Applying Anti-Reversing Techniques to Java BytecodeTeodoro Cipresso
 
An Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and RuntimeAn Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and RuntimeOmar Bashir
 
Introduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataIntroduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataChris Whealy
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonArun Gupta
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012Arun Gupta
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJAX London
 

Tendances (20)

Java compilation
Java compilationJava compilation
Java compilation
 
Core java introduction
Core java introductionCore java introduction
Core java introduction
 
JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?JAX-RS 2.0: What’s New in JSR 339 ?
JAX-RS 2.0: What’s New in JSR 339 ?
 
Java 101
Java 101Java 101
Java 101
 
Reversing and Patching Java Bytecode
Reversing and Patching Java BytecodeReversing and Patching Java Bytecode
Reversing and Patching Java Bytecode
 
Java 12 - New features in action
Java 12 -   New features in actionJava 12 -   New features in action
Java 12 - New features in action
 
Introduction to Loops in Java | For, While, Do While, Infinite Loops | Edureka
Introduction to Loops in Java | For, While, Do While, Infinite Loops | EdurekaIntroduction to Loops in Java | For, While, Do While, Infinite Loops | Edureka
Introduction to Loops in Java | For, While, Do While, Infinite Loops | Edureka
 
The latest features coming to Java 12
The latest features coming to Java 12The latest features coming to Java 12
The latest features coming to Java 12
 
Java EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the CloudJava EE 7 and HTML5: Developing for the Cloud
Java EE 7 and HTML5: Developing for the Cloud
 
Websocket 1.0
Websocket 1.0Websocket 1.0
Websocket 1.0
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
 
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0Introduction tojavaandxml lc-slides01-fp2005-ver 1.0
Introduction tojavaandxml lc-slides01-fp2005-ver 1.0
 
Applying Anti-Reversing Techniques to Java Bytecode
Applying Anti-Reversing Techniques to Java BytecodeApplying Anti-Reversing Techniques to Java Bytecode
Applying Anti-Reversing Techniques to Java Bytecode
 
An Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and RuntimeAn Introduction to Java Compiler and Runtime
An Introduction to Java Compiler and Runtime
 
Introduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataIntroduction to SAP Gateway and OData
Introduction to SAP Gateway and OData
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in action
 
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX LondonJAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
JAX-RS 2.0: New and Noteworthy in RESTful Web services API at JAX London
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012PaaSing a Java EE 6 Application at Geecon 2012
PaaSing a Java EE 6 Application at Geecon 2012
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
 

En vedette

Living on the edge
Living on the edgeLiving on the edge
Living on the edgeAdrian Cole
 
Developing design sense of code smells
Developing design sense of code smellsDeveloping design sense of code smells
Developing design sense of code smellsLlewellyn Falco
 
whats new in java 8
whats new in java 8 whats new in java 8
whats new in java 8 Dori Waldman
 
TDC 2015 - Java: from old school to modern art!
TDC 2015 - Java: from old school to modern art!TDC 2015 - Java: from old school to modern art!
TDC 2015 - Java: from old school to modern art!Marcos Ferreira
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel RidingChristian Posta
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition心 谷本
 
50 new things you can do with java 8
50 new things you can do with java 850 new things you can do with java 8
50 new things you can do with java 8José Paumard
 
Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8AppDynamics
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJosé Paumard
 

En vedette (14)

Living on the edge
Living on the edgeLiving on the edge
Living on the edge
 
Developing design sense of code smells
Developing design sense of code smellsDeveloping design sense of code smells
Developing design sense of code smells
 
whats new in java 8
whats new in java 8 whats new in java 8
whats new in java 8
 
TDC 2015 - Java: from old school to modern art!
TDC 2015 - Java: from old school to modern art!TDC 2015 - Java: from old school to modern art!
TDC 2015 - Java: from old school to modern art!
 
Java 8 Features
Java 8 FeaturesJava 8 Features
Java 8 Features
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel Riding
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition
 
50 new things you can do with java 8
50 new things you can do with java 850 new things you can do with java 8
50 new things you can do with java 8
 
Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8Memory Management: What You Need to Know When Moving to Java 8
Memory Management: What You Need to Know When Moving to Java 8
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
java 8
java 8java 8
java 8
 
Java tutorial PPT
Java tutorial PPTJava tutorial PPT
Java tutorial PPT
 

Similaire à What's new in Java 8

Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeJAXLondon2014
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8Simon Ritter
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016Tim Ellison
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9Deepu Xavier
 
Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Simon Ritter
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)David Delabassee
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersBruno Borges
 
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.J On The Beach
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerThomas Wuerthinger
 
How Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfHow Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfAna-Maria Mihalceanu
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)Logico
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013Martin Fousek
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformThomas Wuerthinger
 

Similaire à What's new in Java 8 (20)

Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David Delabassee
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
Avatar 2.0
Avatar 2.0Avatar 2.0
Avatar 2.0
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
Java SE 8
Java SE 8Java SE 8
Java SE 8
 
Java EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c DevelopersJava EE 7 for WebLogic 12c Developers
Java EE 7 for WebLogic 12c Developers
 
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.
A Java Implementer's Guide to Boosting Apache Spark Performance by Tim Ellison.
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
 
Hotspot & AOT
Hotspot & AOTHotspot & AOT
Hotspot & AOT
 
How Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdfHow Java 19 Influences the Future of Your High-Scale Applications .pdf
How Java 19 Influences the Future of Your High-Scale Applications .pdf
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 

Plus de jclingan

Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Featuresjclingan
 
MicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices ArchitectureMicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices Architecturejclingan
 
MicroProfile Devoxx.us
MicroProfile Devoxx.usMicroProfile Devoxx.us
MicroProfile Devoxx.usjclingan
 
Java EE Microservices
Java EE MicroservicesJava EE Microservices
Java EE Microservicesjclingan
 
MicroProfile
MicroProfileMicroProfile
MicroProfilejclingan
 

Plus de jclingan (6)

Top 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus FeaturesTop 10 Kubernetes Native Java Quarkus Features
Top 10 Kubernetes Native Java Quarkus Features
 
MicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices ArchitectureMicroProfile: Optimizing Java EE for a Microservices Architecture
MicroProfile: Optimizing Java EE for a Microservices Architecture
 
MicroProfile Devoxx.us
MicroProfile Devoxx.usMicroProfile Devoxx.us
MicroProfile Devoxx.us
 
Java EE Microservices
Java EE MicroservicesJava EE Microservices
Java EE Microservices
 
MicroProfile
MicroProfileMicroProfile
MicroProfile
 
Java 8
Java 8Java 8
Java 8
 

Dernier

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Dernier (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

What's new in Java 8

  • 1. What’s New in Java 8? John Clingan Oracle Product Manager – Java EE, GlassFish, EclipseLink, Avatar
  • 2. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
  • 3. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3 3 Lambda (JSR 335) Date/Time API (JSR 310) Type Annotations (JSR 308) Compact Profiles Lambda-Form Representation for Method Handles Remove the Permanent Generation Improve Contended Locking Generalized Target-Type Inference DocTree API Parallel Array SortingBulk Data Operations Unicode 6.2 Base64 Prepare for Modularization Parameter Names TLS Server Name Indication Configurable Secure-Random Number Generation Java SE 8 Nashorn Enhanced Verification Errors Fence Intrinsics Repeating Annotations HTTP URL Permissions Limited doPrivileged http://openjdk.java.net/projects/jdk8/features
  • 4. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4 Java SE 8: Enhancing The Core Java Platform
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5 Java SE 8 !  Biggest change in the Java language since Java SE 5 !  Significant enhancements to the class libraries !  The main goal of these changes are … –  Better developer productivity –  More reliable code –  Better utilization of multi-core / multi-processor systems !  Code is no longer inherently serial or parallel
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6 Lambda Expressions !  Almost all machines now are multi-core, multi-processor, or both !  We need to make it simpler to write multi-threaded Java code –  Java has always had the concept of threads –  Even using the concurrency utilities and fork-join framework this is hard !  Let’s add better library code –  This is good, but sometimes we need to change the language too !  The answer: Lambda expressions and the streams API !  Backwards compatible with existing APIs like Collections. Why Do We Need Them?
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7 Lambda & Streams Demos
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8 Stream Sources !  From collections and arrays –  Collection.stream() –  Collection.parallelStream() –  Arrays.stream(T array) or Stream.of() !  Static factories –  IntStream.range() –  Files.walk() !  Roll your own –  java.util.Spliterator() Many Ways To Create
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9 Stream Sources !  Access to stream elements !  Decomposition (for parallel operations) –  Fork-join framework !  Stream characteristics –  ORDERED –  DISTINCT –  SORTED –  SIZED –  SUBSIZED –  NONNULL –  IMMUTABLE –  CONCURRENT Manage Three Aspects
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10 Optional<T> !  Used in new Java 8 APIs to replace null !  Indicates that reference may, or may not have a value !  Makes developer responsible for checking Reducing NullPointerException Occurences Optional<GPSData> maybeGPS = Optional.of(gpsData); maybeGPS = Optional.ofNullable(gpsData); maybeGPS.ifPresent(GPSData::printPosition); GPSData gps = maybeGPS.orElse(new GPSData()); maybeGPS.filter(g -> g.lastRead() < 2).ifPresent(GPSData.display());
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11 java.util.function Package !  Predicate<T> –  Determine if the input of type T matches some criteria !  Consumer<T> –  Accept a single input argumentof type T, and return no result !  Function<T, R> –  Apply a function to the input type T, generating a result of type R !  Plus several more
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12 Annotations On Java Types !  Annotations can currently only be used on type declarations –  Classes, methods, variable definitions !  Extension for places where types are used –  e.g. parameters !  Permits error detection by pluggable type checkers –  e.g. null pointer errors, race conditions, etc public void process(@notnull List data) {…}
  • 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13 Concurrency Updates !  Scalable update variables –  DoubleAccumulator, DoubleAdder, etc –  Multiple variables avoid update contention –  Good for frequent updates, infrequent reads !  ConcurrentHashMap updates –  Improved scanning support, key computation !  ForkJoinPool improvements –  Completion based design for IO bound applications –  Thread that is blocked hands work to thread that is running
  • 14. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14 Parallel Array Sorting !  Additional utility methods in java.util.Arrays –  parallelSort (multiple signatures for different primitives) !  Anticipated minimum improvement of 30% over sequential sort –  For dual core system with appropriate sized data set !  Built on top of the fork-join framework –  Uses Doug Lea’s ParallelArray implementation –  Requires working space the same size as the array being sorted
  • 15. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15 Date And Time APIs !  A new date, time, and calendar API for the Java SE platform !  Supports standard time concepts –  Partial, duration, period, intervals –  date, time, instant, and time-zone !  Provides a limited set of calendar systems and be extensible to others !  Uses relevant standards, including ISO-8601, CLDR, and BCP47 !  Based on an explicit time-scale with a connection to UTC
  • 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16 Base64 Encoding and Decoding !  Currently developers are forced to use non-public APIs –  sun.misc.BASE64Encoder –  sun.misc.BASE64Decoder !  Java SE 8 now has a standard way –  java.util.Base64.Encoder –  java.util.Base64.Decoder –  encode, encodeToString, decode, wrap methods
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17 Nashorn JavaScript Engine !  Lightweight, high-performance JavaScript engine –  Integrated into JRE !  Use existing javax.script API !  ECMAScript-262 Edition 5.1 language specification compliance !  New command-line tool, jjs to run JavaScript !  Internationalised error messages and documentation
  • 18. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18 Native Memory Usage !  No more tuning PermGen –  PermGen – Artificial memory limitation –  Metaspace – Regular native allocation !  Limited only by process address space !  Can force a limit: -XX:MaxMetaspaceSize=<size> –  Part of the HotSpot, JRockit convergence !  Class data sharing across processes – Experimental feature –  Available on all platforms, -Xshare:[off|on|auto] –  Reduce footprint and startup sharing JDK classes between processes No more “java.lang.OutOfMemoryError: PermGen space”
  • 19. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19 Multistep Optimization !  Interpreter " Client Compiler " Server Compiler –  Fast initial compilation –  Keep peak performance –  Enabled by default !  Improve time to performance –  Startup of large applications –  Performance for short running applications Tiered Compilation
  • 20. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20 Java EE Application Deployment Tiered Compilation
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21 JSR 292 - InvokeDynamic !  Complete rewrite of the VM support for JSR 292 –  Improved stability, maintainability and performance !  Lambda –  Avoid repeated calculations during capture –  No allocation for non-capturing Lambdas –  On par or faster than inner classes !  JavaScript Engine – Nashorn –  Incremental inlining of MethodHandle invocations Major Updates
  • 22. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22 JavaScript Engine - Nashorn JSR 292 - InvokeDynamic JDK 8 updates double performance of a couple of these
  • 23. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23 Java Mission Control
  • 24. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.24 JavaFX 8 New Stylesheet 24 Caspian vs Modena
  • 25. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25 JavaFX 8 !  Customisable –  Configurable key combinations to exit full screen mode –  Ability to prevent user exiting full screen mode Improvements To Full Screen Mode // Set the key combination that the user can use to exit stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH); // Setup the click handler so we can escape from full screen Rectangle r = new Rectangle(0, 0, 250, 250); r.setOnMouseClicked(e -> stage.setFullScreen(false)); // Set full screen again stage.setFullScreen(true);
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26 JavaFX 8 !  New API for printing –  Currently only supported on desktop !  Any node can be printed Printing Support PrinterJob job = PrinterJob.createPrinterJob(printer); job.getJobSettings().setPageLayout(pageLayout); job.getJobSettings().setPrintQuality(PrintQuality.HIGH); job.getJobSettings().setPaperSource(PaperSource.MANUAL); job.getJobSettings().setCollation(Collation.COLLATED); if (job.printPage(someRichText)) job.endJob();
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27 JavaFX 8 !  DatePicker !  TreeTableView New Controls
  • 28. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.28 JavaFX 8 !  Gestures –  Swipe –  Scroll –  Rotate –  Zoom !  Touch events and touch points Touch Support
  • 29. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.29 JavaFX 8 !  Predefined shapes –  Box –  Cylinder –  Sphere !  User-defined shapes –  TriangleMesh, MeshView !  PhongMaterial !  Lighting !  Cameras 3D Support
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.30 Compact Profiles Approximate static footprint goals Compact1 Profile Compact2 Profile Compact3 Profile Full JRE 54Mb 30Mb 16Mb 11Mb [Migration path for CDC, logging and SSL] [Adds XML, JDBC, RMI] [Adds mgmt, naming, more security, compiler support]
  • 31. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.31 Java SE Public Updates Schedule GA Date Notification of End of Public Updates End of Public Updates Java SE 1.4.2 Feb 2002 Dec 2006 Oct 2008 Java SE 5 May 2004 Apr 2008 Oct 2009 Java SE 6 Dec 2006 Feb 2011 Feb 2013 Java SE 7 July 2011 Mar 2014 April 2015 Java SE 8 Mar 2014 Mar 2016* TBD For details see, http://www.oracle.com/technetwork/java/eol-135779.html * Or later. Exact date TBD.
  • 32. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.32 Books !  “Java SE 8 for the Really Impatient” (Horstmann) !  “Functional Programming in Java: Harnessing the Power of Java 8 Lambda Expressions” (Subramaniam) !  “Mastering Lambdas: Java Programming in a Multicore World” (Naftalin) !  “Java 8 in Action: Lambdas, Streams, and functional-style programming” (Urma, Fusco, Mycroft) !  “Java 8 Lambdas: Pragmatic Functional Programming” (Warburton) !  “Java in a Nutshell” (Evans, Flanagan)
  • 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.33 Where Next?
  • 34. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.34 Java 9 And Beyond !  Modularisation of the Java platform –  Project Jigsaw !  Foreign function interface –  Like JNA !  Enhanced volatiles Java Never Stops
  • 35. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.35
  • 36. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.36
  • 37. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.37 Java SE Lifetime Support Policy GA Date Premier Support Extended Support Java SE 1.4.2 Feb 2002 Feb 2010 Feb 2013 Java SE 5 May 2004 May 2011 May 2015 Java SE 6 Dec 2006 Dec 2015 Jun 2018 Java SE 7 July 2011 July 2019 July 2022 Java SE 8 Mar 2014 Mar 2022 Mar 2025 For details see, http://www.oracle.com/support/library/brochure/lifetime-support-middleware.pdf
  • 38. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.38 Java SE Platform enhanced with enterprise-grade features for monitoring, manageability, and analytics. # 24x7 support, offered in 27 local languages # Security updates on older and current releases # Only source for Java SE 6 updates after Feb 2013 # Monitor, manage, and profile Java desktop applications # Enterprise JRE features i.e., Java SE usage tracking Java SE Commercial Products Java SE Suite Java SE Platform hardened for mission critical applications having extreme and predictable computing needs. # Soft real-time deterministic garbage collector for mission critical applications # Memory leak server for dynamic memory leak detection on mission critical production systems Java SE Support Oracle Premier Support for Java SE. # 24x7 support, offered in 27 local languages # Security updates on older and current releases # Only source for Java SE 6 updates after Feb 2013 # Enterprise JRE features i.e., update control Java SE Advanced Desktop and Java SE Advanced