So I will be using Java Web Start to deploy the java application. When exporting to a Runnable Jar, there are three options in eclipse Helios.
What are differences, and how will they affect my .jnlp file?
If it's a single jar, isn't it easier because I wouldn't have to write all the different paths to all the libraries it uses?
If there are changes in both the library and the application, a single jar would be a better solution? Or would I need <jar href=''>
for each individual libraries?
Also note that I need to make use of native libraries like .dll and .so files.
FYI: In simple terms, the difference between a JAR file and a Runnable JAR is that while a JAR file is a Java application which requires a command line to run, a runnable JAR file can be directly executed by double clicking it.
A JAR serves the same function an an Assembly in the C#/. net world. It's a collection of java classes, a manifest, and optionally other resources, such as properties files. A library is a more abstract concept, in java, a library is usually packaged as a JAR (Java ARchive), or a collection of JARs.
A JAR (Java ARchive) is a way of packaging together all of the resources associated with a program (class files, images, sounds, etc.). Putting your program in a JAR allows it to be distributed as a single executable file, saving space and simplifying the download process.
Then press Ctrl+V to past the file's path. Then press "Enter".. Type in jar xf followed by a space followed by the name of the JAR file. This is the command to extract a JAR file.
Extract required libraries into JAR - Extracts the actual .class
files from the libraries your app uses and puts those .class
files inside the runnable JAR. So, the runnable JAR will not only contain the .class
files of your application, but also the .class
files of all the libraries your application uses.
Package required libraries into JAR - Puts the actual JAR files of the libraries into your runnable JAR. Normally, a JAR file within a JAR file cannot be loaded by the JVM. But Eclipse adds special classes to the runnable JAR to make this possible.
Copy required libraries into sub folder next to JAR - Keeps the library JARs completely separate from the runnable JAR, so the runnable JAR will only contain the .class
files of your application.
Option #2 is convenient because it packages everything neatly into a single JAR, and keeps the library JARs separated from your application's .class
files.
However, a downside to packaging everything inside of a single JAR (options #1 and #2) is that, if you update your application, then the user will have to download more data to update the application. If the JARs are kept separate, then the user would only have to download the JAR that contains your application code, instead of a single, massive JAR that contains your application code and all the library code.
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