大家都是怎么发布Java客户端程序的?难道让用户自己装JRE?
现在可以更新一下这个问题的答案了
自从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