{ by david linsin }

January 23, 2008

Java Kernel

A couple of days ago the Java 6 Update N Kernel system or simply Java Kernel was released. As I mentioned before, I was quite disappointed about the decision to download the full JRE on your system after installing Java Kernel:
I was hoping you could have a custom JRE, where parts are only downloaded once they are needed. For instance if your application wants to play MIDI files, you have to wait until that module was downloaded. I think that should be the way to go for future releases of the Java Kernel.
It looks like my original intentions were correct and you don't necessarily need to download a full fledged JRE after all. The FAQs on Java Kernel are saying:
Download Manager has two different ways of downloading bundles:

i) Regular download: After Kernel JRE is installed, Download Manager will start downloading the rest of the bundles and install them in order.

ii) On-Demand download: If a user runs a Java application/applet before a complete JRE is downloaded and installed, Download Manager will check if the necessary libraries for running the application/applet is already downloaded. If not, Download Manager will download those libraries first so that the application/applet can run without waiting for the entire JRE to be completed.
You can configure the behavior of the download manager through the Java Control Panel.

I was curious and tried running Azureus right after installing Java Update N with Java Kernel. As soon as the Azureus splash screen appeared, the JRE download started as expected. After the download was finished, the Azureus splash screen disapeared and the actual window came up. That's when the Java Kernel download screen popped up again and further downloaded missing parts. After running Azureus for a while, I opened the settings dialog and again the Java Kernel download screen popped up and downloaded missing parts of my JRE.

I guess I have to reconsider my position on whether it's a good decision or not to download only parts of the JRE or eventually all of it.

Anyways, the implementation right now is rather awkward. Users don't wanna have a download screen smacked right into their face each time they bring up a dialog or change the view. My guess is that it's a classloading issue. Each time the application needs classes which are not present, they are being downloaded. From a user's point of view that should be transparent. I think it is possible to download all parts necessary for running an application at startup, so that users are not bothered with Java Kernel download screens when using their applications.



  • mail(dlinsin@gmail.com)
  • jabber(dlinsin@gmail.com)
  • skype(dlinsin)