Java SE
Simon Ritter
Java Technology Ambassador
@speakjava
1
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
JDK 8 in the works
• JDK 7 shipped in July 2011
• JDK 8 scheduled to ship in 2014
•
Expecting a 2-year cadence between platform releases going forward
•
Java SE 8 platform under JSR 336
• Major features planned for JDK 8
2
•
Lambda expressions and default methods (JSR 335)
•
Annotation-related language changes (JSR 308)
•
Date and Time API (JSR 310)
•
Compact Profiles
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
JDK 8
Innovation
Java for Everyone
Client
• Lambda aka Closures
• Language Interop
• Nashorn
•
•
•
•
•
•
•
•
•
•
•
•
•
Core Libraries
• Parallel operations for core
collections APIs
• Improvements in functionality
• Improved type inference
General Goodness
• JVM enhancements
• No PermGen limitations
• Performance lmprovements
3
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Profiles for constrained devices
JSR 310 - Date & Time APIs
Non-Gregorian calendars
Unicode 6.2
ResourceBundle.
BCP47 locale matching
Globalization & Accessibility
Tools
• Compiler control & logging
• JSR 308 - Annotations on
Java Type
• Native app bundling
• App Store Bundling tools
Deployment enhancements
JavaFX 8
Java SE Embedded support
Enhanced HTML5 support
3D shapes and attributes
Printing
Security
•
•
•
•
•
Limited doPrivilege
NSA Suite B algorithm support
SNI Server Side support
DSA updated to FIPS186-3
AEAD JSSE CipherSuites
The road of closures in Java
• In 2006-2008, a vigorous community debate about closures
• Multiple proposals, including BGGA , CICE, and FCM
• December 2009 – OpenJDK Project Lambda formed
• November 2010 – JSR-335 filed
•
Current status
• Draft specification available
• Prototype (source and binary) available on OpenJDK
• Coming soon to mainline JDK 8 builds
4
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Coordinated Platform Upgrade with Lambda
• Language
• Lambda Expressions (closures)
• Interface Evolution with default methods
• Libraries
• Bulk data operations on Collections
• More library support for parallelism
• JVM
• Default methods
• Enhancements to invokedynamic
5
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Let us look at some code
Robust error handling in a scheduling application
// Event handler for when things go terribly wrong
filterTask.setOnFailed(new EventHandler<WorkerStateEvent>()
{
@Override public void handle(WorkerStateEvent e) {
e.getSource().getException().printStackTrace();
}
});
// Event handler for when things go terribly wrong
filterTask.setOnFailed(
e -> e.getSource().getException().printStackTrace());
6
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
for (Shape s : shapes) {
if (s.getColor() == BLUE)
s.setColor(RED);
}
shapes.forEach(s -> {
if (s.getColor() == BLUE)
s.setColor(RED);
});
7
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Extension Methods
interface Collection<T> {
default void forEach(Block<T> action) {
for (T t : this)
action.apply(t);
}
// Rest of Collection methods…
}
8
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Project Lambda
• Lambda expressions + extension methods allow:
• Internal iteration
• Bulk data operations for existing types
• Better support for parallelism leveraging fork/join
9
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Project
Nashorn
10
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Test Pilots Wanted
• Developer Preview available
•
Schedule on: http://openjdk.java.net/projects/jdk8
•
Contribute to OpenJFX: http://openjdk.java.net/projects/openjfx
• JDK 8 builds with many features already available
11
•
Try out Lambda and check out JavaFX 8: http://jdk8.java.net
•
Participate in the JCP for free through your local JUG
•
Jigsaw builds also available from Java.net
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.