currently, I am developing a J2ME application for mobiles using LWUIT library. The build result of my project includes a .jar file along with a .jad file. I wonder, is there any way to unify these to files into a single .jar file? Why some properties of my application should be mentioned in a single (and simple) .jad file instead of the METAINF/manifest.mf file of the jar file? It really makes the deployment process more difficult.
问题:
回答1:
There are historical reasons for the separate .jar
and .jad
files (even the whole J2ME platform is historical, too :)).
As this learning material describes, .jar
files contain the application logic and resources, and .jad
files contain the metadata (name, author, version, requirements etc.) of the application along with its download URL. Back in the time, when mobile bandwidth was very expensive, it was completely reasonable to download only the metadata (.jad
file) of the application first as it was much smaller. Then, if the mobile phone satisfied the requirements, and no newer version of the application was installed, the actual download of the application (.jar
file) could take place.
Nowadays, this bandwidth issue is not relevant and most J2ME build environments encloses the metadata also in the META-INF/manifest.mf
entry of the .jar
file, and produces the .jad
file as a by-product of the build process for compatibility reasons.
I think almost every modern mobile phone that supports J2ME is able to install and run the application using only the .jar
file, you just copy that to the phone and run it, no .jad
file is needed. So, to answer your question, instead of trying to "unify" these two files, you can just simply ignore the .jad
.
However, when you really need to get rid of the .jad
file, you must look around the build settings of your development environment (for example NetBeans), there may be a checkbox or a switch that disables the production of the .jad
file, or even a property page where you can edit the entries included in the application manifest (manifest.mf
file). But this depends on the development environment you use and there is no general J2ME solution to this.