2008年4月9日 星期三

RIA

Adobe的RIA開發工具加入排版(Layout)的概念,使得過去很麻煩的介面設計,更為彈性。例如開發人員可以設定參考線,讓應用程式中的物件依據參考線自動對齊,不需每次手動改變畫面配置。

RIA開發的困難是,使用者行為是變動的,不像過去的系統是固定的,過去開發人員面對系統,規格是可控制的,但是現在面對使用者,無法限制使用者的行為,過去Client-Server的開發概念不能完全套用在RIA的開發,「RIA不只是炫,開發人員必須先思考如何讓程式容易使用,才能開發出好的RIA應用。」


Adobe - Adobe Flex
Rich Internet Application (2002 Macromedia , 2005被併購)
=>讓網頁具備傳統桌面軟體的行為與功能
Web Player : Flash Player、Shockwave
Develop Tools : Studio MX , Macromedia MX ,Interface : ColdFusion ,Integration : Flex , Apollo

Microsoft - Silverlight
Rich Interactive Application
Develop tools : ASP.NET、ASP.NET AJAX、JavaScript、WCF、WorkFlow

2008年4月4日 星期五

ZK Ajax框架

轉自 http://scw1109.wordpress.com/2006/07/13/zk-ajax-but-no-javascript/
如果要開發大型的 Ajax 專案非常值得考慮使用。
ZK 的假想敵是 Echo2,
ZK 認為 Echo2 使用的 Swing like 開發方式,是在假設開發人員都用過 Swing。
而我個人也是非常反對這點,因為這樣美工人員完全無法進場。

ZK 本身使用的是標準 XUL (XML User Interface Language) 的擴充稱為 ZUL,我目前沒有去了解 XUL 跟 ZUL 的差別有多少,但看起來差異不是很大。
ZK 也是一個 Java-based 的 framework,跟大部份的 Java web application framework 一樣,由一個 front controller servlet 去接所有 *.zul 的 request,server 會把 parse 成 html。而 ZUL 的語法大概如下:

Hello, World!

不難想像還會有 button, checkbox 等 ZUL 元件,這點跟 JSF 或是 OpenLaszlo 倒是差異不大。ZUL 的 tag 本身可以使用 css 或是 javascript。
在大型的 Ajax 專案裡,講究的是有沒有一個夠強的 framework 提供足夠的基礎元件、讓美工與開發人員簡便的合作。上面提到的幾個 framework:ZK、Echo2、JSF 和 OpenLaszlo,第一個出局的是 Echo2,不管它做得怎麼強大,網頁美工絕對不能拿來當 Swing 搞。第二個有問題的是 JSF,JSF 在 Struts 的影子之下,後端雖然強大,但前端仍然很少著墨。規範中前端的元件少得可憐,如果要找免費好用的元件恐怕不是很容易。再說 JSF 對 Ajax 支援有限,而且用起來綁手綁腳的,如果只是為了 Ajax 是沒必要跟自己過不去。OpenLaszlo 已經是很成熟的東西了,觀念上跟 ZK 非常接近,同一份 code 能產生 Flash 跟 DHTML 兩種模式實在是讓人讚嘆。只是用的是獨規的語法,比起 ZK 用類 XUL 的語法好像差了一些。在切割 MVC 這三件事上面 OpenLaszlo 也有點模糊不清,而且以我對 OpenLaszlo 粗淺的了解,沒有看到 control tag,反之 ZK 對於 if condition, iterating 等等都有考量到,這也是 ZK 優勢所在。ZK 還有一個好處是看來 extends 它的 class 或是做 custom 的元件不是很難。但是 OpenLaszlo UI event 直接 call Web Service 的模式可謂是 SOA 的奧義,非常有用。
總合以上,我覺得 ZK 跟 OpenLaszlo 都是很值得考慮使用的。可能你會發現怎麼沒提到 Dojo?因為 Dojo 現在已經成為 JavaScript component 的地下標準了,每家都讚助它,使用它。ZK 已經結合 Dojo,OpenLaszlo 也有在做這件事。看完 ZK 跟 OpenLaszlo,JSF 又再被我打入冷宮了,我寧可用 Spring Web Flow 去把 ZK 或 OpenLaszlo 的頁面接起來也不想用那一大包沒多少建設的東西。要不就使用奧義:OpenLaszlo + BPEL + ESB 往軟體工程的烏托邦前進。可惜的是 Gavin King 的 JBoss Seam 綁死用 JSF,就連帶被判出局了。之前有人做一個 HSE (Hibernate + Spring + Echo2) 的 framework,是時候來做 OLSH (OpenLaszlo + Spring + Hibernate) 或是 ZSH (ZK + Spring + Hibernate) 了。

資策會推廣ZK Ajax框架,為臺灣研發軟體扎根
文/黃彥棻 (記者) 2008-04-04

資策會與普奇科技合作,將於4月下旬首度推出由臺灣自行研發、揚名全球的ZK Ajax框架的技術解析與實戰課程,適合Java開發工程師學習。

由臺灣軟體公司普奇科技自行開發的ZK Ajax框架,不僅獲得財星前500大公司,包括巴克利銀行、昇陽、朗訊等公司的採用,更是Open Source網站SourceForge.net在Ajax分類中,下載第一名的開源軟體。為了推廣開源軟體的使用,並推廣臺灣自行研發的Ajax框架,資策會數位教育研究所將於4月下旬,首度推出ZK核心技術解析與實戰的推廣課程。

資策會數位教育研究所教學組長蘇國鈞,同時也是資策會Java課程的授課講師。他表示,一般的Java開發工程師相較於微軟.NET開發工程師,更習慣使用各種開源軟體做開發工具。而近兩年相當普遍的Ajax框架,因為具有豐富的前端動態效果,頗受開發人員青睞。

蘇國鈞在使用過ZK Ajax框架後,發現ZK解決了不同瀏覽器的JavaScript語言版本不同的問題。基於推廣開源軟體,加上ZK原廠普奇科技也希望能在臺灣推廣這一套Ajax框架,資策會決定推出ZK相關課程。

目前資策會數位教育研究所在臺北、中壢、臺中和高雄都有訓練中心,「希望至少能培訓3~4名種子講師,以應未來其他地區的開課需求。」蘇國鈞說。從整個課程規畫來看,蘇國鈞表示,ZK適合Java開發工程師進一步學習。

ZK Ajax的框架在SourceForge.net的Ajax分類上,下載已經超過60萬次,名列Ajax類別第一名,不分類的下載次數也是前5名。普奇科技ZK產品經理顏瑾和表示,ZK這麼受歡迎的原因在於簡單上手、表現豐富及擴張性強。

很多Ajax框架都必須使用JavaScript語言,而ZK是一個伺服器端的Ajax框架,蘇國鈞表示,這可以打破以往前端需要表現動態效果時,必須配合不同瀏覽器撰寫不同JavaScript的難題。顏瑾和則表示,使用ZK框架開發所有Web端的應用程式,只需要專心寫伺服器端的Java程式,不僅上手容易,也可以直接呼叫資料庫的資料,再加上所有商業邏輯都不會傳送到用戶端,也沒有被網路攔截的疑慮,也顯得較為安全。

「ZK至少有超過170種基本元件,」顏瑾和說, ZK也將其他一些好用的開放源碼工具包在ZK的擴充元件中,也使得ZK能有非常豐富的表現。ZK框架對程式開發者而言,最大的優點在於能彈性擴充,顏瑾和舉例,如果開發工程師使用JSF的平臺,若需要ZK某一些功能,可以彈性採取類似插卡的方式,在頁面上插入JSF的自動元件即可。

資策會在這一次的課程中,則會設計一個實機操作的課程內容,會利用ZK相關的元件和工具完成一個美食地圖。顏瑾和表示,主要會運用ZK有3個重要的元件,包括ZK Google Maps、Border Layout和Data Binding,完成一個美食地圖。

顏瑾和進一步指出,ZK Google Maps具有滑鼠拖拉、即時顯示的特色,能完成美食地圖的地圖呈現部分。再者,Border Layout則能夠分割功能責任區塊,完成美食地圖框架,可以依照不同目的作動態呈現。最後,Data Binding可以動態連結Java Bean和ZK的使用者介面(UI),連結ZK UI的後端資料模型。文⊙黃彥棻

ZK美食地圖3元件功能說明一覽表
元件名稱  ZK Google Maps Border Layout Data Binding
功能   拖拉,放大縮小,座標指定,標記特徵點 排版、設計、分割功能責任區塊 動態連結Data Model (Java Bean)與ZK的 UI部分
角色   完成美食地圖的地圖呈現部分,使用Google Map所提供的眾多功能 完成美食地圖的框架, 達成依目的不同而動態呈現的需求 連結ZK UI 元件與後端資料模型
優點 ● 快速以XML標籤方式宣告Gmap物件
● 數行程式碼可寫出Ajax的地圖應用 ● 直覺式呈現方式
● 可以動態調整版面寬度與高度 ● 可快速結合前端 UI與後端商業邏輯
● 可自動管Java Bean Setter與Getter行為
資料來源:普奇科技,2008年4月

關於我自己

Aspire freedom , Hope to do Soming make self complete ~