Dennis' Blog of Indiscriminate | I thought what I’d do was, I’d pretend I was one of those deaf-mutes

Mar/07

9

Remote Desktop Friendly 的 Java

第一次寫比較自創性嘅文章,請指教。

當提到 Java 的 UI,以前人們會話太慢。

當然,Sun 在近年在提昇 Swing performance 做得唔算差(只限效率,唔計功能)。
又有強大的 Eclipse 小組開發的 SWT。

可以話 UI 設計上已經唔係一個問題,要寫的總有方法做到。
今次我想寫的題目,不是老舊的 Performance, Native Look&Feel, Deployment, Platform independce 等等。
而是它是否 Remote Desktop(Terminal Server) Friendly。在這文中的 Remote Desktop 不單只是 Windows 的 RDP, 而是所有 remote 存取方式(如 VNC)。


為何你要在意 Remote Desktop Friendly

如果你要開始一套系統給數百人使用,你可以
1. 使用數百部強大的 PC (P2P, Distributed computing)
2. 使用數百部中級數的 PC, 加上中級 server (Sharing resource)
3. 使用數百部中至低級數的 PC, 加上高級 server (Client server / Browser Server)
4. 一至數部高級 server, 加上無數 thin client

以現在常見的做法,主流的設計方式不是 WebBased (B/S) 就是 Client Server (C/S)。
Web-based 未必有能力滿足其要求(http/html/javscript 所限)
如使用 RPC 方式則有開發比較慢/困難的問題 (因技術上有機會出問題的地方比較多)
而且,近年開始有公司因為成本,維修,管理或其他因數而轉用接近沒有運算能力的 Thin Client。(如: 電力,空間,硬件真實使用率,保安理由)

遺失 Notebook, Harddisk 會做成保安問題;近年 CPU 又食電又熱(花更多電在 cooling/air condition);
當新版軟件要求更強硬件時,做成不達到最低要求的 PC 都得放棄(Thin client 的話, 只是每部 server 負責的client數目減少)


比較 SWT 和 Swing 在 remote desktop 的表現

如果你認識 SWT 的話,你會知道它是用 Native UI 來表現的;而相對的 Swing 則以是 “自己動手畫” 來達到跨平台而統一特性。

近年 Swing 應用了大量 DirectX 和 OpenGL 技術,以硬件加速達到效率。
可是呢,在 thin client 的世界跨平台不重要,因為只有少數被良好管理著的 server,DirectX 和 OpenGL 也無用武之地。
卻因為它在自行管理顯示方式,而令 Terminal Server 不能分開解讀每一個元件。而被迫每次都從 Host 能理解的部份--整個視窗,比較、更新、傳送。
所以,當你在 Remote Dsktop 使用 Swing 程式時,你會看到它的視窗經常由上而下重畫,因為 thin client 只能以 bitmap 方式理解其內容。

而 SWT,則加以善用其 Native UI 的優點,在小量更新時(改動一個 label 或 button),Host 的系統有機會正確解讀出 thin client 能理解的簡單的幾個指令。
從而達至減少浪費 broadwidth。

—-
為何還寫 Java??

我相信,Java 除了它往日強調的跨平台外,它本身有其他更好的優點;Java 是一種很易理解和不易出錯的語法,良好的 unicode 支持和強大 IDE。

RSS Feed

No comments yet.

Leave a comment!

<< 美國研究稱手機使用不會影響醫療設備運轉,醫院沒必要禁用 – Yahoo! 新聞

MBTI(Myers-Briggs Type Indicator,邁爾斯·布裏格斯性格分類法) >>

Theme Design by devolux.org