Skip to main content

Partly offline installation

9 replies [Last post]
tsinger
Offline
Joined: 2003-06-10

I've searched the FAQ but could not find an answer.

We currently offer our customers a software bundle for Windows including an JRE. Installing our software on a fresh machine just copies the files (including the JRE) and does not register the JRE in the registry (the JRE is not installed as usually done by downloading the JRE from SUN and installing it manually).

To my understanding from the FAQ, the JRE 6uN needs to be installed on the end-user system, so it can download the rest of the JRE on demand.

Will it be possible with JRE 6uN for us to avoid packaging nearly whole JRE with our application (as currently) and reduce the bundle size from currently 20MB to approx. 10-12MB, so it will contain just the classes which are required by our application? Does it makes sense to use the JRE 6uN for machines which are not or just rarely connected to the internet?

--
Best regards,
Thomas Singer
SyntEvo GmbH
www.syntevo.com

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
komadori
Offline
Joined: 2008-03-01

See [url]http://weblogs.java.net/blog/enicholas/archive/2007/05/java_kernel_unm.html[/url] under the heading "But what if I want to pre-download everything I need?". I don't know what the status of this feature is though.

komadori
Offline
Joined: 2008-03-01

Question 20 in the Java kernel FAQ ([url]https://jdk6.dev.java.net/6u10faq.html#JKernel[/url]) reads "Is it possible to create custom bundle for Kernel install? We're actually going to be holding off on the custom bundle plan, for a lot of reasons, both legal and technical. ~". At least it hasn't been dropped completely.

linuxhippy
Offline
Joined: 2004-01-07

Hi Thomas,

I really discourage you from deploying a modified JRE.
1.) First of all a full JRE will make Java even more spread
2.) Second a full installation (compared to an app private) will have update and quickstart stuff
3.) Its forbidden ;)

There's a product called "Excelsior JET" which can compile java-bytecode into native executables. I can really recommend it to you if download size (including the JRE) is really such a problem. In the forum you can read an article how you can get a native swing app down to 8,5mb using an executable compressor.

However I really only recommend this, if there's no way distributing a full JRE or redirecting the user to the java download. I also had fears about this, and never thought how widespread java already is.

lg Clemens

tsinger
Offline
Joined: 2003-06-10

> 1.) First of all a full JRE will make Java even more
> spread

Sorry to say, but I don't care. I care about
- having the smallest possible download for an all-inclusive bundle
- running our applications in a tested environment (we don't have the time to also support Java installations)

> 2.) Second a full installation (compared to an app
> private) will have update and quickstart stuff

Our application already has quickstart stuff without the need for a new JRE. Because our applications (and yours definitely, too) are not completely bug-free, there will be good possibilities to get a new update soon, if necessary with a new JRE version.

> 3.) Its forbidden ;)

Sun could change that, if they would.

sauvage
Offline
Joined: 2004-03-04

Hi,

Take a look at Excelsior JET http://www.excelsior-usa.com/jet.html.
It produces a native executable, the "Java Runtime Slim-Down model" feature seems to be what you are looking for.
NB: I never user this product.

Regards,

Laurent.

rogyeu
Offline
Joined: 2006-07-30

Hi Thomas,

You cannot distribute partial JRE or modified JRE. This is not allowed by the license. Please see the README file distributed with the JRE for more information.

>>Will it be possible with JRE 6uN for us to avoid packaging nearly whole JRE with our
>>application (as currently) and reduce the bundle size from currently 20MB to approx.
>>10-12MB, so it will contain just the classes which are required by our application?
Java Kernel is a modular install of JRE. Upon finishing the initial installation, Java Kernel VM will run launch a background download to get the rest of the Java bundles to make it a complete JRE. The end result should be a complete JRE that is identical to the one user installed with either the JRE online installer or offline installer.

>>Does it makes sense to use the JRE 6uN for machines which are not or just rarely
>>connected to the internet?
For Java Kernel to retrieve other Java bundles, it needs to have network connection in order to complete the installation. Therefore, network connection is a pre-requisite for Java Kernel installer to complete the JRE installation.

For more information about the Java Kernel, please see FAQ:
https://jdk6.dev.java.net/6u10faq.html#JKernel

Thanks,
Roger Y.

jwenting
Offline
Joined: 2003-12-02

> >>Does it makes sense to use the JRE 6uN for machines
> which are not or just rarely
> >>connected to the internet?
> For Java Kernel to retrieve other Java bundles, it
> needs to have network connection in order to complete
> the installation. Therefore, network connection is a
> pre-requisite for Java Kernel installer to complete
> the JRE installation.
>
IOW, it's not an "on-demand" downloader of packages at all (as it was originally advertised) but rather a trick to make people think they're downloading something small when actually they're not.

mthornton
Offline
Joined: 2003-06-10

In my opinion the only way to do that effectively would be for applications which declare their requirements up front as with WebStart and jnlp files (now also useable for Applets). Delaying download until a method/class was used would have awkward complications. Again WebStart does allow lazy download but only with the cooperation of the application, so you don't get an unexpected delay.

jwenting
Offline
Joined: 2003-12-02

> In my opinion the only way to do that effectively
> would be for applications which declare their
> requirements up front as with WebStart and jnlp files
> (now also useable for Applets). Delaying download
> until a method/class was used would have awkward
> complications. Again WebStart does allow lazy
> download but only with the cooperation of the
> application, so you don't get an unexpected delay.

One could envision a classloader determining what it needs based on analysis of the classfiles it's presented with and download that as needed.

That doesn't mean I'd favour such an option. Classloading would get extremely slow when a classloader is presented with something that requires downloading a stream of interdependent classes, and you'd end up with a classloader that can't tell before a potential network timeout whether an import is actually possible at all.

But the background installation of the "consumer JRE" is IMO still a farce, in that it doesn't actually reduce the download size at all, it only completes before the total download is complete.
What would happen is a user thinks the download IS complete, shuts down his system, and ends up with a partially installed JRE as a result?
Will it resume downloading when able at next network connection, or will it fail with a JVM crash when next used because core components are missing?