Java图形化技术发展简史(A Brief History of Java GUI)

王福强

2021-09-09



Java图形化技术的发展可以从两个视角来看待,一个视角是时间线的视角,一个视角是技术理念的视角。

1 时间线视角

太阳微系统公司(Sun Microsystems)在没有沦落到被Oracle收购之前, 在技术人员心目中那是何等的牛逼啊!

1995年Java发布之初,其实就已经自带了AWT技术(全称Abstract Window Toolkit),到Java1.2,新推出的Swing逐步成为推荐的Java GUI主流框架, IntelliJ IDEA就是基于Swing技术的杀手级产品,Java程序员朋友应该都家喻户晓。

下面是翻硬盘时候发现的老古董, Aqua Data Studio 4.7.2版本, 你可以认为是DBeaver的前辈,但是在20年前 1,今天我拿它跑在Java16上依然流畅如飞:

Aqua Data Studio 4.7.2

另外就是2008年在花旗的时候, 债券系统也是Swing写的, 那时候小蒯写Swing写的那叫一个眉飞色舞啊,现在俩儿子的爹,都成老蒯了… (同年,隔壁的finance desk还是基于motif开发,这也是老古董的GUI框架,只是不是Java家的)

然后是2003年SWT冒出来,打的旗号是进一步应用好每一个平台/OS的特性,也就是抽象+不同平台不同具体实现的思路,杀手级产品当然就是Eclipse。

SWT/JFace哥也写过,写的是对日的信贷系统,俗称高利贷,利率我今天还记得是29.3%,但这在日本是合法的,国内也是P2P一地鸡毛之后才开始规范利率,但即使规范后的利率,那也是比日本当年这个利率标准高…

再后来就是JavaFX, 先是JavaFX2.0(当时这技术还是在SUN手里),然后到JavaFX8.0之后,Oracle放弃维护,一家叫Gluon的创业公司(startups)接手继续推动JavaFX的发展(因为它们早期搞了mobile版的适配,在这方向上有投入也有功力),所以,8.0后面的JavaFX都是独立于JDK/JRE之外发展了。 2

JavaFX相对于AWT/Swing的一些好处是设计上可扩展性更好,也支持用CSS对组件进行风格定制(当然,跟纯web版的css也有些出入)。

至于JavaFX的杀手级产品,早年有NASA等机构一类的产品,但特别引人注目并进入大众视野的好像不多,社区比较小,优秀的类库和框架还是有的,比如游戏框架FXGL,比如配置类库PreferencesFX等。

2 技术理念的视角

这个世界好像永远会存在至少两派人,追求差异化独特性的一群人, 以及追求整齐划一的一群人,甚至于可能是同一群人不同阶段, 不管怎么样,在Java的GUI生态里,其实也因这种理念上的差异衍生出了不同的两类方案。

AWT和SWT原则上应该属于一类理念, 他们都是基于不同平台各自的图形化生态和支持构建封装或者适配,能用操作系统原生的就用原生的,原生的没有的,再单独构建开发新的组件和功能;

Swing和JavaFX则走的另一条路,我tmd全都自己“画”,在什么操作系统上都长一个样儿,你要是嫌这种整齐划一不好看也没问题, 我给你提供theme切换(LAF = Look and Feel)总行了吧? JavaFX还能用CSS做进一步的风格调整呢~

虽然我们之前讲过,要提倡多平台方案而不是跨平台方案:

但其实话只是说了一半儿,理性地讲应该是,在该选择跨平台方案的时候,选择跨平台方案,在该选择多平台方案的时候,选择多平台方案

3 后话

王婆卖瓜,最后不能忘了自夸 ^_-

既然要做“土”公司 (A Tool Company),那我们就要选择适合自己而自己又能把控的技术。

从2019年至今, 福强科技基于JavaFX技术与生态搞了KeeBox、KeeOps、Tinclick、KeeNotes Desktop以及KareData等一系列的桌面型软件产品 3,后面还会继续丰富品类,敬请关注 🤪


  1. 虽然自诩也有20年的Java经验,但我其实是从1.3/1.4左右开始接触Java和Swing的, 那时候天天泡在大工的图书馆里翻一本Swing的英文书,比我自己后来2009出版的《Spring揭秘》还tmd厚↩︎

  2. 独立于JDK/JRE之外有利有弊,利是更加独立灵活,弊嘛,不能像当年IE搭自己Windows操作系统的便车那样,而AWT/Swing则一直是JDK/JRE自带↩︎

  3. https://keevol.cn/tools.html↩︎


>>>>>> 更多阅读 <<<<<<


©王福强个人版权所有, All Rights Reserved.