Windows下的JAVAFX桌面应用程序打包ABC

目录

  • Windows下的JAVAFX桌面应用程序打包ABC
  • Kotlin+JavaFX系列
    • 谁会读这个文章
    • 写作的目标
    • 知识背景
      • JavaFx
      • 模块化Java
    • JavaFX打包的例子
      • 例子代码
      • 编译的命令行
        • 设置变量
        • 编译Java代码
        • 运行
        • ``jlink``生成自定义运行时映像
        • ``jpackage``打包

Kotlin+JavaFX系列

  1. 使用Kotlin开发JavaFX
  2. Windows下的JavaFX桌面应用程序打包ABC
  3. Kotlin编写JavaFX的顺滑
  4. JavaFX动画:有趣的AnimationTimer
  5. JavaFX应用程序图标
  6. JavaFX专业开发者与业余开发者之间就差一个一个Icon packs
  7. JavaFX七巧板游戏:布局窗格Panes
  8. JavaFX七巧板游戏:布局控件
  9. JavaFX+Kotlin游戏从入门到放弃:拯救蛇蛇大作战又名454行实现几何数独游戏
  10. Kotlin编写JavaFX的顺滑之数据控件(一)列表视图ListView
  11. Kotlin编写JavaFX的顺滑之数据控件(二)表视图TableView基础应用
  12. Kotlin编写JavaFX的顺滑之数据控件(二)表视图TableView基础深入浅出

谁会读这个文章

  1. 自学使用Java开发桌面程序的初学者(为什么要这么做?);
  2. 要迅速撸出一个压缩包百兆以下windows应用程序的初级程序员;
  3. 大部分梯子都是java的程序员,客户只能接受Windows、只能接受单机传统桌面应用;
  4. 无聊的大佬想要给别人(也就是我)一个成长的机会(谢谢!)。

写作的目标

  1. 把自己在此处躺的坑记录下来以后回顾;
  2. 弄一个外部记忆防止自己老年痴呆。

知识背景

JavaFx

官方网站:openjfx

“JavaFX是一个开源的下一代客户端应用平台,用于桌面、移动和嵌入式系统,建立在Java之上。它是由许多个人和公司合作完成的,目标是为开发丰富的客户端应用程序制作一个现代、高效和功能齐全的工具包。”

总之,JavaFX挺愉快,也是开源的。是不是下一代就很那说,也可能就是上一代中没火也没挂的那种。

倒是我最近把它捡起来之后发现,随便写点界面发布一个小应用程序(压缩包二十兆左右)不要太愉快。

  1. 采用Kotlin开发,
  2. 不去用webkit,
  3. 不去用FXML,
  4. 把数据模型分开放数据可视化模型放在object里面。

模块化Java

参考:Jakob Jenkov博客文章

Java模块是一种打包机制,它使你能够将一个Java应用程序或Java API打包成一个单独的Java模块。一个Java模块被打包成一个模块化的JAR文件。一个Java模块可以指定它包含的哪些Java包应该对使用这个模块的其他Java模块可见。一个Java模块还必须指定哪些其他Java模块来完成它的工作。

Java模块是Java 9中通过Java平台模块系统(JPMS)的一项新功能。

模块化Java有很多优点:

  1. 通过模块化Java平台的小型应用分发
  2. 内部包的封装
  3. 启动时检测缺失的模块

最重要的也就是:“在Java 9和Java平台模块系统之前,你不得不把所有的Java平台API和你的Java应用打包在一起,因为没有正式的方法可以可靠地检查你的Java应用使用了哪些类。由于Java平台的API在这些年里已经变得相当庞大,你的应用程序会得到大量的Java类,其中许多你的应用程序可能不会使用。”

而采用了新的系统之后呢?打包出来的Java应用程序就再也不会那么大。一个典型的JavaFX应用程序,压缩包的大小也就是刚刚超过2