Java陷阱(2010版)

來源: 外刊IT評論  發布時間: 2010-10-27 19:45  閱讀: 907 次  推薦: 2   原文鏈接   [收藏]  
摘要:好好想想你們的開發,為什么要使用Java?你們開發基于的平臺是開放、鼓勵創新的嗎?無所顧忌的嗎?讓一個公司在一天之內從Java上移走、放棄Java是不可能的,但經歷了最近幾個月的事件之后,我開始尋找一種替代品了,不論是否真的有。

  作為Apache軟件基金會的成員之一,我對開源軟件的立場傾向于支持更加自由的許可協議,例如Apache許可證(v2.0), BSD,或 MIT許可協議。我堅信應該鼓勵企業都能夠采用開源軟件,讓他們能夠使用開源軟件做他們想做的任何事情,在當前法律框架下盡可能的放寬限制。寬松自由的軟件許可協議能夠使軟件開發社區做的更好。自由的開源軟件開發能鼓勵真正的、專心的、有實力的參與者的奉獻活動,就像“公開核心”運動那樣,企業可以出售對軟件的服務和“企業級軟件功能”,而不要變成一個單一個體掌握了所有軟件的重要權利。

  我必須坦誠——我對Java語言并不是很熱心——我更愿意用Python,Javascript,C,C++,甚至是PHP寫程序,可是我發現Java無所不在,我深陷其中。Java和JVM如今已經成為我的團隊開發的Cloudkick里眾多組件的核心部分,而且無可替換。

  如今IBM宣布了要轉移他們的工作重心,轉向基于OpenJDK上開發。這是Oracle控告Google的Android侵權之后的又一件大事。Oracle是一個擅長于玩弄大公司政治的公司,擅長于榨取價值——我確信他會從Sun的軀殼里榨取出最后一枚硬幣為止。

  當Sun,現在是Oracle,把OpenJDK置于GPL許可協議之下時,TCK的許可協議的問題已經懸著5年多了。有些博客對這個問題有深入的介紹[1] [2] [3],我建議大家對TCK,Apache和Sun之間的故事都應該詳細了解一下——但這不是我要在這里關注的。

  我認為自己是個開源軟件的倡導者,盡管跟有些人,例如Richard Stallman——GNU的創始人,的做法不盡相同。Richard的觀點跟我在很多問題上都不太一致,但有一點是一致的,Java世界里越來越亂的現象也開始使我對軟件平臺和許可協議的信仰有所改變。

  6年以前,Richard發表了“自由但帶著枷鎖– Java陷阱”。當時我并不認同這種道德上的關于軟件自由的論點,但現在我相信了,Java平臺就是一個陷阱。

  Richard在他的文章里談到了“免費軟件世界”以及其它很多的GNU項目,其中一點我覺得十分的重要:如果你的程序依賴于一個平臺,你就會受到這個平臺的許可協議和發展進程的約束。

任何軟件,任何語言都會碰到這種問題。例如,如果一個免費的程序只能運行微軟的Windows操作系統上,那對于免費世界來說還是需要付費。但在GUN/Linux上運行的軟件由于依賴于其它的非免費軟件,那也同樣毫無意義。在過去,Motif(在LessTif之前)和Qt(在開發人員將其免費之前)主要的問題都是產生在這個方面。大多數3D顯卡都依賴于非免費的驅動,同樣也產生這樣的問題。但如今,最大的問題卻來自于Java,因為開發免費軟件的人都對Java很有感覺。對這種語言的吸引力蒙蔽了他們,他們忽略了獨立性問題,掉入了Java的陷阱。

  如果你在Java和JVM上開發軟件,你就被困在了由一個公司——Oracle控制的單一的一個平臺上。 Oracle努力維持著對這個平臺的控制權,拒絕刪除在TCK里的使用條款,有效的阻止了Apache Harmony項目一直不能正式發布。對Google的訴訟證明了Oracle過度的癡迷于對這個平臺的掌控。

  問題并非都是關于Oracle對他的代碼的控制。就像我上面說的,我相信一個公司有權做他們想做的——可是同時,如果他們選擇有害的管理方式,我將不再去使用這個平臺。在Java世界最嚴重的事情是,這種約束在Java的第三方實現中仍然存在。Oracle可以關閉OpenJDK源代碼,這與我無關,但讓人惱火的是它打壓Java的其它版本的實現。

  看看一些跟Java差不多的語言,它們現在都有多種版本的實現:

  • Python: CPython, but also has PyPy, IronPython, and Jython.
  • Ruby: MRI, but also JRuby, MacRuby,
  • Javascript: v8 (node.js), Spidermonkey,whatever-safari-is-calling-their-JS-engine-now.
  • C/C++: Clang and GCC
  • C#: CLI and Mono

  這些語言的各種各樣的實現都在它們相應的平臺上做出了創新。他們大多是在社區力量的帶動下完成的,大多數采用自由許可協議。社區里大家有著共同的目標和信仰,不會使用那些晦澀難懂的許可條款來保護某些公司的移動市場。在Java里,你只有一個選擇,這個選擇是Larry(Oracle的CEO)和Oracle賜給你的。任何試圖開發出可替代實現的企圖都將遇到巨大的阻力。

  當我選擇一個平臺做開發時,我會考慮這個平臺是否會被一個公司一時的沖動所左右。我會考慮是否有各種各種各樣的社團在背后支持它。我希望人們能夠嘗試一種新的方式開發一個VM,讓這個平臺變得更好。

  這就是我為什么必須要疾呼,一個人怎么能選擇Java和JVM、將公司的未來建于其之上呢?我知道Oracle和IBM——他們將會投入百萬美元來推動這個平臺的持續發展,但這不是一個我想使用的平臺。大公司像這樣一擲千金并不能產生能吸引我選擇某個平臺的基本吸引力。Oracle要控制Java的未來。我并不知道Java Community Process未來將會怎樣,但我對它不抱有信心。

  好好想想你們的開發,為什么要使用Java?你們開發基于的平臺是開放、鼓勵創新的嗎?無所顧忌的嗎?讓一個公司在一天之內從Java上移走、放棄Java是不可能的,但經歷了最近幾個月的事件之后,我開始尋找一種替代品了,不論是否真的有。

  你使用的平臺是自由的嗎?還是只是個陷阱?

  【英文出處】:Java Trap, 2010 Edition

2
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()