Java 11 JavaFX 第一个应用
概述
Java 11 自 2018.9.25 发布以来,已经好几个月了,在还没正式 GA 之前都习惯性的去 java-countdown.xyz check 发布倒计时。Java 11 有比较多的新功能,而其中最吸引我的
- Java 11 是 LTS 版本
- 这意味着体验 Java9 带来的模块特性变得更有意义
- JavaFX 从 JDK 中移除,作为独立模块
在 11 发布时,JavaFX 也发布了 11 的 GA 版本。JavaFX 本身并不新奇,但自 Java9 模块化后,JavaFX 得益于 jlink 的能力,能够将 JavaFX 封装为独立的 GUI 应用,不要求安装 JDK 。这使得在桌面应用开发的场景,除了 Electron、Mono、QT 等跨平台开发框架,Java 也能作为其中的一项选择了。在 Swing 时代,Java 的桌面应用开发体验也不差(曾经做过的小游戏 wenerme/GTetris),但由于累赘的 JDK (大约 150m)使得开发一个小应用变得不切实际。
JLink 可以将项目依赖的模块加上基础 VM 来生成一个新的 JDK,应用的体积能够大大减小,如果还能再配合 progard,那体积还能再缩小一圈 。
Motivation
基于体验 Java11 和 JavaFX 的前提(每个 Java 程序员都会写界面是常识?),将生成 奥格人群服务化接口文档 的生成器做成了一个 GUI 工具,源码在 wener.cyw/tools。
doc/screenshot-java.png
doc/screenshot-markdown.png
工具下载地址见附件 - 只打包了 Mac 版应用,因为没有 Windows。
安装
从 Java 11 开始,Oracle 的 JDK 便不再建议使用了,因此首选 OpenJDK,而 OpenJDK 的二进制提供方也有不少,在这里推荐使用 adoptopenjdk,与 Oracle 不同的是,在这里下载的 JDK 都是压缩包,无须安装,解压就能使用,当然也不会有自动更新的能力。
下载后我解压到了 ~/jdk
目录,然后建立软连接 ~/jdk/11
指向到了该版本。
开发
总结一下在整个过程中遇到的问题
- 项目搭建 - 10%
- 应用开发 - 20%
- 生成 JDK - 非模块依赖转模块依赖 - 50%
- 应用打包 - 20%