精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

擼擼色在线看观看免费| 97在线视频人妻无码| 婷婷综合成人| 欧美亚洲一区三区| 国产又粗又爽又黄的视频| 深爱激情五月婷婷| 麻豆精品新av中文字幕| 久久久爽爽爽美女图片| 欧美黄色一级生活片| 日本免费一区二区三区视频| 精品福利樱桃av导航| 亚洲美女网站18| 色综合免费视频| 久久精品国产亚洲高清剧情介绍 | 午夜精品亚洲| 亚洲社区在线观看| 国产精品一区二区无码对白| 国产亚洲精品精品国产亚洲综合| 亚洲aⅴ怡春院| 伊人久久大香线蕉成人综合网| 头脑特工队2在线播放| 国产在线观看一区二区| 国产成人综合亚洲| 日韩欧美亚洲一区二区三区| 亚洲高清影视| 色妞久久福利网| 谁有免费的黄色网址| 久久久久影视| 精品日韩一区二区三区| 日韩 国产 一区| 国产成人a视频高清在线观看| 欧美午夜精品久久久久久久| 免费超爽大片黄| 国产不卡在线| 国产精品国产三级国产aⅴ中文| 久久精品ww人人做人人爽| 精品人妻无码一区二区| 蜜桃传媒麻豆第一区在线观看| 日本视频久久久| 天天操天天干视频| 日韩午夜精品| 97精品欧美一区二区三区| 欧美黄色一级网站| 欧美性久久久| 久久久久国产精品免费网站| 久久99久久98精品免观看软件| 91精品国产成人观看| 久久久999精品视频| 成年人视频软件| 色天天久久综合婷婷女18| 亚洲色在线视频| jizz中文字幕| 成人一级毛片| www.欧美精品一二三区| 四虎永久免费地址| 性欧美69xoxoxoxo| 久久高清视频免费| 黄色一级片在线| 黄色另类av| 91国内在线视频| 在线观看国产亚洲| 亚洲欧美日韩国产一区二区| 国产99久久精品一区二区 夜夜躁日日躁 | 欧美色爱综合| 深夜福利日韩在线看| 五月天免费网站| 欧美国产日本| 午夜剧场成人观在线视频免费观看| 日本三级2019| 美女久久一区| 国产精品视频资源| 精品国产av鲁一鲁一区| 成人夜色视频网站在线观看| 精品国产综合| 成人不用播放器| |精品福利一区二区三区| 日韩免费在线观看av| 日本不卡网站| 欧美美女一区二区在线观看| 国产xxx在线观看| 西瓜成人精品人成网站| 在线播放亚洲激情| 九九视频在线免费观看| 国产精品丝袜xxxxxxx| 国产精品日韩在线播放| www香蕉视频| 91麻豆国产精品久久| 亚洲日本无吗高清不卡| 污片在线免费观看| 色综合久久久久网| 天堂av.com| 日韩av网址大全| 日韩视频亚洲视频| 免费在线观看黄网站| 日本美女视频一区二区| 99精品欧美一区二区三区| 色猫av在线| 亚洲色图欧洲色图| 久久久久久久久久久免费视频| 色999久久久精品人人澡69| 亚洲国产精品va在线看黑人动漫 | 国产精品亚洲片在线播放| 久久在线观看视频| 国产午夜免费福利| 国产精品1区2区| 色播亚洲婷婷| 高清在线视频不卡| 91精品国产综合久久香蕉麻豆| 男男做爰猛烈叫床爽爽小说| 天天揉久久久久亚洲精品| 91精品国产高清久久久久久91| 一级片一区二区三区| 久久综合久色欧美综合狠狠| 在线观看污视频| 国产成人亚洲一区二区三区| 日韩av影视在线| 欧美日韩色视频| 日本欧美久久久久免费播放网| 国产精品国模大尺度私拍| 日本中文字幕视频在线| 色88888久久久久久影院按摩| 国产精九九网站漫画| 97人人精品| 国产精品久久久久不卡| 青青草超碰在线| 亚洲成av人**亚洲成av**| 在线免费看污网站| 日韩精品永久网址| 国产精品精品一区二区三区午夜版 | 免费麻豆国产一区二区三区四区| 青青草精品视频| 欧美日韩电影一区二区三区| 超碰在线视屏| 亚洲精品一线二线三线无人区| 五月天av网站| 久久国产成人午夜av影院| 色一情一乱一伦一区二区三区| 欧美办公室脚交xxxx| 亚洲韩国日本中文字幕| 国产一级二级三级| 国产激情91久久精品导航| 成人短视频在线看| 北岛玲精品视频在线观看| 中文字幕日本精品| 中文字幕永久在线视频| 亚洲国产精品高清| 丰满少妇在线观看| 色综合咪咪久久网| 91久久在线视频| 成人在线观看亚洲| 欧美一区二区三区电影| 国产av 一区二区三区| 国产在线国偷精品免费看| 黄色录像特级片| 亚洲午夜精品| 性欧美暴力猛交69hd| 亚洲av毛片成人精品| 色香色香欲天天天影视综合网| 中文幕无线码中文字蜜桃| 日日夜夜精品免费视频| 日韩精品一区二区三区四区五区| 国产精品久久久久久吹潮| 久久精品国产视频| 亚洲欧美国产高清va在线播放| 亚洲成av人片| av网在线播放| 国产原创一区二区三区| 青青青青在线视频| 杨幂一区二区三区免费看视频| 国产成人精品日本亚洲| 免费网站看v片在线a| 日韩欧美一级二级三级久久久| 久热精品在线观看| 久久蜜臀中文字幕| 久久婷五月综合| 国产综合自拍| 麻豆久久久9性大片| 99只有精品| 欧美二区乱c黑人| 天堂a中文在线| 欧美日韩极品在线观看一区| 九九热国产精品视频| 91在线视频播放| 精品久久久99| 国产日本精品| 亚洲精品高清国产一线久久| 一区二区在线免费播放| 青青草原成人在线视频| 久操视频在线免费播放| 亚洲国产日韩欧美在线99| 中文在线最新版天堂| 一级精品视频在线观看宜春院| 超碰97人人干| 国内成人免费视频| 欧美s码亚洲码精品m码| 久久精品亚洲人成影院 | 男女视频在线观看| 欧美一区二区三区在线看| 999这里只有精品| 亚洲欧洲精品一区二区三区不卡| 熟妇人妻久久中文字幕| 激情成人午夜视频| www黄色av| 欧美日本不卡| 亚洲欧美丝袜| 欧美人与牛zoz0性行为| 97se在线视频| 韩国理伦片久久电影网| 青草青草久热精品视频在线网站| 成人av黄色| 永久免费精品影视网站| 神马午夜精品95| 欧美一级生活片| 18国产免费视频| 欧美视频二区36p| 精品一区二区三区人妻| 亚洲视频一区在线| 国产三级在线观看完整版| 99视频热这里只有精品免费| 色偷偷中文字幕| 麻豆精品在线视频| 欧美少妇性生活视频| 亚洲美女啪啪| 成年人看的毛片| 一区二区中文| 欧美爱爱视频网站| 日韩中文在线电影| 亚洲精品一区二区毛豆| 国产精品一区二区av交换| 另类视频在线观看+1080p| h视频久久久| 岛国视频一区免费观看| 香蕉大人久久国产成人av| 成人免费午夜电影| 日韩在线你懂得| 成人亚洲综合色就1024| 日韩成人综合网| 国产区亚洲区欧美区| 国产成人77亚洲精品www| 国产精品视频一区二区高潮| 成人国产在线| 国产欧美一区二区三区久久人妖| 91精品影视| 国产精品久久久久久久久久小说| 97久久香蕉国产线看观看| 奇米4444一区二区三区| 另类激情视频| 国产福利视频一区| 91九色综合| 成人国产精品久久久久久亚洲| av在线播放一区二区| 亚洲一区二区三区四区视频| 亚洲国产欧美在线观看| 国产高清自拍一区| 美女福利一区| 区一区二区三区中文字幕| 国产一区二区三区网| 色爱区成人综合网| 国产精品久久久久久久| 欧美少妇一级片| 欧美激情亚洲| 各处沟厕大尺度偷拍女厕嘘嘘| 久久婷婷激情| 中文字幕成人在线视频| 国产传媒日韩欧美成人| 日韩av无码一区二区三区不卡| 26uuu精品一区二区| 久久视频精品在线观看| 亚洲乱码中文字幕| 国产精品111| 91国在线观看| av天堂一区二区三区| 精品国产乱码久久久久久久久| 亚洲av电影一区| 日韩中文字幕在线视频| 欧美xxx黑人xxx水蜜桃| 日韩免费中文字幕| 国语精品视频| 久久av二区| 国产二区精品| 免费欧美一级视频| 精品一区二区日韩| 日本少妇xxxx| 国产精品护士白丝一区av| 久久网一区二区| 欧美专区亚洲专区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 亚洲人精选亚洲人成在线| 成人在线播放免费观看| 日本欧美一二三区| 中文字幕日韩高清在线| 日韩成人av电影在线| 午夜精品偷拍| 不卡的av中文字幕| 99在线精品一区二区三区| 中国特黄一级片| 五月天亚洲婷婷| 国产精品久久久久久久久久久久久久久久| 日韩欧美一级精品久久| av网站大全在线观看| 久久久爽爽爽美女图片| 日韩电影精品| 日本成人黄色| 99国产精品99久久久久久粉嫩| 奇米视频888| 久久―日本道色综合久久| 久青草视频在线观看| 在线成人小视频| 国产在线视频福利| 欧美精品久久久久久久久| 亚洲精品一区av| 日韩女优中文字幕| 国产精品一页| 在线播放av网址| 成人免费在线视频| 久久精品五月天| 日韩av在线免费播放| 26uuu亚洲电影在线观看| 国产精品一二三在线| 欧美人与牛zoz0性行为| 青青青在线视频播放| 国产精品77777| xxxx日本少妇| 777久久久精品| 在线播放毛片| 国产精品精品久久久| 国产99精品一区| 成人免费毛片网| 91尤物视频在线观看| 国产中文字字幕乱码无限| 欧美一级黄色录像| 韩国av网站在线| 成人激情电影一区二区| 三级电影一区| 在线观看国产一级片| 国产精品午夜在线观看| 国产成人精品一区二区色戒| 亚洲色图美腿丝袜| 亚洲国产尤物| 午夜视频久久久| 久久精品国产免费| 亚洲一二三四五六区| 在线不卡欧美精品一区二区三区| 天堂中文8资源在线8| 91精品国产自产在线| 天天做天天爱天天爽综合网| 9l视频白拍9色9l视频| 中文字幕中文在线不卡住| 亚洲一二区视频| 久久久久北条麻妃免费看| 久久久久久爱| 91动漫在线看| 91亚洲男人天堂| 免费视频网站在线观看入口| 这里只有精品视频| 亚洲ww精品| 五月天激情图片| 成人小视频在线观看| 亚洲天堂一区在线| 亚洲亚裔videos黑人hd| 黄色成人在线视频| 中文字幕日韩一区二区三区| 国产一区久久久| 亚洲日本韩国在线| 中文字幕日韩欧美在线 | 精品一区二区日本| 久久久久网站| 天堂网av2018| 欧美成人伊人久久综合网| 国产福利电影在线播放| 日本一区二区精品| 国产在线不卡一卡二卡三卡四卡| 国产奶水涨喷在线播放| 亚洲精品丝袜日韩| 天堂综合在线播放| 成年人午夜视频在线观看 | 亚洲国产欧美一区| 成人激情综合| 国产午夜精品视频一区二区三区| 91在线视频在线| 在线免费av片| 欧美—级a级欧美特级ar全黄| 最新国产一区| 少妇性l交大片7724com| 日韩欧美在线网址| av免费网站在线| 欧美日韩在线高清| 国产精品一区一区| 成人免费毛片男人用品| 欧美成在线视频| 狠狠做深爱婷婷综合一区| www.久久com| 91黄色免费观看| 成年人视频免费在线播放| 日韩精品久久久毛片一区二区| 国产成人综合亚洲91猫咪| 亚洲毛片一区二区三区| 欧美国产亚洲视频| 91综合在线| 国精产品一区一区三区免费视频|