Looking ahead: proposed Hg forest consolidation for JDK 10
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Wed Oct 19 10:12:26 UTC 2016
On 19/10/16 01:22, Jonathan Gibbons wrote:
>
>
> On 10/18/2016 06:59 AM, Erik Helin wrote:
>>>
>>
>> You mean that you can work on the langtools repository only? Do you
>> only need a boot JDK? How do you build in those cases? I assumed that
>> langtools, like all the other repositories, were building from the
>> top repository?
>
> Currently, with the langtools repo, you only need the repo and a
> reasonably-recent build of JDK. The langtools repo has its own Ant
> script to build the langtools modules, which is easy enough since it's
> all Java code. The Ant script is set up to support IDE integration and
> debugging: some of us use NetBeans, others use IntelliJ. The
> --patch-path option is used to override the langtools modules in the
> JDK image with the new locally built versions.
>
> The technique should be reasonably applicable to anyone just working
> on plain old Java code.
Pretty much what Jon said - you can work in langtools in isolation,
provided you have a pointer to a reasonably recent JDK 9 image (the
degree of freshness of such JDK image depends on how much work is going
on - if things are stable, 'recent' could well mean 3-4 months old; if
things are hot - as now - 'recent' typically means a couple of weeks).
Yesterday I did some experiments to compare build times of the local
langtools script vs. toplevel make; the table below summarizes the
results. I've compared both 'cold build' times (i.e. build from a clean
state) and 'incremental build' times. I did the latter by touching a
file in a given module, and then relaunching the build command again.
*Test type*
*Time (make)*
*Time (ant)*
all 5 langtools modules (cold build)
4m
18s
java.compiler (incremental)
28s
3s
jdk.compiler (incremental)
25s
3s
jdk.javadoc (incremental)
12s
2s
jdk.jdeps (incremental)
7s
2s
jdk.jshell (incremental)
5s
2s
As you can see, the different in the cold case is pretty stark. Now, you
should normally not pay the price for this always - however, any change
that triggers a 'reconfigure' can potentially spawn a cold build time.
If we move on to consider incremental build times, we can see two
categories:
* java.compiler, jdk.compiler, jdk.javadoc - those tools have an
'interim' stage in the toplevel make build - which make incremental
compilation quite slower compared to ant
* jdk.jdeps and jdk.jshell are simple leaves - while the ant build is
faster, I think the difference is not significant
I tend to work on jdk.compiler most of the time, and, for me, the
difference in usability between a 30s incremental build and a 3s one is
pretty significant, especially when working with an IDE. Which is why,
at the moment at least, I'm sticking with the internal ant build.
Of course, should things improve for the modules in the first category,
then the extra benefits of using a single build would be enough to
offset the minor incremental slow down (and the one off 'cold' big slow
down).
P.S.
I've seen other ant builds around (Nashorn IIRC) - I'd be interested to
know what other folks in similar situation think about this.
Maurizio
More information about the jdk9-dev
mailing list