大家都是怎么发布Java客户端程序的?难道让用户自己装JRE?

关注者
751
被浏览
262,124
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

现在可以更新一下这个问题的答案了

自从9的jigsaw发布之后,用户可以使用jlink自定义runtime

这个runtime一般会比官方给的runtime(jre)也就是标准runtime要小一点

到了9之后,标准runtime是200m,自己用jlink做的话,大部分都是几十m搞定

然后我们再把这些runtime连同我们做好的class/jar一起发布

命令是java (-jar) jarname.jar or classname.class

如果有依赖,则用-cp或者--class-path告知java命令具体的路径在哪里

然后再针对不同的操作系统制作脚本,win下一般是bat,mac和linux下是shell也就是.sh

win下再用bat to exec converter之类的工具(免费的)将起转换成exe

然后用户只需要双击这些bat/shell/exe文件,就可以启动了

如果是在steam上的话,这一步可以省略,因为steam自身就是一个大的启动器,可以直接执行系统命令,所以你可以把这个交给steam去做


以上说的都是到目前这个时间点可行并成熟的方式,下面的工具都还正在发展,但是多数已经提供了early access,preview等版本

然后还有一种更加方便的方式,那就是java正在制作jpackager

以后做好后应该可以用命令直接打包

最后graal提供了native image功能,可以对java的客户端程序做aot并剪裁

这样做出来的二进制程序会更小,一个hello world只要6m,这样制作出来的binary什么,也只要双击就可以启动了

然后客户端程序javafx还提供了maven上的插件,这些插件可以直接将其生成native image,并针对特定的操作系统打包,比如安卓,ios