eclipse为什么导入不了awt_为什么选择javafx?
之前我發了一篇文章講述跨平臺的GUI技術,其中提到了javafx。對此很多人表示疑惑,認為javafx是落伍的開發技術。對此,我想專門寫一篇文章來做個介紹。
其實很多人并沒有聽說過javafx。現在最新的java教材,在講到GUI技術的時候,還是以swing和awt為主。swing和awt是上一代的Java GUI技術,現在很多銀行、國企的嵌入式設備還跑著swing和awt寫出來的程序。javafx是為了替代swing而產生的庫,它同時支持Windows, MacOS, Linux三種平臺的客戶端程序開發。對于移動端(主要是IOS和Android),開源的javafxports以及相關的商業軟件歸于Gluon旗下,對于手機端做了額外的適配,使得javafx也可以在移動設備上運行。所以,javafx是真正的跨平臺客戶端開發技術。縱觀其他客戶端技術,Electron只支持Windows, MacOS和Linux,Qt對于移動端的支持尚不完善,C#開發GUI程序就更不必說了。
和傳統的java GUI技術相比,javafx在美觀度和運行效率上都有大幅度的提升。javafx對各平臺的GPU圖形API做了封裝,支持在各種平臺上的硬件加速,因此開發者完全可以使用javafx開發大型的三維系統軟件。下面是javafx兩個案例程序,分別展示了圖表和三維圖形。
javafx圖表
javafx 3D
javafx是典型的前后端分離的開發模式。通過fxml繪制界面,css修飾頁面的樣式,java程序則用作后端控制。這種模式與web開發是極為相似的,也提高了程序的可維護性。
有的同學可能會認為用java做客戶端程序不合理。但是Matlab、IDEA、Eclipse等軟件都是java寫出來的,而且它們都取得了重大的成功。其實技術是用來實現目的的,只要能完成需求,客戶不會管你用的什么技術實現的。而且由于javafx是真正跨平臺的GUI技術,開發軟件的時候,不需要給windows, Mac, Linux, Android, IOS分別配團隊,只需要一份代碼就可以了(或者只需要做少量平臺適配相關的修改)。Office、visual studio這種大型軟件,因為沒有使用跨平臺的技術開發,微軟現在想把它們遷移到新的平臺就非常困難。
2018年JDK11發布之后,Oracle將javafx歸于openjdk項目之中,目的是為了加速javafx的發展速度。目前,jdk8中集成了javafx,而后續版本的jdk則移除了javafx,目的是實現模塊化。如果想在jdk11中使用javafx,可以通過maven導入javafx的依賴,也可以自行下載javafx并放到jdk中,總體而言并不麻煩。不過初學者還是使用jdk8比較好,熟悉之后再升級到jdk11。
除了使用javafx庫中的組件進行開發以外,開發者還可以使用javafx中的webview開發程序,這也是很多微信小程序和移動端程序常用的開發模式。雖然這種開發方式降低了運行速度,但是開發速度則大大提高,因為前端的工具鏈對于開發GUI程序實在是過于友好。javafx的webview加載和運行速度其實還算比較快的,筆者曾經對不同框架下的webview性能做過測試,發現2012年發布的javafx webview比2020年的Qt、安卓的webview速度還快,僅次于Electron(畢竟Electron是正經的套殼瀏覽器)。javafx的webview對HTML5的支持非常好,對css的支持稍微差點,但是基本不影響使用。
使用IDEA + scenebuilder是目前最好的開發javafx程序的方案。其中IDEA支持css和fxml的語法提示和高亮,scenebuilder是所見即所得的fxml生成器,可以通過拖拽的方式繪制界面。不過我不推薦拖拽組件,因為這種方式構建界面是有限制的,不能做出復雜的界面效果,而且自適應屏幕大小的時候也比較麻煩。繪制網頁的時候也是這樣,一般都不用編輯器,手寫HTML + CSS是最好的。
如果想要學習javafx的話,可以看我上面一篇關于跨平臺GUI技術對比的文章。后面我也會陸續更新javafx相關的技術指導。
總結
以上是生活随笔為你收集整理的eclipse为什么导入不了awt_为什么选择javafx?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lj245a引脚功能图_技术文章—教你快
- 下一篇: 传说之下地图素材_文旅黄陵——轩辕黄帝传