Toward Condensers
openjdk.org
openjdk.org
(From one of the links posted above)
> The primary means for shifting computation is the condenser. A condenser is a component that transforms a program, yielding a program that is semantically equivalent under a stated set of constraints (e.g., “class X will not be redefined”), but may be smaller, faster, or better suited to a particular execution environment.
Currently, we rely on the Java Module system to make reduced runtimes. It works, but is necessarily coarse.
You'd think you'd be able run the application for a "suitable amount of time, and a suitable amount of use cases" and monitor what classes were loaded, etc. and use that information to make the smallest runtime possible. The addition of the sealing mechanism is a bonus, most apps simply don't need to be that configurable and flexible. You could do that analysis once, and update it manually (so you don't have to do it all the time), or have some automated service that you run routinely.
I have a simple GUI program, getting ready to distribute. It's 5000 lines of code, and has a couple of windows. Admittedly, it also includes WebKit (which alone can be large), but with all the the distribution is 70M. That's tuned using the module system, so it leaves stuff out.
That's "good". Many other cross platform solutions are larger.
It would be great for something like this to knock that down to 20M (cough).
I wonder how hard it would be to write a simple ("simple") HTML renderer enough to show my documentation (which is all I use it for). "Look a rabbit hole! Let's go inside!!"
Or is this a simpler form of static analysis / partial runtime optimization?
https://www.reddit.com/r/java/comments/15ere1m/toward_conden...
Shame the conversation in this article is inextricably laced with Java stuff.