用于RIA的JavaFX 2與HTML5

這些天來,我們正在啟動一個新項目,以實現Rich Internet Application(RIA) 。 第一個問題是:我們應該使用哪些技術和框架? 后端將是Java或其他現代JVM語言,因為我們主要是經驗豐富的Java開發人員。 在大多數用例中,我們也更喜歡Web框架,該框架主要允許使用Java進行編碼,因為我們中的許多人僅具有有關HTML和JavaScript的基本知識。

必須為即將到來的項目做出決定: 我們是否應該使用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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372719.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

插件化編程實現的一份糖炒栗子~~

迷茫的原因是因為想得太多,做得太少。因為只是 想 真的很容易,轉瞬之間就會產生無數個念頭,或許是該做點什么了吧。 但是整個人都是懶的,是廢的,是大腦控制不住自己的行為的。解決方案唯有一步一步的去把行為變成習慣。…

用C#來學習唐詩三百首和全唐詩

Begin 最近把項目做完了,閑來無事,就想做點好玩的事情,剛好前幾天下載了【唐詩三百首】和【全唐詩】這兩個txt文件,正好用C#來整理一下。 然后導出QData格式,可以給其他軟件讀取。 以后弄個開機自動顯示一句詩&#xf…

JRockit JRCMD教程

本文將為您提供概述和教程,說明如何使用jrcmd工具對JRockit Java Heap問題進行初始分析和問題隔離。 將來的文章中將介紹使用JRockit任務控制和堆轉儲分析(僅限JRockit R28 版)的更深入的分析和教程。 有關JRockit Java堆空間的快速概述&…

sts java配置tomcat_STS配置Tomcat.9.0

今天,心血來潮,弄了一下STS,按著建立WEB項目的方式建立工程。一、新建工程(FILE --NEW--Dynamic Web project)二、輸入項目名稱,TestWeb,然后下一步,點擊FInish.三、新建index.jsp并打開index.jsp,書寫測試成功&#x…

javaweb國際化

根據數據的類型不同,國際化分為2類:靜態數據國際化和動態數據的國際化。 靜態數據,包括 “標題”、“用戶名”、“密碼”這樣的文字數據。 動態數據,包括日期、貨幣等可以動態生成的數據。 國際化涉及到java.util.Locale和java.ut…

20145335郝昊《網絡攻防》Bof逆向基礎——ShellCode注入與執行

20145335郝昊《網絡攻防》Bof逆向基礎——ShellCode注入與執行 實驗原理 關于ShellCode:ShellCode是一段代碼,作為數據發送給受攻擊服務器,是溢出程序和蠕蟲病毒的核心,一般可以獲取權限。我們將代碼存儲到對方的堆棧中&#xff0…

Java枚舉益智游戲

假設我們有以下代碼&#xff1a; enum Case {CASE_ONE,CASE_TWO,CASE_THREE;private static final int counter;private int valueDependsOnCounter;static {int sum 0;for(int i 0; i<10; i) {sum i;}counter sum;} Case() {this.valueDependsOnCounter counter*counte…

jp在java中無法編譯_JPanal上加圖片的問題!

JPanal上加圖片的問題&#xff01;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.*;import java.awt.*;public class Frame1 extends JFrame {JPanel contentPane;JLabel jLabel1 new JLa…

玩轉Android之加速度傳感器的使用,模仿微信搖一搖

Android系統帶的傳感器有很多種&#xff0c;最常見的莫過于微信的搖一搖了&#xff0c;那么今天我們就來看看Anroid中傳感器的使用&#xff0c;做一個類似于微信搖一搖的效果。 OK ,廢話不多說&#xff0c;我們就先來看看效果圖吧&#xff1a; 當我搖動手機的時候這里的動畫效果…

圖像

背景圖案的設置 將圖片插入到網頁中去 用圖像作為超鏈接 使用工具建立地圖索引 切片索引 為網站添加圖標 5.1 背景圖案的設置&#xff08;背景不占位置&#xff0c;不影響文本的輸入&#xff09; 格式&#xff1a;<body background"URL"> 5.2 將圖片插入…

Maven構建依賴項

熟悉發行版和快照依賴項的Maven和Gradle用戶可能不了解TeamCity快照依賴項&#xff0c;或者認為他們與Maven相關&#xff08;這是不正確的&#xff09;。 熟悉工件和快照依賴關系的TeamCity用戶可能不知道&#xff0c;除了TeamCity提供的插件之外&#xff0c;添加Artifactory插…

Java兩種設計模式_23種設計模式(11)java策略模式

23種設計模式第四篇&#xff1a;java策略模式定義&#xff1a;定義一組算法&#xff0c;將每個算法都封裝起來&#xff0c;并且使他們之間可以互換。類型&#xff1a;行為類模式類圖&#xff1a;策略模式是對算法的封裝&#xff0c;把一系列的算法分別封裝到對應的類中&#xf…

Problem E: 平面上的點——Point類 (II)

Description 在數學上&#xff0c;平面直角坐標系上的點用X軸和Y軸上的兩個坐標值唯一確定。現在我們封裝一個“Point類”來實現平面上的點的操作。 根據“append.cc”&#xff0c;完成Point類的構造方法和show()方法&#xff0c;輸出各Point對象的構造和析構次序。 接口描述&a…

MFC 控件RadioButton和CheckBox區別

1. 單個RadioButton在選中后&#xff0c;通過點擊無法變為未選中 單個CheckBox在選中后&#xff0c;通過點擊可以變為未選中 2. 一組RadioButton&#xff0c;只能同時選中一個 一組CheckBox&#xff0c;能同時選中多個 3. RadioButton在大部分UI框架中默認都以圓形表示 CheckBo…

什么是ActiveMQ?

盡管Active MQ網站已經對ActiveMQ進行了詳盡的介紹&#xff0c;但我想在其定義中添加更多上下文。 從ActiveMQ項目的網站上&#xff1a; “ ActiveMQ是JMS 1.1的開源實現&#xff0c;是J2EE 1.4規范的一部分。” 這是我的看法&#xff1a;ActiveMQ是一種開源消息傳遞軟件&…

字符串倒著輸出java_Java 輸出反轉字符串

Java 輸出反轉字符串public class Test {public static void main(String args[]){try{// 獲取鍵盤輸入的字符串BufferReader f new BufferReader(new inputStreamReader(System.in));String str f.readline();for (int i str.length() -1 ; i >0 ; i--) {System.out.p…

webpack基礎入門

我相信&#xff0c;有不少的朋友對webpack都有或多或少的了解。網上也有了各種各樣的文章&#xff0c;文章內作者也寫出了不少自己對于webpack這個工具的理解。在我剛剛接觸webpack的時候&#xff0c;老實說&#xff0c;網上大部分的文章我是看不懂的。。webpack里面有很多名詞…

位運算基礎

異或運算的基礎有點忘記了 先介紹一下。。2個數異或 就是對于每一個二進制位進行位運算 具有2個特殊的性質 1、一個數異或本身恒等于0&#xff0c;如5^5恒等于0&#xff1b; 2、一個數異或0恒等于本身&#xff0c;如5^0恒等于5。 3 滿足交換律 1.交換數字這個性質能利用與交換數…

JAXB自定義綁定– Java.util.Date / Spring 3序列化

JaxB可以處理Java.util.Date序列化&#xff0c;但是需要以下格式&#xff1a; “ yyyy-MM-ddTHH&#xff1a;mm&#xff1a;ss ”。 如果需要將日期對象格式化為另一種格式怎么辦&#xff1f; 我有同樣的問題時&#xff0c;我正在同春MVC 3和Jackson JSON處理器 &#xff0c;最…

雙足機器人簡單步態生成

讓機器人行走最簡單的方法是先得到一組步態曲線&#xff0c;即腿部每個關節隨時間運動的角度值。可以在ADAMS或3D Max、Blender等軟件中建立好機構/骨骼模型&#xff0c;設計出腳踝和髖關節的運動曲線&#xff0c;然后進行逆運動學解算&#xff0c;測量每個關節在運動過程中的轉…