Java 9 揭祕(3. 建立你的第一個模組) - 程式人生
文章推薦指數: 80 %
到目前,NetBeans IDE仍在開發中,並且不支援所有JDK 9功能。
例如,目前需要NetBeans為建立的每個模組建立一個新的Java專案。
在最終版本中,NetBeans將 ...
程式人生>>Java9揭祕(3.建立你的第一個模組)
Java9揭祕(3.建立你的第一個模組)
阿新••發佈:2018-12-30
文by/林本託
Tips
做一個終身學習的人。
在這個章節中,主要介紹以下內容:
如何編寫模組化的Java程式
如何編譯模組化程式
如何將模組的專案打包成模組化的JAR檔案
如何執行模組化程式
在本章中,將介紹如何使用模組——從編寫原始碼到編譯,打包和執行程式。
本章分為兩部分。
第一部分顯示使用命令列編寫和執行模組程式的所有步驟。
第二部分使用NetBeansIDE重複相同的步驟。
到目前,NetBeansIDE仍在開發中,並且不支援所有JDK9功能。
例如,目前需要NetBeans為建立的每個模組建立一個新的Java專案。
在最終版本中,NetBeans將允許在一個Java專案中擁有多個模組。
當使用命令提示符時,會更具體的JDK9選項。
本章介紹的程式非常簡單。
當程式執行時,它列印一個訊息和主類所屬模組的名稱。
一.使用命令提示符
以下小節介紹使用命令提示符建立和執行第一個模組的步驟。
1.設定目錄
將使用以下目錄層次結構來編寫,編譯,打包和執行原始碼:
C:\Java9Revealed
|-->C:\Java9Revealed\lib
|-->C:\Java9Revealed\mods
|-->C:\Java9Revealed\src
|-->C:\Java9Revealed\src\com.jdojo.intro
這些目錄在Windows系統上設定的。
在非Windows作業系統上,你也可以設定類似的目錄層次結構。
C:\Java9Revealed是頂層目錄,它包含三個子目錄:lib,mods和src。
src目錄用於儲存原始碼,其中包含一個com.jdojo.intro的子目錄,並建立一個同名的com.jdojo.intro的模組,並將其原始碼儲存在這個子目錄下。
在這種情況下,是否有必要將子目錄命名為com.jdojo.intro?答案是不。
子目錄可以是不同的名字,或者可以將源直接儲存在src目錄中,而不需要com.jdojo.intro子目錄。
但是,最好將目錄命名為與模組名稱相同的模組的原始碼。
如果遵循這個命名約定,Java編譯器將有一些選項可一次編譯多個模組的原始碼。
使用mods目錄將已編譯的程式碼儲存在展開的目錄層次結構中。
如果需要,可以使用此目錄中的程式碼執行應用程式。
在編譯原始碼之後,將其打包成一個模組化的JAR並將其儲存在lib目錄中。
可以使用模組化JAR來執行程式,也可以將模組JAR提供給可以執行程式的其他開發人員。
在本節的剩餘部分會使用一個目錄(如src或src\com.jdojo.intro)的相對路徑。
這些相對路徑是相對於C:\Java9Revealed目錄。
例如,src表示C:\Java9Revealed\src。
如果使用非Windows作業系統或其他目錄層次結構,請進行適當的調整。
2.編寫原始碼
你可以選擇自己喜歡的文字編輯器(例如Windows上的記事本)來編寫原始碼。
首先建立一個名為com.jdojo.intro的模組。
下面是模組宣告的程式碼。
//module-info.java
modulecom.jdojo.intro{
//Nomodulestatements
}
模組宣告很簡單。
它不包含模組語句。
將其儲存在src\com.jdojo.intro目錄下名為module-info.java的檔案中。
然後建立一個名為Welcome的類,它將儲存在com.jdojo.intro包中。
請注意,包的名字與模組具有相同的名稱。
但必須保持模組和包名稱相同嗎?答案是不。
也可以選擇所需的任何其他包名稱。
該類將具有一個主方法publicstatusvoidmain(String[]args)。
該方法將作為應用程式的入口點。
在此方法內列印訊息。
要列印模組的名稱,Welcome類是它的一個成員。
JDK9在java.lang包中添加了一個名為Module的類。
Module類的一個例項代表一個模組。
JDK9中的每個Java型別都是模組的成員,甚至是int,long和char等原始型別。
所有原始型別都是java.base模組的成員。
JDK9中的Class類有一個名為getModule()的新方法,它返回該類作為其成員的模組引用。
以下程式碼列印了Welcome類的模組名稱。
Class
可以使用int.class.getModule()獲取int基本資料型別的模組的引用。
下面的程式碼包含是Welcome類中程式碼。
並儲存在名為Welcome.java的檔案中,目錄是com\jdojo\intro,它是src\com.jdojo.intro目錄的子目錄。
此時,原始碼檔案的路徑將如下所示:
C:\Java9Revealed\src\com.jdojo.intro\module-info.java
C:\Java9Revealed\src\com.jdojo.intro\com\jdojo\intro\Welcome.java
//Welcome.java
packagecom.jdojo.intro;
publicclassWelcome{
publicstaticvoidmain(String[]args){
System.out.println("WelcometotheModuleSystem.");
//PrintthemodulenameoftheWelcomeclass
Class
javac命令位於JDK_HOME\bin目錄中。
以下命令編譯原始碼。
命令輸入是一行,而不是三行:
C:\Java9Revealed>javac-dmods--module-source-pathsrc
src\com.jdojo.intro\module-info.java
src\com.jdojo.intro\com\jdojo\intro\Welcome.java
注意,執行此命令時,C:\Java9Revealed是當前目錄。
-dmods選項告訴Java編譯器將所有編譯的類檔案儲存到mods目錄下。
注意,正在從C:\java9revealed目錄執行命令,因此命令中的mods目錄表示C:\Java9Revealed\mods目錄。
如果需要,可以用-dC:\Java9Revealed\mods替換此選項。
第二個選項--module-source-pathsrc指定src目錄的子目錄包含多個模組的原始碼,其中每個子目錄名稱與包含原始碼的子目錄的模組名稱相同。
這個選項有一些含義:
在src目錄下,必須將模組的原始檔儲存在子目錄下,該目錄必須與模組命名相同。
Java編譯器將映象src目錄下的目錄結構,同時將生成的類檔案儲存在mods目錄中。
也就是說,com.jdojo.intro模組的所有生成的類檔案將儲存在包層次結構的mods\com.jdojo.intro目錄中。
如果不指定此選項,生成的類檔案將直接放在mods目錄下。
javac命令的最後兩個引數是原始檔——一個是模組宣告,一個Welcome類。
如果javac命令成功執行,則在C:\Java9Revealed\mods\com.jdojo.intro目錄下生成以下兩個類檔案:
module-info.class
com\jdojo\intro\Welcome.class
你完成了原始碼的編譯。
以下命令使用JDK9之前存在的樣式來編譯com.jdojo.intro模組的原始碼。
它僅使用-d選項,該選項指定放置編譯的類檔案的位置。
C:\Java9Revealed>javac-dmods\com.jdojo.introsrc\com.jdojo.intro\module-info.javasrc\com.jdojo.intro\com\jdojo\intro\Welcome.java
第二個命令的輸出與上一個命令的輸出是相同的。
但是,如果要在一個命令中編譯多個模組的原始碼,並將編譯的程式碼放在特定於模組的目錄中,則不起作用。
使用javac的--module-version選項,可以指定正在編譯的模組的版本。
模組版本儲存在module-info.class檔案中。
以下命令將生成與上一個命令相同的一組編譯檔案,還在module-info.class檔案中儲存了1.0作為模組版本:
C:\Java9Revealed>javac-dmods\com.jdojo.intro
--module-version1.0
src\com.jdojo.intro\module-info.java
src\com.jdojo.intro\com\jdojo\intro\Welcome.java
如何確認javac命令在module-info.class檔案中儲存了模組版本?您可以使用javap命令來解析Java類檔案。
如果指定了一個module-info.class檔案的路徑,那麼javap命令會在模組名稱之後列印模組的定義,其中包含模組的版本(如果存在)。
如果模組版本存在,則列印的模組名稱的格式為moduleName@moduleVersion。
執行以下命令以驗證上一個命令記錄的模組名稱:
C:\Java9Revealed>javapmods\com.jdojo.intro\module-info.class
Compiledfrom"module-info.java"
module[email protected]{
requiresjava.base;
}
在JDK9中增強了jar工具。
它允許在建立模組化JAR時指定模組版本。
如果要編譯多個模組,則需要將每個原始檔指定為javac命令的引數。
這裡提供一個Windows和UNIX的快捷命令來一次性編譯所有的模組。
在Windows中的一行中使用以下命令:
C:\Java9Revealed>FOR/F"tokens=1delims="%Ain('dirsrc\*.java/S/B')dojavac-dmods--module-source-pathsrc%A
該命令迴圈遍歷src目錄下的所有".java"檔案,並一次編譯一個Java檔案。
如果將命令儲存在批處理檔案中並執行批處理檔案來編譯所有原始檔,則需要將%A替換為%%A。
該命令的UNIX系統中等價於如下命令:
$javac-dmods--module-source-pathsrc$(findsrc-name"*.java")
4.打包模組程式碼
我們將模組的編譯程式碼打包成一個模組化的JAR。
需要使用位於JDK_HOME\bin目錄中的jar工具。
注意,該命令在一行中輸入,命令的最後一部分是一個點,表示當前目錄。
C:\Java9Revealed>jar--create
--filelib/com.jdojo.intro-1.0.jar
--main-classcom.jdojo.intro.Welcome
--module-version1.0
-Cmods/com.jdojo.intro.
這個命令有如下選項:
--create選項表示要建立一個新的模組化JAR。
--file選項用於指定新的模組化JAR的位置和名稱。
將新的模組化JAR儲存在lib目錄中,其名稱將為com.jdojo.intro-1.0.jar。
將模組化JAR的版本指定為1.0。
--main-class選項指定publicstaticvoidmain(String[])方法作為應用程式入口。
當您指定此選項時,jar工具將在module-info.class檔案中新增一個屬性,其值是指定類的名稱。
jar工具還使用此選項將Main-Class屬性新增到MANIFEST.MF檔案中。
--module-version選項將模組的版本指定為1.0。
jar工具將把這些資訊記錄在module-info.class檔案的屬性中。
請注意,將模組版本指定為1.0不會影響模組化JAR的名稱。
包含1.0以指示其檔名的版本。
該模組的實際版本由此選項指定。
-C選項用於指定執行jar命令時將用作設定當前目錄。
將mods\com.jdojo.intro目錄指定為jar工具的當前目錄。
這將使jar工具從該目錄中讀取所有要包含在模組化JAR中的檔案。
命令的最後一部分是一個點(.),這意味著jar工具需要包括當前目錄mods\com.jdojo.intro下所有檔案和目錄。
請注意,這個引數和-C選項一起使用。
如果不提供-C選項,則該點將被解釋為C:\Java9Revealed目錄,因為該目錄是當前命令列執行的目錄。
當命令成功執行,它建立以下檔案:
C:\Java9Revealed\lib\com.jdojo.intro-1.0.jar
要確保你的模組化JAR包含com.jdojo.intro模組的定義,請執行以下命令。
C:\Java9Revealed>java--module-pathlib--list-modulescom.jdojo.intro
該命令將模組路徑指定為lib目錄,這意味著lib目錄將用於搜尋應用程式模組。
將com.jdojo.intro作為模組名稱傳遞給--list-modules選項,該選項將列印模組描述以及模組的位置。
如果獲得類似於以下內容的輸出,則模組化JAR已正確建立:
module[email protected](file:///C:/Java9Revealed/lib/com.jdojo.intro-1.0.jar)
requiresmandatedjava.base(@9-ea)
containscom.jdojo.intro
5.執行程式
使用java命令來執行Java程式。
語法如下:
java--module-path
--module選項指定要與其主類一起執行的模組。
如果您的模組化JAR包含主屬性,則需要指定部分,並且將從模組化JAR讀取。
Tips
可以分別使用-module-path和-module選項的簡寫版本-p和-m。
以下命令在com.jdojo.intro模組中執行com.jdojo.intro.Welcome類。
當前的目錄是C: Java9Revealed,並且模組化的JAR位於C: java9Revealed\lib\com.jdojo.intro-1.0.jar。
C:\Java9Revealed>java--module-pathlib
--modulecom.jdojo.intro/com.jdojo.intro.Welcome
WelcometotheModuleSystem.
ModuleName:com.jdojo.intro
輸出表示程式已正確執行。
如果在模組程式碼打包到模組化JAR中時指定主類,則可以從命令中省略主類名稱。
我們已經將com.jdojo.intro.Welcome類指定為此模組的主類,因此以下命令的作用與上一個相同:
C:\Java9Revealed>java--module-pathlib--modulecom.jdojo.intro
WelcometotheModuleSystem.
ModuleName:com.jdojo.intro
還可以指定包含模組程式碼的目錄作為模組路徑。
已將模組程式碼編譯到mods目錄中。
以下命令的工作原理相同:
C:\Java9Revealed>java--module-pathmods
--modulecom.jdojo.intro/com.jdojo.intro.Welcome
WelcometotheModuleSystem.
ModuleName:com.jdojo.intro
我們嘗試從mods目錄執行模組,只使用模組名稱:
C:\Java9Revealed>java--module-pathmods--modulecom.jdojo.intro
modulecom.jdojo.introdoesnothaveaMainClassattribute,use-m
錯誤訊息指示在mods\com.jdojo.intro目錄中找到的module-info.class不包含主類名稱。
當宣告模組時,不能在模組宣告中指定主方法或版本。
編譯模組時,只能指定模組版本。
使用jar工具打包時,可以指定模組的主類及其版本。
lib\com.jdojo.intro-1.0.jar中的module-info.class檔案包含主類名,而mods\com.jdojo.intro目錄中的module-info.class檔案則不包含。
如果要執行其編譯程式碼位於分解目錄中的模組,則必須指定主類名稱以及模組名稱。
JDK還提供了-jar選項來從JAR檔案執行主類。
我們使用以下命令執行此模組:
C:\Java9Revealed>java-jarlib\com.jdojo.intro-1.0.jar
WelcometotheModuleSystem.
ModuleName:null
看來只有輸出中的第一行是正確的,第二行是不正確的。
它找到了main()方法中執行了程式碼。
它正確列印訊息,但模組名稱為空。
需要了解JDK9中java命令的行為。
-jar選項存在於JDK9之前。
在JDK9中,型別作為模組的一部分,可以通過模組路徑或類路徑載入。
如果通過類路徑載入型別,則該型別成為未命名模組的成員。
該型別從其原始模組中失去其成員資格,即使該型別是從模組化JAR載入的。
實際上,如果一個模組化的JAR放置在類路徑上,那麼它被視為一個JAR(而不是一個模組化的JAR),忽略它的module-info.class檔案。
每個應用程式類載入器都有一個未命名的模組。
類載入器從類路徑載入的所有型別都是該類載入器的未命名模組的成員。
一個未命名的模組也被表示為一個Module類的例項,該類的getName()方法返回null。
在上一個命令中,模組化JARcom.jdojo.intro-1.0.jar被視為一個JAR,並在其中定義了所有型別,被載入為類載入器的未命名模組的一部分。
這就是為什麼在輸出中將模組名稱設為null的原因。
java命令如何找到主類名?為jar工具指定主類名時,該工具將主類名稱儲存在兩個位置:
module-info.class
META-INF/MANIFEST.MF
該命令從META-INF/MANIFEST.MF檔案讀取主類的名稱。
還可以使用--class-path選項的java命令來執行Welcome類。
可以將lib\com.jdojo.intro-1.0.jar模組放置在類路徑上,在這種情況下,它將被視為JAR,Welcome類將被載入到應用程式類載入器的未命名模組中。
就像在JDK9之前執行類一樣。
執行命令如下:
C:\Java9Revealed>java--class-pathlib\com.jdojo.intro-1.0.jar
com.jdojo.intro.Welcome
WelcometotheModuleSystem.
ModuleName:null
二.使用NetBeansIDE
如果你使用命令提示符按照上一節建立第一個模組,則本部分將更容易掌握。
在本節中,將使用NetBeansIDE完成建立第一個模組的步驟。
有關如何安裝支援JDK9開發的NetBeansIDE,請參閱第1章。
從現在開始,我將使用NetBeans來編寫,程式設計,編譯,打包和執行所有程式。
1.配置IDE
啟動NetBeansIDE。
如果首次開啟IDE,將顯示一個名為起始頁的視窗,如果不希望再次顯示,可以取消選中標籤為“啟動時顯示”的複選框,該複選框位於視窗的右上角。
可以通過單擊視窗標題中的X來關閉起始頁。
選擇“工具”➤“Java平臺”,顯示“Java平臺管理器”對話方塊,如果之前配置過JDK1.8,則會顯示在“平臺”列表中。
如果在“平臺”列表中看到JDK9,則你的IDE已配置為使用JDK9,單擊“關閉”按鈕關閉對話方塊。
如果在“平臺”列表中沒有看到JDK9,請單擊“新增平臺”按鈕開啟“新增Java平臺”對話方塊,選擇JavaStandardEdition單選按鈕。
單擊下一步。
接下來選擇JDK9的安裝目錄:
然後點選“完成”按鈕。
最後返回“Java平臺管理”對話方塊,JDK9已經顯示在其中。
2.建立Java工程
選擇“檔案”➤“新建專案”,彈出對話方塊,選中“Java應用程式”,然後下一步。
在接下來的視窗中,輸入如下資訊,你可以根據你自己的實際需要做出不同的調整。
專案名稱:com.jdojo.intro
專案位置:C:\Java9Revealed
取消下面兩個複選框的。
點選“結束”按鈕,Java工程建立完成。
建立Java專案時,NetBeans會建立一組標準的目錄。
已在C: Java9Revealed目錄中建立了com.jdojo.introNetBeans專案。
NetBeans建立子目錄來儲存原始檔,編譯類檔案和模組化JAR。
它將為專案本身建立安裝目錄和檔案。
建立以下子目錄來儲存原始碼,編譯程式碼和模組化JAR。
C:\Java9Revealed
com.jdojo.intro
build
classes
dist
src
com.jdojo.intro目錄儲存此專案的所有型別的檔案。
它是以NetBeans專案名稱命名的。
src目錄用於儲存所有原始碼。
build目錄儲存所有生成和編譯的程式碼。
專案的所有編譯程式碼儲存在build\classes目錄下。
dist目錄儲存模組化JAR。
請注意,當類新增到專案時,build和dist目錄是由NetBeans建立的。
3.設定工程屬性
當前專案仍然設定為使用JDK1.8。
需要將其更改為使用JDK9。
在專案上右鍵,彈出對話方塊。
再設定源/二進位制格式:
最後點選“確定”按鈕完整工程的配置。
4.新增模組宣告
在本節中,介紹如何在NetBeans專案中定義名為com.jdojo.intro的模組。
要新增模組定義,需要module-info.java的檔案新增到專案中。
右鍵單擊專案,從選單中選擇新建,如果看到"JavaModuleInfo"選單項,請選擇該項。
否則,選擇其他。
單擊下一步按鈕,顯示“新建Java模組資訊”對話方塊。
單擊完成按鈕完成模組的定義。
將包含模組宣告的module-info.java檔案新增到原始碼目錄的根目錄下。
預設情況下,NetBeans提供的模組名稱與專案名稱相同不過刪除了“.”,名稱的每個部分的初始字母現在是大寫。
com.jdojo.intro作為專案名稱,這就是為什麼module-info.java檔案中的模組名稱是ComJdojoIntro的原因。
現在將模組名稱更改為com.jdojo.intro。
modulecom.jdojo.intro{
}
5.檢視模組圖
NetBeansIDE允許檢視模組圖。
在編輯器中開啟模組的module-info.java檔案,並在編輯器中選擇“圖形”選項卡以檢視模組圖。
可以放大和縮小模組圖,更改其佈局,並將其另存為影象。
在圖區域中右鍵單擊這些圖形相關選項。
可以在圖中選擇一個節點,僅檢視以節點結尾或從節點結尾的依賴關係。
還可以通過移動節點來重新排列模組圖。
6.編寫原始碼
在本節中,向com.jdojo.intro專案新增一個Welcome類。
該類儲存在com.jdojo.intro包中。
右鍵單擊專案,在彈出的選單中,選擇新建➤Java類,開啟“新建Java類”對話方塊。
輸入Welcome作為類名,com.jdojo.intro作為包。
單擊完成按鈕關閉對話方塊。
用下面的程式碼替換掉自動生成的程式碼。
packagecom.jdojo.intro;
publicclassWelcome{
publicstaticvoidmain(String[]args){
System.out.println("WelcometotheModuleSystem.");
//PrintthemodulenameoftheWelcomeclass
Class
也可以通過取消選擇“儲存時編譯”複選框,在“專案屬性”頁面上關閉專案的“儲存編譯”功能預設情況下,此複選框被選中。
如果關閉“專案儲存時編譯”功能,則需要通過構建專案手動編譯原始檔。
可以選擇“執行”➤“構建專案”或按F11構建專案。
所以還是建議開啟儲存時自動編譯的功能。
8.打包模組程式碼
需要構建專案,為你的模組建立一個模組化JAR。
選擇“執行”➤“構建專案”,或按F11構建專案。
模組化的JAR是在\dist目錄下建立的。
模組化JAR以NetBeans專案名稱命名。
com.jdojo.intro模組的模組化JAR將位於C:\Java9Revealed\com.jdojo.intro\dist\com.jdojo.intro.jar。
目前,NetBeans不支援在模組化JAR中新增主類名稱和模組版本名稱。
可以使用jar命令列工具來更新模組化JAR中的模組資訊。
使用--update選項,如下所示,要寫在一行。
C:\Java9Revealed>jar--update
--filecom.jdojo.intro\dist\com.jdojo.intro.jar
--module-version1.0
--main-classcom.jdojo.intro.Welcome
可以使用以下命令驗證com.jdojo.intro的模組化JAR是否正確更新。
應該得到類似的輸出:
C:\Java9Revealed>java--module-pathcom.jdojo.intro\dist
--list-modulescom.jdojo.intro
module[email protected](file:///C:/Java9Revealed/com.jdojo.intro/dist/com.jdojo.intro.jar)
requiresmandatedjava.base(@9-ea)
containscom.jdojo.intro
NetBeansIDE的最終版本將與JDK9相同時間釋出,到那時就允許通過IDE新增這些屬性。
9.執行程式
選擇"執行"➤"執行專案"或按F6執行程式。
如果執行類,右鍵單擊NetBeansIDE中“專案”選項卡中包含main()方法的原始檔(.java檔案),然後選擇執行檔案或選擇檔案,然後按Shift+F6。
Welcome類執行後將列印資訊顯示在輸出面板中。
三.總結
使用模組開發Java應用程式不會改變Java型別被組織成包的方式。
模組的原始碼在包層次結構的根目錄下包含一個module-info.java檔案。
也就是說,module-info.java檔案放在未命名的包中。
它包含模組宣告。
JDK9中已經增強了javac編譯器,jar工具和java啟動器以與模組配合使用。
javac編譯器接受新的選項,例如用於定位應用程式模組的--module-path,找到模組原始碼的--module-source-path,以及--module-version來指定正在編譯的模組的版本。
該jar工具允許分別使用--main-class和-module-version選項為模組化JAR指定主類和模組版本。
java啟動器可以在類路徑模式,模組模式或混合模式下執行。
要在模組中執行類,需要使用--module-path選項指定模組路徑。
需要使用--module選項指定主類名稱。
主類以/格式指定,其中是包含主類的模組,是包含main()方法的類的完全限定名稱,作為應用程式的執行入口。
在JDK9中,每個型別都屬於一個模組。
如果從類路徑載入型別,它屬於載入它的類載入器的未命名模組。
在JDK9中,每個類載入器維護一個未命名的模組,其成員都是該類載入器從類路徑載入的所有型別。
從模組路徑載入的型別屬於定義的模組。
Module類的一個例項在執行時表示一個模組。
Module類在java.lang包中。
使用Module類在執行時瞭解有關模組的所有內容。
Class類在JDK9中得到了增強。
它的getModule()方法返回一個表示此類成員的模組的模組例項。
Module類包含一個getName()方法,它以String形式返回模組的名稱;對於未命名的模組,該方法返回null。
NetBeansIDE正在更新,以支援JDK9和開發模組化Java應用程式。
目前,NetBeans允許建立模組,編譯,將其打包成模組化JAR,並從IDE中執行它們。
需要為模組建立一個單獨的Java專案。
其最終版本將允許在一個Java專案中擁有多個模組。
支援新增module-info.java檔案。
NetBeans具有非常酷的功能,可檢視和儲存模組圖。
解決maven打包編譯出現Fileencodinghasnotbeenset問題
«上一篇
藍橋杯OJBASIC-1閏年判斷下一篇»
相關推薦
Java9揭祕(3.建立你的第一個模組)
文by/林本託
Tips
做一個終身學習的人。
在這個章節中,主要介紹以下內容:
如何編寫模組化的Java程式
如何編譯模組化程式
如何將模組的專...
Java9揭祕(7.建立自定義執行時映像)
Tips
做一個終身學習的人。
在第一章節中,主要介紹以下內容:
什麼是自定義執行時映像和JIMAGE格式
如何使用jlink工具建立自定義的執行時映像...
用Java建立你第一個區塊鏈-part1
比特幣是區塊鏈中最重要的一個應用,在比特幣大漲之後又出現了很多幣種,比如萊特幣、以太幣等等,更在2014年以太坊的...
用Java建立你第一個區塊鏈-part3
在上一章節中最後說到了要實現p2p網路,那麼在這一章節中就主要說一下p2p網路,實現的方式是什麼,以及為什麼要實現...
建立你的一個composer包
如何建立自己的一個composer包,這個其實很好解決的!只要你瞭解composer相關的知識便不難做到。
首...
【4】Django建立第一個模組應用
大成若缺,其用不弊。
大盈若衝,其用不窮。
大直若屈。
大巧若拙。
大辯若訥。
靜勝躁,寒勝熱。
清靜為天下正——老子《道德經》
本章內容
建立應用(app)...
uni-app建立的第一個應用
本人微信公眾號:
前端修煉之路,歡迎關注
背景介紹
經過上一篇文章uni-app官方教程學習手記的學習之後,我就著手做這個專案了。
目前已經初步搭...
解析AndroidStudio建立的第一個AndroidTV專案
突然想寫一篇部落格,於是就產生了這篇部落格。
很多地方都沒有理解原始碼也沒有點進去看,所以之後也會繼續修改補全。
如果對你有一點幫...
使用Dagger2建立的第一個小例子
將Dagger系列的咖啡壺例子再做一下簡化,作為Dagger2的入門的第一個小例子。
場景描述:有一個電水壺,它使用一個加熱...
建立Android第一個工程
建立第一個Android專案本系列文章主要針對基於Eclipse的IDE下進行Android開發的技術、方法、過程...
搜尋
基礎教學
Mysql入門
Sql入門
Android入門
Docker入門
Go語言入門
Ruby程式入門
Python入門
Python進階
Django入門
Python爬蟲入門
最近訪問
Java+9+揭祕(3.+建立你的第一個模組)
登山-C#-關於TcpListener的AcceptTcpClient()方法造成執行緒阻塞,進而程式無法徹底關閉的問題
演算法中時間複雜度概括——o(1)、o(n)、o(logn)、o(nlogn)
Unity例項.001無限滾動的背景
.net破解一(反編譯,反混淆-剝殼)
無線傳輸距離計算公式
arm+指令集
jQuery+->+使用andSelf()來包括之前的選擇集
weblogic學習之路
結構體定義:struct與typedef+struct+用法詳解和用法小結
延伸文章資訊
- 1遷移!往Java 9前進!
修改 java.base 的module-info顯然不是可行的方式,在Oracle JDK中提供了一個非標準引數 --add-exports , 可用來放寬(或說是破壞)模組封裝,例如,可以在...
- 2【JDK 11】關於Java 模組系統,看這一篇就夠了 - 古詩詞庫
開放模組內的哪些包(允許通過Java 反射訪問); 提供哪些服務; 依賴哪些服務. 圖-1: Java 9 Module. 也就是說, ...
- 3java9學習筆記之模組化詳解 - 程式前沿
讓Java的SE程式更加容易輕量級部署改進元件間的依賴管理,引入比Jar粒度更大的Module 改進效能和安全性如果用更加簡單解釋,那就是”解決Classpath地獄 ...
- 4Java 9模組化概觀 - iThome
而在最新的JDK9預覽版中,也可以玩玩Java模組平臺系統(Java Platform Module System),也就是JSR376的實作了。 JAR檔案的挑戰. 撰寫Java的開發者都知道...
- 5Java 9 模块系统 - 菜鸟教程
工件的格式可以是传统的JAR 文件或是Java 9 新增的JMOD 文件。这个文件由根目录中的源代码文件module-info.java 编译而来。该模块声明文件可以描述模块的不同特征。