Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168...

91
Insert Presenterʼs Name Here Insert Presenterʼs Title Here Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13 Java 8, Java 9, and Beyond! Mark Reinhold (@mreinhold) Chief Architect, Java Platform Group, Oracle Jfokus 2013 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Transcript of Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168...

Page 1: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Insert Presenterʼs Name HereInsert Presenterʼs Title Here

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

Java 8, Java 9, and Beyond!

Mark Reinhold (@mreinhold)Chief Architect, Java Platform Group, Oracle

Jfokus 2013

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Page 2: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Page 3: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Java 8

Page 4: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Lambda (JSR 335)

Java 8

Page 5: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Lambda (JSR 335)

Compact ProfilesJava 8

Page 6: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Lambda (JSR 335)

Compact ProfilesJava 8

Nashorn

Page 7: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Lambda (JSR 335)Date/Time API (JSR 310)

Compact ProfilesJava 8

Nashorn

Page 8: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

Lambda (JSR 335)Date/Time API (JSR 310)

Type Annotations (JSR 308)

Compact ProfilesJava 8

Nashorn

Page 9: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2

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 LockingGeneralized Target-Type Inference

DocTree API

Parallel Array Sorting

Bulk Data Operations Unicode 6.2Base64 HTTP ClientNSA Suite B

Prepare for Modularization

Unicode CLDR

TLS Server Name IndicationConfigurable Secure-Random Number Generation

Java 8Nashorn

Page 10: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3

Page 11: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3

Page 12: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4

Page 13: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4

Page 14: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Colors and Shapes

5

Page 15: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Colors and Shapes

5

enum Color { RED, GREEN, BLUE }

Page 16: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Colors and Shapes

5

enum Color { RED, GREEN, BLUE }

class Shape {

Shape() { ... } Shape(Shape s, double area) { ... }

Color getColor() { ... } void setColor(Color c) { ... }

double getArea() { ... }

}

Page 17: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6

Page 18: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6

List<Shape> shapes = ...;

Page 19: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6

// Sort shapes by colorComparator<Shape> c = new Comparator<Shape>() { public int compare(Shape s, Shape t) { return s.getColor().compareTo(t.getColor()); }};Collections.sort(shapes, c);

List<Shape> shapes = ...;

Page 20: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7

// Sort shapes by colorComparator<Shape> c = new Comparator<Shape>() { public int compare(Shape s, Shape t) { return s.getColor().compareTo(t.getColor()); }};Collections.sort(shapes, c);

Page 21: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7

// Sort shapes by color, with a lambdaComparator<Shape> c = (Shape s, Shape t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Lambda expressions

// Sort shapes by colorComparator<Shape> c = new Comparator<Shape>() { public int compare(Shape s, Shape t) { return s.getColor().compareTo(t.getColor()); }};Collections.sort(shapes, c);

Page 22: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8

Lambda expressions

// Sort shapes by color, with a lambdaComparator<Shape> c = (Shape s, Shape t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Page 23: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8

// Sort shapes by color, with a lambda using type inferenceComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Lambda expressions

// Sort shapes by color, with a lambdaComparator<Shape> c = (Shape s, Shape t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Page 24: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Lambda expressions

9

// Sort shapes by color, with a lambda using type inferenceComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Page 25: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Lambda expressions

9

// Sort shapes by color, in one statementCollections.sort(shapes, (s, t) -> s.getColor().compareTo(t.getColor()));

// Sort shapes by color, with a lambda using type inferenceComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());Collections.sort(shapes, c);

Page 26: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10

Functional interfaces

Page 27: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10

Functional interfaces

// Compare shapes by colorComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());

Page 28: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10

Functional interfaces

// Compare shapes by colorComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());

// Test whether a shape is redPredicate<Shape> p = s -> s.getColor() == RED;

Page 29: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10

Functional interfaces

// Compare shapes by colorComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());

// Test whether a shape is redPredicate<Shape> p = s -> s.getColor() == RED;

// Extract the area of a shapeFunction<Shape,Double> f = s -> s.getArea();

Page 30: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10

Functional interfaces

// Compare shapes by colorComparator<Shape> c = (s, t) -> s.getColor().compareTo(t.getColor());

// Test whether a shape is redPredicate<Shape> p = s -> s.getColor() == RED;

// Extract the area of a shapeFunction<Shape,Double> f = s -> s.getArea();

// Create a bigger shape from a given shapeUnaryOperator<Shape> o = s -> new Shape(s, s.getArea() * 2);

Page 31: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11

Iteration

Page 32: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11

Iteration

// Paint red shapes blueList<Shape> shapes = ...;for (Shape s : shapes) { if (s.getColor() == RED) s.setColor(BLUE);}

Page 33: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11

Iteration

// Paint red shapes blueList<Shape> shapes = ...;for (Shape s : shapes) { if (s.getColor() == RED) s.setColor(BLUE);}

, using external iteration

Page 34: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11

Iteration

// Paint red shapes blueList<Shape> shapes = ...;for (Shape s : shapes) { if (s.getColor() == RED) s.setColor(BLUE);}

// Paint red shapes blue, using internal iterationshapes.forEach(s -> { if (s.getColor() == RED) s.setColor(BLUE); });

, using external iteration

Page 35: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

12

Page 36: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

12

interface Iterable<T> {

Iterator<T> iterator();

default void forEach(Consumer<? super T> consumer) { for (T t : this) consumer.accept(t); }

}

Page 37: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

13

Page 38: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

13

interface Collection<E> { default boolean removeAll(Predicate<? super E> filter) { boolean removed = false; Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; }}

Page 39: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

14

Page 40: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Default methods

14

interface List<E> { ... default void replaceAll(UnaryOperator<E> op) { final ListIterator<E> li = this.listIterator(); while (li.hasNext()) li.set(op.apply(li.next())); }}

Page 41: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15

// Paint red shapes blue, using internal iterationshapes.forEach(s -> { if (s.getColor() == RED) s.setColor(BLUE); });

Page 42: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15

// Paint red shapes blue, using internal iterationshapes.forEach(s -> { if (s.getColor() == RED) s.setColor(BLUE); });

Streams

// Paint red shapes blue, using bulk operations on a streamshapes.stream() .filter(s -> s.getColor() == RED) .forEach(s -> { s.setColor(BLUE); });

Page 43: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16

Streams

// Paint red shapes blue, using bulk operations on a streamshapes.stream() .filter(s -> s.getColor() == RED) .forEach(s -> { s.setColor(BLUE); });

Page 44: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16

Streams

// Paint red shapes blue, using bulk operations on a streamshapes.stream() .filter(s -> s.getColor() == RED) .forEach(s -> { s.setColor(BLUE); });

// Find the first blue shapeShape firstBlue = shapes.stream() .filter(s -> s.getColor() == BLUE) .findFirst().get();

Page 45: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17

Streams

Page 46: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(s -> s.getArea()) .reduce(0.0, (a, b) -> a + b);

Page 47: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(s -> s.getArea()) .reduce(0.0, (a, b) -> a + b);

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(s -> s.getArea()) .sum();

Page 48: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(s -> s.getArea()) .sum();

Page 49: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(s -> s.getArea()) .sum();

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(Shape::getArea) .sum();

Page 50: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(Shape::getArea) .sum();

Page 51: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19

Streams

// Compute the sum of the areas of blue shapesdouble sumOfAreas = shapes.stream() .filter(s -> s.getColor() == BLUE) .map(Shape::getArea) .sum();

// Compute the sum of the areas of blue shapes, in paralleldouble sumOfAreas = shapes.parallelStream() .filter(s -> s.getColor() == BLUE) .map(Shape::getArea) .sum();

Page 52: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20

openjdk.java.net/projects/lambdajdk8.java.net/lambda

Project Lambda

Page 53: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20

openjdk.java.net/projects/lambdajdk8.java.net/lambda

Project Lambda

Page 54: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20

openjdk.java.net/projects/lambdajdk8.java.net/lambda

Project Lambda

Page 55: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21

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 LockingGeneralized Target-Type Inference

DocTree API

Parallel Array Sorting

Bulk Data Operations Unicode 6.2Base64 HTTP ClientNSA Suite B

Prepare for Modularization

Unicode CLDR

TLS Server Name IndicationConfigurable Secure-Random Number Generation

Java 8Nashorn

Page 56: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22

Project Jigsawopenjdk.java.net/projects/jigsaw

Page 57: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22

Project Jigsawopenjdk.java.net/projects/jigsaw

http://www.flickr.com/photos/lizadaly/2944362379

Page 58: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23

Modular platform: Before

Page 59: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23

50 nodes171 edges

Modular platform: Before

Page 60: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Modular platform:

24

Before 50 nodes171 edges

Page 61: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Modular platform:

24

After 32 nodes105 edges

Page 62: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

Page 63: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

52MB

Page 64: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

1052MB

Page 65: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

1052MB 17

Page 66: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

1052MB 1724

Page 67: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

base

tls loggingauthjdbc

jtarmi

jaxpnaming

rowset

kerberos management

compiler

xmldsig

prefssctp

instrument

scripting

crypto

compat

management.iiop

cosnaming

corba

desktop

tools.jre

jaxws

jx.annotations

httpserver

tools

tools.jaxws tools.base

devtools

Page 68: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Compact Profiles

26

Page 69: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Compact Profiles

26

compact1java.iojava.langjava.mathjava.netjava.niojava.securityjava.textjava.utiljavax.cryptojavax.netjavax.security

10MB

Page 70: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Compact Profiles

26

compact1java.iojava.langjava.mathjava.netjava.niojava.securityjava.textjava.utiljavax.cryptojavax.netjavax.security

compact2java.rmijava.sqljavax.rmijavax.sqljavax.transactionjavax.xmlorg.w3c.domorg.xml.sax

10MB 17

Page 71: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Compact Profiles

26

compact1java.iojava.langjava.mathjava.netjava.niojava.securityjava.textjava.utiljavax.cryptojavax.netjavax.security

compact2java.rmijava.sqljavax.rmijavax.sqljavax.transactionjavax.xmlorg.w3c.domorg.xml.sax

compact3java.lang.instrumentjava.lang.managementjava.util.prefsjavax.annotation.processingjavax.lang.modeljavax.managementjavax.namingjavax.scriptjavax.security.acljavax.security.auth.kerberosjavax.security.sasljavax.sql.rowsetjavax.toolsjavax.xml.cryptoorg.ietf.jgss

10MB 17 24

Page 72: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Compact Profiles

26

compact1java.iojava.langjava.mathjava.netjava.niojava.securityjava.textjava.utiljavax.cryptojavax.netjavax.security

compact2java.rmijava.sqljavax.rmijavax.sqljavax.transactionjavax.xmlorg.w3c.domorg.xml.sax

compact3java.lang.instrumentjava.lang.managementjava.util.prefsjavax.annotation.processingjavax.lang.modeljavax.managementjavax.namingjavax.scriptjavax.security.acljavax.security.auth.kerberosjavax.security.sasljavax.sql.rowsetjavax.toolsjavax.xml.cryptoorg.ietf.jgss

Full JREjava.appletjava.awtjava.beansjavax.accessibilityjavax.activationjavax.activityjavax.annotationjavax.imageiojavax.jwsjavax.printjavax.rmijavax.rmi.CORBAjavax.soundjavax.swingjavax.xml.bindjavax.xml.soapjavax.xml.wsorg.omg

10MB 17 24 52

Page 73: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27

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 LockingGeneralized Target-Type Inference

DocTree API

Parallel Array Sorting

Bulk Data Operations Unicode 6.2Base64 HTTP ClientNSA Suite B

Prepare for Modularization

Unicode CLDR

TLS Server Name IndicationConfigurable Secure-Random Number Generation

Java 8Nashorn

Page 74: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28

Java 8

Page 75: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28

Java 8

Page 76: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28

openjdk.java.net/projects/jdk8openjdk.java.net/projects/jdk8/specjdk8.java.net

Java 8

Page 77: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29

Page 78: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29

Page 79: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29

Page 80: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30

Page 81: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30

Java 9 … and beyond!

Page 82: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30

Jigsaw

ReificationEase of use

OpenJFX Self Tuning JVM

Unified Type System

Java 9 … and beyond!

Page 83: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30

Jigsaw

ReificationEase of use

Optimizations

Generic Lang Interoperability

Penrose

OpenJFXProject Sumatra – Java for GPUs

More and More Ports

Multi-Tenancy

Self Tuning JVMImproved Native Integration

Resource Management

Unified Type System

Data Structure Optimizations

Java 9 … and beyond!

Page 84: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31

JDK Enhancement Proposals (JEPs)openjdk.java.net/jeps

Page 85: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31

JDK Enhancement Proposals (JEPs)openjdk.java.net/jeps

Page 86: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32

JDK Enhancement Proposals (JEPs)138 Autoconf-Based Build System139 Enhance javac to Improve Build Speed140 Limited doPrivileged141 Increase the Client VM's Default Heap Size142 Reduce Cache Contention on Specified Fields143 Improve Contended Locking144 Reduce GC Latency for Large Heaps145 Cache Compiled Code146 Improve Fatal Error Logs147 Reduce Class Metadata Footprint148 Small VM149 Reduce Core-Library Memory Usage150 Date & Time API151 Compress Time-Zone Data152 Crypto Operations with Network HSMs153 Launch JavaFX Applications154 Remove Serialization155 Concurrency Updates156 G1 GC: Reduce need for full GCs

157 G1 GC: NUMA-Aware Allocation158 Unified JVM Logging159 Enhanced Class Redefinition160 Lambda-Form Representation for Method Handles161 Compact Profiles162 Prepare for Modularization163 Enable NUMA Mode by Default When Appropriate164 Leverage CPU Instructions for AES Cryptography 165 Compiler Control166 Overhaul JKS-JCEKS-PKCS12 Keystores167 Event-Based JVM Tracing168 Network Discovery of Manageable Java Processes169 Value Objects170 JDBC 4.2171 Fence Intrinsics172 DocLint173 Retire Some Rarely-Used GC Combinations174 Nashorn JavaScript Engine175 Integrate PowerPC/AIX Port into JDK 8

Page 87: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33

Page 88: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33

The preceding 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 Oracle.

Page 89: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34

Page 90: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34

openjdk.java.net/projects/jdk8jdk8.java.net

Page 91: Java 8, Java 9, and Beyond! - Mark ReinholdJava 8. Jigsaw. Project Sumatra – Java for GPUs. 168 Network Discovery of Manageable Java Processes ...

Insert Presenterʼs Name HereInsert Presenterʼs Title Here

Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 13

Java 8, Java 9, and Beyond!

Mark Reinhold (@mreinhold)Chief Architect, Java Platform Group, Oracle

Jfokus 2013