必須為即將到來的項目做出決定: 我們是否應該使用HTML5或JavaFX 2實現Web客戶端? 如果您要求Google提供“ javafx或html5”,則找不到太多信息。 在大多數情況下,您最終將在2011年的幾次IT會議上進行一次演講:“移至客戶端:JavaFX和HTML5演講”。 這是Slideshare鏈接(來自JavaOne 2011): http ://www.slideshare.net/steveonjava/moving-to-the-client-javafx-and-html5。 因為此演示文稿無濟于事,所以我們看了一下優點和缺點,這些優點和缺點在下面的博客文章中列出。
但是,讓我們從頭開始...
什么是富互聯網應用程序(RIA)?
RIA沒有真正的定義。 因此,這是此博客文章的定義:
“豐富的Internet應用程序提供具有動畫,效果和多媒體功能的外觀現代的Web應用程序 。 Web應用程序幾乎無法識別為Web應用程序。 沒有具有表單,下拉框或表格的經典HTML用戶界面。 網絡瀏覽器的典型功能(例如書簽或前進/后退導航)通常丟失/不需要。 有時(即,如果您使用Web框架而不只是HTML5),則必須安裝插件(例如Java Runtime Environment或Adobe Flash Player)。 Pokerstars( www.pokerstars.com )是RIA的一個很好的例子。”
備擇方案
在JVM環境中,可以使用幾種替代方法來實現RIA:
- 純HTML5 :很好的解決方案,但是您不能使用Java或其他JVM語言進行編碼。
- Adobe Flash / Flex :已死! 甚至Adobe也轉向HTML5。
- Microsoft Silverlight : 死! 甚至Microsoft Windows 8也轉向HTML5。 (當然,Silverlight并不是真正的JVM解決方案,但是您可以使其與JVM后端一起使用。為了完整起見,我將其添加到此列表中。)
- JavaFX :基于Java的解決方案(在將來替換為Swing)。
- 除了JavaFX(JSF,GWT *,Wicket,Tapestry,Grails,Lift,“ You-Name-It”)之外的其他JVM Web框架 :并非用于實現RIA。 是的,您可以使用這些框架實現RIA。 但是,發展是丑陋的,RIA也將是丑陋的。 那為什么要這么做呢? (請記住我上面對RIA的定義,然后再開始在評論中抱怨!)
* GWT還已經對某些功能提供了很好的(實驗性)HTML5支持: http : //www.google.com/events/io/2011/sessions/gwt-html5-a-web-developers-dream.html =>如果是Google繼續在GWT中添加對HTML5的支持,這在未來幾年中也可能是一個不錯的選擇–您僅使用Java開發,并且不需要瀏覽器插件,因為GWT可以生成純HTML和JavaScript。 但是,也有傳言稱,由于Google的新語言Dart,GWT快要死了。 Google尚未對此發表評論,也未發布GWT路線圖。
因此,問題是何時使用JavaFX 2而不是HTML5來實現RIA(從Java開發人員的角度來看)? 如果您對HTML5或JavaFX不太了解,則應在Wikipedia或google上查找其他文章。
什么是HTML5?
=> http://en.wikipedia.org/wiki/HTML5
重要提示:HTML5是HTML + CSS + JavaScript! 它為現代Web開發提供了多個下一代功能,例如離線存儲或應用程序緩存。
什么是JavaFX?
=> http://en.wikipedia.org/wiki/Javafx
提醒:我們正在談論JavaFX 2.0。 與早期版本的主要區別在于JavaFX現在提供了Java API而不是新的編程語言(JavaFX腳本)。 因此,對于Java開發人員來說很容易學習。
為什么選擇HTML 5 / JavaScript?
優點
- W3C標準
- 這是未來–毫無疑問!
- 無需插件,可以在每個(受支持的)Web瀏覽器中使用
- 已經有許多小部件和功能可用
缺點
- 使用HTML / JavaScript而不是Java進行開發=> Java開發人員的主要缺點!
- 規格尚未最終確定(根據2014年之前的路線圖!)
- 并非所有瀏覽器都支持(尚未)
- 跨瀏覽器開發是必需的(jQuery或Dojo之類JavaScript框架可以解決此問題,但是仍然會增加工作量)
可能,HTML5還有許多其他優點和缺點。 不過,命名的名稱應該足以決定何時使用HTML5或JavaFX。
為什么選擇JavaFX 2?
優點
- 提供Java API =>利用您的Java技能并使用現有的JVM功能和庫
- 提供用于其他JVM語言的DSL,例如Groovy(GroovyFX)和Scala(ScalaFX)。 閱讀本文以了解如何使用現代JVM語言而不是Java來受益:“ JavaFX 2.0和Scala,如牛奶和餅干” => http://www.javacodegeeks.com/2012/02/javafx-20-and- scala-like-milk-and.html
- 可選:“布局”語言FXML以將UI定義與行為分開=>在編程(使用Java)和布局(使用FXML)之間選擇您喜歡的
- 后端和Web客戶端具有相同的開發環境(包括調試,重構等)
- 沒有跨瀏覽器的問題
- CSS支持(如HTML)
- HTML和/或JavaScript可以集成在JavaFX應用程序中
- Swing和JavaFX可以在同一應用程序中使用,因此可以擴展現有的Swing應用程序
- JavaFX 2提供了一個統一的體系結構,可以編寫一次應用程序,然后將其部署到各種上下文中(獨立的應用程序,嵌入在Web瀏覽器中或通過Java Web Start運行)。 將來會添加其他上下文(例如,在移動設備上運行相同的應用程序)。
缺點
- 客戶端上需要Java Runtime Environment
- JavaFX只有一部分是開源的。 Oracle JavaFX運行時和SDK將繼續通過Java Binary Code License發布
- MacFX的JavaFX僅作為Developer Preview提供(GA計劃于2012年中推出)=>參見JavaFX路線圖
- JavaFX for Linux尚不可用(計劃在2012年第三季度開發者預覽版)
- 尚無關于JavaFX Mobile未來的信息(至少我沒有找到任何東西,如果有人有鏈接,請添加評論!)
- 比HTML5提供更少的小部件和其他功能
- 盡管JavaFX是Swing的(未來)替代品,但由于幾個新概念,開發有所不同。 當然,這是添加RIA功能(例如動畫)的結果=>因此,這并不是真正的缺點,并且Java開發人員學習一些新概念比學習HTML和JavaScript更容易
結論
HTML5和JavaFX 2都非常適合實現RIA,包括媒體,圖表,動畫等。最終,它們都有不同的目標受眾:
- 公共Web應用程序應使用HTML5來實現,因為在大多數情況下,都不需要瀏覽器插件。 因此,即使對于Java開發人員,HTML5也無可替代。
- 在企業內部,可能需要插件。 無論如何,Java可能已經安裝在大多數計算機上。 如果所有必需的小部件和其他功能都可用,則JavaFX是企業應用程序的更好選擇,因為Java開發人員可以通過在其著名的JVM環境中進行開發來輕松實現RIA。
享受用HTML5或JavaFX 2實現RIA的樂趣。順便說一句:我們可能會選擇JavaFX作為我們的內部項目,因為所需的Java插件不是止步不前,而且大多數同事都是Java開發人員。
參考: 何時將JavaFX 2代替HTML5用于Rich Internet Application(RIA)? 從我們的JCG合作伙伴 Kai Wahner在關于Java EE / SOA /云計算的博客上的博客。
翻譯自: https://www.javacodegeeks.com/2012/05/javafx-2-vs-html5-for-ria.html