Top Banner
41

The following is intended to outline our general product may not

Sep 12, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The following is intended to outline our general product may not
Page 2: The following is intended to outline our general product may not

©2011 Oracle Corporation

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.

Page 3: The following is intended to outline our general product may not

<Insert Picture Here>

The Java SE 7 & 8 : now and the future

Francisco Morero PeyronaJava ArchitectDuke Award Winner Based in a previous work of Simon Ritter

[email protected]@javahispano.org

Page 4: The following is intended to outline our general product may not

The state of Java

<Insert Picture Here>

Page 5: The following is intended to outline our general product may not

©2011 Oracle Corporation

Java Communities

Page 6: The following is intended to outline our general product may not

©2011 Oracle Corporation

Middleware and Java in Oracle’s Strategy

•Comprehensive foundation for building and running custom and packaged applications• Extremely well integrated• Industry-leading reliability and performance

•Unified development and management•Basis for Oracle Fusion Applications

•Built with and for Java technology

Page 7: The following is intended to outline our general product may not

©2011 Oracle Corporation

Page 8: The following is intended to outline our general product may not

©2011 Oracle Corporation

100% of Blu-ray Disc Players

5 Billion SIM Cards

3 Billion Mobile Handsets

Java Client Deployment

75m desktops updated/month

Page 9: The following is intended to outline our general product may not

©2011 Oracle Corporation

7July 2011

Java SE 7 Highlights

• Careful additions to the Java language• New filesystem API• New Fork/Join framework for concurrent

programming• New bytecode to speed dynamic

languages on the JVM

Page 10: The following is intended to outline our general product may not

int monthNameToDays(String s, int year) { switch(s) { case "April": case "June": case "September": case "November": return 30;

case "January": case "March": case "May": case "July": case "August": case "December": return 31;

case "February”: ... default: ...

Strings in Switch Statements

Did you know it produces generally more efficient byte codes than an if-then-else statement? Case Sensitive!

Page 11: The following is intended to outline our general product may not

try (InputStream in = new FileInputStream(src), OutputStream out = new FileOutputStream(dest)){ byte[] buf = new byte[8192]; int n; while (n = in.read(buf)) >= 0) out.write(buf, 0, n);}

Automatic Resource Management

• New superinterface java.lang.AutoCloseable• All AutoCloseable (throws Exception) and by extension java.io.Closeable

(throws IOException) types useable with try-with-resources• Anything with a void close() method is a candidate• JDBC 4.1 retrofitted as AutoCloseable too

Page 12: The following is intended to outline our general product may not

try {...

} catch( ClassCastException e ) { doSomethingClever(e); throw e;} catch( InstantiationException | NoSuchMethodException |

InvocationTargetException e ) { // Useful if you do generic actions

log( e ); throw e;

}

Multi-Catch

Page 13: The following is intended to outline our general product may not

List<String> strList = new ArrayList<>();

OR

List<Map<String, List<String>> strList = new ArrayList<>();

OR

Foo<Bar> foo = new Foo<>();foo.mergeFoo( new Foo<>() );

Diamond Operator → compiler infers type

Page 14: The following is intended to outline our general product may not

Watching A Directory

•Create a WatchService “watcher” for the filesystem•Register a directory with the watcher•“Watcher” can be polled or waited on for events

• Events raised in the form of Keys• Retrieve the Key from the Watcher• Key has filename and events within it for create/delete/modify

•Ability to detect event overflows

Page 15: The following is intended to outline our general product may not

● FileSystems class is factory to great FileSystem (interface)

● Java 7 allows for developing custom FileSystems, for example:● Memory based or zip file based systems● Fault tolerant distributed file systems

● Replacing or supplementing the default file system provider

● Two steps:● Implement java.nio.file.spi.FileSystemProvider

●URI, Caching, File Handling, etc.● Implement java.nio.file.FileSystem

●Roots, RW access, file store, etc.

Custom FileSystems

Page 16: The following is intended to outline our general product may not

Fork Join Framework - JSR 166y - Pools

• ForkJoinPool–Service for running ForkJoinTasks–aFjp.execute(aTask); // async–aFjp.invoke(aTask); // wait–aFjp.submit(aTask); // async + future

–ForkJoinPool(); // default to platform–ForkJoinPool(int n); // # concurrent threads–ForJoinPool(n,aThreadFactory,exHandler,FIFOtasks); // Create your own thread handler, exception // handler, and boolean on task ordering (default LIFO)

Page 17: The following is intended to outline our general product may not

Fork Join Framework - JSR 166y - Tasks

• ForkJoinTask–The abstract base class for:• RecursiveAction

– A recursive resultless task– Implements compute() abstract method to perform calculation

• RecursiveTask– Similar to RecursiveAction but returns a result

ForkJoinPool p = new ForkJoinPool(); MyTask mt = new MyTask(n); // implements compute p.submit(mt);while (!mt.isDone()) {/*THUMPER!*/ }System.out.println(mt.get());

Page 18: The following is intended to outline our general product may not

Fork Join Framework - JSR 166y - compute()

• RecursiveAction example to increment an entire arrayprotected void compute() { if (hi - lo < THRESHOLD) { for (int i = lo; i < hi; ++i) array[i]++; } else { int mid = (lo + hi) >>> 1; invokeAll(new IncrementTask(array, lo, mid), new IncrementTask(array, mid, hi)); }

• RecursiveTask example for Fibonacci numbersprotected Integer compute() { if (n <= 1) return n; Fibonacci f1 = new Fibonacci(n - 1); Fibonacci f2 = new Fibonacci(n - 2); f1.fork(); f1.fork(); return f2.join() + f1.join();}

Page 19: The following is intended to outline our general product may not

<Insert Picture Here>

invokedynamic Illustrated

this[method_name](x, y)

invokedynamic [#bootstrapMethod] .this_method_name

class LangaugeRuntime {bootstrapMethod(info) {...return new CallSite();

}

class AClass {aMethod(x, y) {...

}

CallSite

MethodHandle

1. Invoke bootstrap

2. Produces CallSite

3.Complete linkage

4. Invokes method implementation

Se une a:●invokevirtual●invokestatic●invokeinterface●invokespecial

Page 20: The following is intended to outline our general product may not

JavaFX

<Insert Picture Here>

Page 21: The following is intended to outline our general product may not

©2011 Oracle Corporation

JavaFX 1.0JavaFX Script

Scenegraph

Media

2008 2009 2010 2011

JavaFX 2.0Java APIs

UI Controls

New media stack

New graphics stack

JavaFX 1.1Mobile

JavaFX 1.2UI Controls

JavaFX 1.3Performance

More UI Controls

Page 22: The following is intended to outline our general product may not

©2011 Oracle Corporation

JavaFX 2.0 Motivation

• Java developers didn’t want to learn a new language for RIA development

• Web developers did not adopt JavaFX Script as quickly as we’d hoped

• Interest in using JavaFX features in other languages

Page 23: The following is intended to outline our general product may not

©2011 Oracle Corporation 15

Desktop: JavaFX 2.0 takes a fresh view

•Development now in Java language •New Java APIs for JavaFX functionality•New media stack•New lightweight graphics stack•Swing integration

Page 24: The following is intended to outline our general product may not

JavaFX RoadmapJavaFX 8.0

• Included in JDK 8

• Concurrent OS support(Windows, Mac OS, Linux)

JavaFXScene Builder GA

NetBeans• JavaFX 8.0 Support

JavaFX 2.2• Linux GA

JavaFX 2.1• Mac OS X GA

• Linux Dev. Preview

2011 2012 2013 2014

JavaFXScene Builder EA

JavaFX 2.0

• Windows GA

• Mac OS X Dev. Preview

NetBeans 7.1• JavaFX 2.0 Support

JavaFX 2.0.2• JDK 7 co-install

Page 25: The following is intended to outline our general product may not

©2011 Oracle Corporation

82013

Java SE 8 Projects

• Project Lambda• Lambda expressions• Interface evolution• Concurrent bulk data operations

• Date and time API updates• Annotations on Java types

Page 26: The following is intended to outline our general product may not

©2011 Oracle Corporation

JDK 8 – Proposed Content

← Probably deferred

Page 27: The following is intended to outline our general product may not

Lambda I: Abstract Method (SAM) Types

● Lots of examples in the Java APIs•Runnable, Callable, EventHandler, Comparator

● Noise: work ratio is 5:1● Lambda expressions grow out of the idea of making callback objects easier

foo.doSomething( new CallbackHandler() { public void callback( Context c ) { System.out.println( c.v() ); } });

Page 28: The following is intended to outline our general product may not

Lambda II: Expression Examples

(Context c) -> System.out.println( c.v() );

c -> System.out.println( c.v() ); // Inferred

int x -> x + 1

Page 29: The following is intended to outline our general product may not

Lambda III: Rules

● Rule #1: Only in a context where it can be converted to a SAM type

● Rule #2: A list of statements just like in a method body, except no break or continue at the top level. The return type is inferred from the unification of the returns from the set of return statements

● Rule #3: ‘this’ has the same value as ‘this’ immediately outside the Lambda expression

● Rule #4: Lambdas can use‘effectively final’ variables as well as final variables (compiler inferred)

Page 30: The following is intended to outline our general product may not

Classpath hell - I

classpath

$ java -cp $APPHOME/lib/jdom-1.0.jar:$APPHOME/lib/jaxen-1.0.jar:$APPHOME/lib/saxpath-1.0.jar:$APPHOME/lib/rome.jar-1.0.jar:$APPHOME/lib/rome-fetcher-1.0.jar:$APPHOME/lib/joda-time-1.6.jar:$APPHOME/lib/tagsoup-1.2.jar:org.planetjdk.aggregator.Main

Page 31: The following is intended to outline our general product may not

Classpath hell – II : module-info.java

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;}

jdom-1.0

jaxen-1.0

saxpath-1.0

rome-1.0

joda-time-1.6

tagsoup-1.2

jaxp-1.4.4

org.planetjdk.aggregator

rome-fetcher-1.0

Page 32: The following is intended to outline our general product may not

Java SE Profiles and Modules

● Rules for creating modules of the Java SE platform• Java SE base profile• Java SE base module• Component modules for separable technologies

Page 33: The following is intended to outline our general product may not

©2011 Oracle Corporation

9++Java SE 9, 10, 11, 12 Projects

• Project Jigsaw• Modular applications• Modular JRE

• Careful changes to the Java language• Cloud computing support

✔ Java continues to evolve✔ Addressing needs of new application types✔ Supporting new computing platforms

Page 34: The following is intended to outline our general product may not

The Future of Java

• Java continues to evolve• Addressing needs of new application types• Supporting new computing platforms

Page 35: The following is intended to outline our general product may not

9 (and beyond…)

Page 36: The following is intended to outline our general product may not

Vision: Interoperability

● Improved support for non-Java languages• Invokedynamic (done)• Java/JavaScript interop (in progress – JDK 8)• Meta-object protocol (JDK 9)• Long list of JVM optimizations (JDK 9+)

● Java/Native• Calls between Java and Native without JNI boilerplate (JDK 9)

Page 37: The following is intended to outline our general product may not

Vision: Cloud

● Multi-tenancy (JDK 8+)• Improved sharing between JVMs in same OS• Per-thread/threadgroup resource tracking/management

● Hypervisor aware JVM (JDK 9+)•Co-operative memory page sharing•Co-operative lifecycle, migration

Page 38: The following is intended to outline our general product may not

Vision: Language Features

● Large data support (JDK 9)•Large arrays (64 bit support)

● Unified type system (JDK 10+)•No more primitives, make everything objects

● Other type reification (JDK 10+)•True generics•Function types

● Data structure optimizations (JDK 10+)•Structs, multi-dimensional arrays, etc•Close last(?) performance gap to low-level languages

Page 39: The following is intended to outline our general product may not

Vision: Integration

● Modern device support (JDK 8+)• Multitouch (JDK 8)• Location (JDK 8)• Sensors – compass, accelerometer, temperature, pressure, ... (JDK 8+)

● Heterogenous compute models (JDK 9+)• Java language support for GPU, FPGA, offload engines, remote PL/SQL...

Page 40: The following is intended to outline our general product may not

Java SE 2012 to Java 12

20112011 20152015 20192019 20142014

JDK 7JDK 7

20132013 20212021

JDK 12JDK 12

20172017

JDK 8JDK 8 JDK 9JDK 9 JDK 10JDK 10 JDK 11JDK 11

20122012

JVM convergence

Mac OS X

JVM convergence

Mac OS X

Page 41: The following is intended to outline our general product may not