Initial webrev with changes for JDK 9

Seán Coffey sean.coffey at oracle.com
Tue Mar 8 22:06:57 UTC 2016


I'm hoping we can bulk up some of the new exception handling. I've put 
suggested edits for the jdk repo together in a webrev. No major edits 
here but it should help supportability of the code for the future. Will 
it be possible to import these in before the bulk push ?

http://cr.openjdk.java.net/~coffeys/webrev.jake_edits/webrev/

Regards,
Sean.

On 03/03/2016 14:38, Alan Bateman wrote:
>
> I've pushed webrevs with the initial changes for JDK 9 here:
>     http://cr.openjdk.java.net/~alanb/8142968/0/
>
> This is a snapshot of what is currently in the jigsaw/jake forest. Our 
> mission over the next few weeks is to iterate on this and get it to 
> the point where we + Reviewers are happy that it is a 
> reasonable/acceptable state to bring into JDK 9. We will need to set a 
> deadline so that we can plan the integration, more on this soon. As 
> per our previous milestones (JEP 201 and JEP 220) then we'll ask that 
> the integration from jdk9/dev to master skip a beat so that the module 
> system is the only change in master that week.
>
> It's important to remember that the initial push to JDK 9 is exactly 
> that, it's not the final bits. There are many areas that still need 
> work, there are many open issues, there is an ongoing JSR, and of 
> course there will be ongoing feedback that will help us get it right.
>
> Another important thing to say is this isn't a module system design or 
> API review. Questions/comments on the module system design can be 
> brought up here of course but we might have to punt to 
> jpms-spec-comments on topics that involve JSR discussions. For the API 
> then I expect it will go through many iterations, as every good API does.
>
>
> The following is a summary of what is in each repository, this might 
> help to get a feel for where the implementation is currently at.
>
>
> ** top-level repository **
>
> Most of the build changes have already been pushed to JDK 9 as part of 
> JEP 201 and subsequent iteration. There are some additional 
> jake-specific build changes, most of it is in the top-level repository 
> with some changes in other repositories too.
>
> Of significance is that the temporary modules.xml document in the root 
> directory is gone, this has been replaced by a module declaration in 
> the source code of each module. The other significant thing is that 
> the build creates a packaged module for each standard and JDK module. 
> It also uses the jlink tool to create the JDK and JRE run-time images.
>
> Erik Joelsson will take point for all the build changes, with help 
> from Reviewers from the build group.
>
>
> ** hotspot repository **
>
> At a high-level, the changes in hotspot repository adds support for 
> modules to the virtual machine with access control extended to modules.
>
> Startup has been significantly reworked into a sequence of phases, 
> akin to runlevels, so that the module system is initialized before any 
> code outside of the base module is loaded.
>
> What we used to know as the boot class path is mostly gone except for 
> agent and -Xbootclasspath/a cases. Classes are instead loaded from 
> modules defined to boot loader. There is also support for patching 
> modules for testing and ad hoc needs.
>
> JNI has new functions, as has JVM TI with initial support for 
> debuggers and agents that instrument code in modules. There is 
> additional work on JVM TI in progress so expect to see more in later 
> webrevs.
>
> There are a number of diagnosability improvements, include improved 
> exception messages and support for module details in stack traces.
>
> There are many new tests. There are also updates to many existing 
> tests. Christian Tornqvist is planning to bring at least some of test 
> changes into jdk9/dev so we should see the patch reduce a bit once we 
> sync up.
>
> Lois Foltan will take point on the hotspot repository, she has lined 
> up several Reviewers in the hotspot group to help.
>
>
> ** langtools repository **
>
> As expected, the javac compiler is significantly updated to support 
> compilation containing module declarations. The javadoc tool and 
> doclet code has also involve significant changes.
>
> When compiling then there are several new command-line options, 
> support for module paths, and new compilation modes. JEP 261 has 
> useful descriptions.
>
> The jdeps tool has been upgraded with many new options. The javap tool 
> has also been updated.
>
> This repository also has the initial updates to the javax.tools and 
> javax.lang.model APIs.
>
> There are a lot of updates to existing tests in the webrev and many 
> new tests too.
>
> Jonathan Gibbons will take point for the langtools repository and I 
> expect will use Reviewers from the compiler group to help get through 
> this.
>
>
> ** jdk repository **
>
> There are a lot of changes in this repository.
>
> One of the most obvious is that there is a module-info.java source 
> file in each module's directory.
>
> There is a new java.lang.module API to support module descriptors and 
> to create configurations of modules. There are new APIs in 
> java.lang.reflect to represent modules and layers of modules.
>
> There are is a lot of support code for the module system itself, for 
> example ModuleBootstrap is the class that creates the configuration 
> and creates the boot layer.
>
> The application and extension class loaders have been replaced with a 
> new implementation based on BuiltinClassLoader that supports loading 
> classes/resources from modules (in addition to the class path). Note 
> that there are no changes to class loader hierarchy and no changes to 
> visibility except that some non-core modules are no longer defined to 
> the boot loader.
>
> In java.lang then Class and ClassLoader have several updates and new 
> methods to support modules. The legacy Package API and javadoc has 
> also been overhauled. The System class has been updated to support the 
> initialization of the module system.
>
> Core reflection has been updated so that access control is aligned 
> with the Java Language and VM, except that it assumes readability (a 
> discussion point in the JSR at this time). Proxy has been 
> significantly updated so that the package, module and accessibility of 
> the generated proxy classes are in line with the accessibility of the 
> proxy interfaces.
>
> The MethodHandle API has also been updated but I expect there will be 
> changes soon on this, maybe additional lookup modes and changes when 
> teleporting from one module to another (as things stand then all 
> access is lost).
>
> The ServiceLoader API has been updated to support instantiating 
> service providers that are deployed as modules. It also has new 
> support for iterating over service providers in Layers.
>
> The ResourceBundle API has been significantly updated to support 
> resources deployed as modules. There are also a lot of changes to the 
> locale providers.
>
> This repository has the jlink tool (JEP 282) to assembly a set of 
> modules as a modular run-time image (JEP 220). The jlink tool is 
> invoked in the JDK build to create the JDK and JRE run-time images as 
> I mentioned above.
>
> The jlink tool includes an experimental API for developing plugins 
> that do transformations or optimizations at link-time. There are 
> currently 11 plugins in the webrev, the most significant is the 
> "installed-modules" plugin that generates code at link-time to speed 
> up the reconstitution of module descriptors during startup.
>
> There are significant updates to the jimage container implementation 
> and jrtfs. The most obvious that is there is now only one jimage 
> container (named "modules") in the run-time image.
>
> The java launcher has been updated to support module paths and the 
> other command line options described in JEP 261.
>
> The jar tool has been updated to support modules packaged as modular 
> JAR files. It has also been refurbished with support for GNU style 
> command line options.
>
> JDI and JDWP have been updated to allow debugger enumerate and 
> introspect modules in the target VM. java.lang.instrument has initial 
> updates to support agents that instrument code in modules.
>
> There are smaller changes in many others including updates to the 
> logging API, the JMX implementation, Image I/O, JNDI and several 
> others. Most of these changes are localized and should be 
> straight-forward to understand (esp as the code is organized by module).
>
> There are lot of new tests. Some of the new tests aren't in the right 
> location yet and we'll resolve that soon. There are fewer updates to 
> existing tests that might be expected and this is because we've been 
> able to get the changes to several thousand tests into JDK 9 in advance.
>
> Jim Laskey and Sundararajan Athijegannathan will take point for the 
> jlink, jimage and jrtfs changes.
>
> For everything else then assume that Mandy Chung and I will take point 
> for now. We have approached many jdk9 Reviewers to help get through this.
>
>
> ** nashorn repository **
>
> Nashorn has been updated to work with a modular runtime, including 
> spinning dynamic modules. This is the first of the dynamic languages 
> to get working and we'll need to learn from this to see what might 
> potentially need to exposed further in the API.
>
> Sundar will take point on this, with Reviewers from the nashorn project.
>
>
> ** jaxp repository **
>
> JAXP has a small update to support the XSLTC generating of translets 
> in modules at runtime. We need to re-visit this at some point to 
> generate the translets in their own layer.
>
>
> ** jaxws repository **
>
> Most of the changes to JAXB and JAX-WS to work with modules are 
> already in JDK 9 and pushed to the upstream Metro project. There are 
> API changes so there will be updates to JSR 222 and JSR 224.
>
> The residual changes in the jaxws repository are mostly handling of 
> resources in modules.
>
>
> ** corba repository **
>
> No changes here except the module declaration.
>
>
> I think that is mostly it for now. I will published new webrevs 
> periodically to take account of the ongoing changes.
>
> On wider communication, then we'll send mail to jdk9-dev soon to make 
> everyone working on the JDK 9 project aware that we are starting to 
> plan the integration into JDK 9.
>
> -Alan.



More information about the jigsaw-dev mailing list