Java SE 6 Update N
Raghavan “Rags” N. Srinivas CTO, Technology Evangelism Sun Microsystems Inc.
1
Agenda • • • •
State of Java Java SE 6 update N Java on the client (a reboot) Future
2
How Much Java Technology Is Out There? • >91% of all PCs run Java platform* • ~77% of all Java technology-enabled PCs run Sun’s Java Platform, Standard Edition (Java SE platform)** • Distribution through PC OEMs > Nine of the top ten PC OEMs ship the Sun JRE software > Representing >60% of all shipped PCs > 58 white box vendors have signed JRE software redistribution agreements
• Download/installs > ~44m installations / month for the last six months on Windows > >50M in Jan, Feb, April, 2007 * Omniture, April 2007 **Mapsolute/Map24.com, April 2007
3
Completed Java SE Platform Downloads
Windows numbers only 55,000,000 50,000,000 45,000,000 40,000,000 35,000,000 30,000,000 25,000,000 20,000,000 15,000,000 10,000,000 5,000,000 0 1/2003
1/2004
1/2005
1/2006
1/2007
4
Agenda • • • •
State of Java Java SE 6 update N Java on the client (a reboot) Future
5
Update N and Java FX Java Comes Home to the Consumer
6
Consumer JRE
7
Consumer JRE Project Hamburg
8
Consumer JRE Project Hamburg Java SE 6, Update X
9
Consumer JRE Project Hamburg Java SE 6, Update X Java SE 6, Update N
10
Consumer JRE Project Hamburg Java SE 6, Update X Java SE 6, Update N Java SE 6, Update 10 11
Problems to fix • • • •
Startup Time Install Time JRE Detection Applet support
12
Quickstarter • “Coldstart” vs. “Warmstart” • Root problem: > Large files + Disk access speed
• Solution: QuickStarter > Pre-warm the disk cache
• Note: QuickStarter != running VM > Smaller footprint, more targeted disk pages
13
Problems to fix • • • •
Startup Time Install Time JRE Detection Applet support
14
Install Time • Java's not small > J2SE 5.0: 7.1 MB > Java SE 6: 10+ MB > rt.jar: 40+ MB on disk
• Lots of bits being moved around > Download, Unzip, Unpack200, Copying
• Solution: Java Kernel > Download only core dependencies first > Launch application > Download and install in the background 15
Look Mom! We Shrunk the JRE
16
Problems to fix • • • •
Startup Time Install Time JRE Detection Applet support
17
Deployment Toolkit • Detecting Java from a web page is hard > Does the user have Java? > What version? > How to get user to install and return?
• Result: Most applets use old (1.1) APIs > Allows them to run compatibly on old versions > e.g., MS VM
• Solution: Deployment Toolkit > JavaScript hosted at Sun for general detection > Plugins (ActiveX and Mozilla) for more specific detection > Detect, start installation if necessary, launch
18
Detecting JREs <script src="http://java.com/js/deployJava.js">
Detected JREs: <script> jres = deployJava.getJREs(); document.writeln(jres.length ? jres : "None");
19
Problems to fix • • • •
Startup Time Install Time JRE Detection Applet support
20
Agenda • • • •
State of Java Java SE 6 update N Java on the client (a reboot) Future
21
Applets are Back
22
Architectural Overview
Java Applet 1
Java Applet 2
HTML-Webpage
Java Applet 3
23
Architectural Overview
Fat Client JVM 1 OS Process 2 Thin Server JVM
OS Process 1 Fat Client JVM 2 OS Process 3 24
Advantages
• Improved reliability • Improved user experience > Applets launch in the background
• Built-in JNLP support • Per-applet command line arguments > Heap size, Java 2D acceleration options, ...
• Improved Java/JavaScript integration • Improved Windows Vista support > Signed applets now work correctly in Protected Mode
Internet Explorer
25
Applets Reloaded • Ground-up rewrite of the Java Plug-In > Mostly in Java
• Advanced new architecture > Out-of-process execution
• Major benefits > > > > >
Improved reliability Support for larger Java heap sizes for applets Better support for signed applets on Windows Vista Support for per-applet JVM command-line arguments Support for multiple simultaneous JRE versions 26
Compatibility • Better than 97% backward compatibility > Based on runs of hundreds of applets from throughout
the web > Continuing to improve
• Applet lifecycle unchanged > init(), start(), stop(), destroy()
• All services supported: Browser proxy settings Browser certificate store Browser authenticator Browser cookie store showDocument() support Modality handling Java/JavaScript integrationPrinting
27
JNLP Support • Most significant new feature • Unifies deployment between Java Web Start and the Java Plug-In > Simply choose the top-level container (Frame / Applet)
• Incorporate JNLP extensions trivially in applets > JavaFX run-time libraries, JOGL, Java 3D, JAI
• Use JNLP APIs from applets > PersistenceService, DownloadService, ...
• Full support for JVM command-line arguments, JRE version selection, JRE auto-download 28
JNLP Support
<jnlp>
<j2se version=”1.4+” max-heap-size=”128m” /> <property name="sun.java2d.noddraw" value="true"/> <jar href=“my_applet.jar” main=“true”/> <extension name= “jogl” href=“...”> 29
Java / JavaScript Support • Completely rewritten Java / JavaScript integration • More complete, reliable and portable than before • Formerly Mozilla-specific functionality now working in Internet Explorer > Static method access > Construction of new Java objects from JavaScript
• Opportunity to respecify and reintroduce “LiveConnect” • Opportunity to change the nature of AJAX 30
JavaFX Content in Applets • JavaFX Script compiles down to Java classes • Trivially hosted in applets • Pull in JavaFX run-time libraries and dependent libraries (scene graph, video, 3D) via JNLP extensions > Identical to deployment in an application
• Higher-level abstractions accelerate GUI application development
31
Experimental Functionality • New Java Plug-In technology supports dragging applets out of the web browser as a deployment paradigm > Applets are mini applications that run anywhere > In and out of the browser • Highly experimental > Not guaranteed to be supported in this release or future releases > Functionality will very likely change > Please provide feedback on Java Plug-In forum on java.net
32
Experimental Functionality • Enable with new applet parameter <param name=”draggable” value=”true”> • By default, Alt + Left-click + Drag anywhere in the applet's region is the drag gesture • Can be customized by providing a method on your applet public boolean isAppletDragStarted(MouseEvent e);
33
Experimental Functionality • Applet is placed into a new top-level Frame > Frame is used for Applet subclasses > JFrame is used for JApplet subclasses • By default, the new frame is undecorated and opaque • Can change this, and perform other custom operations, at the time the drag is initiated by providing a method on your applet public void appletDragStarted();
• At the time this method is called, your applet is in the new top-level Frame, that Frame is undecorated, and it is not yet visible 34
Experimental Functionality • A separate “close button” separate from the Frame tracks the movement of the Frame around the screen if undecorated • Can customize this by providing a method on your applet public void setAppletCloseListener(ActionListener a);
• If you implement this method, you should draw some sort of close button in your applet's region • Call the ActionListener when the close button is clicked to initiate shutdown of your applet
35
Experimental Functionality • While the web page where the applet came from is still visible, the applet can still talk back to the browser > Java/JavaScript calls still allowed > Can still interact with the surrounding web page • Once the page is closed, reloaded, or navigated away from, the applet is disconnected from the browser • Services provided to the applet degrade gracefully > Java/JavaScript calls disallowed > AppletContext.showDocument() is implemented by opening a new browser window; target is ignored > ... • When applet is closed, normal applet teardown occurs > stop() and destroy() are called
36
New Plugin Architecture • Please test it and let us know! > https://jdk6.dev.java.net/6uNea.html
• Windows: > Java Control Panel, “Advanced” tab > “Java Plug-In” node > Select the checkbox: > “Enable the next-generation Java Plug-in”
• Linux/Solaris > Symlink to lib/{i386,sparc}/libnpjp2.so from firefox/plugins or
~/.mozilla/plugins directory > Remove any old symlinks to libjavaplugin_oji.so
37
But Wait, There’s More!
38
Graphics Goodies • Better Windows graphics performance > GPU-accelerated, using Direct3D > On by default
• Nimbus: > Cross-platform look & feel > More modern than current Metal look & feel > Opt-in: Not the default look & feel > Preserves backwards compatibility > Design tool for creating new skins
39
Nimbus
40
Update whe[N]? • Early Access (beta) available now > https://jdk6.dev.java.net/6uNea.html
• GA planned for early second half of 2008
41
Agenda • • • •
State of Java Java 6 update N Java on the client (reboot) Future
42
JavaFX
43
JavaFX Features • • • • •
Java FX Script Scene graph Media HTML Multiple Device
44
J a va F X S crip t
45
JavaFX Script • Language > > > >
Simple data binding Fast prototyping Declarative GUIs and graphics Easily programmed animations
• Compiler > Interpreter (now): okay for demos > Compiler (soon): necessary for real applications
46
S c e n e G ra p h
47
Scene Graph • “Retained mode” graphics > Versus immediate-mode 2D API
• More declarative model for: > > > >
Graphics GUI Media Animation
• Used by FX Script > Also usable from Java
48
Scene Graph • Available! • Open source project now available > http://scenegraph.dev.java.net
• Early early (early) access form > Functional > APIs not final
49
Media Media Media Media Media 50
Client: old todo List
51
Client: Recent todo List
52
Media • Media player component > Video > Audio > Simple player component creation
• Modern CODECs > native > cross-platform
53
54
HTML • Swing HTML support intentionally basic • Need new component for “street HTML” rendering • Will allow integrated Swing, graphics, and HTML applications
55
56
JavaFX Mobile • Java FX Script isn't just for desktop > Java FX Mobile platform
• Development skills that carry between platforms > Not mobile developers > Developers with skills that are mobile
• Easier authoring of applications for multiple devices
57
Resources • Update N (beta) > https://jdk6.dev.java.net/6uNea.html
• Java FX > https://openjfx.dev.java.net/
58
Update N and Java FX Java Comes Home to the Consumer
59
Java SE 6 Update N
Raghavan “Rags” N. Srinivas [email protected] Sun Microsystems Inc.
60