[ 
https://issues.apache.org/jira/browse/DERBY-6856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15135854#comment-15135854
 ] 

Rick Hillegas commented on DERBY-6856:
--------------------------------------

I removed the PropertySetter code because it had no purpose, now that we only 
build with JDK 8. The code did not work with Java 9's way of packaging classes. 
We may need to revive PropertySetter or, more likely, write something else from 
scratch if we want to be able to construct two different bootclasspaths, one 
for Java 8 and the other for Java 9.

I would phrase what Knut said a little differently. The build had the potential 
to work as Dalibor describes. But in practice, it rarely did. The Dalibor 
approach was only possible when the builder's system had several JDKs at 
different levels and when they were located in a place where the build could 
find them. But if the build couldn't find old JDKs (the usual situation), then 
the bootclasspaths were basically the jar files of the compiling JDK overlayed 
with some JDBC stubs. That is, only the JDBC drivers were being compiled as 
Dalibor describes. Much of what we did in this area was done in order to make 
it possible for someone to build Derby out-of-the box with just the JDK 
supplied by the machine--something which was a pre-requisite for being bundled 
with Linux distros.

I don't know what to do about building with Java 9 and I am not planning any 
dramatic work on this issue for a while. If someone else wants to push this 
issue forward, they are welcome to. It used to be that the Sun/Oracle team 
endured considerable contortion and pain in order to make it possible to use a 
current JDK for the purpose of building JDBC drivers which implemented the 
contract of a future, unreleased JDK. This made it possible for the future JDK 
to bundle Derby when that JDK reached GA. However, Oracle does not seem 
interested in pursuing this relationship further.

We will keep any eye on what's going into JDBC 4.3. Right now, there's nothing 
of interest to Derby: just some new apis to support a ShardingKey feature which 
Derby doesn't implement. But some more useful apis may go into JDBC 4.3 later 
on. Someone may decide that supporting them is worth the contortion and pain 
required to fix the build in order to work with both the jigsaw JDK and the 
pre-jigsaw JDK.


> Make it possible to build Derby using JDK 9
> -------------------------------------------
>
>                 Key: DERBY-6856
>                 URL: https://issues.apache.org/jira/browse/DERBY-6856
>             Project: Derby
>          Issue Type: Improvement
>          Components: Build tools
>    Affects Versions: 10.12.1.1
>            Reporter: Rick Hillegas
>         Attachments: derby-6856-01-ab-addShardingKey.diff, 
> derby-6856-01-ac-cleanup.diff
>
>
> Derby can't be built with JDK 9. Java 9 introduces new JDBC classes like 
> java.sql.ShardingKey and methods which refer to these new classes.
> In addition, project Jigsaw has created a new way to name classes (see 
> http://openjdk.java.net/jeps/220). This breaks the PropertySetter build tool 
> which we use so that old JVMs can compile Derby and so that Derby can be 
> compiled to run on old JVMs.
> It is likely that we will need to leave this issue open throughout the 
> development cycle of Java 9.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to