RFR: 8016780: (xs) README-builds.html misses crucial requirement on bootstrap JDK
Alan.Bateman at oracle.com
Tue Jun 18 09:25:36 UTC 2013
On 18/06/2013 08:42, Stuart Marks wrote:
> 4) Could jaxp, jaxws, and corba be built with the current JDK, not the
> boot JDK? Sure, probably. I spoke with Jon G on this topic the other
> day and we didn't come up with any really good reasons why they need
> to be built with the boot JDK. Historically they were upstream
> repositories so they were usually based on a backrev JDK anyway, so
> there was no real need for them to use the latest features. Also,
> using the boot JDK was probably an incidental outcome of the way the
> old build system was put together. (Old-timers lurking -- or not :-)
> -- on this list will certainly know better than me.) The new build
> system does the same, since one of its requirements is that it
> slavishly match the output of the old build system.
> In principle I don't see any reason why these libraries couldn't be
> built with the current JDK instead of the boot JDK. This might be a
> fairly large restructuring of the build system, though.
My understanding is that the new build is just following the old build
(a while back, I did ask about the same issue and I remember Kelly or
someone pointing out that the new build had to follow the same build
sequence as the old in order to generate equivalent bits). Although
you're anxious to get the README updates then it is a great topic and
now might be a great time to discuss it.
As least for the jaxws repository then I don't see any reason that it
has to be built by the boot JDK. I actually don't see any reason why it
needs to be rt.jar either, it could be built to jaxws.jar and dropped
into the extensions directory (but that's another matter). That said,
even if the jaxws repository was built later then it's unlikely that
code there will start making use of new language features or APIs. That
is because it's really an upstream project that still creates standalone
releases to run on jdk7.
The corba and jaxp are trickier because there are circular dependencies.
These circular dependencies arises because we have a few places in the
jdk repository that need to parse XML and there are few cases where
CORBA APIs are used (the JMX remote API supports IIOP, and the JNDI
CosNaming provider are two).
As least for the CORBA APIs then we've already done significant
refactoring to support modularization and it might not be big job to
move the CORBA dependencies into the corba repo. That said, CORBA is
mostly just bug fixes these days so there isn't a queue at the door to
use new language features or APIs. On the other hand there is still a
case to building it with the newly built jdk because of sun.* and other
implementation mess. We have several examples in the last year where
building the corba repository with the boot JDK has been a problem (a
duplicate shared secrets mechanism had to be added for example).
The jaxp repository is a clear case where we should be able to new new
language features and APIs. Aside from the build then the only thing
holding things back is periodically calls to keep the jdk7u and jdk8
code in sync. I don't know how long that can last and we will need to
break from the past at some point.
So I think this is a great topic to discuss. I think it has to be
discussed in the context of where the repositories are going with
modules. For the JDK modularization then we've long talked about
restructuring the source code so that it's organized by modules, we
didn't get to considering whether this would have an impact on the
repositories. I think it's also worth discussing whether the
"compilation unit" is the code in a single repository or whether the
code in multiple repositories could be compiled together. The other
extreme is where we get to the point where individual modules can be
compiled on their own.
More information about the build-dev