久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于下一代大型JVM語言的思考

 guitarhua 2013-11-04

關(guān)于下一代大型JVM語言的思考


【轉(zhuǎn)載】 CBSi中國·ZOL 10年09月28日 [暫無評論]



  我們曾不只一次的提到基于JVM的語言正在開始流行,Java程序員和Java平臺本身正在走向混合編程時代,。目前,,基于JVM的語言有Scala、Groovy,、Clojure等,,但這些語言哪一個會成為未來JVM上的主力,?

  近日在舊金山舉行的JavaOne 2010大會上,OpenGamma的技術(shù)工程師兼Joda Time開源API項(xiàng)目組長斯蒂芬·科爾伯恩與Artima主席比爾·文納斯就“下一代大型 JVM語言”展開了一場對話,。在這一對話中,,史提芬表達(dá)了對于下一代大型語言的思考。

  你認(rèn)為哪種語言將成為下一代大型JVM語言,?

  首先,,我認(rèn)為,想一想 Java 給予我們的教訓(xùn)對這個問題是有幫助的,。Java哪里做錯了,?哪里做對了?以后我們要怎么做,?在這種語境下,,其他主要的替代語言(Groovy, Scala, Clojure、Fantom)是否有可能成為下一代大型JVM語言,?

  那么,,我們從 Java 得到的教訓(xùn)是什么?如果我們可以重新來過,,我們會回避許多東西,,如暴露的基本數(shù)據(jù)類型(exposed primitives)、暴露的整列以及檢查型異常(checked exception),,我們不會把這些東西放到語言中,。

  然后,是一些我們想要在新語言中實(shí)現(xiàn)的東西,。很明顯,,一種更優(yōu)秀的模塊化方案是其中之一。但是,,Java 中的模塊化,,我們一直在說這事,并不是真正我們想要的,。事實(shí)上,,我們可以不再編譯至類文件,而是只編譯至模塊,。編譯器不再輸出類文件,,而只輸出模塊。我們有時可以在模塊系統(tǒng)中添加一項(xiàng)行得通的功能,,確定版本 1.1 是否與版本 1.2 兼容,。模塊系統(tǒng)檢查所有我們所用的方法的字節(jié)碼,并作出判斷,, 因?yàn)槟闼玫娜糠椒ǖ淖止?jié)碼沒有變化,,因此 1.1 和 1.2 對于你來說是完全兼容的,。雖然還有好多事需要做,但是有些這些事情需要一點(diǎn)反思,。

  現(xiàn)在,,我們有4門主要的語言可供選擇:Groovy, Scala, Clojure,、Fantom,,這些語言怎么樣呢?

  Clojure所用Lisp語法,。這對Java開發(fā)者帶來了很大的困難,,所以,看起來它不可能成為下一代大型語言,,即使它有一些很棒的創(chuàng)意,。

  Groovy是一個不同的小語種,它在功能方面填補(bǔ)了Java對于腳本語言的需求,。構(gòu)建腳本方面,,Groovy將會扮演一個角色,尤其是結(jié)合 Gradle,。也許在web應(yīng)用程序方面也會有重要的作用,。

  其他兩門語言:Scala 和Fantom,有些類似,,他們都是靜態(tài)類型的,,但他們處理類型系統(tǒng)的方式完全相反。從某種程度上,,Scala 已經(jīng)一路奔向類型系統(tǒng)了,;如果我理解的沒錯,你可以在Scala 泛型內(nèi)作出一種圖靈完備性(Turing-complete)的語言,。更多關(guān)于Scala語言的介紹可以參考51CTO專題:Scala編程語言,。

  Fantom 走向了另一個方向,弱化了類型系統(tǒng),。對于這兩種語言,,我的結(jié)論是:Scala 過于復(fù)制。它添加了太多的東西,,繩子太長,,結(jié)果把自己束縛起來了。這就是我對Scala 的顧慮,。Fantom 擁有一些很好的功能,,而且易于學(xué)習(xí),很快就可以上手,,但是,,弱化的類型系統(tǒng)以及幾個額外類也許還不足以讓它成為下一代大型語言,。

  所以,我最終還是回到這個想法——如果Java 是下一代大型語言將會怎樣,?

  問題在于,,添加的越多,再添加?xùn)|西就變得越困難,,因?yàn)檫@門已經(jīng)被填得慢慢的了,。不過,與其跳出來和Oracle說:“讓這門語言添加閉包,;讓這門語言添加屬性”,,假如我們可以為Java做一個向后兼容版本,將會怎樣,?假如我們提供一款工具,,可以將 JDKn+1 轉(zhuǎn)換為JDKn+2,如果你喜歡,,還可以在Java 兩個版本之間轉(zhuǎn)換,,你覺得如何?這是你的向后兼容的想法:你可以在兩個版本之間進(jìn)行轉(zhuǎn)換,。如果是 JKD8 呢,?如果不是在JDK8 中使用極客的方式處理閉包和模塊,而是延遲發(fā)布一年,,使其向后不兼容,,將會怎樣呢? 這樣,,我們就可以正確地處理閉包和屬性,,還有其他一些東西。

  實(shí)際上,,做減法也是適合的:刪除檢查型異常,,刪除一些功能,如:除非是 Nullable 類型引用可為 null,。做一些這樣的刪除工作可以帶來很大的變化,。按照這種思路走下去,將會怎樣呢,?

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多