Replies: 2 comments 1 reply
-
Hi,
You don't really need to care about the underlying compiler for that. You can just use the regular higher-level JDT APIs such as
Kind of yes; this is indeed the goal to prefer usage of Javac over ECJ in JDT-LS and VSCode-Java (and even JDT/Eclipse IDE later). But ECJ is still likely to remain and work fine for some time. And the integration we're working on is relatively low-level as explained above, so that users and consumers don't really need to care.
Not really and thanks for ringing a bell; I'll update it right after this answer ;)
The incremental build is a feature provided by higher-level JDT to compute the smallest set of files to compile; increment by increment. The underlying compiler is invoked for each increment. The incremental build in JDT does work whichever compiler is used under the hood, as long as the compiler integration with the builder is well implemented; and Javac one is well implemented as far as we know.
Partly yes; but still we do consider that performance is an important criterion for going mainstream. So while it's not the very first goal, it's one of the goals that are considered before considering Javac backend for JDT production-ready. We've already created various optimizations here and there that often make Javac backend on par with ECJ performance-wise; but there are still corner-cases... |
Beta Was this translation helpful? Give feedback.
-
Thanks, Mickael!
Interesting, this shows a gap in my mental model of the stack here. I was under the impression that Eclipse's fast builds were at least partly due to ECJ providing necessary features that javac does not have. Is it more accurate to think of it as "gradle's incremental build features, only built into JDT?"
To be clear, these are optimizations in JDT? Or optimizations in javac that you are upstreaming? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi all,
I'm building the Brokk AI coding platform (https://foojay.io/today/brokk-for-java-developers/) and one of my pain points is waiting for builds to validate the LLM's edits. (Currently we're just running cmdline gradle/mvn/etc and inspecting the results.)
I thought that using ECJ via JDT might allow us to perform faster incremental builds, but it looks like jdt-ls and vscode-java are moving away from ECJ and towards javac.
(1) Is the dom-with-javac README up to date? (specifically, completion and search/match not yet working)
(2) Is the goal to eventually give jdt/javac the same incremental compilation speeds as jdt/ecj? Or are the compatibility advantages so overwhelming that speed is a secondary consideration?
Beta Was this translation helpful? Give feedback.
All reactions