!!需要一個跨平臺的圖形界面工具!!

在跨平台桌面 GUI 的選擇中,JavaFX 並不是「追新」而是「務實」的選項。對我而言,它的吸引力在於:
如果你正在評估「要不要選一個桌面 GUI 框架」而且不想被 Electron 的記憶體與打包大小綁住,JavaFX 是值得先做一次原型驗證的選擇。
做為資訊科系畢業,現職軟體開發工程師,相對於其他背景,更深知軟體工具對於資訊處理與生活的幫助。
作爲Windows、Linux兩棲的工程師,當然會希望使用的工具具有跨平臺的特性。上班使用Windows,在家主要使用Linux。因此長期來說Python豐富的生態與跨平臺特性一直是我的首選。
CPython本身自帶tk(tkinter)工具包,它確實是一個跨平臺的圖形視窗框架,但太過簡陋。
也曾經使用過PySide6,並且有Qt Creator可以輔助圖形化界面開發。並且在最後也可以透過PyInstaller打包成沒有Python環境也可以直接拿來使用的可攜式檔案。不過這套方案也有一些痛點,包含通常打包大小會很大。
(【用Keycloak學習身份驗證與授權32】Device Code中用來學習驗證Device Code流程概念的,就是使用PySide6)
關於PySide6的使用經驗,就結果來說,並不是讓我到太滿意。並且畢竟都已經玩過了,總想玩點點新的。
那麼Electron.JS呢?現在成堆的應用......
我也玩過,畢竟剛開始工作那個時候就是在寫前端Angular,對於Vue也是略懂略懂,這種直接將網頁當成UI的做法自然也進入到我的視野。只是缺點也很明顯,除了打包成品肥大外,運行使用的記憶體.......看看電腦現在閱讀使用的瀏覽器使用情況可想一二。

那麼為什麼這次會想接觸JavaFX?
基於幾種需求:
先是已有部分「熟悉」這點。在大學就學過JAVA,程式語言來說對我不陌生。視窗程式開發除了前述提到的,也有VB6的經驗。所以熟悉程度不會是入門的一大門檻。我更曾經用過swing開發過JAVA計算機。
接著是「穩定」。JavaFX並不是什麼新玩具,是swing的後繼者,並且在JAVA 8以後看起來更好用了。從官網明瞭的兩個工具:可視化輔助開發的Scene Builder,以及測試框架的TestFX(我尚不確定是不是可用於e2e測試),可認爲在開發工具、測試生態是足夠的。
最後是「簡單的環境準備」。開發環境可以只需要JDK、JavaFX的SDK和順手的文字編輯器即可。「簡單的環境準備」不只是開發環境,運行的使用環境也是一樣,雖然不像JAVA一開始的理想,「開發一次,到處運行」只需要準備好JRE環境就好,但是隨者jpackage、jlink等工具,要打包成可以直接執行的,甚至瘦過身的JRE環境也變的容易。
還可進一步補充的是「豐富的JVM生態」。基於JVM的豐富生態,光相關語言就包含Clojure、Kotlin、ABCL。網際網路上JAVA相關的可用套件也是相當豐富,有工程可用的Maven、Gradle等生態。
至於其實最最最重要的原因:它放在我的想玩清單已經很久了。我很喜歡Common Lisp這個語言,雖然很小眾,但很強大。ABCL是在JVM環境的Common Lisp一個實現,可以與JAVA生態進行交互。而在JVM裡出名的GUI框架就是JavaFX。
如果你已經跟我一樣,對 JavaFX 這個方向有點興趣,那後面的系列內容大概會這樣展開:
先從「怎樣安裝 JDK 開發環境」開始,確認你的環境能順利跑起 Java;接著會進入「建立最小的 JavaFX 專案(Hello JavaFX)」這一步,讓我們先從最小視窗開始,看 JavaFX 的基本工作流;之後再帶到「從 ABCL 使用 JavaFX 的最小範例(Hello abclFX)」這個部分,看看 Common Lisp 和 JVM 生態如何一起玩;另外我會整理我對各個 GUI 框架的認識與比較,看看 JavaFX、PySide6、Electron 之間的差異究竟在哪裡。