New to java programs so apologies for the noob question. I have written a java program that I run using "java myprog" command in a terminal window. I want to give this program to friend but not sure what that person needs as a minimum to run the program. Can the code be compiled to run completely independently of any java installation my friend may or may not have? Will the other person need to recompile the code?
You can give them the compiled output (the .class) file.
They need a version of the JRE (but not the JDK that developers need to compile) that is compatible with the version you used to compile your code. The simplest way is just to match versions. For example, if you're using J2SE 7, then get JRE 7 for your friend.
With this your friend should be able to type java myprog and get the same results as you. If you want your friend to run the program from the command line the same way you do, then this is probably the simplest approach.
So, if on both your machine and your friend's machine you type:
java -version
...and you get the same major version, then you're probably in the right ballpark.
You can also create an executable .jar file if you want something your friend can just double-click, but they'll still need a version of the JRE installed, and creating executable JARs can be a bit difficult if you're new to the language. They take some learning and trial-and-error time. This is definitely a more complex approach than option #1.
There are compilers that will convert your java program into native code (an .exe file in Windows), but you'll need to know what OS your friend is running, and make sure you're compiling for your friend's OS.
One example of these tools that I heard about years ago is Excelsior JET (though I'm not endorsing it as a tool - just saying that they exist).
This is definitely the most advanced/most difficult of options, and includes even more trial-and-error than option #2, but if you're talking about a really simple program with a single file, then it might be very straightforward.
Of course, Excelsior JET wasn't free last time I checked.
I've written an entire article on this very subject:
Convert Java to EXE - Why, When, When Not, and How
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With