2009-09-16 156 views
8

我用於開發Java(Struts,Spring,JSP ...)中的Web應用程序。但現在我想開發一個桌面。我從來不喜歡用Java設計窗口(AWT,Swing,SWT):對於難看的界面來說,工作太多了。所以我認爲如果可以利用我的網絡應用技能,這可能是一個好主意。一種選擇是修改SWT瀏覽器並調用Java函數而不是HTTP請求。一個非常好的插件就是使用JSP。最後,我認爲可能有一些框架或工具。使用HTML開發桌面應用程序視圖,作爲web應用程序

你認爲我提出的是一個好主意嗎? 有一些這樣的框架?

我需要這個輕量級應用程序。所以我認爲嵌入一個Tomcat服務器並將它用於HTTP請求並不是一個好主意。

感謝您的幫助。

編輯:一個示例應用程序可能是文件夾比較器:您指定了兩個文件夾,並且該應用程序顯示您至少需要的文件夾和文件不同。在這種情況下,我認爲打開外部瀏覽器很醜陋。膨脹的應用程序(與其服務器,MVC等)不會是最好的選擇。

+0

請使用Adobe AIR之類的東西。極好的。非常容易。我們取得了非常好的成績。 – 2009-09-16 15:25:10

+0

您可能也喜歡Titanium。它們還允許您運行Ruby和Python。 – 2009-09-16 15:25:40

+0

感謝您的回答。 AFAIK,AIR和Titanium不適用於Java開發,所以我的代碼不會成爲混淆平臺。另外,你沒有得到一個可執行文件,你必須安裝它的啓動程序。請糾正我,如果我錯了。 – sinuhepop 2009-09-16 16:11:50

回答

1

我不會打折嵌入Web服務器。我之前通過嵌入Jetty的網絡啓動應用程序完成了此操作。

下載相當快,服務器啓動時,您可以使用BrowserLauncher立即開車將瀏覽器嵌入式服務器,因此你的應用程序。碼頭設計爲模塊化,佔地面積小,因此您可以將其裁減爲最基本的必需品。

+0

將輕型服務器嵌入Jetty並不完全排除。也許我會做的是我沒有找到像我所要求的東西。 謝謝。 – sinuhepop 2009-09-16 16:27:05

1

有幾種選擇:你可以使用Firefox的插件API,並在那裏開發你的應用程序。您可以使用HTML,JavaScript,內置數據庫,所有瀏覽器功能和訪問操作系統級別。

或者您可以嘗試PyQt(Python和Qt),它允許非常快速地編寫簡單的應用程序。

您面臨的主要問題是安全性:出於安全原因,JavaScript應用程序(運行在HTML頁面中)無法訪問本地操作系統資源。因此,除非您的瀏覽器允許您使用JavaScript編寫插件(這僅適用於FF AFAIK),否則無法編寫使用HTML作爲「視圖」的應用程序,而無需其他幫助。

此外,當涉及到應用程序的功能時,HTML非常有限。 HTML被設計成「靜態文檔視圖」而不是「應用程序」。你可以做GMail之類的事情,但如果你比較GMail和任何真正的郵件應用(Outlook,Thunderbird,Notes),你會很快看到真正的桌面應用提供了更多的功能。

+0

感謝您的回答,但我認爲這不完全是我正在尋找的。我想創建一個獨立的應用程序,並且不需要安裝Firefox或任何其他應用程序(Java除外)。 PyQt可以成爲桌面應用程序的一種很好的方式,但是Python不是Java而Qt不是HTML。其實Qt更像是Swing等問候。 – sinuhepop 2009-09-16 15:34:03

+0

查看我的編輯:如果你堅持所有的觀點,你想要的可能是不可能的。 – 2009-09-17 07:42:59

2

如果您已經使用JavaScript庫 - ExtJs - 那麼您可以將它與Adobe AIR結合使用來構建外觀良好的基於​​桌面的Web應用程序。

在Adobe AIR中構建應用程序也非常簡單,並且使用了flex構建器ide。

+0

我愛ExtJS;)如前所述,問題在於AIR不適用於Java編程,您將不會獲得可執行文件:用戶必須安裝AIR。請糾正我,如果我錯了。謝謝! – sinuhepop 2009-09-16 17:16:36

+0

你必須試試Aptana。他們有很多例子可以幫助你。 – 2009-09-17 07:44:50

+0

您可以使用merapi API(java代碼),然後使用AIR前端。將應用和安裝程序捆綁在一個集合中。 – techzen 2009-09-17 08:27:15

2

如果您選擇嵌入輕量級服務器,請檢查winstone不完全符合J2EE標準,但應足以滿足您的需求。 關於瀏覽器,我並不是swt自己的粉絲,它使很多跨平臺部署變得複雜,因此可能值得留意jwebpane,還沒有完全準備好,但可能是您需要的解決方案。