日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Jigsaw項(xiàng)目簡介:Java7的新模塊系統(tǒng)

本文收集了一些與Jigsaw項(xiàng)目(Project Jigsaw)相關(guān)的報(bào)道,旨在讓讀者們更加清楚的了解這個(gè)Java 7中的新玩意兒是做什么用的。

成都網(wǎng)站建設(shè)、做網(wǎng)站中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報(bào)的無錫營銷推廣。創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站建設(shè)10余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

在Jigsaw項(xiàng)目成為OpenJDK的一部分時(shí)的聲明

為了在接下來的幾年中能夠模塊化JDK 7,同時(shí)也為了更好地宣傳JSR 294的工作,Sun打算不久之后在OpenJDK社區(qū)中創(chuàng)建Jigsaw項(xiàng)目。

該努力必然會(huì)創(chuàng)建一個(gè)簡單、低層次的模塊系統(tǒng),其設(shè)計(jì)將聚焦于模塊化JDK這個(gè)目標(biāo)。開發(fā)者可以在自己的代碼中使用該模塊系統(tǒng),Sun也會(huì)全力支持該系統(tǒng),但它并不會(huì)成為官方Java SE 7平臺(tái)規(guī)范的一部分,也不一定會(huì)得到其他SE 7實(shí)現(xiàn)的支持。

如果未來的Java SE平臺(tái)包含了特定的模塊系統(tǒng),那么Sun將提供一種方式來移植Jigsaw模塊以使之符合相應(yīng)的標(biāo)準(zhǔn)。同時(shí),我們還會(huì)積極地尋求與其他模塊系統(tǒng)交互的方式,尤其是OSGi。

模塊化JDK這個(gè)目標(biāo)應(yīng)該是可以實(shí)現(xiàn)的,尤其是Apache Harmony已經(jīng)證明了JDK是可以被模塊化的(使用OSGi)。然而這個(gè)目標(biāo)卻因另一個(gè)原因而變得更加有趣:它將在JCP外實(shí)現(xiàn)。

由于缺少可視化的發(fā)展過程,再加上閉門造車的實(shí)現(xiàn),對(duì)于大多數(shù)人來說很難參與進(jìn)JSR 277,更別提對(duì)其獻(xiàn)計(jì)獻(xiàn)策了。通常這會(huì)導(dǎo)致標(biāo)準(zhǔn)的誤入歧途,使得標(biāo)準(zhǔn)過于關(guān)注實(shí)現(xiàn)的細(xì)節(jié)而忽視了通用性。不僅如此,這還會(huì)導(dǎo)致標(biāo)準(zhǔn)成為事后諸葛亮——想解決問題時(shí)(例如奇數(shù)的版本號(hào))卻發(fā)現(xiàn)已經(jīng)太遲了。根據(jù)聲明所述,JSR277還處于“領(lǐng)導(dǎo)地位”,但它實(shí)際已死。

從JSR277中分離出的JSR294(以前可是個(gè)龐然大物,不過現(xiàn)在已經(jīng)模塊化了)是個(gè)很大的進(jìn)步;它將引入一些語言上的變化,這會(huì)使得模塊化的實(shí)現(xiàn)獨(dú)立于任何特定的模塊化進(jìn)程。

從聲明中看到的激動(dòng)人心的事情還有OSGi已經(jīng)成為模塊化的事實(shí)上的標(biāo)準(zhǔn)了,這種合作是件好事。但這不一定意味著它將基于OSGi實(shí)現(xiàn),事實(shí)上,它只是建議***與OSGi而不是其他方式合作:

JSR 277的JAM模塊系統(tǒng)并不適合作為模塊化JDK的基礎(chǔ),那么OSGi框架如何呢?該模塊系統(tǒng)非常成熟、穩(wěn)定和健壯。其核心甚至已經(jīng)在Java虛擬機(jī)中實(shí) 現(xiàn)出來了,也就是Apache Harmony。OSGi并沒有與Java語言集成,相反,它構(gòu)建在Java SE平臺(tái)之上而不是其中。

這***的問題也能解決。Sun現(xiàn)在計(jì)劃直接與OSGi聯(lián)盟合作以便OSGi框架的未來版本能充分利用JSR 294的特性進(jìn)而能和語言集成的更加緊密。

08年底,Java 7新特性展望

現(xiàn)在的Java程序員,或者說所有語言的程序員,都面臨著日益增多的開源和商業(yè)類庫,往往要花費(fèi)很長時(shí)間來管理其依賴關(guān)系。今天的一個(gè)普通企業(yè)應(yīng)用程序往往要依賴數(shù)十個(gè)外部JAR文件,其本身往往就能包含數(shù)十個(gè)不同團(tuán)隊(duì)開發(fā)的更小內(nèi)部工程。我們一直在堅(jiān)持尋找更好的方式來管理日益復(fù)雜的依賴關(guān)系,以使我們的開發(fā)更具重用性,部署更加完整?,F(xiàn)在出現(xiàn)了越來越多的類似Maven的依賴關(guān)系管理系統(tǒng),以及諸如OSGi之類的運(yùn)行時(shí)部署系統(tǒng),這一點(diǎn)正是反應(yīng)了這種需求的增長趨勢。

在Java SE 7發(fā)展初期,兩個(gè)重要的JSR曾經(jīng)試圖解決依賴關(guān)系管理問題,分別是JSR 294:Java編程語言中的改進(jìn)模塊性支持(Improved Modularity Support in the Java Programming Language)和JSR 277:Java模塊系統(tǒng)(Java Module System),兩者分別關(guān)注Java模塊概念的開發(fā)和部署方面。一個(gè)模塊(module)就是多個(gè)實(shí)現(xiàn)相同目標(biāo)且相互存在聯(lián)系的類的集合,與JAR類似,但是,根據(jù)開發(fā)和部署的需要,一個(gè)模塊的范圍可以是一個(gè)JAR的一部分,也可以是幾個(gè)JAR的集合。在2008年中期,JSR 294被簡化并合并到JSR 277中,以便同一個(gè)專家組能夠先后研究這兩個(gè)方面。

在2008年12月份,Sun再次重新審視這一計(jì)劃,宣布在OpenJDK社區(qū)中創(chuàng)建Jigsaw項(xiàng)目,以在明年實(shí)現(xiàn)JDK 7模塊化。JSR 277和Java模塊系統(tǒng)的研究將被放到Java SE 7推出之后進(jìn)行,而JSR 294將被重新恢復(fù)研究。Sun已經(jīng)聲明了此舉的意圖是,與OSGi聯(lián)盟更緊密的配合,以便JSR 294模塊可以被OSGi所使用。

在Java SE 7中有一個(gè)問題將得到解答,即Sun將如何來使用module關(guān)鍵字,它是最初的JSR 294中的一個(gè)重要概念,預(yù)計(jì)將包含在下一平臺(tái)版本中。

假定有一個(gè)名為Flapjack的項(xiàng)目由幾個(gè)Java包(package)組成,該項(xiàng)目包含在基包(base package)中的一個(gè)public APIs,和實(shí)現(xiàn)這個(gè)API的幾個(gè)內(nèi)部包:

·org.flapjack - public API classes

·org.flapjack.impl - 實(shí)現(xiàn)類

·org.flapjack.util - 實(shí)用類

在Java SE 6中,如果你需要在基包中放置一個(gè)工廠類(factory class),以實(shí)例化內(nèi)部執(zhí)行包中的API類,你需要將這個(gè)實(shí)現(xiàn)類設(shè)為public,這樣它們才可以從API包中被看到。由于跨越了不同的包,沒有辦法既允許API以factory方法對(duì)類實(shí)例化,又不允許外部類直接執(zhí)行它。

JSR 294模塊將允許你聲明整個(gè)包集合為一個(gè)模塊,你只需要在源程序中加入以下一個(gè)新的聲明:

module org.flapjack;你可以將這個(gè)聲明加在你的項(xiàng)目中每一個(gè)源程序文件中,也可以將其增加到package-info.java文件中,然后一次將其應(yīng)用到整個(gè)包。雖然module是一個(gè)新關(guān)鍵字,它是一個(gè)“限制性”關(guān)鍵字,只有在特定位置時(shí)才被作為關(guān)鍵字來處理;因此,它可以在任何其它地方作為普通Java標(biāo)識(shí)符來使用。這使得它擴(kuò)展了語言的功能,同時(shí)又保持了其向后兼容性。

除了新的聲明外,你還可以把module關(guān)鍵字當(dāng)作一個(gè)新的可見性修飾符使用,你可以用它來定義一個(gè)類,使其僅對(duì)同一個(gè)模塊中的其它類可見,Listing 1演示了module關(guān)鍵字的這種用法。

 
 
 
  1. Listing 1 
  2. module org.flapjack;  
  3. package org.flapjack.impl;  
  4. import org.flapjack.Flapjack;  
  5. module class FlapjackImpl implements Flapjack {  
  6. }  

***,你可以定義一個(gè)新的module-info.java偽類,使用元數(shù)據(jù)來注釋該模塊,增加諸如版本、主類、導(dǎo)入的依賴模塊、導(dǎo)出資源和許多其它預(yù)定義或特定的模塊注釋等。值得注意的是,與現(xiàn)有的package-info.java文件一樣,這個(gè)新的module-info.java文件使用了一個(gè)無效Java源文件名稱,可以避免與已經(jīng)存在的文件可能發(fā)生沖突。

在編譯時(shí),JSR 294讓你可以使用javac來編譯你的類。至于在JVM中,Jigsaw項(xiàng)目將如何規(guī)定模塊的組成、加載和驗(yàn)證,尚需拭目以待。

09年5月,JavaOne前夕對(duì)Jigsaw的展望

……這個(gè)新的模塊系統(tǒng)的***部分就是JSR-294,即所謂的超級(jí)包。也正是這個(gè)規(guī)范闡釋了Java語言的模塊部分的概念。

JSR-294引入了新的可見性關(guān)鍵字“module”。如果一個(gè)成員擁有這樣的可見性,那就意味著它只對(duì)同一模塊中的成員可見。它會(huì)創(chuàng)建一個(gè)內(nèi)部的 API,只有模塊本身能調(diào)用。就此看來,“public”關(guān)鍵字應(yīng)當(dāng)只在聲明一個(gè)公共的API時(shí)才用。而在其他情況下,應(yīng)當(dāng)使用“module”或者有更多限制的可見性關(guān)鍵字。當(dāng)然,一旦語言中有了“module”關(guān)鍵字,那么模塊之間的可見性限制將會(huì)由編譯器來負(fù)責(zé)檢查。

JSR-294也允許定義依賴性。你可以在某個(gè)給定版本中,定義某個(gè)模塊依賴于另一模塊。比如:

 
 
 
  1. //org/netbeans/core/module-info.java  
  2. @Version("7.0")  
  3. @ImportModule(name="java.se.core", version="1.7+")  
  4. module org.netbeans.core;  

***一句表明“org.netbeans.core”模塊依賴“java.se.core”的1.7版本或者更高。這類似于Maven的依賴性或者 OSGi的導(dǎo)入。你也可以暫時(shí)不要管這些語法,因?yàn)閷碚Z法可能會(huì)另有變化。重要的是,這兒的依賴是在module-info.java中定義的,會(huì)被編譯成class文件。而OSGi中,依賴則是在普通的文本文件中定義的。

Jigsaw項(xiàng)目是這個(gè)新模塊系統(tǒng)的第二部分。我預(yù)計(jì)它會(huì)是JSR-294特定于Sun的實(shí)現(xiàn),也會(huì)是Sun JDK的模塊化實(shí)現(xiàn)。既然創(chuàng)建完整的JDK模塊化是有必要的,Sun就希望把標(biāo)準(zhǔn)庫分裝成模塊。這直接簡化了JRE中的內(nèi)容整合。整個(gè)JRE除了Swing之外的所有內(nèi)容因此都能夠在移動(dòng)設(shè)備上運(yùn)行。它還有可能為語言引入新的標(biāo)準(zhǔn)API,而無需再等待整個(gè)平臺(tái)的新版本發(fā)布。目前看起來,這個(gè)項(xiàng)目絕對(duì)有希望實(shí)現(xiàn)。

但我對(duì)此還有個(gè)擔(dān)憂,那就是,專有的Jigsaw和JSR標(biāo)準(zhǔn)之間的關(guān)系并不清晰,正如Mark Reinhold所說的:

對(duì)Jigsaw的投入無疑會(huì)創(chuàng)建出一個(gè)簡單的、低層次的模塊系統(tǒng),它的設(shè)計(jì)會(huì)嚴(yán)格地朝著JDK模塊化的目標(biāo)而發(fā)展。開發(fā)人員可以把這個(gè)模塊系統(tǒng)運(yùn)用到他們的代碼中去,Sun對(duì)這個(gè)模塊系統(tǒng)也會(huì)是絕對(duì)的支持,但它不會(huì)是Java SE 7平臺(tái)規(guī)范的官方部分,也可能不會(huì)被其他SE 7實(shí)現(xiàn)所支持。

這段話說的不是很清楚,當(dāng)中有很多疑問。他的意思是說創(chuàng)建的模塊只能在Sun JRE中運(yùn)行嗎?還是想說,如果開發(fā)者寫了“@ImportModule(name="java.se.core", version="1.7+")”,那么這個(gè)模塊只能在Sun JRE中運(yùn)行,而不能在IBM JRE環(huán)境中運(yùn)行嗎?或者他的意思是不是說Sun會(huì)以某種方式把它的JRE分割成許多模塊,而Oracle會(huì)選擇另外的方式去分割嗎?(譯者注:至少現(xiàn)在看來,不太會(huì)有這樣的可能了,因?yàn)镺racle剛剛收購了Sun)。我們希望都不是,因?yàn)檫€有“編寫一次,到處運(yùn)行”的原則。

細(xì)究起來問題更多。我們并不清楚Jigsaw項(xiàng)目的主要目標(biāo)是什么。據(jù)項(xiàng)目本身所宣布的主要目標(biāo)來看,它要實(shí)現(xiàn)的是Sun JRE的模塊化,但如果純粹是要實(shí)現(xiàn)模塊化的話,就不需要對(duì)語言做任何改變。Sun可以對(duì)JRE進(jìn)行模塊化,而不修改Java語言本身。

這些語言上的變化會(huì)不會(huì)成為Sun JRE模塊化帶來的副產(chǎn)品?如果是,那就徹底錯(cuò)了!語言變化必須是一等公民,而不是專屬的副產(chǎn)品。

【更多關(guān)于Java 7的文章推薦】

  1. 6月5日外電頭條:探秘Java 7模塊化 類路徑永遠(yuǎn)消失
  2. 走進(jìn)Java 7中的模塊系統(tǒng)
  3. Java 7將向細(xì)顆粒并行化發(fā)展
  4. Java 7路線圖更新 未包含閉包特性
  5. Java 7新特性展望 語言本身的改變會(huì)很少
  6. 走進(jìn)Java 7中的模塊系統(tǒng)

網(wǎng)站欄目:Jigsaw項(xiàng)目簡介:Java7的新模塊系統(tǒng)
當(dāng)前地址:http://www.5511xx.com/article/dpcccdi.html