[
https://issues.apache.org/jira/browse/DERBY-6854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15295131#comment-15295131
]
Knut Anders Hatlen commented on DERBY-6854:
-------------------------------------------
Hi Bryan,
I don't think this will have any effect on how JDBC drivers are loaded. The
platform class loader is an ancestor of the system class loader (aka
application class loader), so the JDBC classes will still be visible to the
application, even though they are no longer in the bootstrap class loader.
The platform class loader is a new concept in JDK 9, related to the
modularization of the Java platform libraries, so I'm not sure if there are any
good introductions yet. But at least the JDK 9 javadocs mention the various
class loaders, see
[http://download.java.net/java/jdk9/docs/api/java/lang/ClassLoader.html#builtinLoaders]:
{quote}
The Java run-time has the following built-in class loaders:
- Bootstrap class loader. It is the virtual machine's built-in class
loader, typically represented as null, and does not have a parent.
- Platform class loader. All platform classes are visible to the platform
class loader that can be used as the parent of a ClassLoader instance. Platform
classes include Java SE platform APIs, their implementation classes and
JDK-specific run-time classes that are defined by the platform class loader or
its ancestors.
- System class loader. It is also known as application class loader and is
distinct from the platform class loader. The system class loader is typically
used to define classes on the application class path, module path, and
JDK-specific tools. The platform class loader is a parent or an ancestor of the
system class loader that all platform classes are visible to it.
{quote}
So it seems like the classes made available by the bootstrap class loader in
JDK 8 have been split between a smaller bootstrap class loader and a platform
class loader in JDK 9. Presumably in order to have a smaller set of highly
privileged core classes. Classes in the bootstrap class loader implicitly have
all privileges, I think, whereas classes outside of the bootstrap loader can be
granted a more limited set of privileges.
> Make it possible to run Derby tests on early access versions of JDK 9
> ---------------------------------------------------------------------
>
> Key: DERBY-6854
> URL: https://issues.apache.org/jira/browse/DERBY-6854
> Project: Derby
> Issue Type: Improvement
> Components: Build tools
> Affects Versions: 10.12.1.1
> Reporter: Rick Hillegas
> Assignee: Rick Hillegas
> Attachments: d6854-classloader.diff, derby-6854-01-aa-fixFor9-ea.diff
>
>
> Early access versions of JDK 9 (build 100) have "9-ea" as the java.version
> and "9" as the java.specification.version. This confuses the
> JavaVersionHolder class which the regression tests use in order to determine
> the vm level. At a minimum, we need to make JavaVersionHolder recognize these
> early access strings.
> This issue can be left open even after a fix is applied because we have no
> idea how java.version and java.specification.version are going to evolve over
> the remaining development cycle for JDK 9.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)