2009/01/02

Devoxx Keynote: Java SE 7 Update by Mark Reinhold

In the online schedule this item is titled differently: 'The Modular Java Platform'. Anyway, Mark talks about both the Modular stuff and Java SE 7 features.

Concerning Modularity in Java 7:
  • Java 6 Update 10 couldn't add any features, but managed to speed up download and startup times thanks to, amongst others, the Java Kernel and pack200 compression. Still startup time can't compare to other more targeted environments like python for example.
  • (*) JSR 277 is on hold (frozen?). I suppose there was too much resistance from the OSGI camp as being competing technologies. I do think that explicit language-support for modules is needed in Java, but this is JSR-294's sweet spot.
  • (*) JSR 294 will contain all language modularization efforts for Java 7
  • (*) The scope of the 'Jigsaw project', which seems to run outside the JPC, wants to differentiate from OSGI by having different more low-level objectives in applying modularization to the JRE:
    • allow the java kernel itself to be modular: e.g. distribute targeted Java 'Profiles': Java FX, applets, full SE...
    • modularizing the kernel might be a solution to all the deprecated APIs in Java that still have to be provided for backwards compatibility. A possibility could be to provide a basic Java profile without the 'old' classes, and allow a simple module to extend the Java Runtime in order to add the deprecated stuff when needed.
    • integrate with OS package systems: cfr. JPackage project creates rpm's from jars. --> how to package / deploy reusable modules / JVMs?
    • what about version collisions?
    • integrate with the VM, language and native packaging
    • allow multi-module packages
    • support "friend" packages (for tighter integration)

Java SE 7 update:

  • JSR 292: better JVM support of dynamic language (JRuby, Jython ...)
  • JSR 203: New NIO: FileSystem, access to symbolic links ...
  • small language changes, too be discussed / decided --> Joe Darcy
    • safe rethrow
    • null dereference: shorthand to do chained tests on null in one line:
      a?.b()?.c()?.d()
    • type inference
    • multicatch
  • others:
    • JSR 296: Swing application framework
    • upgrade Java 6 Update 10 to Java 7
    • update supported protocols
    • enhance classloaders
    • Unicode 5.0 support
    • improve HotSpot performance
    • new G1 garbage collector
    • compressed 64 bit pointers (use less memory)
    • support "Multiple VM's" (MVM) --> run light, isolated apps like Java FX applets
    • JSR 308: standard annotations eg. @NonNull used for static analysis
    • concurrency update: collections, fork/join ...

What will not be included in Java 7:

  • Closures: prototypes exist, but too early to dump in java
  • properties
  • beans binding: need more time to see if this dependency injection framework fits well in core java
  • operator overloading

references:

Parleys.com now published Mark's talk:


(*) modified thanks to comments / further reading...

3 comments:

Neil Bartlett said...

JSR 277 was not concerned with explicit language support for modules. That is JSR 294, which the OSGi "camp" does not oppose in its current form.

JSR 277 was opposed because it aimed to create a competing (but inferior) module system to OSGi for no good reason. Project Jigsaw appears to have the same goal, but because it is not a JSR it will not be subject to a vote in the JCP.

Michaël said...

@Neil: thx for the corrections: I modified my post accordingly.

stephan said...

The Devoxx keynote from Mark Reinhold is now available on Parleys.com!