[英]Is it possible to create Desktop Application using Java backend & Web Technologies UI
我想用 Java 和 Web 技術創建一個桌面應用程序。 選擇 Java 的主要原因是它是免費的、開源的,因此我們的投資會很小,我們會在許可成本等方面節省大量投資。 另外,選擇 Web 技術的主要原因是我們目前的程序員精通 HTMl、css、Ajax 等 Web 技術,並且我們在使用 Web 技術創建令人驚嘆的 UI 方面擁有豐富的經驗。
我會給你一些關於我們想要創建的軟件的想法。 它將是一個基於桌面的軟件,即類似於 ERP 軟件的東西。
關鍵要求是應該有一個很好的 UI,它應該是快速的並且不是非常占用資源。
我聽說實現一個偉大的 GUI 是可能的,但在 Java 中很難。 它可以完成但很復雜,而在 Microsoft 產品 Visual Studio 中執行相同操作非常簡單。
我還檢查了 Adobe Air、諾基亞 QT 等,但它們對我們來說都非常昂貴,我們正在尋找使用 Java 技術的前端瀏覽器 UI 和后端嵌入式服務器/數據庫。
是否可以創建一個桌面軟件,其中使用 Web 技術創建 UI,並且有一個嵌入式服務器(如 jetty 或 tomcat)和數據庫,后端編程將使用 Java。 JavaFX 如何適應這種情況?
所以基本上,桌面應用程序會有一個嵌入式瀏覽器(mozilla 或一些可以與軟件打包的 Java 瀏覽器),但最終用戶永遠不應該意識到這一點。
我期待收到有關相同的反饋。 您能否提供一些以類似的 Java + Web 技術組合創建的軟件示例。
我確實研究了一些類似 PulpTunes 和 Zimbra 的軟件,但它們似乎連接到互聯網以顯示數據。 我們的軟件將完全是一個離線桌面應用程序。
首先,這是可能的。 如果您正在尋找示例,請查看http://wiki.eclipse.org/Hudson-ci/Meet_Hudson 。 如果你深入研究他們的代碼,你可以獲得基本的架構。 它不使用任何嵌入式數據庫。 您是說您的應用程序將始終處於脫機狀態,在這種情況下,我建議您使用 Eclipse 插件開發等技術開發純桌面應用程序。
如果您已經下定決心,根據我在類似應用程序中的經驗,這里有一些可以幫助您的要點,
盡管您的應用程序處於離線狀態(我假設您的應用程序不需要連接到任何用例的任何服務器,但用戶機器可以訪問互聯網),但您需要透明地交付更改(例如,更改 html 或 jsp 頁面)/錯誤修復給最終用戶。 JNLP/Java web start 非常適合這個。
如果您要采用 JNLP 安裝方式,您的啟動器應該負責最終用戶機器上的嵌入式數據庫安裝和端口(這是一個比看起來更大的問題)。
此外,如果您通過 JNLP 啟動服務器(在我的例子中是 Jetty),由於權限問題,您會遇到類加載錯誤。 准備好挖掘服務器代碼。 我很久以前就做過了,現在我沒有代碼來指出確切的問題。
在安裝過程和應用程序啟動期間顯示進度條。 您的戰爭部署需要一些時間,用戶需要知道應用程序正在啟動。 您最終將編寫一些 Swing UI。
應用程序啟動后,在用戶系統的默認瀏覽器中自動啟動應用程序的 URL。 您不需要嵌入式瀏覽器。檢查http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/ 。
對的,這是可能的。 請參閱https://github.com/jreznot/electron-java-app演示。 在那里,您將找到一種在 Java 上構建基於 Electron 的應用程序的簡單方法,無需編譯為 JS,只需在帶有 Vaadin UI 的嵌入式 Jetty 實例中構建 Java 應用程序。
我們正在尋求做一件非常相似的事情。 我們有一個現有的 Java Web 應用程序。 我們已經測試在安裝了 Jetty 和 MySql 的桌面系統上運行它。 當 Chrome 瀏覽器處於“應用程序”模式時,它看起來就像一個桌面應用程序。
我們正在研究這種方法,作為實現我們現有成熟在線 Web 應用程序的跨平台 (pc/mac/linux) 離線版本的一種方式。 我想聽聽是否有人知道類似的項目,或者可以在為桌面應用程序運行應用程序服務器的想法中找到任何漏洞。 當然,我們的目標是為服務器和桌面實現提供一個基本的代碼庫,並在必要時提供受保護的變體。
你說得對,如果你自己開發一個項目,java 是很棒的。
服務器端編碼可以使用 Spring(對於 MVC、數據庫等......非常豐富和輕量級的框架,易於學習和理解)和 hibernate(用於數據庫處理的 ORM 框架,為任何數據庫服務器提供方言)完成。
對於 UI,您可以使用 Spring MVC 或 JSF 或 GWT 或 javaFX。 JavaFX 提供 JNLP 下載,它在 Java 上運行,無需瀏覽器。 查看鏈接以獲取更多 JavaFX 示例。 http://javafx.com/samples/
所以它在你身上,你想在 UI 方面使用什么。 如果您更喜歡 Web UI(我的意思是不是 javaFX),那么您可以有很多選擇。
對於 Ajax,您將擁有支持簡單 ajax 的庫。 像 DWR (Easy Ajax, JS to JAVA) 和許多其他 JS 庫像 yahoo, jQuery 等等.. 可以使用。
希望這可以幫助。
恕我直言,運行網絡服務器只是為了使用 js 和 ajax 和其他東西創建桌面應用程序的整個想法太可怕了......我聽說Apple-creator Titanium允許使用網絡技術創建跨平台應用程序。 還有其他幾個類似的程序。
我認為您最終會更好地為 java ui 購買一個好的 wyswing Swing 設計工具,這將花費您幾百美元,但會為您節省很多開發麻煩。 很難相信布置一個漂亮的桌面應用程序比布置一個網頁更復雜。
我沒有得到嵌入式碼頭/tomcat 部分。 您希望桌面應用程序運行與數據庫對話的嵌入式服務器嗎? 那么每個桌面應用程序都會打開一個數據庫連接?
為什么不用 Java 桌面應用程序將 HTTP 請求發送到連接到數據庫並處理請求的 JavaEE 服務器? 所以基本上,一個 Java 客戶端(它可以像你的開發人員一樣豐富)取代瀏覽器。 這為您提供了更多的可擴展性等。
我們在桌面上使用 Swing + Apache Commons HttpClient 開發了一個類似的(盡管要復雜得多)產品。 這會向服務器發出一個帶有序列化二進制數據的 HTTP POST 請求。 - 在 Web 容器中運行的調度程序 servlet,它在服務器上重新創建 Java 對象並執行請求。
我可能會為此感到震驚,但我建議為此使用 JavaFX。 我們已經成功地實現了一個 JavaFX 應用程序供一家大公司內部使用。 優點是軟件是在服務器端“控制”的(因此,沒有人會有“舊”版本)。 安裝工作量很小(Java Web Start 為您修復了這個問題,如果不存在,它甚至會觸發最小的 JRE 安裝),最后但並非最不重要的是,JavaFX 可以在瀏覽器中運行,也可以作為純桌面應用程序運行,而無需更改編碼。
Adobe FLEX 是另一個競爭者,但它缺少“Web Start”位,並且在瀏覽器和桌面之間的輕松遷移方面不夠靈活。
無論如何,JavaFX 的功能不像 FLEX 那樣完整,但 1.3 版可以被認為是戰斗就緒的,您可以使用 Adobe Creative Suite 的免費 JavaFX 插件創建整潔的東西(如果您的應用程序將包含任何圖形,那就是)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.