java

位置:IT落伍者 >> java >> 浏览文章

是否有必要将Java程序写成.exe文件


发布日期:2018年10月27日
 
是否有必要将Java程序写成.exe文件

怎么将编译后的java程序变成真正的exe?如果有那么具体的应该怎么实现还有就是exe文件的图标怎么改?如果没有那么有什么接近它的方法让人看着舒服有没有专门的单独的为java程序打包的程序?叫什么名字如何下载?

可以把普通的Java程序做成真正的exe也就是单一个exe就可以在没有安装JVM的机器上运行

这样的工具常见的有JET和gcj前者是收费的而且做出来的exe还是需要一堆dll

我比较推荐使用gcj

他有windows和Linux版直接下载zip包不需要安装里面有不少例子一些build的批处理文件

从原理来说gcj自己实现了JVM规范也就是你编写一个HelloWorldjava其中的main方法为Systemoutprintln(foo);当使用gcj把它做成exe(大约M)运行这个exe时会启动里面的一个小型jvm在这上面跑HelloWorld曾有人把整个eclipse ide用gjc做成了linux gtk下的native程序

至于图标我一年多前用gcj时似乎不支持不过好像有不少win的程序可以抽取和更改exe的图标其实把Java做成纯exe实在是 吃力不讨好 有很多限制文件又大

我比较倾向另几种做法

使用InstallAnywhere等工具制作一个exe的安装包

用户可以选择使用他机器上的JRE或是这个安装包内的JRE来运行程序这是很常见的一种做法如JBuilder就是这么做的

这样的好处是不要求对方机器上装有JRE而且你原来的程序不需要任何改动InstallAnywhere中一个压缩的JRE大概是M 制作成可执行的jar也就是在METAINF的MANIFEST文件制定MainClass可以通过命令行java jar jarfilejar来执行windows默认的把*jar使用javaw jar打开所以有些机器上可以直接双击jar运行

制作伪exe其实和上一种做法是一样的只不过做成exe调用系统的javaexe来运行它这样的工具有nativeJexej等

btw像JET/gcj这样的技术是很先进的NET在运行机制上和Java类似但到现在还是没有成熟的做成真正exe的工具

一定程度上也说明微软对NET的信心以及把基于运行时的软件做成纯exe的意义不大刚接触java很容易产生你这样的想法等你Java了解多了就会感觉到Java不像VBDelphi只是一个语言而是一个平台jar是最常用的部署单元做成exe没什么意思

上一篇:Java的逗号运算符

下一篇:使用Java实现数据报通讯过程