精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java 模塊化系統初探

開發 后端
Java 模塊化系統自提出以來經歷了很長的時間,直到 2014 年晚些時候才最終以 JSR(JSR-376) 定稿,而且這個部分有可能在 Java 9 中出現。但是一直以來都沒有可以使用的原型。9 月 11 日,OpenJDK 發布的早期構建版本終于包含了 Jigsaw 項目。

 Java 模塊化系統自提出以來經歷了很長的時間,直到 2014 年晚些時候才最終以 JSR(JSR-376) 定稿,而且這個部分有可能在 Java 9 中出現。但是一直以來都沒有可以使用的原型。9 月 11 日,OpenJDK 發布的早期構建版本終于包含了 Jigsaw 項目。

[[151504]]

昨天,我和同事 Paul Bakker 在 JavaZone 上對于 Java 模塊化系統進行了討論。整個討論都建立在JSR-376 需求文檔以及身邊一些珍貴的信息上。在年初提出舉行這個報告的時候,我們曾深信不疑地認為在這個會上我們能夠展示一個原型,但是事情卻沒有按預想的那樣發 展。現在的情況是,這個原型將在我們的報告結束之后發布。這也意味著,報告中的一些內容已經有點過時了,但是主要的思想還是很有新意的。如果你對 Java 模塊化系統方案一無所知的話,建議你在閱讀這篇文章之前先去看一下我們的報告。我們的報告介紹了現在的方案,并進一步與 OSGi 進行了比較。

為什么要使用模塊?

什么是模塊?我們為什又需要它們?如果希望有一個深入的討論,請閱讀“State of the module system”或者看一下我們的報告。對這塊還不是很了解的人來說,這里有Cliff 的注釋版本。

我們都知道 Java 有 jar 文件。但是,事實上這些都只是包含一些class(類)的壓縮文件,這些 jar 包內部都是一些 package (包)。當你利用一些不同的 jar 包來運行應用程序的時候(復雜一點的程序也適用),你需要把它們放到指定的類路徑中。然后默默祈禱。因為沒有有效的工具來幫助你知道,你是否已經把應用所 需要的 jar 包都放入類路徑中了。或者有可能你在不經意間將同樣的類文件(在不同的 jar 包中)都放入了類路徑中。類路徑災難(類似于 DLL 災難)是真實存在的。這會導致運行時出現糟糕的狀況。同時,在運行時我們也無法得知 jar 中包含哪些類。從 JRE 角度來說只知道有一堆類文件。事實上 jar 包之間是相互依賴的,但目前還不能把這種依賴關系記錄到數據文件中去。理想的情況是,你可以隱藏 jar 包中類文件具體的實現,只是提供一些公共的 API 。在 Java 中提出模塊化系統就是為了解決這些問題的:

  • 模塊成為首先要考慮的部分,它能夠分裝實現細節并且只暴露需要的接口。

  • 模塊準確地描述了他們能夠提供的接口,以及他們的需要部分(依賴)。由此,我們可以在開發的過程中弄清和處理依賴關系。

模塊系統極大地提升了大型系統的可維護性、可靠性、安全性。至少 JDK 本身還缺少這樣的系統。通過這樣的模塊系統,模塊圖能夠自動地構建。這個圖只包括了你的應用程序運行時所須要的模塊。

安裝 JDK9 預覽版

如果你想親自嘗試編寫示例代碼,你需要安裝包含 Jigsaw 原型的 JDK9 早期構建版本。在 OSX 上,你需要解壓文檔,然后把解壓出來的目錄移動到 Library/Java/JavaVirtualMachines/ 下。然后你需要設置環境變量,將 JAVA_HOME 環境變量指向 JDK9 的目錄。我使用了非常好用的setjdk 腳本,通過它可以在命令窗口中實現 Java 安裝的命令切換。你很有可能不愿意使用這個早期構建版本作為你的 Java 安裝版本。你可以通過 java -version 來確認安裝完成。輸出如下面所示:

1

2

3

java version "1.9.0-ea"

Java(TM) SE Runtime Environment (build 1.9.0-ea-jigsaw-nightly-h3337-20150908-b80)

Java HotSpot(TM) 64-Bit Server VM (build 1.9.0-ea-jigsaw-nightly-h3337-20150908-b80, mixed mode)

只要輸出中包含 Jigsaw ,你就可以繼續了。文章后面的示例代碼可以去 https://github.com/sandermak/jigsaw-firstlook 下載。

一個簡單的例子

你仍舊可以通過類、jar包以及類路徑這樣“傳統方式”的方式來使用 JDK9 。但是明顯地我們想要采用模塊的方式。所以我們將創建一個包含兩個模塊的工程:模塊一使用了模塊二中的代碼。

首先要做的就是,構建我們的工程并把兩個模塊很好地區分開來。然后,模塊中需要以 module-info.java 文件的形式添加元數據。我們的示例構建如下:

1

2

3

4

5

6

7

src

  module1

     module-info.java

     comtestTestClassModule1.java

  module2

     module-info.java

     commoretestTestClassModule2.java

接著,我們將介紹 package (包)層最頂上的一層(module1、 module2),這部分你在之前已經構建好了。在這些“模塊目錄”中,可以看到 module-info.java 文件在根目錄下。此外請注意,這兩個類都是在顯示命名的包中的。

請看 TestClassModule1 的代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

package com.test;

 

import com.moretest.TestClassModule2;

 

public class TestClassModule1 {

 

   public static void main(String[] args) {

 

     System.out.println("Hi from " + TestClassModule2.msg());

 

   }

 

}

看起來很普通對吧?這里并沒有涉及模塊,而是導入了 TestClassModule2 ,主函數之后會去調用其中的 msg() 方法。

1

2

3

4

5

6

7

8

9

10

11

package com.moretest;

 

public class TestClassModule2 {

 

   public static String msg() {

 

     return "from module 2!";

 

   }

 

}

到目前為止,module-info.java 還是空的。

對 Java 模塊進行編譯

現在進行下一步:編譯我們的模塊,并關聯源文件。為了做這項工作,我們將介紹一個新的 javac 編譯參數:

1

javac -modulesourcepath src -d mods $(find src -name '*.java')

使用上面語句時,我們假設命令程序已經處于 src 文件夾的上級目錄中了。-modulesourcepath 參數會讓 javac 從傳統編譯模式進入模塊模式。-d 標記指出了編譯好的模塊的輸出目錄。javac 將以非打包文件的形式輸出這些模塊。如果我們這之后想以 jars 的形式使用這些模塊的話,需要一個單獨的步驟。

那么當我們調用上面的 javac 命令行的時候會發生什么那?編譯出錯了!

1

2

src/module1/module-info.java:1: error: expected 'module'

src/module2/module-info.java:1: error: expected 'module'

空的 module-info.java 文件導致了這個錯誤。所以,一些新的關鍵字將被引入到這些文件中來,這些都是模塊中非常重要的部分。這些關鍵字的作用域就是 module-info.java 的定義部分。你還可以在 java 的源文件中使用 module 類型的變量。

我們采用了最少的描述信息,并更新了模塊描述文件:

1

module module1 { }

然后是模塊2:

1

module module2{ }

現在,模塊已經被準確地命名了,但是還沒有包含其它的數據。再次編譯會導致新的錯誤:

1

src/module1/com/test/TestClassModule1.java:3: error: TestClassModule2 is not visible because package com.moretest is not visible

封裝出現了!默認情況下,模塊內部的類或者其他類型對外都是隱藏的。這就是 javac 不允許使用 TestClassModule2 的原因,即使它是一個公共的類。如果我們還是使用基于傳統類路徑的編譯的話,一切都可以正常運作。當然我們也可以通過明確地將 TestClassModule2 暴露給外部來解決這個問題。接下來的這些改變對于 module2 中的 module-info.java 來說是必須的:

1

2

3

4

5

module module2 {

 

  exports com.moretest;

 

}

這還不夠。如果你將修改后的編譯,你會得到同樣的錯誤。那是因為,雖然現在 module2 已經暴露了所需的包(包含所有的公共類型),但是 module1 還沒有聲明它對 module2 的依賴。我們同樣可以改變 module1 的 module-info.java 文件來解決這個問題:

1

2

3

4

5

module module1 {

 

   requires module2;

 

}

通過指定名字的方法可以表示對其它模塊的依賴,盡管在這些模塊中是以包的形式導出的。這方面還有很多可以說的東西,但是我并不想在初步的介紹中涉 及。在做完這一步之后,我們使用 Jigsaw ***次成功編譯了多模塊項目。如果你打開 /mods 目錄,你能看到編譯出來的東西被整齊地劃分為兩個目錄。這就成功了!

運行模塊化代碼

只是編譯的話并沒有多大樂趣。我們希望應用程序能夠運行起來。幸運的是,JRE 和 JDK 已經在這個原型中支持模塊關聯。這個應用可以通過指定模塊路徑的方式來啟動,而不是類路徑:

1

java -mp mods -m module1/com.test.TestClassModule1

我們把模塊路徑指向 mods 文件夾,這個文件就是 javac 編譯時寫輸出模塊的地方。而 -m 指出了最初要啟動的模塊,通過這個模塊可以逐步啟動其他模塊。我們同樣添加了在初始化時需要調用的啟動類的名字,運行結果如下所示:

1

Hi from from module 2!

未來

這部分介紹可以讓你初步了解可以使用 Java 9 中的模塊可以做什么。這部分還是需要更多的探索。就像打包一樣:除了jar包,即將會有一種新的形式叫做 jmod 。這個模塊化系統同樣包括一個服務層,它可以通過接口綁定服務提供者和服務使用者。可以把這個看成反轉控制:模塊系統擔任服務注冊管理的角色。還有一個值 得期待的地方是,JDK 本身將會如何使用模塊化系統進行模塊化。這有可能支持一些非常棒的技術,比如創建一個運行時鏡像,這個鏡像可以只包括 JDK 和你應用所需要的那些模塊。好處有:占用更少的空間,對于程序整體的優化可以有更多的選擇等等。這些前景都是很光明的。

我接下來將嘗試移植一個簡單的 OSGi 應用程序(該程序會使用一些模塊和服務)到 Java 9 模塊系統上。敬請關注!

原文鏈接: dzone 翻譯: ImportNew.com - 閔 大為
譯文鏈接: http://www.importnew.com/16761.html

 

 

 
責任編輯:王雪燕 來源: ImportNew
相關推薦

2019-08-28 16:18:39

JavaScriptJS前端

2018-03-21 21:31:28

Java9編程Java

2009-10-28 13:29:14

Linux文件系統安裝

2020-09-17 10:30:21

前端模塊化組件

2017-05-18 10:23:55

模塊化開發RequireJsJavascript

2013-08-20 15:31:18

前端模塊化

2022-03-11 13:01:27

前端模塊

2020-09-18 09:02:32

前端模塊化

2010-03-24 08:34:44

OSGiJava模塊化

2010-02-03 09:01:01

Java動態模塊化

2009-12-10 11:04:08

Java模塊化OSGiJigsaw

2022-09-05 09:01:13

前端模塊化

2018-06-21 09:36:09

模塊化數據中心集中化

2016-12-21 17:02:35

數據中心MDC模塊化

2019-09-02 10:51:59

Python腳本語言程序員

2017-05-18 11:43:41

Android模塊化軟件

2016-10-09 11:03:41

Javascript模塊化Web

2022-09-21 11:51:26

模塊化應用

2017-09-22 18:50:50

模塊化Java 9發布

2009-07-09 17:59:16

模塊化系統英特爾服務器
點贊
收藏

51CTO技術棧公眾號

日韩在线视频在线| 国产精品天天狠天天看 | 日韩黄色小视频| 中文字幕久久亚洲| 久久久久亚洲av片无码v| 91老司机福利在线| 国产亚洲一区二区三区四区 | 国产精品99久久不卡二区| 欧美黑人xxxx| 男人的天堂官网| 久久伦理中文字幕| 色哟哟一区二区| 可以在线看黄的网站| 亚洲av成人精品毛片| 免费成人在线网站| 久久久久久久久久久免费精品 | 一级久久久久久久| 亚洲精品国产日韩| 一区在线视频| 一区二区三区中文字幕| 蜜桃麻豆www久久国产精品| 亚洲最新av网站| 亚洲色诱最新| 久久久精品国产亚洲| 一区二区三区免费在线观看视频| 亚洲精品大片| 91高清视频免费看| 国产中文字幕乱人伦在线观看| av在线电影播放| 99国产欧美另类久久久精品 | www.九色.com| 在线国产91| 91免费小视频| 国产精品三区四区| www.香蕉视频| 国产一区二区三区在线观看免费| 国产999精品久久久| 国产精品变态另类虐交| 亚洲成av人片乱码色午夜| 亚洲午夜性刺激影院| 欧美在线一级片| 亚洲综合色婷婷在线观看| 欧美精品在线视频| 美女黄色片视频| 亚洲深夜视频| 亚洲成a人v欧美综合天堂下载 | 禁久久精品乱码| 美女av一区二区| 国产wwwwxxxx| 日韩大片在线观看| 揄拍成人国产精品视频| 性少妇bbw张开| 香蕉视频一区| 日韩精品免费综合视频在线播放| 精品久久精品久久| 激情网站五月天| 精品视频在线一区二区| 国产精品无人区| 午夜精品一区二区三区四区| 精品成人一区二区三区免费视频| 久久综合色播五月| 久久国产精品一区二区三区四区 | 精品一区二区在线看| 国产精国产精品| 亚洲 日本 欧美 中文幕| 亚洲欧洲日本mm| 欧美精品国产精品日韩精品| 久久影院一区二区| 一本色道久久综合亚洲精品不卡 | 精品无码av在线| 欧美午夜a级限制福利片| 久久99久久99精品免观看粉嫩 | 亚洲电影第三页| 久操网在线观看| 欧美巨大丰满猛性社交| 日韩欧美综合在线视频| 成人一区二区三| 成人在线不卡| 678五月天丁香亚洲综合网| 亚洲一区二区中文字幕在线观看| 伊人久久大香线蕉av超碰| 亚洲国产高潮在线观看| 欧美特黄一区二区三区| 日韩理论片av| 色综合91久久精品中文字幕| 亚洲综合一二三| 久久先锋资源| 国产中文日韩欧美| 国产原创精品在线| 中文字幕日韩国产| 日一区二区三区| 成人黄色av网| 日本黄色免费视频| 国产亚洲精品超碰| 99精品一级欧美片免费播放| 污网站在线免费看| 欧美日韩一区二区免费在线观看| 国产超碰在线播放| 在线精品视频一区| 一本色道久久88亚洲综合88 | 一区二区三区在线观看动漫| 国产精品久久久久7777| 三上悠亚激情av一区二区三区| 欧美色窝79yyyycom| 一区二区久久精品| 亚洲精品推荐| 九九综合九九综合| 日韩手机在线视频| 国产不卡在线一区| 日本在线高清视频一区| 青草在线视频在线观看| 色婷婷狠狠综合| 欧美色图校园春色| 国产成人高清| 久久久人成影片一区二区三区观看 | 欧美另类老女人| 亚洲另类在线观看| 国产精品77777竹菊影视小说| 欧美国产视频在线观看| av在线官网| 日本高清视频一区二区| 娇妻高潮浓精白浆xxⅹ| 97精品视频| 91国语精品自产拍在线观看性色| 国产又粗又大又爽| 国产亚洲欧洲一区高清在线观看| 老司机激情视频| 日韩黄色三级在线观看| 国产婷婷成人久久av免费高清| 欧美一区二区三区爽爽爽| 免费人成黄页网站在线一区二区| 国产综合欧美在线看| 手机av在线播放| 午夜久久tv| 亚洲福利视频专区| 91视频综合网| 免费在线视频一区| av在线不卡一区| 日本视频不卡| 欧美性xxxxx极品少妇| 久久一区二区电影| 欧美精选在线| 91免费视频国产| 免费在线毛片网站| 欧美日韩精品欧美日韩精品一| 欧美图片一区二区| 99精品国产一区二区青青牛奶| 99高清视频有精品视频| 麻豆tv在线| 欧美欧美欧美欧美首页| 国产精品一二三区在线观看| 日韩五码在线| 精品视频一区二区| 波多野一区二区| 精品国产a毛片| 久久精品国产亚洲AV无码男同| 国产精品中文字幕欧美| 日本黄xxxxxxxxx100| 国产一精品一av一免费爽爽| xvideos国产精品| 91亚洲欧美激情| 国产精品国产三级国产| 亚洲精品性视频| 911精品美国片911久久久| 成人高清视频观看www| 午夜小视频在线| 欧美久久免费观看| 国产人妻精品一区二区三区不卡| 国模无码大尺度一区二区三区| 中文字幕一区二区三区四区五区| 91精品国产色综合久久不卡粉嫩| xxxx性欧美| 国产视频一二三四区| 精品极品在线| 欧美日韩久久久一区| 中国特黄一级片| 国内精品第一页| av免费观看大全| 久久99精品久久久久久园产越南| 国产精品盗摄久久久| 欧美r级在线| 精品对白一区国产伦| 全部毛片永久免费看| 国产视频一区不卡| 国产大片一区二区三区| 精品电影一区| 欧美日韩喷水| 日韩在线电影| 久久久久久一区二区三区| 日本a一级在线免费播放| 欧美亚洲自拍偷拍| 欧美精品一区二区成人| 91麻豆产精品久久久久久| 日韩一区二区三区不卡视频| 欧美~级网站不卡| 麻豆传媒一区| 四虎国产精品永久在线国在线| 欧美黑人一级爽快片淫片高清| 日韩精品视频无播放器在线看 | 丁香婷婷综合激情| 蜜桃视频欧美| 亚洲精品日韩激情在线电影| 伊人久久国产| 大量国产精品视频| 男人av在线| 日韩免费看网站| 国产一区二区视频网站| 亚洲婷婷综合色高清在线| 波多野结衣福利| 国产精品一二二区| 成人中文字幕av| 久久精品国产av一区二区三区| 精品人妻大屁股白浆无码| 小泽玛利亚一区| 蜜臀精品久久久久久蜜臀| 日韩美女爱爱视频| 欧美日韩激情在线一区二区三区| 91视频在线免费观看| 美女100%一区| 久久久久久久999精品视频| jyzzz在线观看视频| 亚洲国产天堂久久综合网| 国产又大又黄又爽| 日本高清无吗v一区| 国产香蕉在线视频| 亚洲欧美国产77777| 日韩视频在线观看免费视频| 欧美jizz18hd性欧美| 亚洲精品www久久久久久广东| 国产又爽又黄又嫩又猛又粗| 色综合天天综合色综合av| 国产精品自拍视频一区| 亚洲色图都市小说| 黑人と日本人の交わりビデオ| 99精品桃花视频在线观看| 波多野结衣中文字幕在线播放| 日本在线播放一区二区三区| 欧美日韩亚洲一| 在线播放日韩| 久久av综合网| 欧美日韩视频| 69精品丰满人妻无码视频a片| 欧美电影免费播放| 日韩视频在线观看国产| 亚洲第一福利专区| 另类小说综合网| 女同久久另类99精品国产| 高清av免费一区中文字幕| 国产色99精品9i| 国产人妖伪娘一区91| www成人在线视频| 国产成人精品久久久| 日韩av中字| 日本aⅴ大伊香蕉精品视频| 欧美伦理91| 日本a级片电影一区二区| 欧美一区 二区 三区| 国产精品国产福利国产秒拍| 欧美xnxx| 国产日韩在线精品av| 亚洲高清国产拍精品26u| 91中文在线观看| 亚洲小说春色综合另类电影| www.成人av.com| 欧美五码在线| 日本中文不卡| 色喇叭免费久久综合| 黄黄视频在线观看| 国自产拍偷拍福利精品免费一| 久久男人资源站| 99国产精品私拍| 可以免费在线看黄的网站| 青青草原综合久久大伊人精品优势 | 日韩欧美中文在线视频| 国产精品亚洲一区二区三区妖精 | 91亚洲精品久久久蜜桃| av中文字幕免费观看| 国产精品美女久久久久久久久久久 | 国产私人尤物无码不卡| 日韩欧美一级二级三级| 污视频在线免费| 亚洲区中文字幕| 免费超碰在线| 91精品国产高清久久久久久久久 | 久久精品一卡二卡| 福利一区福利二区| 美女爆乳18禁www久久久久久| 国产精品九色蝌蚪自拍| 久久亚洲AV无码| 91成人免费网站| 99草在线视频| 亚洲欧美国产另类| 好了av在线| 欧美与黑人午夜性猛交久久久| 国产亚洲人成a在线v网站 | 国产精品伦理在线| 久久亚洲成人av| 欧美午夜影院一区| 后进极品白嫩翘臀在线视频| 亚洲欧洲成视频免费观看| 操你啦在线视频| 日本欧美国产在线| 日本一区二区三区电影免费观看| 久久riav| 欧美在线三级| 久久久久久久少妇| 成人黄色在线看| 开心激情五月网| 日韩欧美成人精品| 亚洲春色一区二区三区| 亚洲天堂男人天堂| 超碰中文在线| 成人xvideos免费视频| 台湾色综合娱乐中文网| 亚洲一区 在线播放| 天堂一区二区在线| 岛国av免费观看| 中文字幕在线不卡国产视频| 黄色在线视频网址| 精品免费国产一区二区三区四区| 91露出在线| 国产成人精品免费久久久久| 国产一区二区在线视频你懂的| 一区二区三区四区久久| 免费在线欧美视频| 久久午夜福利电影| 色综合久久88色综合天天免费| 亚洲AV无码成人片在线观看| 日韩中文字幕在线视频| 黄色综合网址| 久久精品国产99精品国产亚洲性色| 欧美黄色一区| 不用播放器的免费av| 国产精品色哟哟| japanese国产在线观看| 亚洲欧美日韩精品久久奇米色影视 | 国产九色91回来了| 亚洲女同精品视频| 麻豆视频在线看| 国产伦精品一区二区三区免 | 欧洲大片精品免费永久看nba| 亚洲一区三区在线观看| 免费在线观看成人| 日本二区在线观看| 欧美色图12p| 97超碰人人在线| 国产精品尤物福利片在线观看| 欧美一区电影| 91国产精品视频在线观看| 国产午夜精品一区二区三区嫩草 | 欧美福利一区| 69久久精品无码一区二区| 亚洲欧美视频在线观看| 国产情侣在线播放| 欧美日韩福利在线观看| 亚洲第一二区| 亚洲人成无码网站久久99热国产| 成人午夜视频在线| 国产午夜精品无码一区二区| 精品国产亚洲在线| 末成年女av片一区二区下载| 免费观看国产成人| 日本91福利区| 免费成人深夜夜行网站| 日韩欧美视频在线| mm视频在线视频| 欧美日韩在线精品一区二区三区| 久久在线精品| 可以免费看av的网址| 日韩一级成人av| 99re6在线精品视频免费播放| 久久久久久久久久久久久久一区 | 久久久亚洲精选| 婷婷精品在线| 日韩爱爱小视频| 亚洲精品国产视频| 四季av日韩精品一区| 国产成人jvid在线播放| 久久视频国产| 99久久久无码国产精品性波多| 丁香五六月婷婷久久激情| 99riav在线| av成人观看| 免费在线亚洲| 91免费公开视频| 精品国产伦一区二区三区观看方式| 亚洲色图官网| 中文字幕第一页亚洲| 成人精品国产免费网站| 国产91av在线播放| 九九热r在线视频精品| 亚洲精品中文字幕99999| 日韩av卡一卡二| 午夜欧美一区二区三区在线播放| 国产视频网址在线| 97人人做人人人难人人做| 久久久综合网| 久久久久久久久久91| 亚洲色图50p| 91麻豆精品激情在线观看最新|