<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java 2007:新年展望

    Java 2007:新年展望

    開源 Java 編程意味著由開發(fā)人員掌舵 —— 但他們將駛向何方?

    developerWorks
    文檔選項(xiàng)
    將此頁(yè)作為電子郵件發(fā)送

    將此頁(yè)作為電子郵件發(fā)送

    未顯示需要 JavaScript 的文檔選項(xiàng)


    拓展 Tomcat 應(yīng)用

    下載 IBM 開源 J2EE 應(yīng)用服務(wù)器 WAS CE 新版本 V1.1


    級(jí)別: 初級(jí)

    Elliotte Harold (elharo@metalab.unc.edu), 副教授, Polytechnic 大學(xué)

    2007 年 2 月 26 日

    2007 年將是載入史冊(cè)的一年,Sun Microsystems 公司將于這一年在開源許可協(xié)議下發(fā)布 Java 開發(fā)包(JDK),從而放棄了對(duì) Java? 平臺(tái)的統(tǒng)馭,將權(quán)力交給了 Java 開發(fā)人員社區(qū)!在本文中,Java 開發(fā)人員 Elliotte Rusty Harold 從各個(gè)方面預(yù)測(cè)了 Java 平臺(tái)的新方向,從腳本到 bug 修復(fù)到新語法。

    2006 年又是 Java 平臺(tái)繁榮的一年。盡管遭遇了來自 Microsoft(C#)和腳本語言社區(qū)(Ruby)的沖擊,但 Java 語言仍然保持著其世界頭號(hào)編程語言的地位。同時(shí),盡管 Java 6 的發(fā)布很值得慶祝,但比起宣布 Java 將在 GNU General Public License 下完全開源這一事件來說,卻不免有些黯然失色。Java 在 2007 年還能保持這種勢(shì)頭嗎?讓我們來看一下成敗的可能。

    Java 平臺(tái)將成為開源平臺(tái)

    2007 年上半年,Sun 將在一個(gè)開源許可協(xié)議下發(fā)布 Java 開發(fā)包(JDK)。解除 JDK 的禁錮對(duì)于 Java 開發(fā)人員社區(qū)來說是巨大的一步,它將在今后的十年中推動(dòng) Java 平臺(tái)的發(fā)展。

    JDK 的質(zhì)量將會(huì)顯著改善,因?yàn)槌绦騿T們不再僅僅報(bào)告 bug 并開始修復(fù)。Java Developer Connection 的 bug 報(bào)告將會(huì)包括對(duì) JDK 中的問題部分的詳細(xì)分析,并提供修復(fù)的補(bǔ)丁。正如Linus 法則 所陳述的那樣,“只要給予足夠的關(guān)注,任何 bug 都是顯而易見”,即調(diào)試是可并行進(jìn)行的。優(yōu)化也是一樣。開源使兩者得以 并行。

    分支項(xiàng)目

    遺憾的是,設(shè)計(jì)并不是和調(diào)試、優(yōu)化一樣可以并行完成的。清潔的 API 有時(shí)也需要有一只獨(dú)裁的手。但獨(dú)裁者的缺點(diǎn)是:有時(shí)他們知道在做什么,有時(shí)卻不知道。意圖成為獨(dú)裁者的各方面之間的競(jìng)爭(zhēng)往往是發(fā)現(xiàn)問題最佳解決方案的惟一方式。

    很少有公司能夠負(fù)擔(dān)得起這樣的代價(jià),為一個(gè)產(chǎn)品開發(fā)多個(gè)獨(dú)立的實(shí)現(xiàn),以便在多個(gè)產(chǎn)品中選定保留一個(gè)而摒棄其余的產(chǎn)品,但開源社區(qū)卻在朝這個(gè)方向努力。所以,您會(huì)在 Java 平臺(tái)的各個(gè)層次中發(fā)現(xiàn)分支產(chǎn)品:語言、虛擬機(jī)和庫(kù)。大多數(shù)的分支產(chǎn)品會(huì)失敗,但這沒什么。好主意會(huì)脫穎而出。一些分支產(chǎn)品會(huì)一直存在下去,一些會(huì)重新并入標(biāo)準(zhǔn) JDK 中。明年的這個(gè)時(shí)候,分支產(chǎn)品與主流產(chǎn)品之間的差異也許不會(huì)很明顯,但這個(gè)過程會(huì)繼續(xù)下去。

    Sun 會(huì)在幾個(gè)月后發(fā)布 Java 7,Dolphin 的一個(gè)早期的 beta 版,以此作為開端。Sun 無法發(fā)布更早的 JDK 版本,因?yàn)榇嬖谝恍┲挥性?Dolphin 中才能解決的構(gòu)建問題和許可協(xié)議問題。盡管如此,仍有望看到第三方著手進(jìn)一步細(xì)分 Sun 的版本,來提供 Java 6、Java 5、Java 1.4,甚至更早版本的流行開源實(shí)現(xiàn)。

    早期的一些探尋分支產(chǎn)品的人們可能會(huì)侵犯 Sun 公司的商標(biāo),收到 Sun 的律師寄來的討厭的律師信。我們需要一個(gè)通用的未注冊(cè)為商標(biāo)的名字,讓所有人都能使用。我建議用 “J” —— 我希望沒人用單字母作商標(biāo)。

    開源項(xiàng)目從未消亡,只是有些褪色。就像之前的 Blackdown Project、GNU Classpath、Kaffe 和其他開源 JDK 項(xiàng)目一樣,他們的開發(fā)人員都轉(zhuǎn)向其他事情了。如果一個(gè)項(xiàng)目至今還沒有達(dá)到 1.0,那么恐怕以后永遠(yuǎn)也達(dá)不到了。





    回頁(yè)首


    期待 Java 7

    Dolphin 不會(huì)在 2007 年發(fā)布。2008 年是更為現(xiàn)實(shí)的目標(biāo)。那就是說,工作尚在進(jìn)行中,它的一些功能也許會(huì)作為早期的標(biāo)準(zhǔn)擴(kuò)展或至少作為 beta 登場(chǎng)。

    遺憾的是,為一門語言添加功能遠(yuǎn)比刪除功能要簡(jiǎn)單得多。幾乎不可避免地,隨著時(shí)間的推移,語言不是朝著簡(jiǎn)單的方向發(fā)展,而是越來越復(fù)雜,越來越讓人困惑。即使是那些單獨(dú)看起來很好的功能,在彼此疊加后也會(huì)出現(xiàn)問題。

    令人遺憾,Java 社區(qū)沒有接受這個(gè)教訓(xùn),盡管這種失敗并無特殊性。但總有一些太酷又太讓人激動(dòng)的新語法令語言設(shè)計(jì)者難以抗拒 —— 即便這樣的新語法不能解決任何實(shí)際問題。于是對(duì) Java 7 的新語言功能就有了巨大的要求,包括閉包、多繼承和操作符重載。

    我猜想在這一年結(jié)束前,會(huì)在 Java 7 beta 中看到閉包,也許還能看到操作符重載(有五成的把握),但不會(huì)出現(xiàn)多繼承。Java 中有太多東西是基于單個(gè)根的繼承層次。沒有可行的方式改進(jìn)多繼承,使之適應(yīng)這門語言。

    目前有許多語法糖方面的提議,有一些有意義,有一些沒有。許多提議都專注于將像 getFoo() 這樣的方法替換為像 -> 這樣的操作符。

    列表

    最有可能的是使用數(shù)組語法來實(shí)現(xiàn)集合訪問。例如,不再采用下面這樣的代碼:

    List content = new LinkedList(10);
    content.add(0, "Fred");
    content.add(1, "Barney");
    String name = content.get(0);

    而是編寫如下代碼:

    List content = new LinkedList(10);
    content[0] = "Fred";
    content[1] = "Barney";
    String name = content[0];

    另一種可能性是:允許為列表使用數(shù)組初始化程序語法。例如:

    LinkedList content = {"Fred", "Barney", "Wilma", "Betty"}
    

    這兩項(xiàng)提議都可以在不改變虛擬機(jī)(VM)的前提下由編譯器稍顯神通即可實(shí)現(xiàn),這是任何修訂過的語法的一項(xiàng)重要特征。這兩項(xiàng)提議都不能使任何現(xiàn)有的源代碼失效或重定義現(xiàn)有的源代碼,對(duì)于新語法來說,這是一個(gè)更為重要的問題。

    真正能夠影響開發(fā)人員生產(chǎn)力的特性功能應(yīng)該是用于管理表、樹和映射表的內(nèi)置原語,比如在使用 XML 和 SQL 時(shí)遇到的那些。JavaScript 下的 E4X 項(xiàng)目和 Microsoft 的 Cω 和 Linq 項(xiàng)目是實(shí)現(xiàn)這一想法的先驅(qū),但可悲的是,Java 平臺(tái)似乎錯(cuò)過了這個(gè)機(jī)會(huì)。如果有人想要通過編譯器來玩一個(gè)潛在的救場(chǎng)的游戲,這里是一個(gè)不容錯(cuò)過的好地方。

    屬性

    很可以還有一些針對(duì)屬性訪問的語法糖。一個(gè)建議是使用 -> 作為調(diào)用 getFoosetFoo的縮寫。例如,不再使用如下代碼:

    Point p = new Point();
    p.setX(56);
    p.setY(87);
    int z = p.getX();

    而是使用如下代碼:

    Point p = new Point();
    p->X = 56;
    p->Y = 87;
    int z = p->X;

    也有人建議用另外一些符號(hào)來代替 ->,包括 .#

    將來,您有可能必須將 Point 類中的相關(guān)字段顯式地標(biāo)識(shí)為屬性,如:

    public class Point {
    
      public int property x;
      public int property y;
    
    }

    我個(gè)人對(duì)此并未產(chǎn)生什么深刻的印象。我寧愿 Java 平臺(tái)采納一項(xiàng)更為激進(jìn)的方法,讓我們可以真正地使用公共字段。然而,如果將 getter 或 setter 定義為與字段相同的名稱,然后讀寫字段就會(huì)自動(dòng)地分派到相應(yīng)方法中。這樣做所使用的語法更少,也更加靈活。

    隨機(jī)精度算法

    非操作符重載

    值得一提的是,對(duì)標(biāo)準(zhǔn)數(shù)學(xué)符號(hào)的重用不同于 操作符重載,至少不是在 C++ 中引起問題的那種重載。加號(hào)和其他操作符在任何程序中都具有明確的意義。無論在哪一個(gè)程序中,它們的意義都不會(huì)有所更改。對(duì)于相似的操作重用相同的語法讓代碼更易于閱讀。若重新定義語法,使之在不同的程序中有不同的意義,代碼就會(huì)較難理解。

    另一項(xiàng)將方法替換為操作符的建議致力于 BigDecimalBigInteger。例如,目前您不得不像這樣編寫不限精度的算法:

    BigInteger low  = BigInteger.ONE;
    BigInteger high = BigInteger.ONE;
    for (int i = 0; i < 500; i++) {
      System.out.print(low);
      BigInteger temp = high;
      high = high.add(low);
      low = temp;
    };

    寫成這樣會(huì)更清晰:

    BigInteger low  = 1;
    BigInteger high = 1;
    for (int i = 0; i < 500; i++) {
      System.out.print(low);
      BigInteger temp = high;
      high = high + low;
      low = temp;
    };

    這項(xiàng)建議似乎無關(guān)緊要,但它可能會(huì)導(dǎo)致過度使用這些類,進(jìn)而導(dǎo)致尚不成熟的代碼中性能降低。

    將 JAM 從 JAR 中分離出來

    Java 7 會(huì)撫平 Java 開發(fā)人員長(zhǎng)久以來積聚的憤怒:各種各樣的類加載器和相關(guān)的 classpath。Sun 公司在 Java Module System 這個(gè)問題上經(jīng)受了又一次打擊。數(shù)據(jù)將存儲(chǔ)到 .jam 文件,而不是 .jar 文件中。這是一種 “superjar”,它包含了所有的代碼和元數(shù)據(jù)。最重要的是,Java Module System 將首次支持版本,所以可以說一個(gè)程序需要 Xerces 2.7.1 而不是 2.6。它也允許指定依賴項(xiàng);例如,可以說一個(gè) JAM 程序需要 JDOM。它也要允許在加載一個(gè)模塊時(shí)不必加載全部模塊。最終,它要支持一個(gè)集中式的存儲(chǔ)庫(kù),其中要能提供多個(gè)不同的 JAM 的不同版本,應(yīng)用程序能夠從中挑選所需。如果 JMS 適用,jre/lib/ext 將會(huì)成為過去時(shí)。

    包訪問

    我也希望 Java 7 能夠稍微放松一下訪問限制。子包也許能夠看到上層包里的包保護(hù)字段和類方法。也就是說,子包也許能夠看到上層包里明確聲明友好性的包保護(hù)成員。不論用哪種方式,將應(yīng)用程序分割成多個(gè)包都會(huì)變得簡(jiǎn)單的多,也會(huì)顯著地改善可測(cè)試性。只要子包中含有單元測(cè)試,就不必使用公共方法去進(jìn)行測(cè)試。

    文件系統(tǒng)訪問

    自從 1995 年開始,文件系統(tǒng)訪問就成為 Java 平臺(tái)的一個(gè)主要問題。十多年后,還是沒有可信賴的跨平臺(tái)方式來執(zhí)行如復(fù)制或移動(dòng)文件這類基本操作。處理這個(gè)問題是過去至少三個(gè)版本的 JDK(1.4、1.5 和 1.6)的公開問題。遺憾的是,為了迎合不怎么普遍卻更具誘惑的操作,如內(nèi)存映射 I/O,有些乏味但卻很必要的 API 被擱到了一邊。JSR 203 可能會(huì)最終解決這個(gè)問題,給我們一個(gè)可行的、跨平臺(tái)文件系統(tǒng) API。工作組也許會(huì)再一次對(duì)其無比崇尚的真正的異步輸入/輸出文件系統(tǒng)這個(gè)相對(duì)不重要的問題上花費(fèi)過多時(shí)間,從而讓該 API 再一次束之高閣。下一年的這個(gè)時(shí)候我們就會(huì)知道。

    實(shí)驗(yàn)

    無論做出什么樣的改變,如果它們首先是在開源社區(qū)里實(shí)現(xiàn),那么都是令人愉快的,所以我們只要看一下真正的區(qū)別有多大或多小。為此,Sun 公司的 Peter Ahè 開始了 java.net 上的 Kitchen Sink Project。目標(biāo)是要分別地分派和指定 javac 編譯器,來測(cè)試像這樣的許多不同想法。在博客里寫寫這些可愛的功能是一回事;但真正制造運(yùn)行的代碼則全然是另一回事。





    回頁(yè)首


    客戶機(jī) GUI

    盡管許多人還沒注意到,但 Java 平臺(tái)真正出現(xiàn)在桌面上到現(xiàn)在已經(jīng)有四五年了。已經(jīng)有幾個(gè)優(yōu)質(zhì)的桌面應(yīng)用程序是用 Java 代碼編寫的,包括 RSSOwl、Limewire、Azureus、Eclipse、NetBeans、CyberDuck 等等。這些應(yīng)用程序幾乎用了每一個(gè)可用的 GUI 工具包來編寫,包括 Swing、AWT、SWT,甚至是平臺(tái)原生的工具包,如 Mac OS X 的 Cocoa。我看不出下一年會(huì)有哪個(gè)工具包在眾多工具包中勝出,盡管 Swing 在制造一些保留本色的應(yīng)用程序方面似乎比其他工具包表現(xiàn)得更為出色。

    用 Swing 進(jìn)行開發(fā)仍是相對(duì)挑戰(zhàn)的,但隨著 Swing 應(yīng)用程序框架的到來,這種情況也許會(huì)在下一年得到改善。這一框架目前尚在 Java Community Process 中作為 JSR 296 開發(fā)。下面是 JSR 關(guān)于此的描述:

    編寫良好的 Swing 應(yīng)用程序試圖為啟動(dòng)和停止,以及管理資源、行為和會(huì)話狀態(tài)的代碼使用相同的核心元素。新應(yīng)用程序從頭開始創(chuàng)建所有這些核心元素。Java SE 不支持構(gòu)造應(yīng)用程序,這常常讓開發(fā)新手們感到有點(diǎn)茫然,特別是在他們打算構(gòu)建一個(gè)規(guī)模遠(yuǎn)超于 SE 文檔中提供的例子的應(yīng)用程序時(shí)。

    通過定義 Swing 應(yīng)用程序的基本結(jié)構(gòu),這項(xiàng)規(guī)范(最終)會(huì)添補(bǔ)該空白。它會(huì)定義一小套可擴(kuò)展的類或 “框架”,用于定義相對(duì)于大多數(shù)桌面應(yīng)用程序較普遍的基礎(chǔ)設(shè)施。

    Swing 應(yīng)用程序框架應(yīng)支持典型應(yīng)用程序中的大多數(shù)東西,允許開發(fā)人員恰在一些自定義的點(diǎn)處插入,如啟動(dòng)和停止時(shí)。在啟動(dòng)和停止之間,它將處理 windows 的保存和恢復(fù),以及應(yīng)用程序的其他部分。最后,它將允許開發(fā)人員編寫在 Swing 事件分派線程外運(yùn)行的異步行為。

    改善 JavaBeans 以及所有依賴它的東西(包括 Swing)的工作尚在繼續(xù)。JSR 295 正在定義一種將 bean 綁定到一起的標(biāo)準(zhǔn)方式,這樣,對(duì)一個(gè) bean 的修改就會(huì)自動(dòng)地反映到其他的 bean。例如,一個(gè) GUI 網(wǎng)格 bean 會(huì)在其相關(guān)數(shù)據(jù)庫(kù) bean 改變時(shí)自動(dòng)更新。

    最終,JSR 303 正在實(shí)現(xiàn)一門基于 XML 的驗(yàn)證語言,來聲明式地指定任何給定的 bean 將取什么值。int 屬性將必須介于 1 到 10 之間,或者 String 屬性必須包含一個(gè)合法的電子郵件地址。如果幸運(yùn),這一切都將在年底以 beta 形式提供,并將在來年的 Java 7 中按時(shí)完成。





    回頁(yè)首


    作為桌面語言的 Java 平臺(tái)

    一些程序員們選擇用 Java 代碼編寫他們的桌面應(yīng)用程序是因?yàn)樗鼈兤珢圻@門語言,但大多數(shù)程序員則是被多平臺(tái)轉(zhuǎn)換這一強(qiáng)烈的渴望所驅(qū)動(dòng)。對(duì) Java 平臺(tái)作為桌面語言的興趣于是就同非 Microsoft 桌面的數(shù)目緊緊地聯(lián)系了起來。讓我們認(rèn)為 Java 編程會(huì)在來年出現(xiàn)在三大主流桌面上。

    Windows

    Swing 在下一年會(huì)繼續(xù)對(duì)其類似 Windows 的外觀作出小的改進(jìn),尤其是轉(zhuǎn)換到開源開發(fā)這一部分。結(jié)果,純 Java 程序如 LimeWire 甚至?xí)仍?Windows 下看起來更加具原生感。但開發(fā)原生 Windows 應(yīng)用程序所選擇的語言仍是 C#(還有一些 C 和 C++ 的追隨者),而開發(fā)框架會(huì)選用 .NET。Java 代碼不會(huì)對(duì) Windows 生態(tài)系統(tǒng)造成任何顯著打擊。

    Macintosh

    像 Microsoft 一樣,Apple Inc. 也使用了相當(dāng)多被拋棄的 Java 代碼。Apple 公司喜愛 Objective C 和 Cocoa,但最后的結(jié)果是相同的:只用 Mac 的開發(fā)人員會(huì)繼續(xù)減少 Java 代碼,而選擇 Apple 偏愛的語言和環(huán)境。

    積極的一面是,盡管 Apple 不再在其私有的 API(如 QuickTime 和 Cocoa)中支持 Java 代碼,Apple VM 已經(jīng)比前些年改進(jìn)了不少。Apple 的 Java 6 移植版不久就會(huì)發(fā)布。它不會(huì)是開源的(不同于 Sun 的 JDK),但開源程序員們還是會(huì)著手修補(bǔ)它的 bug。

    Linux

    GPL 許可協(xié)議將使這成為可能,即將 Java 代碼綁定到最純的開源 Linux 發(fā)行版中,這將使 Java 平臺(tái)成為 Linux 開發(fā)中更為吸引人的語言。如果這些在五年前發(fā)生的話:Linux 社區(qū)將不會(huì)不得不掙扎于使用 C 語言,而 Mono 也不會(huì)成為必要。

    已經(jīng)有了針對(duì) Gnome 和 KDE 的 Java 綁定,所以希望這些會(huì)在接下來的一年里吸引更多人的關(guān)注。也期望至少有一個(gè)即將進(jìn)行的開發(fā) Linux GUI 程序的主要項(xiàng)目使用 Java 語言而不是 C、C++ 或 C#。





    回頁(yè)首


    Ruby 取勝

    臃腫的軟件

    JavaScript 已經(jīng)和 JDK 6 綁定到了一起。其他語言也許會(huì)添加進(jìn) JDK 7。我覺得那樣會(huì)有點(diǎn)臃腫。首先,Sun 公司絕不會(huì)加入一門語言就停下來。如果它選了 BeanShell,擁護(hù) Groovy 的家伙也會(huì)要求加入。如果加入了 Groovy,用 Ruby 的家伙也會(huì)堅(jiān)持要加入。如果 Ruby 加入,還能忽略 Python 嗎?標(biāo)準(zhǔn) JDK 已經(jīng)太龐大了。支持多種腳本語言是一回事,但將它們綁定到一起還是同一件事嗎?策略性的改進(jìn)應(yīng)該是支持所有這些語言,但一個(gè)也不綁定進(jìn)來。

    積極的一面是,Sun 公司正在研究減小初始下載尺寸和減少應(yīng)用程序啟動(dòng)時(shí)間的方法,尤其是 applet 和 Java Web Start 應(yīng)用程序。可能的方法是,將大量的類庫(kù)放到服務(wù)器上或放到速度較慢的后臺(tái)線程中,只下載需要的部分。

    如果我們只說一門語言,世界將會(huì)索然無味。盡管 Java 平臺(tái)是開發(fā)成熟應(yīng)用程序的絕佳選擇,但它從來就不適應(yīng)于小程序或宏。Java 6 意識(shí)到了這一點(diǎn),它添加了 javax.script 包實(shí)現(xiàn),以便和腳本語言(如 BeanShell、Python、Perl、Ruby、ECMAScript 和 Groovy)進(jìn)行互操作,也添加了一項(xiàng) invokedynamic 虛擬機(jī)指令來允許將動(dòng)態(tài)類型語言直接編譯為 Java VM。

    2007 年,我將寶押在 Ruby 上,盡管它并不是我個(gè)人的最愛。對(duì)于我來說,Python 代碼似乎比 Ruby 代碼更簡(jiǎn)潔更易于理解,我認(rèn)為大多數(shù) Java 程序員都會(huì)這樣認(rèn)為。然而,Python 出來的不是時(shí)候。許多開發(fā)人員不得不在學(xué)習(xí) Python 代碼還是學(xué)習(xí) Java 代碼間作出選擇,而多數(shù)人選擇了 Java 代碼。既然他們終于弄懂了 Java 語法,又打算在工具箱中添加另一門語言,他們想要的是明天的語言,而不是昨天的語言,而那門語言似乎就是 Ruby。更重要的是,Ruby 的 Ruby on Rails 是一個(gè)絕對(duì)殺手級(jí)的應(yīng)用程序。它的簡(jiǎn)單性對(duì)于多數(shù)覺悟了的 Java 企業(yè)版(Java Enterprise Edition,JEE)開發(fā)人員來說具有難以置信的魅力。

    除了 Rails,比起其他腳本語言,JRuby 項(xiàng)目和現(xiàn)有的 Java 代碼很好或更好地集成到了一起。事實(shí)上,JRuby 也許會(huì)超越標(biāo)準(zhǔn) Ruby 分布,并成為 Ruby 程序員們更偏愛的平臺(tái),而不止是 Java 程序員們將 Ruby 作為第二種選擇。這很好。Python 程序員們會(huì)這樣反對(duì):他們這些年來已經(jīng)將 JRuby 最好的方面加入到 Jython 中,他們是對(duì)的,但我討論的是 2007 年 發(fā)生什么,而不是應(yīng)該 發(fā)生什么。這很不幸但卻是事實(shí):Ruby 獲得了契機(jī),而 Python 沒有。

    其他腳本語言會(huì)被逐漸逐出界外。Perl 太過時(shí)了,不能很好地適應(yīng)現(xiàn)代應(yīng)用程序。Groovy 缺少明確的視角,還趨向于將計(jì)算機(jī)科學(xué)的時(shí)髦用語凌駕于可用性和熟悉性之上,這讓它深受其苦。BeanShell、Jelly,還有半打其他語言可能都從未吸引過超過一個(gè)的稱心追隨者。來年的這個(gè)時(shí)候,到處都會(huì)是這樣的吶喊:Ruby 將成為 Java 程序員們首選的腳本語言。





    回頁(yè)首


    集成開發(fā)環(huán)境(IDE)會(huì)變得更好

    一批垂死的 IDE 真正點(diǎn)燃了 2006 之火,再一次證明競(jìng)爭(zhēng)是好事。由于 Eclipse 造成的窘境,Sun 將一些能量和資源注入到 NetBeans 當(dāng)中,最終開始了一場(chǎng)貌似激烈的競(jìng)爭(zhēng)。通過采取一些措施,到 2006 年底,NetBeans 甚至超越了 Eclipse。它針對(duì)設(shè)計(jì) GUI 具有卓越的原生化外觀和出色得多的工具。它所不具有的是 Eclipse 社區(qū)。相比 NetBeans,更多的插件和第三方產(chǎn)品是基于 Eclipse 的 —— 至少?gòu)牧可细?—— 并且這種趨勢(shì)僅呈加速之勢(shì)。

    來年,Eclipse 會(huì)努力開發(fā) 3.3 版,應(yīng)于 2007 年發(fā)布。Sun 也可能成功地將 NetBeans 6 公諸于世。這兩個(gè)版本都不太可能是重要的版本:它們只是關(guān)注于添加這里或那里的小功能、修復(fù) bug 和簡(jiǎn)化用戶界面(盡管可能還沒有做到應(yīng)該要做的那么多)。

    NetBeans 可能將繼續(xù)贏得 Eclipse 的市場(chǎng)份額。這是從很早以前就開始了的,這方面還有更大的增長(zhǎng)空間。(Sun 無情地推動(dòng) NetBeans 和 JDK 下載并沒傷害到任何一個(gè))。到本年度結(jié)束時(shí),兩種 IDE 也許將瓜分這個(gè)市場(chǎng),平分天下。

    同時(shí),自信滿滿的 IntelliJ IDEA 用戶將繼續(xù)疑惑于這一團(tuán)混亂的場(chǎng)面。他們的信念是:IntelliJ IDEA 是最好的 Java IDE。盡管如此,大多數(shù)用戶不會(huì)對(duì) 500 美元的標(biāo)價(jià)視而不見,因此其市場(chǎng)份額將繼續(xù)在 5% 上下波動(dòng)。





    回頁(yè)首


    Java 企業(yè)版

    沒有哪部分 Java 編程像 JEE 這么成功,也沒有哪部分 Java 編程像 JEE 那樣招致如此多的斥責(zé)。它是一門每個(gè)人都喜歡去討厭的技術(shù)。它復(fù)雜、費(fèi)解并且是重量級(jí)的。沒有哪部分 Java 編程有這多么第三方努力將其整個(gè)替換或部分替換:Spring、 Hibernate、Restlet、aspects、Struts …… 等等。雖然如此,幾乎每一個(gè)招聘 Java 程序員的商家都要求其有 JEE 經(jīng)驗(yàn),因此 Sun 確實(shí)是正確的。

    在企業(yè)級(jí)領(lǐng)域里,我能看到的全部趨勢(shì)就是簡(jiǎn)單。大塊頭的框架出局;小而簡(jiǎn)單的加入了進(jìn)來。隨之增長(zhǎng)的是,客戶拒絕大塊頭的 JEE 棧部分,這種趨勢(shì)還在繼續(xù)。作為替代的是,客戶轉(zhuǎn)向了像 Spring 這樣更簡(jiǎn)單的框架或者完全脫離 Java 平臺(tái)而投向 Ruby On Rails。對(duì)于更簡(jiǎn)單、更易理解的系統(tǒng)的需求也驅(qū)動(dòng)著對(duì)面向服務(wù)架構(gòu)(SOA)和具象狀態(tài)傳輸(Representational State Transfer, REST)的興趣。

    我們能夠預(yù)料出,朝著簡(jiǎn)單發(fā)展的趨勢(shì)在 2007 年將會(huì)延續(xù)。許多對(duì) Rails 留下印象的人正試圖在其他語言上復(fù)制它的成功,比如 Python (Turbo Gears)、Groovy (Grails) 以及 Java (Sails)。這其中的某個(gè)有可能成功,但它們?nèi)绻惶岢鲆恍?qiáng)有力的新舉措的話,就不會(huì)取得成功。因此,企業(yè)仍將加載他們已有的框架:SOA、REST 和 Rails。





    回頁(yè)首


    Java 微型版(Java Micro Edition, Java ME)

    將視線從最大平臺(tái)移到最小平臺(tái)上來,我們能期待嵌入式世界帶給我們什么?多年以來,Java 平臺(tái)已經(jīng)在小設(shè)備上取得了相當(dāng)大的成功,而 2007 很可能會(huì)以這一成功為基礎(chǔ)。首先,關(guān)注一下移動(dòng)信息設(shè)備描述(Mobile Information Device Profile,MIDP) 的第 3 版,來利用當(dāng)今更為強(qiáng)大的設(shè)備的功能。特別是,我們應(yīng)該很快就能在一個(gè)虛擬機(jī)上運(yùn)行多個(gè) MIDlet,包括在后臺(tái)運(yùn)行一個(gè)或多個(gè)。同樣也關(guān)注一下加密記錄管理系統(tǒng)(RMS)存儲(chǔ)和 IPv6 支持。

    Java ME 的可擴(kuò)縮的 2D 矢量圖形(Scalable 2D Vector Graphics, SVG)API 2.0 當(dāng)前正在開發(fā)中,它應(yīng)擴(kuò)展在許多設(shè)備中的動(dòng)畫功能。除 SVG 動(dòng)畫之外,它也將支持流式音頻和視頻。如果移動(dòng)網(wǎng)絡(luò)開放,這是相當(dāng)重要的 —— 想想在手機(jī)上的 YouTube。(當(dāng)然,如果網(wǎng)絡(luò)開放,那就只是沒人愿意看的兩英寸的公司廣告。在這點(diǎn)上,我對(duì)美國(guó)的情況持悲觀態(tài)度,而在歐洲也許會(huì)更有趣。)

    移動(dòng)開發(fā)者也能期望本年推出第一款支持 Java ME 的 XML API 的手機(jī)。此 API 是 SAX、DOM、 StAX 和 JAXP 的一個(gè)精選子集,設(shè)計(jì)它是為了適應(yīng)內(nèi)存受限的手機(jī)。許多人認(rèn)為真正的 XML 不適合手機(jī) —— 他們是對(duì)是錯(cuò)今年就能見分曉。

    盡管好事連連,Apple 的 iPhone 仍對(duì) Java 平臺(tái)(作為移動(dòng)電話開發(fā)平臺(tái))構(gòu)成了一個(gè)主要的威脅。iPhone 已經(jīng)是這個(gè)星球上最火爆、最有魅力的手機(jī),它已經(jīng)發(fā)布了六個(gè)月。問題在于它將成為一個(gè)相對(duì)封閉的平臺(tái),甚至按手機(jī)網(wǎng)絡(luò)標(biāo)準(zhǔn)也是如此,并且它沒打算運(yùn)行 Java 代碼。無需多說,對(duì)于任何試圖向手機(jī)、PDA 和個(gè)人通訊設(shè)備推銷第三方應(yīng)用程序的人來說,這都是一個(gè)恐怖的消息。





    回頁(yè)首


    結(jié)束語

    由于 JDK 的開源,2007 注定成為自互聯(lián)網(wǎng)炸彈(dot bomb)以來 Java 編程界最令人激動(dòng)的年份。截至目前,Java 平臺(tái)一直被 Sun 公司的目標(biāo)和投資能力所制約,但這種情況即將改變。有了開發(fā)者社區(qū)掌舵,我們有望看到 Java 編程全方位發(fā)展,而這種發(fā)展很可能突然出現(xiàn)。開發(fā)人員將使用 Java 代碼(以及針對(duì) Java 代碼)完成比以往更多的任務(wù)。桌面、服務(wù)器以及嵌入式:一切都會(huì)加速!是的,在這個(gè)過程中會(huì)有一些重大的失敗,但失敗也是樂趣的一部分!好的想法將脫穎而出,不好的將被淘汰。如果您對(duì) Java 平臺(tái)有任何不滿意,或者有一直迷惑的地方,啟動(dòng)您的 IDE,開始改造吧!

    女士們、先生們!啟動(dòng)您的編譯器吧!



    參考資料

    學(xué)習(xí)

    獲得產(chǎn)品和技術(shù)
    • 下載 Java 7 :開放源碼的書面文件尚未簽定,但您仍然能通過使用 Java 7 的源碼取得領(lǐng)先的地位。

    • Sails :一個(gè)用 Java 代碼編寫的 Rails 的翻版。


    討論


    關(guān)于作者

    Elliot Rusty Harold ??§???

    Elliotte Rusty Harold 來自新奧爾良,現(xiàn)在他還定期回老家喝一碗美味的秋葵湯。不過目前,他和妻子 Beth 定居在紐約臨近布魯克林的 Prospect Heights,同住的還有他的貓咪 Charm(取自夸克)和 Marjorie(取自他岳母的名字)。他是 Polytechnic 大學(xué)計(jì)算機(jī)科學(xué)的副教授,他在該校講授 Java 和面向?qū)ο缶幊獭K?Web 站點(diǎn) Cafe au Lait 已經(jīng)成為 Internet 上最流行的獨(dú)立 Java 站點(diǎn)之一,它的姊妹站點(diǎn) Cafe con Leche 已經(jīng)成為最流行的 XML 站點(diǎn)之一。 他最近編著的一本書是 Java I/O, 2nd edition。他目前在從事處理 XML 的 XOM API、Jaxen XPath 引擎和 Jester 測(cè)試覆蓋率工具的開發(fā)工作。

    posted on 2007-02-28 00:03 77 閱讀(255) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2007年2月>
    28293031123
    45678910
    11121314151617
    18192021222324
    25262728123
    45678910

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊(cè)

    API文檔

    java開發(fā)與研究

    にほん

    上海房產(chǎn)

    東京生活

    數(shù)據(jù)庫(kù)大全

    編程與開發(fā)

    美國(guó)開發(fā)生活

    走向管理

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 青青草国产免费久久久下载| 国产午夜亚洲精品午夜鲁丝片| 亚洲成在人线在线播放无码 | 可以免费看的卡一卡二| 亚洲经典千人经典日产| 亚洲乱码一区二区三区在线观看 | 亚洲av午夜电影在线观看 | 亚洲精品中文字幕无乱码| 日韩精品视频免费在线观看| 久久九九全国免费| 亚洲欧美日韩国产成人| 国产亚洲婷婷香蕉久久精品 | 亚洲gv猛男gv无码男同短文| 搡女人免费视频大全| 97国免费在线视频| 亚洲午夜精品一区二区麻豆| 亚洲日韩aⅴ在线视频| 日韩成人在线免费视频| 99精品免费观看| yellow视频免费看| 亚洲中文无码永久免| 亚洲精品高清国产一久久| 国产成人免费高清在线观看| 2019中文字幕在线电影免费 | 香蕉97碰碰视频免费| 亚洲另类春色校园小说| 久久亚洲欧洲国产综合| 日韩激情无码免费毛片| 91精品免费在线观看| 成人无码WWW免费视频| 视频一区在线免费观看| 亚洲AV无码一区二区三区牛牛| 日韩亚洲一区二区三区| 亚洲国产成人久久一区WWW| 国产精品免费久久久久久久久| 亚洲国产乱码最新视频| 亚洲福利一区二区三区| 水蜜桃亚洲一二三四在线| 亚洲日韩乱码中文无码蜜桃臀网站 | 182tv免费视频在线观看| 一边摸一边桶一边脱免费视频|