Light weight元件是具有圖形介面的程式要跨不同系統的一種手段. 每個平台的圖形元件種類和API, 長相都不同, 所以程式要跨到另一個系統勢必要大改, 所以用"畫"的方案就是可以在少改code的情形下作移植. 彈性是你要怎樣系統沒有的元件都可以自己做出來, 困難點就是如何做(畫)出來. 這時就需要一些已經有的函式庫. 像GTK+是一個C語言的跨平台圖形函式庫, 使用這套在Unix寫的程式可以輕易的移植到Windows下, 但是程式長相就和win32的元件很不搭, 而且也會犧牲掉一些效能.Java的Swing元件. 就是一個惡名昭彰的大傢伙. 為了彌補AWT跨平台元件的不足(只取每個平台的交集元件), Sun做出了這樣一個東西,讓Java桌面程式在不同平台OS上都有一致的長相. 畫面還算美觀但是初期Bug實在太多, 耗資源又慢速. 只能做一般的程式. 但是Swing的MVC架構提出了一個很有彈性的Renderer和Model使用方式, 是很好的物件導向圖形元件教學及仿效的範例.
手機系統也是一樣, 尤其平台間差異更大. SonyEricsson自己的系統有tab pane, 但是為了顧及其他手機平台, 共同API(Java MIDP)就不會有tab pane, 太多類似的例子所以極為難用. 所以手段也是要有自己的Light weight component, 才能有健全開發應用程式的環境.
之前提到幫公司做了一套手機MIDP的Light weight UI元件. 隨著元件的擴充也越來越完整. 想到我幾個月前也做了個可以在PC執行手機遊戲的半模擬器, 想說這兩個可以併在一起成為一套支援到MIDP form元件完整的模擬器. 這樣就可以在不改動code的狀況下, 讓PC或其它平台也可以執行不只是遊戲的一般MIDP應用程式. 但是我一點也不看好MIDP的未來所以除非有什麼有趣的目的要不然不會開工的.
...Sun最近也有個手機圖形元件計畫Lightweight User Interface Toolkit(LWUIT). package name是com.sun開頭的, 所以並不是標準(java或javax開頭的才會是標準). 但是早知道就不自己寫了, 要不然寫了就要跟它拼了.
沒有留言:
張貼留言