[舊聞]專訪:NetBeans平臺發展的未來

NetBeans對於國內的任何一個開發者都不會陌生,大家都是從NetBeans的愛恨交加中走過來的,隨着Jbuilder的光環漸漸淡去,人們又把目光集中Netbeans身上。隨着NetBeans的開源IDE 5.5 beta版的發佈,Artima與Netbeans宣傳官Tim Boudreau談論了NetBeans 5.5以及IDE的未來發展方向。在會見內容的結束部分,Boudreau談論了NetBeans平臺,GroupLayout,Matisse GUI構建器,還有NetBeans中除了Java外對其他語言支持。

Frank sommers是Artima網站的高級編輯,Tim Boudreau是Netbeans的高級宣傳官,爲了能讓國人第一時間瞭解Netbeans發展的未來,我們IT168網站特翻譯此文與Java編程愛好者分享,也希望各位網友能就此採訪內容發表自已的見解。下面我們就一同來流覽對Netbeans高級宣傳官的採訪內容。

Frank Sommers:在2006 JavaOne,你演示了Matisse,NetBeans 5.5圖形用戶接口編輯器,說Matisse是與以前所有的UI編輯器真正不同的,是什麼讓Matisse如此獨特呢?

Tim Boudreau:因爲要在多平臺上工作,Java UI非常有趣,對於每個平臺,都有用戶接口設計嚮導。蘋果公司的Mac系統上有,微軟的Windows上有,同時還有Java Look And Feel嚮導。UI標準是很偉大的,它們對於用戶使事情看上去很熟悉。同時,每個人對待在一個平臺上如何去做是正確的,會有些不同,例如,你應當在離窗體邊緣多遠放置一個標籤。

我們試圖將所有的複雜性提取出來放入一個新的佈局管理器中,GroupLayout。GroupLayout正做爲一個Java.net的項目而正在開發,它將成爲JDK 6中Swing的核心部分。GroupLayout讓你指定在一個窗體上的一定的組件彼此之間有一些關係,例如一個位置關係或對齊關係。

舉個例子,考慮將兩個組件對齊。一個有文本內容的Jlabel比一個具有文本內容的Jbutton要高一些。如果你希望將它們相鄰,就需要公用一個基線,因爲已經證明,如果眼睛能沿直線看,人們會讀得更快,也容易理解。GroupLayou會很容易做到這點。

對比其它的佈局管理器,都需要把這兩個組件放入網格中,一個組件佔用兩個單元,另一個佔用一個單元。在其它事情中,GroupLayout處理間隔非常精細,總是考慮執行你的軟件的平臺。

Matisse通過與GroupLayout的相互作用而工作,當你設計你的UI時,無論你在什麼平臺下設計,Matisse都會給出你它建議的位置作爲指導。當你轉移到另一個平臺上時,佈局管理器將使用此平臺下的設計指導,Swing會使用正確的邊界與字體。這就在很高的水平上解決了“Java-app-as-alien”的神話說法,使開發在哪裏都可以看上去是正確並且變得容易。

地方化是你在做UI時必須考慮的另一個問題,決定於你編寫的是什麼種類的軟件,地方化對於你來說可能是可有可無的東西,幾乎沒有沒有什麼利用價值 。舉個例子,假如你去了象印度這樣的地方,那裏說着所有的語言,那麼地方化就顯得十分重要了。

在Windows的世界裏,你編輯了一個資源文件,然後用資源編譯器編譯。Java通過獨立主線應用代碼的特性資源綁定,實際給了你一個更動態的選項,資源綁定在提供字符串嵌入於UI的應用中。同時,會給你更多靈活性,同時也給你佈局管理器更多的壓力,佈局管理器必須處理做適當的處理,例如,對於同樣的事情,你可能用德語時會顯得特別長,而在用其它語言會顯得很短。

Matisse真正地幫助你實現本地化,因爲它使本地化更加透明。當你雙擊一個組件並寫入一些文本,文本被寫入到一個屬性文件中,正確的代碼會通過文件屬性的本地化來獲取值。另外NetBeans還有一個特徵,允許你檢查你的源代碼,將所有的硬編碼字符串轉化爲本地變量。因爲本地化特徵已經有些人開始使用NetBeansb。這些工作不僅僅用於Swing應用,而且也適用希望使用資源綁定的任何應用,資源綁定是Java中做本地化的標準方式。

Frank Sommers:在今年JavaOne大會上你們做的另一個演示是用NetBeans富客戶端框架或NetBeans RCP快速建立桌面應用。什麼是NetBeans RCP,它與Swing應用框架JSR [JSR 296]?如何聯繫?

Tim Boudreau:當你建立一個桌面應用時有很多問題需要解決,有時也是相當複雜的應用,那你就需要使用NetBeans平臺。對於複雜程度較小的應用,會有一些基本問題可以在Java平臺上被很好地解決。例如,你如何存儲本地的默認值?或者,你如何提供對可能是顏色或字體的資源的真正訪問?這些問題與NetBeans平臺要解決的問題相比級別要低一些,儘管還不如用NetBeans RCP處理更好。JSR 296着眼於非常低級的應用問題,就象剛纔提到的,或者是簡單的寫入動作,及類似的事情,這些努力是一個補充。

NetBeans RCP試圖解決應用體系結構的問題。當你獲得一定大小的應用時,NetBeans平臺會使事情變得很容易。如果你編寫一個桌面應用,會有一定數量的問題,你恰恰不得不去用生疏的UI工具箱來處理,例如Swing無法處理的。你會有菜單,鍵盤快捷方式,行爲,如果你要顯示多組件,你還需要有一些種類的窗體管理。在關閉的時候,你還要保存一些設置,當你重新啓動時,要恢復整個或部分應用狀態。數據訪問也會變得有趣。

NetBeans平臺處理那些問題。例如,如果你使用NetBeans RCP訪問資源,你能在一個FTP服務器上使用Filesystems API,或者在一些遠程服務器上的當地文件,JARs內的資源交互,就好像那些是本地文件一樣。NetBeans RCP有一個“generic hierarchy and presentation”庫--Nodes API。你擁有節點,每一個節點有子對象。一個節點是一個表達層—節點有行爲,顯示名稱,圖標等—所有用於呈現給用戶的大部分的任意數據模型的基礎。將Filesystems和Nodes放在一起,你就有了很強大的東西—許多複雜的UI,可以用於一個樹形控件或一個列表控件,在NetBeans中通過在一個虛擬文件夾中粘貼一個文件,打開那個文件夾的查看就可以簡單地做到。Explorer API提供大量的Swing組件,可以通過很多方式展現節點與它的子節點。

最後,NetBeans中的模塊系統RCP是關於如何設計一個可維護的應用。模塊允許你通過在它們自己的JAR外部,不是公共的類把一個應用的因素分成不同的部分。這個模塊能夠聲明其它模塊允許從什麼包中調用類,其它包中的類僅在它們所在的JAR中是公共的。遵循這些路線,也許會在Java 7中作爲一個語言特徵出現,NetBeans RCP已經爲桌面應用提供了這些。

Frank Sommers:目前,NetBeans主要還是一個Java IDE,但是它也支持C和C++。你預想它還會支持其它什麼語言呢?你看到NetBeans會和Eclipse的目的一樣,正成爲一個語言無關的IDE平臺嗎?

Tim Boudreau:自從1998年以來,NetBeans並沒有只爲Java而工作。它也是C/C++工具的基礎,Sun公司已經將它轉用於Solaris很多年了,對它的支持正在進行擴展化和通用化,不再僅限於Solaris。NetBeans也是HP公司用於OpenVMS的IDE,支持COBOL, Fortran, C/C++和其它種語言。例如在今年JavaOne大會上我們演示的對VB的支持—實際上是讀取VB代碼,編譯成字節碼,然後運行,有時會比它本應生成的本地代碼運行還要快。因此,我們已經開始了這個項目,也會有圍繞腳本方面的開發做更多的努力。NetBeans並不一定要侷限於Java IDE平臺—它對於Java已經有了很大地支持,那是人們首先要考慮的事情。但是就NetBeans目前的發展來看,它已經成爲了一個語言無關的平臺。

正象我們早期提到的,重要的東西的壽命總是很長。一些人聲稱Java會在5或10年裏死亡,我們都會迎來下一個大的事物。即使真是那樣,NetBeans也一樣可能會支持下一個事物的到來,但是對一個語言的壽命做假設的時候,有一件重要事情要考慮,對於期望任何特殊的程序語言或範例的盛行週期日益變得更長是很實際的,這有兩方面的原因。首先,我們在繪製人們如何考慮告訴計算機工作的方式上的藍圖方面正越來越好,其次,一個語言統治的時間越長,它的代碼就會越多,因此移植的代價也就越大。於是你不得不緊跟一些事情,這些事情會強迫變化中的語言很豐富多彩。

現在有很多有關腳本語言的談論,但是我期待在主流編程語言中的下一個重大變化是讓直覺上類似多核芯片的並行方式成爲規範標準。我確信在未來的時間裏,這些目標將會成我們考慮的主流。

發佈了27 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章