借助Web技术,桌面用户界面将保持活跃
要了解Java桌面應用程序有什么問題,讓我們看一下JavaFX(桌面應用程序的領先UI框架)的新功能。 很明顯,它正在向Web方法發展,從Web世界中借用了越來越多的功能。 JavaFX支持一部分CSS功能,并附帶其自己的屬性。
但是,這一切都與網絡為UI提供的功能相去甚遠。 另一個重要方面是工具。 您是否看到過與開發人員工具以及用于桌面UI設計的所有流行Web瀏覽器一起出現的任何東西? 最后,隨著JNLP在Java 9中被棄用 ,它肯定不會在桌面上添加點。
但是,為什么臺式機仍在運轉? Web方法覆蓋了一些非常重要的事情:
- 離線模式
- 與外圍設備的高級集成
- 本地數據/文件處理
使用新的Web標準(例如Service Worker)可以部分解決這些問題,但是如果我們能夠實現將Web UI開發技術和工具引入桌面Java應用程序的技術,那就太好了。 如果我告訴您市場上有一款應用程序能做到這一點怎么辦?
什么是電子?
這就是Electron的用武之地。它以前被稱為Atom Shell,是GitHub Atom編輯器的一項技術。 Atom是第一個使用HTML,JavaScript,CSS和Node.js集成構建的廣為人知的桌面應用程序。
Electron是一個開放源代碼框架,允許使用Web技術開發桌面GUI應用程序。 您可以使用最初為Web應用程序開發的前端和后端組件:JS用于后端,HTML / CSS / JS用于前端。
簡而言之,Electron由兩個主要組件組成:Node.js后端以及單個可執行文件中的Chromium Web瀏覽器,以及其他桌面集成:本機菜單,通知,任務欄圖標,安裝程序等。
為什么我們需要這種方法?
首先,我們可以解決當前Java桌面UI世界的許多問題:
- Java桌面技術沒有發展
- 與Web相比,Java可用UI庫的集合要小得多
- 使用JavaFX很難實現響應式,豐富的UI
除此之外,電子生態系統還具有許多有用的工具:
- 適用于所有主要操作系統的安裝程序
- 平滑的自動更新子系統
- 崩潰報告
最后,它是一種開源技術,并且是現代UI的前沿。
只有一個小問題……電子完全與JS有關。
有兩種方法使其適合Java應用程序:
- 使用GWT客戶端構建應用程序并將其編譯為JS
- 在服務器端Java框架中編寫代碼,并將servlet容器捆綁在應用程序內部
如果我們想通過Java代碼提供高級硬件集成和本地文件系統訪問,則方法1不是可行的方法。
第二種方法可以使用嵌入式的servlet容器(如Jetty)和Java進程的自動啟動/停止過程來實現。 因此,我們將在客戶端PC上具有功能齊全的Java流程,并且能夠同時使用Java和Electron功能。 好吧,事實證明,這很容易做到!
我將在 GitHub上 提供的教程中向您展示為桌面應用程序制作自己的UI工具包的完整分步過程 。 檢查一下,看看如何在桌面應用程序中利用網絡技術的力量:
混合方法的好處
將Web應用程序包裝在本機應用程序中的混合方法有什么好處?
- 我們擁有對臺式機的完全訪問權限:硬件,文件系統,安裝,通知以及與操作系統的集成。
- 我們可以使用JS / CSS開發UI小部件,同時將Java用于業務邏輯。
- 我們可以重用現有的JS / CSS庫和方法。
- 我們甚至可以捆綁現有的Vaadin應用程序以供桌面使用!
我們如何在現實生活中使用它?
CUBA Studio是基于CUBA平臺的功能強大的企業應用程序開發工具。 使用Studio,應用程序可在數分鐘內啟動并運行。
我們已經將Vaadin用于CUBA Studio已有4年了,并且一直以來,它都是一個在本地運行的Web應用程序,但是在Web瀏覽器中顯示UI。
今年,我們推出了新版本的CUBA Studio,該版本使用Electron為我們的用戶帶來更好的UX。 它使開發人員無需網絡瀏覽器即可將CUBA Studio用作獨立的桌面應用程序。 我們可以利用操作系統的所有優點,例如任務欄,使用快捷方式在應用程序之間快速切換以及在關閉窗口時關閉應用程序。
讓我如此高興的是,我們將現有的Java代碼捆綁在一起而沒有任何更改! 好吧,幾乎沒有變化。 當然,我們改善了幾件事。
通過這種方法,我們可以:
- 桌面集成:任務欄,窗口切換,關閉時關閉
- Chromium for UI的所有功能,包括CSS動畫,Canvas甚至WebGL
- 瀏覽器的受控版本,因此在Chrome更新的情況下不會破壞應用程序。 更重要的是,我們在發布之前測試了相同版本的UI引擎。
在下一版本中,我們計劃引入新功能:
- 多窗口支持
- 有關構建/部署事件的桌面通知
- 流暢的自動更新
這些功能可用,因為我們不再受網絡瀏覽器的限制。
結論
綜上所述,Electron在現代桌面應用程序框架市場上已成為非常強大的參與者。 這是一種有趣的方法,可以利用Java Web技術的最新功能來幫助Java應用程序在桌面上外觀和性能更好。
您可以在GitHub上找到具有本文中描述的所有技巧的更復雜的應用程序: https : //github.com/jreznot/electron-java-app
如果您想嘗試基于這種方法的應用程序,我建議您看看CUBA Studio SE 。
翻譯自: https://www.javacodegeeks.com/2018/06/desktop-uis-web-technologies.html
總結
以上是生活随笔為你收集整理的借助Web技术,桌面用户界面将保持活跃的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《GTA5》发售十周年,官方推出新服装和
- 下一篇: groovy 2.5.4_Java 7