25

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)?
2
  • Similar topic : stackoverflow.com/questions/664858/… Commented Jul 30, 2010 at 13:15
  • 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. Commented Jan 10, 2023 at 10:17

8 Answers 8

21

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.

Sign up to request clarification or add additional context in comments.

2 Comments

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?
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.
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).

2 Comments

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.
"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.
1

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

2 Comments

"Why is this simple calculator app 26 MB?"
Also if I found that a program secretly installed a security threat like Java on my system without my consent, I would be super angry
1

You can have a look at

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

You might get it what you want.

Comments

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.

Comments

0

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

Comments

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

Comments

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.