Running java without installing jre?
Asked Answered
R

8

24

As asked and answered here, python has a useful way of deployment without installers. Can Java do the same thing?

  • Is there any way to run Java's jar file without installing jre?
  • Is there a tool something like java2exe (win32), java2bin (linux) or java2app (mac)?
Reverence answered 30/7, 2010 at 12:50 Comment(2)
Similar topic : #665358Lefkowitz
Also see jpackage. If you don't want an installer, use --type image and just ZIP the result. There's also Graal VM's native image, though I don't know if that creates an installer or not (or if that's configurable). Both these options essentially embed the JRE with your application.Conk
S
20

You can use Launch4j for this. Well documented and easy to use. While the resulting program still needs a JRE to run, you don't have to install the JRE on the target system. You can just copy it with your application and tell Launch4j were to find it or just wrap it up with everything else.

Spontaneity answered 30/7, 2010 at 13:4 Comment(2)
Where are the JRE file(s)? With Mac I found /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/*, and with PC I found Java/jre6/lib. Do I have to copy all those files?Reverence
You need to copy the two subdirs jre6/lib and jre6/bin retaining the subdir structure. And tell Launch4j where to find it, best as a relative path from the executable's dir. Personally I put the bin and lib dirs in a subdir called jre next to my executable.Spontaneity
S
6

For creating native executables, you can use Excelsion Jet, which compiles Java to native code. We used it for a project at work, and we had to perform zero modification to the original source code (which targetted Sun's JDK).

Spiritualty answered 30/7, 2010 at 18:50 Comment(2)
FAQ: Excelsior JET is not just a packager of Java applications into Windows EXE/Linux binaries. It really compiles your Java class files into native x86 (IA-32) instructions. The resulting executables need the Excelsior JET Runtime to run, but not the Sun JRE.Suki
"The resulting executables need the Excelsior JET Runtime to run". This is true, but it is also possible to embed this runtime in the generated binary. The binary is then self-sufficient. In this process, I believe it is possible to strip the runtime to keep only the parts that are used in the compiled application.Spiritualty
A
1

you can embbed the JRE inside your application and create a setup or installation for your application.

Angeliaangelic answered 30/7, 2010 at 12:55 Comment(2)
"Why is this simple calculator app 26 MB?"Suki
Also if I found that a program secretly installed a security threat like Java on my system without my consent, I would be super angryFibrinogen
C
1

You can have a look at

http://www.bearcave.com/software/java/comp_java.html

You might get it what you want.

Cobb answered 30/7, 2010 at 13:7 Comment(0)
V
1

You might want to check out how Eclipse does it - it has a native .exe that can use a local (to the installation) JRE.

Vc answered 30/7, 2010 at 13:7 Comment(0)
H
0

You might be able to get some luck with GCJ - haven't tried it myself.

Hobart answered 30/7, 2010 at 12:50 Comment(0)
W
0

You can do it with NetBeans and a couple of tools. The result is a standalone installer that packages everything you need, so your software can run without installing JRE. It is also completely portable, because it install your software on AppData, that is, it does not need privileges to be installed. Maybe you can even configure the installation path, or you can install it on your own PC, locate the folder and copy it to distribute your software in that way.

Check the Answer I made on different post

Whiting answered 4/10, 2019 at 6:17 Comment(0)
B
0

You can use jlink to create your own customized jre which would contain only those dependencies which are needed for execution. This deployment method is really efficient. please follow **this**link for one such example.

Baritone answered 13/10, 2020 at 20:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.