<div dir="ltr"><div class="gmail_default" style="font-size:large">One thing we need to measure, as we move towards full Java 9 support, is what the impact is on MetaSpace.  In theory, having the JDK modularized could improve our MetaSpace usage, but I&#39;m not sure.  Certainly, we don&#39;t want it to get worse.</div><div class="gmail_default" style="font-size:large"><br></div><div class="gmail_default" style="font-size:large">Andy</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 1, 2017 at 8:23 AM, David Lloyd <span dir="ltr">&lt;<a href="mailto:david.lloyd@redhat.com" target="_blank">david.lloyd@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi everyone, I want to outline a brief plan for the next couple steps<br>
towards a better alignment between JBoss Modules and Java 9.<br>
<br>
In Java 9, the platform classes are divided up into modules; the core set being:<br>
<br>
java.base        java.compiler      java.datatransfer<br>
java.desktop     java.instrument    java.jnlp<br>
java.logging     java.management    java.management.rmi<br>
java.naming      java.prefs         java.rmi<br>
java.scripting   java.security.jgss java.security.sasl<br>
java.smartcardio java.sql           java.sql.rowset<br>
java.xml         java.xml.crypto<br>
<br>
In addition, the <a href="http://java.se" rel="noreferrer" target="_blank">java.se</a> module re-exports many of these.<br>
<br>
As a first step towards alignment, it seems to me that we need to<br>
introduce the ability for modules to create module dependencies on<br>
these module names.  However, unless we want to require Java 9 from<br>
now on, the names must also work on Java 8.<br>
<br>
So, I plan to follow this approximate plan:<br>
<br>
• Introduce a new PlatformModuleLoader in to JBoss Modules JDK-specific code<br>
    ◦ On Java 9+, this loader will create modules from the<br>
corresponding JPMS platform module set<br>
    ◦ On Java 8, this loader will create &quot;system&quot; modules from the<br>
path sets which comprise the contents of these modules, possibly<br>
including some &quot;jdk.*&quot; modules which are equivalent between Java 8 and<br>
Java 9<br>
• Update the LocalModuleLoader to pre-delegate module searches to<br>
PlatformModuleLoader<br>
• Remove &quot;java&quot; from the &quot;system packages list&quot;<br>
• Bring these changes in to WildFly Core<br>
• Deprecate the &quot;javax.api&quot;, &quot;sun.jdk&quot;, etc. modules, and also APIs<br>
which use a different-than-standard name like &quot;javax.sql.api&quot;, replace<br>
their system dependency content with regular re-export dependencies on<br>
platform modules<br>
• Deprecate and replace other modules whose names are standardized but<br>
different than ours, such as &quot;java.corba&quot;, &quot;java.transaction&quot;,<br>
&quot;java.xml.bind&quot;, etc., with delegations to modules with the standard<br>
name<br>
• Remove the &quot;system&quot; dependency type from the &quot;urn:jboss:module:1.7&quot; schema<br>
<br>
One of the remaining unknowns is that there is only one Java 9<br>
platform family in the wild right now, and it&#39;s OpenJDK-based.  Other<br>
vendors might introduce a different set of &quot;jdk.*&quot; modules, for<br>
example, which might mean that the Java 8 emulation code for that<br>
platform family may have to be updated.  I consider this risk to be<br>
mitigable.<br>
<br>
It may also be necessary to have a compatibility mode or flag to<br>
automatically add &quot;<a href="http://java.se" rel="noreferrer" target="_blank">java.se</a>&quot; as a module dependency, or perhaps to<br>
re-add the &quot;java&quot; package prefix to the system package set, depending<br>
on how compatibility shapes up in the end.<br>
<br>
I hope to achieve this work in JBoss Modules 1.7; this would probably<br>
be the last significant change before I start moving towards .Final.<br>
So, if you have any feedback on this idea, please let me know here<br>
ASAP.  Thanks!<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
- DML<br>
<br>
______________________________<wbr>_________________<br>
wildfly-dev mailing list<br>
<a href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/wildfly-dev</a></font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div><font size="4">Andrig (Andy) T. Miller<br></font></div><font size="4">Global Platform Director, Middleware<br></font></div><font size="4">Red Hat, Inc.</font><br></div></div></div></div>
</div>