[ 
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)

Reply via email to