On 29/12/2020 19:29, Gunnar Morling wrote:
:
That's interesting; what is missing from your PoV to make the API an
incubating one?
Getting consensus that it's the right thing to do, and then the
commitment to doing it. The latter requires re-examining the internal
plugin API, looking at the issues that have come up since JDK 9, going
over each of the API elements, iteration, and then setting it on a
course to incubate for a release or two, gathering feedback, then
eventually make it permanent and maintaining it. On one hard, it could
be interesting to have an eco system of useful link-time plugins.. On
the other hand, I think many of the plugins will be tied to core modules
so cannot be maintained outside of the jdk repo. Also many of the
plugins that we have experience with to date involve generating classes
or modifying existing class files at link time so there may be an
argument to wait until the JDK has a bytecode API.
:
I could see myself contributing to a plug-in around signature
validation, depending on how involved that task would be. I did a
quick PoC and discuss it here:
https://www.morling.dev/blog/jlinks-missing-link-api-signature-validation/
<https://urldefense.com/v3/__https://www.morling.dev/blog/jlinks-missing-link-api-signature-validation/__;!!GqivPVa7Brio!PtjEsu6vvtWl-ZEeGXaCz69AJ2svwDnzayzazAAtreJ_yLbBPOLj1s2o7XppEXf_Mw$>
This is using the existing Animal Sniffer tool for a basic signature
check. I'm not sure how much effort it'd be to fully implement this,
and also catch things like added non-virtual methods in a base
class/interface, changes to type parameters, and more. Could existing
code from the JDK be re-used for that task?
Nice blog and PoC! Yes, I think this is worth exploring more as static
analysis to detect mismatch with compile-time could be useful. A
possible starting point is something that scans a module path, it
doesn't have to start out as a jlink plugin. I could imagine `java
--validate-modules` making use of this to do deep analysis for example.
-Alan