Java图形化技术发展简史(A Brief History of Java GUI)
王福强
Java图形化技术的发展可以从两个视角来看待,一个视角是时间线的视角,一个视角是技术理念的视角。
时间线视角
太阳微系统公司(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上依然流畅如飞:
另外就是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等。
技术理念的视角
这个世界好像永远会存在至少两派人,追求差异化独特性的一群人, 以及追求整齐划一的一群人,甚至于可能是同一群人不同阶段, 不管怎么样,在Java的GUI生态里,其实也因这种理念上的差异衍生出了不同的两类方案。
AWT和SWT原则上应该属于一类理念, 他们都是基于不同平台各自的图形化生态和支持构建封装或者适配,能用操作系统原生的就用原生的,原生的没有的,再单独构建开发新的组件和功能;
Swing和JavaFX则走的另一条路,我tmd全都自己“画”,在什么操作系统上都长一个样儿,你要是嫌这种整齐划一不好看也没问题, 我给你提供theme切换(LAF = Look and Feel)总行了吧? JavaFX还能用CSS做进一步的风格调整呢~
虽然我们之前讲过,要提倡多平台方案而不是跨平台方案:
但其实话只是说了一半儿,理性地讲应该是,在该选择跨平台方案的时候,选择跨平台方案,在该选择多平台方案的时候,选择多平台方案。
后话
王婆卖瓜,最后不能忘了自夸 ^_-
既然要做“土”公司 (A Tool Company),那我们就要选择适合自己而自己又能把控的技术。
从2019年至今, 福强科技基于JavaFX技术与生态搞了KeeBox、KeeOps、Tinclick、KeeNotes Desktop以及KareData等一系列的桌面型软件产品 3,后面还会继续丰富品类,敬请关注 🤪
「福强私学」来一个?
「福强私学」, 一部沉淀了个人成长、技术与架构、组织与管理以及商业上的方法与心法的百科全书。
开天窗,拉认知,订阅「福报」,即刻拥有自己的全模态人工智能。