A question ad JDK 9 or: how to make all javax.script engines available to all Java apps in JDK 9?
Alan Bateman
Alan.Bateman at oracle.com
Fri Jan 16 15:39:02 UTC 2015
On 12/01/2015 16:09, Rony G. Flatscher wrote:
> :
>
> Now, having learned that JDK 9 will remove the "extension" mechanism, I am very interested in
> learning what alternatives are discussed, planned for Java 9 to enable this particular important
> use-case: making javax.script engines (packaged as jars) available to any Java app!
>
>
Yes, the extension mechanism and specifically the discovery of installed
optional packages has been removed in JDK 9. In general then we haven't
seen a lot of usage of this mechanism in a long time (it's problematic
when upgrading or switching JDKs for example).
For standalone applications then you can put the service provider JARs
(in this this case a scripting engine) on the class path and it should
just work the same as if you had copied it into the extensions
directory. The only difference might be if you are running with a
security manager then you might have to configure the security policy
whereas in JDK 8 and older then you might have replied on it getting
AllPermission (this is something that is also changed in JDK 9, code
loaded by the extension class loader does not get AllPermission by
default now).
The applet scenario that you bring up is interesting in that it assumes
that the users of the applet have copied the scripting engine into their
ext directory. That is, I think that is what you mean rather than JAR
packaged applets triggering the download of optional packages. I wonder
if you've tried creating the applet with JNLP and putting a reference to
the scripting engine in the resources section?
In any case, once JDK 9 is further along then we expect to have support
for runtime images that are built by linking a set of module so that
might be an alternative approach to having a runtime image with the
scripting engines available.
-Alan
More information about the jigsaw-dev
mailing list