Download s.score - Kenai.com

Document related concepts
no text concepts found
Transcript
The Java SE Platform: Rebuilding Momentum
Roger Brinkley
Java Developer Advocate, Java Platform Group
Java Spotlight Podcast Host
| Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Joe Darcy
Bruno Souza
Stuart Marks
Adam Bein
Alex Buckley
Adam Messinger
Jim Laskey
Mark Reinhold
Alan Bateman
Cameron Purdy
2
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
http::/javaspotlight.org
@javaspotlight
Mike Duigou
The proceeding and following material 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
3
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Grow developer base
Grow adoption
Increase competitiveness
Adapt to change
4
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
5
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR
292)
Fork/Join
Mid 2011
2012
Project
Framework
Strict
Project
Project
Lambda
Jigsaw
TypeVerification
Annotations (JSR 308)
(JSR
335)
Lambda
Parallel Class
Unicode 6.0
JDBC 4.1
LoadersBulk-Data
Phase Operations
rs
Transfer
Queues
More New I/O (JSR
203)
6
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Enhanced
Locales
SDP &
SCTP
TLS
1.2
EC
C
XRender
Pipeline
Swing
JLayer
Swing
Nimbus
JDK 7 Schedule
2010/12/16 Feature Complete
2011/04/12Rampdown start: P1-P3 bugs only
2011/04/28API/interface changes: Showstoppers on
2011/05/11All targeted bugs addressed First releas
2011/05/18Bug fixes: Showstoppers only
2011/06/08Final test cycle starts
2011/07/28General Availability
7
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Four JSRs
1,966 Enhancements
9,494 Bug Fixes
9,018 Mercurial Changesets
147 Builds
Four years, seven months,
2011/7/28
and seventeen days …
8
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR 292)
Fork/Join Framework
(JSR
166y)
NIO.2 (JSR 203)
10
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
http://www.flickr.com/photos/chefranden/908539119/
11
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
// Diamond
foo()
Map<String,String>
<String,Map<Integer,List<String>>>
<String,Map<Integer,String>>
map
; {
return
= new HashMap<>();
HashMap<String,String>
<String,Map<Integer,String>>
<String,Map<Integer,List<String>>>
<>
();
}// ...
map =
12
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
// Strings in switch
if (s.equals("foo"))
switch (s) {
doFoo();
case
:
break;
else if (s.equals( "bar"))
case
:
break;
doBar();
case
:
break;
else if (s.equals( "baz"))
default:
doBaz();
else
}
throw new IllegalArgumentException(s);
13
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
// Multi-catch
try {
// ...
} catch (IOException |
x) {
logger.log(SEVERE, "Unexpected failure", x);
throw x;
} catch (SQLException x) {
logger.log(SEVERE, "Unexpected failure", x);
throw x;
}
14
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
static void copy(Path src, Path dst) throws IOException {
InputStream in = Files.newInputStream(src);
OutputStream out = Files.newOutputStream(dst);
byte[] buf = new byte[BUFSIZ];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
}
15
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
static void copy(Path src, Path dst) throws IOException {
InputStream in = Files.newInputStream(src);
OutputStream out = Files.newOutputStream(dst);
try {
byte[] buf = new byte[BUFSIZ];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
in.close();
out.close();
}
}
16
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
static void copy(Path src, Path dst) throws IOException {
InputStream in = null;
OutputStream out = null;
try {
in = Files.newInputStream(src);
out = Files.newOutputStream(dst);
byte[] buf = new byte[BUFSIZ];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
if (in != null)
in.close();
if (out != null)
out.close();
}
}
17
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
static void copy(Path src, Path dst) throws IOException {
InputStream in = Files.newInputStream(src);
try {
OutputStream out = Files.newOutputStream(dst);
try {
byte[] buf = new byte[BUFSIZ];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
} finally {
out.close();
}
} finally {
in.close();
}
}
=
=
18
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
{
// Try-with-resources
static void copy(Path src, Path dst) throws IOException {
try (InputStream in = Files.newInputStream(src);
OutputStream out = Files.newOutputStream(dst);
)
{
byte[] buf = new byte[BUFSIZ];
int n;
while ((n = in.read(buf)) >= 0)
out.write(buf, 0, n);
}
}
try ( )
{
}
19
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
// Try-with-resources
package foo;
java.lang;
class FooResource
public
interface AutoCloseable {
implements
public void
AutoCloseable{
close() throws IOException;
} // ...
public void close() {
// ... }
}
20
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
21
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
22
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
23
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR
292)
Fork/Join
Framework
NIO.2 (JSR 203)
26
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Bex
Script
CAL
Zigzag
Luck
foo
Scal
Rexx a JudoScrip
t
Drools
vlanguage
Lis
p
BeanShel
l
G
JavaScript Tiger
Icon
Processin
g
Tcl
E Smallta
Log
JHCR
Yoixlk
o
WebL
Simkin
Eiffel
JESS
Correlat
ObjectScrip
e
Anvil
Jickle t
Clojur
e
27
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Forth
C#
FScrip
t
Funnel
JRub
Pascal Sather
y Ada
Mini
Tea
Dawn
Schem
TermWare
Jython
e
iScript
LLP
Obero
SALSA
Basic
n PHP
Groov
Piccola
Proloy
g
Modula
Sleep
-2
Hojo
Yassl
Phobo PLAN
s Pnuts
Nice
Presen
t
Ruby = Method Calls
Lots and lots and lots of ’em …
28
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
29
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
JRuby onJRuby
Java 7on
with
InvokeDynamic
Java
5/6
def foo
bar
end
def bar
baz
end
def baz
# ...
end
30
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
foo
JRuby
call
logic
bar
baz
bar
JRuby
call
logic
baz
Kills many
JVM
optimizations
Straight-through
dispatch
Optimizations
(like
inlining)
canpaths
happen!
InvokeDynamic (JSR
292)openjdk.java.net/projects/mlvm
31
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR
292)
Fork/Join
Framework
NIO.2 (JSR 203)
33
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
34
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
1. Keep all the processor cores busy
2. Minimize synchronization overhead
3. Scale linearly as the number of core
increases
35
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
36
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Result compute(Task t) {
if (t.size() < SEQUENTIAL_THRESHOLD) {
return t.computeSequentially();
} else {
Result left, right;
left = compute(p.leftHalf());
right = compute(p.rightHalf());
return combine(left, right);
}
}
37
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Result compute(Task t) {
if (t.size() < SEQUENTIAL_THRESHOLD) {
return t.computeSequentially();
} else {
Result left, right;
INVOKE-IN-PARALLEL {
left = compute(p.leftHalf());
right = compute(p.rightHalf());
}
return combine(left, right);
}
}
38
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
public class Task
extends java.util.concurrent.RecursiveAction
{
List<Student> students;
static final int SEQUENTIAL_THRESHOLD = 1 << 14;
Task(List<Student> ss) {
students = ss; }
double result;
protected void compute() {
if (students.size() < SEQUENTIAL_THRESHOLD) {
result = computeSequentially();
} else {
Task left = leftHalf();
Task right = rightHalf();
invokeAll(left, right); // INVOKE-IN-PARALLEL
result = Math.max(left.result, right.result);
}
}
Task leftHalf() {
int n = students.size();
return new Task(students.subList(0, n / 2));
}
Task rightHalf() {
int n = students.size();
return new Task(students.subList(n / 2, n));
}
double computeSequentially() {
double max = Double.MIN_VALUE;
for (Student s : students) {
if (s.gradYear == 2011)
max = Math.max(max, s.score);
}
return max;
}
39
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
static double compute(List<Student> ss) {
ForkJoinPool pool = new ForkJoinPool();
Task t = new Task(ss);
pool.invoke(t);
return t.result;
}
}
Fork/Join
Frameworkgee.cs.oswego.edu/dl/papers/fj.pdf
40
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR
292)
Fork/Join
Framework
NIO.2 (JSR 203)
41
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
New File system API
File notifications
Directory operations
Asynchronous I/O
New file system provider for zip/jar
archives
42
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
import java.nio.file.*;
Path searchDir = Paths.get("c:/Users");
final Path findFile = Paths.get("baby.jpg");
FileVisitor visitor = new SimpleFileVisitor() {
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) {
if (file.getName().startsWith(findFile)) {
System.out.format("%s%n", findFile);
}
return FileVisitResult.CONTINUE;
}
};
EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
Files.walkFileTree(searchDir, opts, Integer.MAX_VALUE, visitor);
43
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Coin (JSR 334)
InvokeDynamic
(JSR
292)
Fork/Join
Framework
Strict class-file checking · Upgrade the class-loader architecture · Method to
close a URLClassLoader · Concurrency and collections updates · Unicode 6.0
· Locale enhancement · Separate user and user-interface locales · More new
I/O APIs (JSR 203) · Filesystem provider for zip/jar archives · SCTP · SDP ·
Windows Vista IPv6 stack · TLS 1.2 · Elliptic-curve cryptography (ECC) ·
JDBC 4.1 · XRender pipeline for Java 2D · New platform APIs for 6u10
graphics features · Nimbus look-and-feel for Swing · Swing JLayer component
· Gervill sound synthesizer · Update the XML stack · Enhanced MBeans
44
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
JVM Convergence
Copyright © 2010 Oracle and/or its affiliates. All rights
reserved.
Project Lambda (JSR
335)
Project Jigsaw (JSR
TBD)
46
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
47
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
public class Task
extends java.util.concurrent.RecursiveAction
{
class Student {
String name; int
List<Student> students;
gradYear; double
Task(List<Student> ss) {
score;}
students = ss;
}
Task leftHalf() {
int n = students.size();
return new Task(students.subList(0, n / 2));
}
List<Student> students = ...;
Task rightHalf() {
int n = students.size();
return new Task(students.subList(n / 2, n));
}
double computeSequentially() {
double max = Double.MIN_VALUE;
for (Student s : students) {
if (s.gradYear == 2011)
max = Math.max(max, s.score);
}
return max;
}
static final int SEQUENTIAL_THRESHOLD = 1 << 14;
double result;
protected void compute() {
if (students.size() < SEQUENTIAL_THRESHOLD) {
result = computeSequentially();
} else {
Task left = leftHalf();
Task right = rightHalf();
invokeAll(left, right); // INVOKE-IN-PARALLEL
result = Math.max(left.result, right.result);
}
}
double max = Double.MIN_VALUE;
for (Student s : students) {
static double compute(List<Student> ss) {
if (s.gradYear == 2011)
ForkJoinPool pool = new ForkJoinPool();
Task t = new Task(ss);
max = Math.max(max, s.score);
pool.invoke(t);
return t.result;
}
}
return max;
}
48
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
class Student {
String name; int
gradYear; double
score;}
List<Student> students = ...;
double max = Double.MIN_VALUE;
for (Student s : students
students) {
if ( s.gradYear == 2011 )
max = Math.max(max, s.score);
s.score
}
return max;
49
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter
s.gradYear == 2011
.map
s.score
.reduce
Math.max
50
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter(new Predicate<Student>() {
public boolean eval(Student s) {
return s.gradYear == 2011 ;
}
}).map
s.score
.reduce
Math.max
51
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter(new Predicate<Student>() {
public boolean eval(Student s) {
return s.gradYear == 2011 ;
}
}).map(new Mapper<Student,Double>() {
public Double map(Student s) {
return s.score ;
}
}).reduce
Math.max
52
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter(new Predicate<Student>() {
public boolean eval(Student s) {
return s.gradYear == 2011 ;
}
}).map(new Mapper<Student,Double>() {
public Double map(Student s) {
return s.score ;
}
}).reduce(0.0, new Reducer<Double,Double>() {
public Double reduce(Double max, Double score) {
return Math.max(max, score);
}
});
53
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
->
double max
= students.filter((Student s) -> s.gradYear == 2011)
.map(new Mapper<Student,Double>() {
public Double map(Student s) {
return s.score ;
}
}).reduce(0.0, new Reducer<Double,Double>() {
public Double reduce(Double max, Double score) {
return Math.max(max, score);
}
});
54
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter((Student s) -> s.gradYear == 2011)
.map((Student s) -> s.score)
.reduce(0.0, new Reducer<Double,Double>() {
public Double reduce(Double max, Double score) {
return Math.max(max, score);
}
});
55
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter((Student s) -> s.gradYear == 2011)
.map((Student s) -> s.score)
.reduce(0.0,
(Double max, Double score)
-> Math.max(max, score));
56
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
= students.filter(s -> s.gradYear == 2011 )
.map(s -> s.score)
.reduce(0.0,
(max, score)
-> Math.max(max, score));
57
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
double max
double
max =
studennew
= students
.filter(
s ->Predicate<Student>()
s.gradYear == 2011 ) {
//
.map(
s -> s.score
)
//
public
boolean
eval(Student
s) {
.reduce(
0.0, Math#max
Math.max
);
//
return
s.gradYear
== 2011;
}
}).map(new Mapper<Student,Double>() {
public Double map(Student s) {
return s.score;
}
}).reduce(0.0, new Reducer<Double,Double>()
public Double reduce(Double max, Double
return Math.max(max, score);
}
});
58
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Iterable
Iterable
Double
{
score) {
double max
= students.parallel()
.filter(s -> s.gradYear == 2011 ) // Iterable
.map(s -> s.score)
// Iterable
.reduce(0.0, Math#max);
// Double
59
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
List<Student> students = ...;
double max
= students.parallel()
.filter(s -> s.gradYear == 2011 )
.map(s -> s.score)
.reduce(0.0, Math#max);
60
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
interface Iterable<T> {
}
61
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Iterator<T> iterator();
interface Iterable<T> {
Iterator<T> iterator();
Iterable<T> filter(Predicate<? super T> predicate) ;
<U> Iterable<U> map(Mapper<? super T, ? extends U> mapper) ;
<U> U reduce(U base, Reducer<U, ? super T> reducer) ;
}
62
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
interface Iterable<T> {
Iterator<T> iterator();
Iterable<T> filter(Predicate<? super T> predicate)
default Iterables.filter;
<U> Iterable<U> map(Mapper<? super T, ? extends U> mapper) ;
<U> U reduce(U base, Reducer<U, ? super T> reducer) ;
}
63
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
interface Iterable<T> {
Iterator<T> iterator();
Iterable<T> filter(Predicate<? super T> predicate)
default Iterables.filter;
<U> Iterable<U> map(Mapper<? super T, ? extends U> mapper)
default Iterables.map;
<U> U reduce(U base, Reducer<U, ? super T> reducer) ;
}
64
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
interface Iterable<T> {
Iterator<T> iterator();
Iterable<T> filter(Predicate<? super T> predicate)
default Iterables.filter;
<U> Iterable<U> map(Mapper<? super T, ? extends U> mapper)
default Iterables.map;
<U> U reduce(U base, Reducer<U, ? super T> reducer)
default Iterables.reduce;
}
65
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Lambda = Lambda expressions
+ Bulk-data operations
+ Method literals
+ Default methods
66
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
67
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Lambda (JSR
335)openjdk.java.net/projects/lambda
68
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Lambda (JSR
335)
Project Jigsaw (JSR
TBD)
69
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
70
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
http://www.flickr.com/photos/lizadaly/29443
62379
// module-info.java
$ java -cp $APPHOME/lib/jdom-1.0.jar\
module org.planetjdk.aggregator @ 1.0 {
:$APPHOME/lib/jaxen-1.0.jar\
requires jdom @ 1.0;
:$APPHOME/lib/saxpath-1.0.jar\
requires tagsoup @ 1.2;
:$APPHOME/lib/rome-1.0.jar\
requires rome @ 1.0;
:$APPHOME/lib/rome-fetcher-1.0.jar\
requires rome-fetcher @ 1.0;
:$APPHOME/lib/joda-time-1.6.jar\
requires joda-time @ 1.6;
:$APPHOME/lib/tagsoup-1.2.jar\
requires jaxp @ 1.4.4;
org.planetjdk.aggregator.Main
class org.openjdk.aggregator.Main;
}
71
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
org.planetjdk.aggre
gator
jdo
m
jaxe
n
saxpat
h
72
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
tagsou
p
joda-time
romefetcher
rom
e
jaxp
mvn
73
// module-info.java
jar
module org.planetjdk.aggregator @ 1.0 {
requires jdom @ 1.0;
requires tagsoup @ 1.2;
requires rome @ 1.0;
requires rome-fetcher @ 1.0;
requires joda-time @ 1.6;
requires jaxp @ 1.4.4;
class org.openjdk.aggregator.Main;
}
jmod
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
rpm
deb
http://www.flickr.com/photos/viagallery/229
0654438
74 | Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
75
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
76
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
77
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
78
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
javafx
logging
base
79
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
80
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
81
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
82
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
83
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
84
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
85
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
jdk
jre
java
headless
corba
scripting txn
jdbc
xml-dsig
kerberos
deploy
tools
jre-tools
jaxws-tools
jaxws
management
javap
desktop
javah
javadoc
jaxp
javac
naming
rmi
compiler
auth
ssl
logging
base
86
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
87
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
88
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Jigsaw
openjdk.java.net/projects/jigsaw
89
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Lambda (JSR
335)
Project Jigsaw (JSR
TBD)
90
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
Project Lambda (JSR
335)
Project Jigsaw (JSR
91
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
TBD)
JavaScript (Project Nashorn)
JVM Convergence
Type Annotations (JSR 308)
Date/Time API (JSR
310)
Sensors
Plus more to come
…
Self-Tuning JVM
Improved Native Integration
Big
Data
Reificatio
n
Tail
Calls/Continuations
Meta-Object Protocol
Multi-Tenancy
Resource Management
Heterogeneous Compute Models
92
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
JDK Roadmap
NetBeans 7
•Java SE 7 Support
•more
JDK 7u2
•JRE 7 on java.com
•JavaFX 2.0 co-install
JDK 7
2011
JDK 7u6
Last Public
JDK 6 Update
NetBeans.next
•Java SE 8 Support
•JavaFX 3.0 Support
•more
2013
2012
2014
Mac OS X
JDK 7u4
JDK 8
•JDK 7 Developer Preview
•OS X JDK Port (for
developers)
•Windows, Linux, Solaris, OS X,
Embedded Platforms
•Jigsaw
•Lambda
•JavaFX 3.0
•Complete Oracle JVM
Convergence
•JavaScript Interop
•more
•Java FX 2.0 Dev Preview
NetBeans 7.1
•JavaFX 2.0 Support
93
•OS X JRE Port (for
end-users)
•Improved OS
integration, autoupdate
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
94
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
openjdk.java.net/projects/jdk8
jdk8.java.net
95
| Copyright © 2011, Oracle and/or its affiliates. All rights reserved.
| Copyright © 2011, Oracle and/or it’s affiliates. All rights reserved. | Insert Information Protection Policy Classification from Slide 8
Related documents