久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

java模块_Java 9 揭秘(2. 模块化系统)

發(fā)布時(shí)間:2023/12/10 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java模块_Java 9 揭秘(2. 模块化系统) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文 by / 林本托

Tips

做一個(gè)終身學(xué)習(xí)的人。

在此章節(jié)中,主要介紹以下內(nèi)容:

在JDK 9之前Java源代碼用于編寫,打包和部署的方式以及該方法的潛在問題

JDK 9中有哪些模塊

如何聲明模塊及其依賴關(guān)系

如何封裝模塊

什么是模塊路徑

什么是可觀察的模塊

如何打印可觀察模塊的列表

如何打印模塊的描述

本章旨在為你簡要概述JDK 9中引入的模塊系統(tǒng)。后續(xù)章節(jié)將詳細(xì)介紹所有這些概念,并附有實(shí)例。 不要擔(dān)心,如果你第一次不了解所有模塊相關(guān)的概念。 一旦你獲得開發(fā)模塊代碼的經(jīng)驗(yàn),你可以回來并重新閱讀本章。

一. Java 9 之前的開發(fā)

在 JDK 9之前,開發(fā)一個(gè) Java 應(yīng)用程序通常包括以下步驟:

Java源代碼以Java類型(如類,接口,枚舉和注釋)的形式編寫。

不同的Java類型被安排在一個(gè)包(package)中,而且始終屬于一個(gè)明確或默認(rèn)的包。 一個(gè)包是一個(gè)邏輯的類型集合,本質(zhì)上為它包含的類型提供一個(gè)命名空間。 即使聲明為public,包可能包含公共類型,私有類型和一些內(nèi)部實(shí)現(xiàn)類型。

編譯的代碼被打包成一個(gè)或多個(gè)JAR文件,也稱為應(yīng)用程序JAR,因?yàn)樗鼈儼瑧?yīng)用程序代碼。 一個(gè)程序包中的代碼可能會(huì)引用多個(gè)JAR。

應(yīng)用程序可能使用類庫。 類庫作為一個(gè)或多個(gè)JAR文件提供給應(yīng)用程序使用。

通過將所有JAR文件,應(yīng)用程序JAR文件和JAR類庫放在類路徑上來部署應(yīng)用程序。

下圖顯示了JAR文件中打包的代碼的典型布局。 該圖僅顯示了包和Java 類型,不包括其他內(nèi)容,如manifest.mf文件和資源文件。

20多年來,Java社區(qū)以這種編寫,編譯,打包和部署Java代碼的方式開發(fā)。 但是,20年漫長的旅程并沒有像你所希望的一樣順利! 這樣安排和運(yùn)行Java代碼就存在固有的問題:

一個(gè)包只是一個(gè)類型的容器,而不強(qiáng)制執(zhí)行任何可訪問性邊界。包中的公共類型可以在所有其他包中訪問;沒有辦法阻止在一個(gè)包中公開類型的全局可見性。

除了以java和javax開頭的包外,包應(yīng)該是開放擴(kuò)展的。如果你在具有包級(jí)別訪問的JAR中進(jìn)行了類型化,則可以在其他JAR中訪問定義與你的名稱相同的包中的類型。

Java運(yùn)行時(shí)會(huì)看到從JAR列表加載的一組包。沒有辦法知道是否在不同的JAR中有多個(gè)相同類型的副本。Java運(yùn)行時(shí)首先加載在類路徑中遇到的JAR中找到的類型。

Java運(yùn)行時(shí)可能會(huì)出現(xiàn)由于應(yīng)用程序在類路徑中需要的其中一個(gè)JAR引起的運(yùn)行時(shí)缺少類型的情況。當(dāng)代碼嘗試使用它們時(shí),缺少的類型會(huì)引起運(yùn)行時(shí)錯(cuò)誤。

在啟動(dòng)時(shí)沒有辦法知道應(yīng)用程序中使用的某些類型已經(jīng)丟失。還可以包含錯(cuò)誤的JAR文件版本,并在運(yùn)行時(shí)產(chǎn)生錯(cuò)誤。

這些問題在Java社區(qū)中非常頻繁和臭名昭著,他們得到了一個(gè)名字 ——JAR-hell。

包裝JDK和JRE也是一個(gè)問題。 它們作為一個(gè)整體作為使用,從而增加了下載時(shí)間,啟動(dòng)時(shí)間和內(nèi)存占用。 單體JRE使得Java不可能在內(nèi)存很小的設(shè)備上使用。 如果將Java應(yīng)用程序部署到云端,則需要支付更多的費(fèi)用購買更多的使用內(nèi)存。 大多數(shù)情況下,單體JRE使用的內(nèi)存比所需的內(nèi)存多,這意味著需要為云服務(wù)支付更多的內(nèi)存。 Java 8中引入的Compact配置文件通過允許將JRE的一個(gè)子集打包在稱為緊湊配置文件的自定義運(yùn)行時(shí)映像中,大大減少了JRE大小,從而減少了運(yùn)行時(shí)內(nèi)存占用。

Tips

在早期訪問版本中,JDK 9包含三個(gè)名為java.compact1,java.compact2和java.compact3的模塊,這些模塊對應(yīng)于JDK 8中的三個(gè)compact配置文件。之后,它們被刪除,因?yàn)镴DK中的模塊可以完全控制在自定義JRE中包含的模塊列表。

可以將JDK 9之前的JDK/JRE中的這些問題分為三類:

不可靠的配置

弱封裝

JDK/JRE的單體結(jié)構(gòu)

下圖顯示了Java運(yùn)行時(shí)如何看到類路徑上的所有JAR,以及如何從其他JAR訪問一個(gè)JAR中的代碼,沒有任何限制,除了在訪問控制方面由類型聲明指定的代碼。

Java 9通過引入開發(fā),打包和部署Java應(yīng)用程序的新方法來解決這些問題。 在Java 9中,Java應(yīng)用程序由稱為模塊的小型交互組件組成。 Java 9也已經(jīng)將JDK/JRE組織為一組模塊。

二. 全新的模塊系統(tǒng)

Java 9引入了一個(gè)稱為模塊的新的程序組件。 您可以將Java應(yīng)用程序視為具有明確定義的邊界和這些模塊之間依賴關(guān)系的交互模塊的集合。 模塊系統(tǒng)的開發(fā)具有以下目標(biāo):

可靠的配置

強(qiáng)封裝

模塊化JDK/JRE

這些目標(biāo)是解決Java 9之前開發(fā)和部署Java應(yīng)用程序所面臨的問題。

可靠的配置解決了用于查找類型的容易出錯(cuò)的類路徑機(jī)制的問題。 模塊必須聲明對其他模塊的顯式依賴。 模塊系統(tǒng)驗(yàn)證應(yīng)用程序開發(fā)的所有階段的依賴關(guān)系 —— 編譯時(shí),鏈接時(shí)和運(yùn)行時(shí)。 假設(shè)一個(gè)模塊聲明對另一個(gè)模塊的依賴,并且第二個(gè)模塊在啟動(dòng)時(shí)丟失。 JVM檢測到依賴關(guān)系丟失,并在啟動(dòng)時(shí)失敗。 在Java 9之前,當(dāng)使用缺少的類型時(shí),這樣的應(yīng)用程序會(huì)生成運(yùn)行時(shí)錯(cuò)誤(不是在啟動(dòng)時(shí))。

強(qiáng)大的封裝解決了類路徑上跨JAR的公共類型的可訪問性問題。 模塊必須明確聲明其中哪些公共類型可以被其他模塊訪問。 除非這些模塊明確地使其公共類型可訪問,否則模塊不能訪問另一個(gè)模塊中的公共類型。 Java 9中的公共類型并不意味著程序的所有部分都可以訪問它。 模塊系統(tǒng)增加了更精細(xì)的可訪問性控制。

Tips

Java 9通過允許模塊在開發(fā)的所有階段聲明明確的依賴關(guān)系并驗(yàn)證這些依賴關(guān)系來提供可靠的配置。它通過允許模塊聲明其公共類型可以訪問其他模塊的軟件包來提供強(qiáng)大的封裝。

JDK 9通過將其前身的體結(jié)構(gòu)分解成一組稱為平臺(tái)模塊的模塊來重寫。 JDK 9還引入了一個(gè)可選的階段,稱為鏈接時(shí),這可能在編譯時(shí)和運(yùn)行時(shí)之間發(fā)生。 在鏈接期間,使用一個(gè)鏈接器,它是JDK 9附帶的一個(gè)名為jlink的工具,用于創(chuàng)建應(yīng)用程序的自定義運(yùn)行時(shí)映像,其中僅包含應(yīng)用程序中使用的模塊。 這將運(yùn)行時(shí)的大小調(diào)整到最佳大小。

三. 什么是模塊化

模塊是代碼和數(shù)據(jù)集合。 它可以包含Java代碼和本地代碼。 Java代碼被組織為一組包含諸如類,接口,枚舉和注解等類型的類。 數(shù)據(jù)可以包括諸如圖像文件和配置文件的資源。

對于Java代碼,模塊可以看做零個(gè)或多個(gè)包的集合。 下圖顯示了三個(gè)名為policy,claim和utility的模塊,其中policy模塊包含兩個(gè)包,claim模塊包含一個(gè)包,而utility模塊不包含任何包。

一個(gè)模塊不僅僅是一個(gè)包的容器。 除了其名稱,模塊定義包含以下內(nèi)容:

所需的其他模塊(或依賴于)的列表

導(dǎo)出的軟件包列表(其公共API),其他模塊可以使用

開放的軟件包(其整個(gè)API,公共和私有)到其他反射訪問模塊的列表

使用的服務(wù)列表(或使用java.util.ServiceLoader類發(fā)現(xiàn)和加載)

提供的服務(wù)的實(shí)現(xiàn)列表

在使用這些模塊時(shí),可以使用這些方面中的一個(gè)或多個(gè)。

Java SE 9平臺(tái)規(guī)范將平臺(tái)劃分為稱為平臺(tái)模塊的一組模塊。 Java SE 9平臺(tái)的實(shí)現(xiàn)可能包含一些或所有平臺(tái)模塊,從而提供可擴(kuò)展的Java運(yùn)行時(shí)。 標(biāo)準(zhǔn)模塊的名字是以Java 為前綴。 Java SE標(biāo)準(zhǔn)模塊的示例有java.base,java.sql,java.xml和java.logging。 支持標(biāo)準(zhǔn)平臺(tái)模塊中的API,供開發(fā)人員使用。

非標(biāo)準(zhǔn)平臺(tái)模塊是JDK的一部分,但未在Java SE平臺(tái)規(guī)范中指定。 這些JDK特定的模塊的名稱以jdk為前綴。 JDK特定模塊的示例是jdk.charsets,jdk.compiler,jdk.jlink,jdk.policytool和jdk.zipfs。 JDK特定模塊中的API不適用于開發(fā)人員。 這些API通常用于JDK本身以及不能輕易獲得使用Java SE API所需功能的庫開發(fā)人員使用。 如果使用這些模塊中的API,則可能會(huì)在未經(jīng)通知的情況下對其進(jìn)行支持或更改。

JavaFX不是Java SE 9平臺(tái)規(guī)范的一部分。 但是,在安裝JDK/JRE時(shí),會(huì)安裝與JavaFX相關(guān)的模塊。 JavaFX模塊名稱以javafx為前綴。 JavaFX模塊的示例是javafx.base,javafx.controls,javafx.fxml,javafx.graphics和javafx.web。

作為Java SE 9平臺(tái)的一部分的java.base模塊是原始模塊。 它不依賴于任何其他模塊。 模塊系統(tǒng)只知道java.base模塊。 它通過模塊中指定的依賴關(guān)系發(fā)現(xiàn)所有其他模塊。 java.base模塊導(dǎo)出核心Java SE軟件包,如java.lang,java.io,java.math,java.text,java.time,java.util等。

四. 模塊依賴關(guān)系

包括JDK 8之前的版本,一個(gè)包中的公共類型可以被其他包訪問,沒有任何限制。 換句話說,包沒有控制它們包含的類型的可訪問性。 JDK 9中的模塊系統(tǒng)對類型的可訪問性提供了細(xì)粒度的控制。

模塊之間的可訪問性是所使用的模塊和使用模塊之間的雙向協(xié)議:模塊明確地使其公共類型可供其他模塊使用,并且使用這些公共類型的模塊明確聲明對第一個(gè)模塊的依賴。 模塊中的所有未導(dǎo)出的軟件包都是模塊的私有的,它們不能在模塊之外使用。

將包中的 API 設(shè)置為公共供其他模塊使用被稱之為導(dǎo)出包。如果名為policy的模塊將名為pkg1的包設(shè)置為公共類型可用于其他模塊訪問,則說明policy模塊導(dǎo)出包pkg1。如果名為claim的模塊聲明對policy模塊的依賴性,則稱之為claim模塊讀取(read)policy模塊。這意味著,在claim模塊內(nèi)部可以訪問policy模塊導(dǎo)出包中的所有公共類型。模塊還可以選擇性地將包導(dǎo)出到一個(gè)或多個(gè)命名模塊。這種導(dǎo)出成為qualified導(dǎo)出或module-friendly導(dǎo)出。 qualified導(dǎo)出中的包中的公共類型只能訪問指定的命名模塊。

在模塊系統(tǒng)的上下文中,可以互換使用三個(gè)術(shù)語 —— 需要(require),讀取(read)和依賴(depend)。 以下三個(gè)語句意思相同:P讀取Q,P需要Q,P依賴Q,其中P和Q指的是兩個(gè)模塊。

下圖描述了兩個(gè)名為policy和claim的模塊之間的依賴關(guān)系。 policy模塊包含兩個(gè)名為pkg1和pkg2的包,它導(dǎo)出包pkg1,該包使用虛線邊界顯示,以將其與未導(dǎo)出的包pkg2區(qū)分開來。 claim模塊包含兩個(gè)件包pkg3和pkg4,它不導(dǎo)出包。 它聲明了對policy模塊的依賴。

在JDK 9中,您可以如下聲明這兩個(gè)模塊:

module policy {

exports pkg1;

}

module claim {

requires policy;

}

Tips

用于指示模塊中的依賴關(guān)系的語法是不對稱的 ——導(dǎo)出一個(gè)包,但需要一個(gè)模塊。

如果你的模塊依賴于另一個(gè)模塊,則該模塊聲明要求知道模塊名稱。幾個(gè)Java框架和工具在很大程度上依賴于反射來在運(yùn)行時(shí)訪問未導(dǎo)出的模塊的代碼。它們提供了很大的功能,如依賴注入,序列化,Java Persistence API的實(shí)現(xiàn),代碼自動(dòng)化和調(diào)試。Spring,Hibernate和XStream是這樣的框架和庫的例子。這些框架和庫不了解你的應(yīng)用程序模塊。 但是,他們需要訪問模塊中的類型來完成他們的工作。 他們還需要訪問模塊的私有成員,這打破了JDK 9中強(qiáng)封裝的前提。當(dāng)模塊導(dǎo)出軟件包時(shí),依賴于第一個(gè)模塊的其他模塊只能訪問導(dǎo)出的軟件包中的公共API。 在運(yùn)行時(shí),在模塊的所有軟件包上授予深入的反射訪問權(quán)限(訪問公共和私有API),可以聲明一個(gè)開放的模塊。

在JDK 9中,可以如下聲明這兩個(gè)模塊:

open module policy.model {

requires jdojo.jpa;

}

module jdojo.jpa {

// The module exports its packages here

}

1. 模塊圖

模塊系統(tǒng)只知道一個(gè)模塊:java.base。 java.base模塊不依賴于任何其他模塊。 所有其他模塊都隱含地依賴于java.base模塊。

應(yīng)用程序的模塊化結(jié)構(gòu)可以被視為一個(gè)稱為模塊圖。 在模塊圖中,每個(gè)模塊都表示為一個(gè)節(jié)點(diǎn)。 如果第一個(gè)模塊依賴于第二個(gè)模塊,則存在從模塊到另一個(gè)模塊的有向邊。 通過將稱為根模塊的一組初始模塊的依賴關(guān)系與稱為可觀察模塊的模塊系統(tǒng)已知的一組模塊相結(jié)合來構(gòu)建模塊圖。

Tips

模塊解析意味著該模塊所依賴的模塊可用。 假設(shè)名為P的模塊取決于兩個(gè)名為Q和R的模塊。解析模塊P表示您定位模塊Q和R,并遞歸地解析模塊Q和R。

構(gòu)建模塊圖旨在在編譯時(shí),鏈接時(shí)和運(yùn)行時(shí)解析模塊依賴關(guān)系。 模塊解析從根模塊開始,并遵循依賴關(guān)系鏈接,直到達(dá)到j(luò)ava.base模塊。 有時(shí),可能在模塊路徑上有一個(gè)模塊,但是會(huì)收到該模塊未找到的錯(cuò)誤。 如果模塊未解析,并且未包含在模塊圖中,則可能會(huì)發(fā)生這種情況。 對于要解決的模塊,需要從根模塊開始依賴關(guān)系鏈。 根據(jù)調(diào)用編譯器或Java啟動(dòng)器的方式,選擇一組默認(rèn)的根模塊。 還可以將模塊添加到默認(rèn)的根模塊中。 了解在不同情況下如何選擇默認(rèn)根模塊很重要:

如果應(yīng)用程序代碼是從類路徑編譯的,或者主類是從類路徑運(yùn)行的,則默認(rèn)的根模塊將由java.se模塊和所有非“java.”系統(tǒng)模塊組成,如“jdk.”和“JavaFX.”。 如果java.se模塊不存在,則默認(rèn)的根模塊將由所有“java.”和非“java.*”模塊組成。

如果您的應(yīng)用程序由模塊組成,則默認(rèn)的根模塊將依賴于以下階段:

在編譯時(shí),它由所有正在編譯的模塊組成。

在鏈接時(shí),它是空的。

在運(yùn)行時(shí),它包含有主類的模塊。 在java命令中使用--module或-m選項(xiàng)指定要運(yùn)行的模塊及其主類。

繼續(xù)介紹policy和claim模塊的例子,假設(shè)pkg3.Main是claim模塊中的主類,并且兩個(gè)模塊都作為模塊化JAR打包在C:\ Java9Revealed\lib目錄中。下圖顯示了使用以下命令運(yùn)行應(yīng)用程序時(shí)在運(yùn)行時(shí)構(gòu)建的模塊圖:

C:\Java9Revealed>java -p lib -m claim/pkg3.Main

claim模塊包含應(yīng)用程序的主類。 因此,claim是創(chuàng)建模塊圖時(shí)唯一的根模塊。 policy模塊需要被解決,因?yàn)閏laim模塊依賴于policy模塊。 還需要解析java.base模塊,因?yàn)樗衅渌K都依賴于它,這兩個(gè)模塊也是如此。

模塊圖的復(fù)雜性取決于根模塊的數(shù)量和模塊之間的依賴關(guān)系。 假設(shè)除了依賴于policy模塊之外,claim模塊還取決于java.sql的平臺(tái)模塊。 claim模塊的新聲明如下所示:

module policy {

requires policy;

requires java.sql;

}

如下圖,顯示在claim模塊中運(yùn)行pkg3.Main類時(shí)將構(gòu)建的模塊圖。 請注意,java.xml和java.logging模塊也存在于圖中,因?yàn)閖ava.sql模塊依賴于它們。 在圖中,claim模塊是唯一的根模塊。

下圖顯示了java.se的平臺(tái)模塊的最復(fù)雜的模塊圖形之一。 java.se模塊的模塊聲明如下:

java.se 模塊的定義如下所示:

module java.se {

requires transitive java.sql;

requires transitive java.rmi;

requires transitive java.desktop;

requires transitive java.security.jgss;

requires transitive java.security.sasl;

requires transitive java.management;

requires transitive java.logging;

requires transitive java.xml;

requires transitive java.scripting;

requires transitive java.compiler;

requires transitive java.naming;

requires transitive java.instrument;

requires transitive java.xml.crypto;

requires transitive java.prefs;

requires transitive java.sql.rowset;

requires java.base;

requires transitive java.datatransfer;

}

有時(shí),需要將模塊添加到默認(rèn)的根模塊中,以便解析添加的模塊。 可以在編譯時(shí),鏈接時(shí)和運(yùn)行使用--add-modules命令行選項(xiàng)指定其他根模塊:

--add-modules

這里的是逗號(hào)分隔的模塊名稱列表。

可以使用以下特殊值作為具有特殊含義的--add-modules選項(xiàng)的模塊列表:

ALL-DEFAULT

ALL-SYSTEM

ALL-MODULE-PATH

所有三個(gè)特殊值在運(yùn)行時(shí)都有效。 只能在編譯時(shí)使用ALL-MODULE-PATH。

如果使用ALL-DEFAULT作為模塊列表,則從應(yīng)用程序從類路徑運(yùn)行時(shí)使用的默認(rèn)的根模塊集將添加到根集中。 這對于作為容器的應(yīng)用程序是有用的,托管可能需要容器應(yīng)用程序本身不需要的其他模塊的其他應(yīng)用程序。 這是一種使所有Java SE模塊可用于容器的方法,因此任何托管的應(yīng)用程序都可能使用到它們。

如果將ALL-SYSTEM用作模塊列表,則將所有系統(tǒng)模塊添加到根集中。 這對于運(yùn)行測試時(shí)非常有用。

如果使用ALL-MODULE-PATH作為模塊列表,則在模塊路徑上找到的所有模塊都將添加到根集中。 這對于諸如Maven這樣的工具非常有用,這確保了應(yīng)用程序需要模塊路徑上的所有模塊。

Tips

即使模塊存在于模塊路徑上,也可能會(huì)收到模塊未找到的錯(cuò)誤。 在這種情況下,需要使用--add-modules命令行選項(xiàng)將缺少的模塊添加到默認(rèn)的根模塊中。

JDK 9支持一個(gè)有用的非標(biāo)準(zhǔn)命令行選項(xiàng),它打印描述在構(gòu)建模塊圖時(shí)用于解析模塊的步驟的診斷消息。 選項(xiàng)是-Xdiag:resolver。 以下命令在聲明模塊中運(yùn)行pkg3.Main類。 顯示部分輸出。 在診斷消息的結(jié)尾,你會(huì)發(fā)現(xiàn)一個(gè)結(jié)果:部分列出了解決模塊。

使用命令C:\Java9Revealed>java -Xdiag:resolver -p lib -m claim/pkg3.Main,會(huì)得到如下輸出:

[Resolver] Root module claim located

[Resolver] (file:///C:/Java9Revealed/lib/claim.jar)

[Resolver] Module java.base located, required by claim

[Resolver] (jrt:/java.base)

[Resolver] Module policy located, required by claim

[Resolver] (file:///C:/Java9Revealed/lib/policy.jar)

...

[Resolver] Result:

[Resolver] claim

[Resolver] java.base

...

[Resolver] policy

五. 聚合模塊

你可以創(chuàng)建一個(gè)不包含任何代碼的模塊。 它收集并重新導(dǎo)出其他模塊的內(nèi)容。 這樣的模塊稱為聚合模塊。假設(shè)有幾個(gè)模塊依賴于五個(gè)模塊。 您可以為這五個(gè)模塊創(chuàng)建一個(gè)聚合模塊,現(xiàn)在,你的模塊只能依賴于一個(gè)模塊 —— 聚合模塊。

為了方便, Java 9包含幾個(gè)聚合模塊,如java.se和java.se.ee。 java.se模塊收集Java SE的不與Java EE重疊的部分。 java.se.ee模塊收集組成Java SE的所有模塊,包括與Java EE重疊的模塊。

六. 聲明模塊

本節(jié)包含用于聲明模塊的語法的快速概述。 在以后的章節(jié)中更詳細(xì)地解釋每個(gè)部分。 如果不明白本節(jié)提到的模塊,請繼續(xù)閱讀。

使用模塊聲明來定義模塊,是Java編程語言中的新概念。其語法如下:

[open] module {

;

;

...

}

open修飾符是可選的,它聲明一個(gè)開放的模塊。 一個(gè)開放的模塊導(dǎo)出所有的包,以便其他模塊使用反射訪問。 是要定義的模塊的名稱。 是一個(gè)模塊語句。 模塊聲明中可以包含零個(gè)或多個(gè)模塊語句。 如果它存在,它可以是五種類型的語句之一:

導(dǎo)出語句(exports statement);

開放語句(opens statement);

需要語句(requires statement);

使用語句(uses statement);

提供語句(provides statement)。

導(dǎo)出和開放語句用于控制對模塊代碼的訪問。 需要語句用于聲明模塊對另一個(gè)模塊的依賴關(guān)系。 使用和提供的語句分別用于表達(dá)服務(wù)消費(fèi)和服務(wù)提供。 以下是名為myModule的模塊的模塊聲明示例:

module myModule {

// Exports the packages - com.jdojo.util and

// com.jdojo.util.parser

exports com.jdojo.util;

exports com.jdojo.util.parser;

// Reads the java.sql module

requires java.sql;

// Opens com.jdojo.legacy package for reflective access

opens com.jdojo.legacy;

// Uses the service interface java.sql.Driver

uses java.sql.Driver;

// Provides the com.jdojo.util.parser.FasterCsvParser

// class as an implementation for the service interface

// named com.jdojo.util.CsvParser

provides com.jdojo.util.CsvParser

with com.jdojo.util.parser.FasterCsvParser;

}

你可以使用模塊聲明中的open修飾符來創(chuàng)建一個(gè)開放模塊。 一個(gè)開放模塊可以將其所有軟件包的反射訪問授予其他模塊。 你不能在open模塊中再使用open語句,因?yàn)樗谐绦虬际窃趏pen模塊中隱式打開的。 以下代碼段聲明一個(gè)名為myLegacyModule的開放模塊:

open module myLegacyModule {

exports com.jdojo.legacy;

requires java.sql;

}

1. 模塊命名

模塊名稱可以是Java限定標(biāo)識(shí)符。 合法標(biāo)識(shí)符是一個(gè)或多個(gè)由點(diǎn)分隔的標(biāo)識(shí)符,例如policy,com.jdojo.common和com.jdojo.util。 如果模塊名稱中的任何部分不是有效的Java標(biāo)識(shí)符,則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。 例如,com.jdojo.common.1.0不是有效的模塊名稱,因?yàn)槊Q中的1和0不是有效的Java標(biāo)識(shí)符。

與包命名約定類似,使用反向域名模式為模塊提供唯一的名稱。 使用這個(gè)慣例,名為com.jdojo.common的最簡單的模塊可以聲明如下:

module com.jdojo.common {

// No module statements

}

模塊名稱不會(huì)隱藏具有相同名稱的變量,類型和包。 因此,可以擁有一個(gè)模塊以及具有相同名稱的變量,類型或包。 他們使用的上下文將區(qū)分哪個(gè)名稱是指什么樣的實(shí)體。

在JDK 9中, open, module, requires, transitive, exports, opens, to, uses, provides 和 with是受限關(guān)鍵字。只有當(dāng)具體位置出現(xiàn)在模塊聲明中時(shí),它們才具有特殊意義。 可以將它們用作程序中其他地方的標(biāo)識(shí)符。 例如,以下模塊聲明是有效的,即使它不使用直觀的模塊名稱:

// Declare a module named module

module module {

// Module statements go here

}

第一個(gè)模塊字被解釋為一個(gè)關(guān)鍵字,第二個(gè)是一個(gè)模塊名稱。

你可以在程序中的任何地方聲明一個(gè)名為module的變量:

String module = "myModule";

2. 模塊的訪問控制

導(dǎo)出語句將模塊的指定包導(dǎo)出到所有模塊或編譯時(shí)和運(yùn)行時(shí)的命名模塊列表。 它的兩種形式如下:

exports ;

exports to , ...;

以下是使用了導(dǎo)出語句的模塊示例:

module M {

exports com.jdojo.util;

exports com.jdojo.policy

to com.jdojo.claim, com.jdojo.billing;

}

開放語句允許對所有模塊的反射訪問指定的包或運(yùn)行時(shí)指定的模塊列表。 其他模塊可以使用反射訪問指定包中的所有類型以及這些類型的所有成員(私有和公共)。 開放語句采用以下形式:

opens ;

opens to , ...;

使用開放語句的實(shí)例:

module M {

opens com.jdojo.claim.model;

opens com.jdojo.policy.model to core.hibernate;

opens com.jdojo.services to core.spring;

}

Tips

對比導(dǎo)出和打開語句。 導(dǎo)出語句允許僅在編譯時(shí)和運(yùn)行時(shí)訪問指定包的公共API,而打開語句允許在運(yùn)行時(shí)使用反射訪問指定包中的所有類型的公共和私有成員。

如果模塊需要在編譯時(shí)從另一個(gè)模塊訪問公共類型,并在運(yùn)行時(shí)使用反射訪問類型的私有成員,則第二個(gè)模塊可以導(dǎo)出并打開相同的軟件包,如下所示:

module N {

exports com.jdojo.claim.model;

opens com.jdojo.claim.model;

}

閱讀有關(guān)模塊的時(shí)候會(huì)遇到三個(gè)短語:

模塊M導(dǎo)出包P

模塊M打開包Q

模塊M包含包R

前兩個(gè)短語對應(yīng)于模塊中導(dǎo)出語句和開放語句。 第三個(gè)短語意味著該模塊包含的包R既不導(dǎo)出也不開放。 在模塊系統(tǒng)的早期設(shè)計(jì)中,第三種情況被稱為“模塊M隱藏包R”。

3. 聲明依賴關(guān)系

需要(require)語句聲明當(dāng)前模塊與另一個(gè)模塊的依賴關(guān)系。 一個(gè)名為M的模塊中的“需要N”語句表示模塊M取決于(或讀取)模塊N。語句有以下形式:

requires ;

requires transitive ;

requires static ;

requires transitive static ;

require語句中的靜態(tài)修飾符表示在編譯時(shí)的依賴是強(qiáng)制的,但在運(yùn)行時(shí)是可選的。requires static N語句意味著模塊M取決于模塊N,模塊N必須在編譯時(shí)出現(xiàn)才能編譯模塊M,而在運(yùn)行時(shí)存在模塊N是可選的。require語句中的transitive修飾符會(huì)導(dǎo)致依賴于當(dāng)前模塊的其他模塊具有隱式依賴性。假設(shè)有三個(gè)模塊P,Q和R,假設(shè)模塊Q包含requires transitive R語句,如果如果模塊P包含包含requires Q語句,這意味著模塊P隱含地取決于模塊R。

4. 配置服務(wù)

Java允許使用服務(wù)提供者和服務(wù)使用者分離的服務(wù)提供者機(jī)制。 JDK 9允許使用語句(uses statement)和提供語句(provides statement)實(shí)現(xiàn)其服務(wù)。

使用語句可以指定服務(wù)接口的名字,當(dāng)前模塊就會(huì)發(fā)現(xiàn)它,使用 java.util.ServiceLoader類進(jìn)行加載。格式如下:

uses ;

使用語句的實(shí)例如下:

module M {

uses com.jdojo.prime.PrimeChecker;

}

com.jdojo.PrimeChecker是一個(gè)服務(wù)接口,其實(shí)現(xiàn)類將由其他模塊提供。 模塊M將使用java.util.ServiceLoader類來發(fā)現(xiàn)和加載此接口的實(shí)現(xiàn)。

提供語句指定服務(wù)接口的一個(gè)或多個(gè)服務(wù)提供程序?qū)崿F(xiàn)類。 它采取以下形式:

provides

with , ...;

相同的模塊可以提供服務(wù)實(shí)現(xiàn),可以發(fā)現(xiàn)和加載服務(wù)。 模塊還可以發(fā)現(xiàn)和加載一種服務(wù),并為另一種服務(wù)提供實(shí)現(xiàn)。 以下是例子:

module P {

uses com.jdojo.CsvParser;

provides com.jdojo.CsvParser

with com.jdojo.CsvParserImpl;

provides com.jdojo.prime.PrimeChecker

with com.jdojo.prime.generic.FasterPrimeChecker;

}

七. 模塊描述符

在了解上一節(jié)中如何聲明模塊之后,你可能會(huì)對模塊聲明的源代碼有幾個(gè)疑問:

在哪里保存模塊聲明的源代碼? 是否保存在文件中? 如果是,文件名是什么?

在哪里放置模塊聲明源代碼文件?

模塊的聲明的源代碼如何編譯?

1. 編譯模塊聲明

模塊聲明存儲(chǔ)在名為module-info.java的文件中,該文件存儲(chǔ)在該模塊的源文件層次結(jié)構(gòu)的根目錄下。 Java編譯器將模塊聲明編譯為名為module-info.class的文件。 module-info.class文件被稱為模塊描述符,它被放置在模塊的編譯代碼層次結(jié)構(gòu)的根目錄下。 如果將模塊的編譯代碼打包到JAR文件中,則module-info.class文件將存儲(chǔ)在JAR文件的根目錄下。

模塊聲明不包含可執(zhí)行代碼。 實(shí)質(zhì)上,它包含一個(gè)模塊的配置。 那為什么我們不在XML或JSON格式的文本文件中保留模塊聲明,而是在類文件中? 類文件被選為模塊描述符,因?yàn)轭愇募哂锌蓴U(kuò)展,明確定義的格式。 模塊描述符包含源碼級(jí)模塊聲明的編譯形式。 它可以通過工具來增強(qiáng),例如 jar工具,在模塊聲明初始編譯之后,在類文件屬性中包含附加信息。 類文件格式還允許開發(fā)人員在模塊聲明中使用導(dǎo)入和注解。

2. 模塊版本

在模塊系統(tǒng)的初始原型中,模塊聲明還包括模塊版本的。 包括模塊版本在聲明中使模塊系統(tǒng)的實(shí)現(xiàn)復(fù)雜化,所以模塊版本從聲明中刪除。

模塊描述符(類文件格式)的可擴(kuò)展格式被利用來向模塊添加版本。 當(dāng)將模塊的編譯代碼打包到JAR中時(shí),該jar工具提供了一個(gè)添加模塊版本的選項(xiàng),最后將其添加到module-info.class文件中。

3. 模塊源文件結(jié)構(gòu)

我們來看一個(gè)組織源代碼和一個(gè)名為com.jdojo.contact的模塊的編譯代碼的例子。 該模塊包含用于處理聯(lián)系信息的包,例如地址和電話號(hào)碼。 它包含兩個(gè)包:

com.jdojo.contact.info

com.jdojo.contact.validator

com.jdojo.contact.info包中包含兩個(gè)類 —— Address 和 Phone。 com.jdojo.contact.validator包中包含一個(gè)名為Validator的接口和兩個(gè)名為AddressValidator和PhoneValidator的類。

下圖顯示了com.jdojo.contact模塊中的內(nèi)容

在Java 9中,Java編譯器工具javac添加了幾個(gè)選項(xiàng)。 它允許一次編譯一個(gè)模塊或多個(gè)模塊。 如果要一次編譯多個(gè)模塊,則必須將每個(gè)模塊的源代碼存儲(chǔ)在與模塊名稱相同的目錄下。 即使只有一個(gè)模塊,也最好遵循此源目錄命名約定。

假設(shè)你想編譯com.jdojo.contact模塊的源代碼。 可以將其源代碼存儲(chǔ)在名為C:\j9r\src的目錄中,其中包含以下文件:

module-info.java

com\jdojo\contact\info\Address.java

com\jdojo\contact\info\Phone.java

com\jdojo\contact\validator\Validator.java

com\jdojo\contact\validator\AddressValidator.java

com\jdojo\contact\validator\PhoneValidator.java

請注意,需要遵循包層次結(jié)構(gòu)來存儲(chǔ)接口和類的源文件。

如果要一次編譯多個(gè)模塊,則必須將源代碼目錄命名為com.jdojo.contact,這與模塊的名稱相同。 在這種情況下,可以將模塊的源代碼存儲(chǔ)在名為C:\j9r\src的目錄中,其目錄如下:

com.jdojo.contact\module-info.java

com.jdojo.contact\com\jdojo\contact\info\Address.java

com.jdojo.contact\com\jdojo\contact\info\Phone.java

com.jdojo.contact\com\jdojo\contact\validator\Validator.java

com.jdojo.contact\com\jdojo\contact\validator\AddressValidator.java

com.jdojo.contact\com\jdojo\contact\validator\PhoneValidator.java

模塊的編譯后代碼將遵循與之前看到的相同的目錄層次結(jié)構(gòu)。

八. 打包模塊

模塊的artifact可以存儲(chǔ)在:

目錄中

模塊化的JAR文件中

JMOD文件中,它是JDK 9中引入的一種新的模塊封裝格式

1. 目錄中的模塊

當(dāng)模塊的編譯代碼存儲(chǔ)在目錄中時(shí),目錄的根目錄包含模塊描述符(module-info.class文件),子目錄是包層次結(jié)構(gòu)的鏡像。 繼續(xù)上一節(jié)中的示例,假設(shè)將com.jdojo.contact模塊的編譯代碼存儲(chǔ)在C:\j9r\mods\ com.jdojo.contact目錄中。 目錄的內(nèi)容如下:

com\jdojo\contact\info\Address.class

com\jdojo\contact\info\Phone.class

com\jdojo\contact\validator\Validator.class

com\jdojo\contact\validator\AddressValidator.class

com\jdojo\contact\validator\PhoneValidator.class

2. 模塊化JAR中的模塊

JDK附帶一個(gè)jar工具,以JAR(Java Archive)文件格式打包Java代碼。 JAR格式基于ZIP文件格式。 JDK 9增強(qiáng)了在JAR中打包模塊代碼的jar工具。 當(dāng)JAR包含模塊的編譯代碼時(shí),JAR稱為模塊化JAR。 模塊化JAR在根目錄下包含一個(gè)module-info.class文件。

無論在JDK 9之前使用JAR,現(xiàn)在都可以使用模塊化JAR。 例如,模塊化JAR可以放置在類路徑上,在這種情況下,模塊化JAR中的module-info.class文件將被忽略,因?yàn)閙odule-info在Java中不是有效的類名。

在打包模塊化JAR的同時(shí),可以使用JDK 9中添加的jar工具中可用的各種選項(xiàng),將模塊描述符中的信息例如模塊版本添加到主類中。

Tips

模塊化JAR在各個(gè)方面來看都是一個(gè)JAR,除了它在根路徑下包含的模塊描述符。通常,比較重要的Java應(yīng)用程序由多個(gè)模塊組成。 模塊化JAR可以是一個(gè)模塊,包含編譯的代碼。 需要將應(yīng)用程序的所有模塊打包到單個(gè)JAR中。

繼續(xù)上一節(jié)中的示例,com.jdojo.contact模塊的模塊化JAR內(nèi)容如下。 請注意,JAR在META-INF目錄中始終包含一個(gè)MANIFEST.MF文件。

module-info.class

com/jdojo/contact/info/Address.class

com/jdojo/contact/info/Phone.class

com/jdojo/contact/validator/Validator.class

com/jdojo/contact/validator/AddressValidator.class

com/jdojo/contact/validator/PhoneValidator.class

META-INF/MANIFEST.MF

3. JMOD文件中的模塊

JDK 9引入了一種稱為JMOD的新格式來封裝模塊。 JMOD文件使用.jmod擴(kuò)展名。 JDK模塊被編譯成JMOD格式,放在JDK_HOME \ jmods目錄中。例如,可以找到一個(gè)包含java.base模塊內(nèi)容的java.base.jmod文件。 僅在編譯時(shí)和鏈接時(shí)才支持JMOD文件。 它們在運(yùn)行時(shí)不受支持。

九. 模塊路徑

自JDK開始以來,類路徑機(jī)制查找類型已經(jīng)存在。 類路徑是一系列目錄,JAR文件和ZIP文件。 當(dāng)Java需要在各個(gè)階段(編譯時(shí),運(yùn)行時(shí),工具使用等)中查找類型時(shí),它會(huì)使用類路徑中的條目來查找類型。

Java 9類型作為模塊的一部分存在。 Java需要在不同階段查找模塊,而不是類似于Java 9之前的模塊。Java 9引入了一種新的機(jī)制來查找模塊,它被稱為模塊路徑。

模塊路徑是包含模塊的路徑名稱序列,其中路徑名可以是模塊化JAR,JMOD文件或目錄的路徑。 路徑名由特定于平臺(tái)的路徑分隔符分隔,在UNIX平臺(tái)上為冒號(hào)(😃,Windows平臺(tái)上分號(hào)(;)。

當(dāng)路徑名稱是模塊化的JAR或JMOD文件時(shí),很容易理解。 在這種情況下,如果JAR或JMOD文件中的模塊描述符包含要查找的模塊的模塊定義,則會(huì)找到該模塊。 如果路徑名是目錄,則存在以下兩種情況:

如果類文件存在于根目錄,則該目錄被認(rèn)為具有模塊定義。 根目錄下的類文件將被解釋為模塊描述符。 所有其他文件和子目錄將被解釋為此一個(gè)模塊的一部分。 如果根目錄中存在多個(gè)類文件,則首先找到的文件被解釋為模塊描述符。 經(jīng)過幾次實(shí)驗(yàn),JDK 9似乎以按字母排列的順序拾取了第一類文件。 這種存儲(chǔ)模塊編譯代碼的方式肯定會(huì)讓你頭疼。 因此,如果目錄在根目錄中包含多個(gè)類文件,請避免向模塊路徑添加目錄。

如果根目錄中不存在類文件,則目錄的內(nèi)容將被不同的解釋。 目錄中的每個(gè)模塊化JAR或JMOD文件被認(rèn)為是模塊定義。 每個(gè)子目錄,如果它包含在它的根一個(gè) module-info.class文件,被認(rèn)為具有展開目錄樹格式的模塊定義。 如果一個(gè)子目錄的根目錄不包含一個(gè)module-info.class文件,那么它不會(huì)被解釋為包含一個(gè)模塊定義。 請注意,如果子目錄包含模塊定義,則其名稱不必與模塊名稱相同。 模塊名稱是從module-info.class文件中讀取的。

以下是Windows上的有效模塊路徑:

C:\mods

C:\mods\com.jdojo.contact.jar;C:\mods\com.jdojo.person.jar

C:\lib;C:\mods\com.jdojo.contact.jar;C:\mods\com.jdojo.person.jar

第一個(gè)模塊路徑包含名為C:\mods的目錄的路徑。 第二個(gè)模塊路徑包含兩個(gè)模塊化JAR——com.jdojo.contact.jar和com.jdojo.person.jar的路徑。 第三個(gè)模塊路徑包含三個(gè)元素 —— 目錄C:\lib的路徑,以及兩個(gè)模塊化JAR——com.jdojo.contact.jar和com.jdojo.person.jar的路徑。 在類似UNIX的平臺(tái)上顯示相當(dāng)于這些路徑:

/usr/ksharan/mods

/usr/ksharan/mods/com.jdojo.contact.jar:/usr/ksharan/com.jdojo.person.jar

/usr/ksharan/lib:/usr/ksharan/mods/com.jdojo.contact.jar:/usr/ksharan/mods/com.jdojo.person.jar

避免模??塊路徑問題的最佳方法是不要將分解的目錄用作模塊定義。

有兩個(gè)目錄作為模塊路徑 —— 一個(gè)包含所有應(yīng)用程序模塊化JAR的目錄,另一個(gè)包含用于外部庫的所有模塊化JAR的目錄。例如,可以使用C:\applib 和 C:\extlib作為Windows上的模塊路徑,其中C:\applib目錄包含所有應(yīng)用程序模塊化JAR,C:\extlib目錄包含所有外部庫的模塊化JAR。

JDK 9已經(jīng)更新了所有的工具來使用模塊路徑來查找模塊。這些工具提供了指定模塊路徑的新選項(xiàng)。到JDK 9,已經(jīng)看到以一個(gè)連字符(-)開頭的UNIX樣式選項(xiàng),例如-cp和-classpath。在JDK 9中有如此多的附加選項(xiàng),JDK設(shè)計(jì)人員對于開發(fā)人員來說也用完了有意義的短名稱的選項(xiàng)。因此,JDK 9開始使用GNU樣式選項(xiàng),其中選項(xiàng)以兩個(gè)連續(xù)的連字符開頭,并且單詞由連字符分隔。以下是GNU樣式命令行選項(xiàng)的幾個(gè)示例:

--class-path

--module-path

--module-version

--main-class

--print-module-descriptor

Tips

要打印工具支持的所有標(biāo)準(zhǔn)選項(xiàng)的列表,使用--help或-h選項(xiàng)運(yùn)行該工具,對于所有非標(biāo)準(zhǔn)選項(xiàng),使用-X選項(xiàng)運(yùn)行該工具。 例如,java -h和java -X命令將分別打印java命令的標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)選項(xiàng)列表。

JDK 9中的大多數(shù)工具(如javac,java和jar)都支持兩個(gè)選項(xiàng)來在命令行上指定一個(gè)模塊路徑。 它們是-p和--module-path。 將繼續(xù)支持現(xiàn)有的UNIX樣式選項(xiàng)以實(shí)現(xiàn)向后兼容性。 以下兩個(gè)命令顯示如何使用兩個(gè)選項(xiàng)來指定java工具的模塊路徑:

// Using the GNU-style option

C:\>java --module-path C:\applib;C:\lib other-args-go-here

// Using the UNIX-style option

C:\>java -p C:\applib;C:\extlib other-args-go-here

當(dāng)您使用GNU樣式選項(xiàng)時(shí),可以使用以下兩種形式之一指定該選項(xiàng)的值:

--

--=

上面的命令也可以寫成如下形式:

// Using the GNU-style option

C:\>java --module-path=C:\applib;C:\lib other-args-go-here

當(dāng)使用空格作為名稱值分隔符時(shí),需要至少使用一個(gè)空格。 您使用=作為分隔符時(shí),不得在其周圍包含任何空格。

十. 可觀察模塊

在模塊查找過程中,模塊系統(tǒng)使用不同類型的模塊路徑來定位模塊。 在模塊路徑上與系統(tǒng)模塊一起發(fā)現(xiàn)的一組模塊被稱為可觀察模塊。 可以將可觀察模塊視為模塊系統(tǒng)在特定階段可用的所有模塊的集合,例如編譯時(shí),鏈接時(shí)和運(yùn)行時(shí),或可用于工具。

JDK 9為java命令添加了一個(gè)名為--list-modules的新選項(xiàng)。 該選項(xiàng)可用于打印兩種類型的信息:可觀察模塊的列表和一個(gè)或多個(gè)模塊的描述。 該選項(xiàng)可以以兩種形式使用:

--list-modules

--list-modules ,...

在第一種形式中,該選項(xiàng)沒有跟隨任何模塊名稱。 它打印可觀察模塊的列表。 在第二種形式中,該選項(xiàng)后面是逗號(hào)分隔的模塊名稱列表,用于打印指定模塊的模塊描述符。

以下命令打印可觀察模塊的列表,其中僅包括系統(tǒng)模塊:

c:\Java9Revealed> java --list-modules

java.base@9-ea

java.se.ee@9-ea

java.sql@9-ea

javafx.base@9-ea

javafx.controls@9-ea

jdk.jshell@9-ea

jdk.unsupported@9-ea

...

上面顯示的是輸出部分內(nèi)容。 輸出中的每個(gè)條目都包含兩個(gè)部分—— 一個(gè)模塊名稱和一個(gè)由@符號(hào)分隔的版本字符串。 第一部分是模塊名稱,第二部分是模塊的版本字符串。 例如,在java.base@9-ea中,java.base是模塊名稱,9-ea是版本字符串。 在版本字符串中,數(shù)字9表示JDK 9,ea代表早期訪問。 運(yùn)行命令時(shí),你可能會(huì)得到不同的版本字符串輸出。

現(xiàn)在在C:\Java9Revealed\lib目錄中放置了三個(gè)模塊化JAR。 如果提供此目錄作為java命令的模塊路徑,這些模塊將被包含在可觀察模塊列表中。以下命令顯示了改變指定一個(gè)模塊路徑后,觀察到的模塊列表。 這里,lib目錄是相對路徑,C:\Java9Revealed是當(dāng)前目錄。

C:\Java9Revealed>java --module-path lib --list-modules

claim (file:///C:/Java9Revealed/lib/claim.jar)

policy (file:///C:/Java9Revealed/lib/policy.jar)

java.base@9-ea

java.xml@9-ea

javafx.base@9-ea

jdk.unsupported@9-ea

jdk.zipfs@9-ea

...

注意,對于應(yīng)用程序模塊,--list-modules選項(xiàng)還會(huì)打印它們的位置。 當(dāng)獲得意想不到的結(jié)果,并且不知道正在使用哪些模塊以及哪些位置時(shí),此信息有助于排除故障。

以下命令將com.jdojo.intro模塊指定為--list-modules選項(xiàng)的參數(shù),以打印模塊的描述:

C:\Java9Revealed>java --module-path lib --list-modules claim

module claim (file:///C:/Java9Revealed/lib/claim.jar)

exports com.jdojo.claim

requires java.sql (@9-ea)

requires mandated java.base (@9-ea)

contains pkg3

輸出的第一行包含模塊名稱和包含該模塊的模塊化JAR位置。 第二行表示該模塊導(dǎo)出com.jdojo.claim模塊。 第三行表示該模塊需要java.sql模塊。 第四行表示模塊強(qiáng)制依賴于java.base模塊。 回想一下,除了java.base模塊之外的每個(gè)模塊都取決于java.base模塊。 除了java.base模塊,在每個(gè)模塊的描述中看到需要強(qiáng)制的java.base模塊。 第五行聲明該模塊包含一個(gè)名為pkg3的包,既不導(dǎo)出也不開放。

你還可以使用--list-modules打印系統(tǒng)模塊的描述,例如java.base和java.sql。 以下命令打印出java.sql模塊的描述。

C:\Java9Revealed>java --list-modules java.sql

module java.sql@9-ea

exports java.sql

exports javax.sql

exports javax.transaction.xa

requires transitive java.xml

requires mandated java.base

requires transitive java.logging

uses java.sql.Driver

十一. 總結(jié)

Java中的包已被用作類型的容器。 應(yīng)用程序由放置在類路徑上的幾個(gè)JAR組成。 軟件包作為類型的容器,不強(qiáng)制執(zhí)行任何可訪問性邊界。 類型的可訪問性內(nèi)置在使用修飾符的類型聲明中。 如果包中包含內(nèi)部實(shí)現(xiàn),則無法阻止程序的其他部分訪問內(nèi)部實(shí)現(xiàn)。 類路徑機(jī)制在使用類型時(shí)線性搜索類型。 這導(dǎo)致在部署的JAR中缺少類型時(shí),在運(yùn)行時(shí)接收錯(cuò)誤的另一個(gè)問題 —— 有時(shí)在部署應(yīng)用程序后很長時(shí)間。 這些問題可以分為兩種類型:封裝和配置。

JDK 9引入了模塊系統(tǒng)。 它提供了一種組織Java程序的方法。 它有兩個(gè)主要目標(biāo):強(qiáng)大的封裝和可靠的配置。 使用模塊系統(tǒng),應(yīng)用程序由模塊組成,這些模塊被命名為代碼和數(shù)據(jù)的集合。 模塊通過其聲明來控制模塊的其他模塊可以訪問的部分。 訪問另一個(gè)模塊的部分的模塊必須聲明對第二個(gè)模塊的依賴。 控制訪問和聲明依賴的是達(dá)成強(qiáng)封裝的基礎(chǔ)。 在應(yīng)用程序啟動(dòng)時(shí)解決了一個(gè)模塊的依賴關(guān)系。 在JDK 9中,如果一個(gè)模塊依賴于另一個(gè)模塊,并且運(yùn)行應(yīng)用程序時(shí)第二個(gè)模塊丟失,則在啟動(dòng)時(shí)將會(huì)收到一個(gè)錯(cuò)誤,而不是應(yīng)用程序運(yùn)行后的某個(gè)時(shí)間。 這是一個(gè)可靠的基礎(chǔ)配置。

使用模塊聲明定義模塊。 模塊的源代碼通常存儲(chǔ)在名為module-info.java的文件中。 一個(gè)模塊被編譯成一個(gè)類文件,通常命名為module-info.class。 編譯后的模塊聲明稱為模塊描述符。 模塊聲明不允許指定模塊版本。 但諸如將模塊打包到JAR中的jar工具的可以將模塊版本添加到模塊描述符中。

使用module關(guān)鍵字聲明模塊,后跟模塊名稱。 模塊聲明可以使用五種類型的模塊語句:exports,opens,require,uses和provide。 導(dǎo)出語句將模塊的指定包導(dǎo)出到所有模塊或編譯時(shí)和運(yùn)行時(shí)的命名模塊列表。 開放語句允許對所有模塊的反射訪問指定的包或運(yùn)行時(shí)指定的模塊列表, 其他模塊可以使用反射訪問指定包中的所有類型以及這些類型的所有成員(私有和公共)。 使用語句和提供模塊語句用于配置模塊以發(fā)現(xiàn)服務(wù)實(shí)現(xiàn)并提供特定服務(wù)接口的服務(wù)實(shí)現(xiàn)。

從JDK 9開始,open, module, requires, transitive, exports,opens,to,uses,provides和with都是受限關(guān)鍵字。 只有當(dāng)具體位置出現(xiàn)在模塊聲明中時(shí),它們才具有特殊意義。

模塊的源代碼和編譯代碼被安排在目錄,JAR文件或JMOD文件中。 在目錄和JAR文件中,module-info.class文件位于根目錄。

與類路徑類似,JDK 9引入了模塊路徑。 但是,它們的使用方式有所不同。 類路徑用于搜索類型的定義,而模塊路徑用于查找模塊,而不是模塊中的特定類型。 Java工具(如java和javac)已經(jīng)被更新為使用模塊路徑和類路徑。 您可以使用--module-path或-p選項(xiàng)指定這些工具的模塊路徑。

JDK 9引入了與工具一起使用的GNU風(fēng)格選項(xiàng)。 選項(xiàng)以兩個(gè)破折號(hào)開頭,每個(gè)單詞用短劃線分隔,例如--module-path,--class-path,--list-modules等。如果選項(xiàng)接受一個(gè)值,則該值可以跟隨選項(xiàng)加上空格或=。 以下兩個(gè)選項(xiàng)是一樣的:

--module-path C:\lib

--module-path=C:\lib

模塊系統(tǒng)在某個(gè)階段(編譯時(shí),運(yùn)行時(shí),工具等)中可用的模塊列表被稱為可觀察模塊。 可以使用--list-modules選項(xiàng)與java命令列出運(yùn)行時(shí)可用的可觀察模塊。 還可以使用此選項(xiàng)打印模塊的描述。

總結(jié)

以上是生活随笔為你收集整理的java模块_Java 9 揭秘(2. 模块化系统)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产成人综合美国十次 | 亚洲娇小与黑人巨大交 | 国产在线无码精品电影网 | 中文无码伦av中文字幕 | 色婷婷av一区二区三区之红樱桃 | 欧美一区二区三区视频在线观看 | 久久午夜无码鲁丝片午夜精品 | 国产精品毛片一区二区 | 呦交小u女精品视频 | 77777熟女视频在线观看 а天堂中文在线官网 | 精品亚洲成av人在线观看 | 99久久人妻精品免费二区 | 亚洲色成人中文字幕网站 | 国产亚洲人成a在线v网站 | 中文字幕人妻丝袜二区 | 少妇性l交大片欧洲热妇乱xxx | 人人妻人人澡人人爽欧美一区 | 日本精品久久久久中文字幕 | 99久久亚洲精品无码毛片 | 成人精品视频一区二区三区尤物 | 一二三四在线观看免费视频 | 国产成人一区二区三区别 | 亚洲一区二区观看播放 | 性欧美videos高清精品 | 麻豆国产97在线 | 欧洲 | 日本免费一区二区三区最新 | 国产成人精品一区二区在线小狼 | 精品国偷自产在线 | 国产精品内射视频免费 | 久久久婷婷五月亚洲97号色 | 国产免费无码一区二区视频 | 国产午夜无码视频在线观看 | 日韩人妻少妇一区二区三区 | 日本一区二区三区免费播放 | 色婷婷香蕉在线一区二区 | 国产乱人伦av在线无码 | 免费国产成人高清在线观看网站 | 久久zyz资源站无码中文动漫 | 国产无av码在线观看 | 青青久在线视频免费观看 | 乱码午夜-极国产极内射 | 亚洲熟妇色xxxxx欧美老妇 | 国产成人无码av片在线观看不卡 | 久久97精品久久久久久久不卡 | 国产乱人偷精品人妻a片 | √8天堂资源地址中文在线 | 欧美黑人乱大交 | 又湿又紧又大又爽a视频国产 | 亚洲中文字幕va福利 | 狠狠cao日日穞夜夜穞av | 亚洲精品国偷拍自产在线观看蜜桃 | 午夜丰满少妇性开放视频 | 国产成人无码区免费内射一片色欲 | 日本熟妇大屁股人妻 | 国产午夜亚洲精品不卡下载 | 欧美 亚洲 国产 另类 | 亚洲精品久久久久中文第一幕 | 色 综合 欧美 亚洲 国产 | 亚洲一区二区三区 | 亚洲中文字幕av在天堂 | 99久久精品午夜一区二区 | 成人无码精品1区2区3区免费看 | 丰满肥臀大屁股熟妇激情视频 | 在线a亚洲视频播放在线观看 | 国产特级毛片aaaaaaa高清 | 日本一卡2卡3卡四卡精品网站 | 免费人成在线观看网站 | 伊在人天堂亚洲香蕉精品区 | 国产精品久久久久7777 | 欧美放荡的少妇 | 日韩欧美成人免费观看 | 日本xxxx色视频在线观看免费 | 精品午夜福利在线观看 | 久激情内射婷内射蜜桃人妖 | 九九综合va免费看 | 国产亚洲精品精品国产亚洲综合 | 成人片黄网站色大片免费观看 | 国产av人人夜夜澡人人爽麻豆 | 婷婷丁香五月天综合东京热 | 天天拍夜夜添久久精品大 | 在线播放亚洲第一字幕 | 亚洲国产成人a精品不卡在线 | 欧美人与动性行为视频 | 国产区女主播在线观看 | 精品 日韩 国产 欧美 视频 | 国产成人精品优优av | 亚洲日韩精品欧美一区二区 | 中文毛片无遮挡高清免费 | 国产人成高清在线视频99最全资源 | 亚洲国产精品美女久久久久 | 国产精品美女久久久久av爽李琼 | 99久久人妻精品免费二区 | 蜜桃臀无码内射一区二区三区 | 色综合视频一区二区三区 | 无遮挡啪啪摇乳动态图 | 澳门永久av免费网站 | 在线播放免费人成毛片乱码 | 女人被爽到呻吟gif动态图视看 | 色婷婷香蕉在线一区二区 | 亚洲小说春色综合另类 | 国产亚洲欧美日韩亚洲中文色 | 波多野结衣aⅴ在线 | 国产av久久久久精东av | 精品久久综合1区2区3区激情 | 丰满少妇女裸体bbw | 日本饥渴人妻欲求不满 | 亚洲小说春色综合另类 | 欧美亚洲国产一区二区三区 | 国产精品久久久 | 久久久久国色av免费观看性色 | 国产在线无码精品电影网 | 中文字幕无码日韩专区 | 久久无码专区国产精品s | 国产午夜无码精品免费看 | 18精品久久久无码午夜福利 | 蜜桃av抽搐高潮一区二区 | 久久综合给合久久狠狠狠97色 | 国产极品美女高潮无套在线观看 | 国产成人精品无码播放 | 亚洲精品一区国产 | a片免费视频在线观看 | 精品国产av色一区二区深夜久久 | 亚洲啪av永久无码精品放毛片 | 色爱情人网站 | 国产成人无码午夜视频在线观看 | 亚洲一区二区三区偷拍女厕 | 久久人人爽人人爽人人片ⅴ | 国内精品久久毛片一区二区 | 欧美成人高清在线播放 | 亚洲国产精品成人久久蜜臀 | 国产一区二区三区精品视频 | 性色av无码免费一区二区三区 | 日本大乳高潮视频在线观看 | 欧美丰满熟妇xxxx | 日韩 欧美 动漫 国产 制服 | 野外少妇愉情中文字幕 | 黄网在线观看免费网站 | 青青久在线视频免费观看 | 青青草原综合久久大伊人精品 | 国产激情艳情在线看视频 | 国产激情综合五月久久 | 久久久久99精品国产片 | 无码国模国产在线观看 | 色综合久久久无码网中文 | 国产精品高潮呻吟av久久 | 丰满肥臀大屁股熟妇激情视频 | 亚洲欧美色中文字幕在线 | 给我免费的视频在线观看 | 性欧美熟妇videofreesex | 丰满人妻被黑人猛烈进入 | 丰满人妻一区二区三区免费视频 | 青青草原综合久久大伊人精品 | 免费乱码人妻系列无码专区 | 久久久成人毛片无码 | 爽爽影院免费观看 | 国产午夜亚洲精品不卡 | 免费国产黄网站在线观看 | a国产一区二区免费入口 | 日本高清一区免费中文视频 | 小鲜肉自慰网站xnxx | www一区二区www免费 | 国产成人精品视频ⅴa片软件竹菊 | 免费乱码人妻系列无码专区 | 国产精品igao视频网 | 动漫av一区二区在线观看 | 免费无码av一区二区 | 爆乳一区二区三区无码 | 人妻少妇精品无码专区二区 | 精品无码成人片一区二区98 | 国产乱人偷精品人妻a片 | 欧美日韩一区二区三区自拍 | 三上悠亚人妻中文字幕在线 | 精品国产国产综合精品 | 国产精华av午夜在线观看 | 欧美老人巨大xxxx做受 | 男人扒开女人内裤强吻桶进去 | 亚洲 激情 小说 另类 欧美 | 久久99精品国产麻豆 | 日韩精品久久久肉伦网站 | 在线观看国产午夜福利片 | 国产凸凹视频一区二区 | 疯狂三人交性欧美 | 中文字幕日产无线码一区 | 免费观看又污又黄的网站 | 欧美激情内射喷水高潮 | 亚洲精品一区国产 | 99久久99久久免费精品蜜桃 | 天天躁夜夜躁狠狠是什么心态 | 国产片av国语在线观看 | 亚洲精品一区二区三区在线 | 国产一区二区三区精品视频 | 白嫩日本少妇做爰 | 波多野42部无码喷潮在线 | 亚洲乱亚洲乱妇50p | 国产人妻精品一区二区三区不卡 | 免费男性肉肉影院 | 亚洲精品一区二区三区在线观看 | 又粗又大又硬毛片免费看 | 精品无码国产自产拍在线观看蜜 | 国产在线精品一区二区三区直播 | 国产亚洲日韩欧美另类第八页 | 99久久精品国产一区二区蜜芽 | 欧美怡红院免费全部视频 | 精品久久8x国产免费观看 | 亚洲色偷偷偷综合网 | 小泽玛莉亚一区二区视频在线 | 四十如虎的丰满熟妇啪啪 | 伊人久久大香线蕉午夜 | 俄罗斯老熟妇色xxxx | 99久久无码一区人妻 | 麻豆国产人妻欲求不满 | 亚洲国产日韩a在线播放 | 一区二区三区高清视频一 | 人妻中文无码久热丝袜 | 国产极品美女高潮无套在线观看 | a片在线免费观看 | 欧美日韩视频无码一区二区三 | 亚洲色无码一区二区三区 | 久在线观看福利视频 | 少妇一晚三次一区二区三区 | 一本大道伊人av久久综合 | 人妻与老人中文字幕 | 国产午夜无码视频在线观看 | 欧美激情一区二区三区成人 | 日产国产精品亚洲系列 | 国产凸凹视频一区二区 | 亚洲午夜无码久久 | 美女扒开屁股让男人桶 | 午夜熟女插插xx免费视频 | 国产精品爱久久久久久久 | 国产午夜福利100集发布 | 天天摸天天碰天天添 | 午夜嘿嘿嘿影院 | 国内丰满熟女出轨videos | 性开放的女人aaa片 | 久久午夜无码鲁丝片秋霞 | 亚洲色成人中文字幕网站 | 精品无码国产自产拍在线观看蜜 | 性生交大片免费看女人按摩摩 | 国语自产偷拍精品视频偷 | 亚洲国产综合无码一区 | 色婷婷av一区二区三区之红樱桃 | 欧美喷潮久久久xxxxx | 无套内谢的新婚少妇国语播放 | 熟妇人妻激情偷爽文 | 天天摸天天碰天天添 | 久久精品女人天堂av免费观看 | 亚洲日韩av一区二区三区四区 | 欧美黑人巨大xxxxx | 亚洲综合伊人久久大杳蕉 | 伦伦影院午夜理论片 | 亚洲精品久久久久中文第一幕 | 综合人妻久久一区二区精品 | 97久久超碰中文字幕 | 鲁一鲁av2019在线 | 国产免费久久精品国产传媒 | 国产精品美女久久久久av爽李琼 | 嫩b人妻精品一区二区三区 | 2019nv天堂香蕉在线观看 | 亚洲乱码国产乱码精品精 | 国产精品igao视频网 | 国产精品igao视频网 | a在线观看免费网站大全 | aⅴ亚洲 日韩 色 图网站 播放 | 久久久久成人片免费观看蜜芽 | 日韩av激情在线观看 | 亚洲无人区午夜福利码高清完整版 | 国产超级va在线观看视频 | 人妻互换免费中文字幕 | 国产精品国产自线拍免费软件 | 小sao货水好多真紧h无码视频 | 成人免费视频一区二区 | 1000部啪啪未满十八勿入下载 | 国产午夜视频在线观看 | 欧美xxxxx精品 | 亚洲精品国产精品乱码不卡 | 亚洲s色大片在线观看 | 国产乱码精品一品二品 | 亚洲日本在线电影 | 国产精品久久久久9999小说 | 色欲久久久天天天综合网精品 | 国产精品毛片一区二区 | 草草网站影院白丝内射 | 狂野欧美激情性xxxx | 亚洲 高清 成人 动漫 | 丰满人妻翻云覆雨呻吟视频 | 青草青草久热国产精品 | 天海翼激烈高潮到腰振不止 | 欧美真人作爱免费视频 | 精品乱子伦一区二区三区 | 人妻互换免费中文字幕 | 综合人妻久久一区二区精品 | 未满小14洗澡无码视频网站 | 免费国产成人高清在线观看网站 | 欧美放荡的少妇 | 国产片av国语在线观看 | 一区二区传媒有限公司 | 婷婷丁香六月激情综合啪 | 精品厕所偷拍各类美女tp嘘嘘 | 狠狠色噜噜狠狠狠狠7777米奇 | 精品厕所偷拍各类美女tp嘘嘘 | aⅴ在线视频男人的天堂 | 人人妻在人人 | 女人高潮内射99精品 | 水蜜桃亚洲一二三四在线 | 狠狠色噜噜狠狠狠7777奇米 | 无码帝国www无码专区色综合 | 乱人伦人妻中文字幕无码久久网 | 兔费看少妇性l交大片免费 | 精品久久久中文字幕人妻 | 亚洲s码欧洲m码国产av | 沈阳熟女露脸对白视频 | 国产精品va在线观看无码 | 欧美人与善在线com | 狠狠色色综合网站 | 国产精品久久久久久久影院 | 1000部夫妻午夜免费 | 男人扒开女人内裤强吻桶进去 | 一本色道久久综合亚洲精品不卡 | 国产又爽又黄又刺激的视频 | 国产精品福利视频导航 | 国产精品亚洲一区二区三区喷水 | 日日摸天天摸爽爽狠狠97 | 在线观看欧美一区二区三区 | 国产亚洲日韩欧美另类第八页 | 亚洲精品欧美二区三区中文字幕 | 国产做国产爱免费视频 | 久久国产精品偷任你爽任你 | 欧美自拍另类欧美综合图片区 | 老子影院午夜伦不卡 | 东北女人啪啪对白 | 国产精品丝袜黑色高跟鞋 | 中国女人内谢69xxxx | 成 人影片 免费观看 | 无码成人精品区在线观看 | 国产成人无码午夜视频在线观看 | 久久人妻内射无码一区三区 | 荡女精品导航 | 欧美日韩综合一区二区三区 | 狠狠噜狠狠狠狠丁香五月 | 丰腴饱满的极品熟妇 | 午夜性刺激在线视频免费 | 天天爽夜夜爽夜夜爽 | 久久aⅴ免费观看 | 18禁黄网站男男禁片免费观看 | 国产精品自产拍在线观看 | 亚洲另类伦春色综合小说 | 国产 浪潮av性色四虎 | 清纯唯美经典一区二区 | 亚洲色欲色欲欲www在线 | 欧美一区二区三区视频在线观看 | 中文字幕无线码 | 欧美兽交xxxx×视频 | 又色又爽又黄的美女裸体网站 | 中文字幕av日韩精品一区二区 | 中文字幕乱妇无码av在线 | 日本免费一区二区三区最新 | 国产成人综合色在线观看网站 | 国内综合精品午夜久久资源 | 国产精品久久久一区二区三区 | 国产sm调教视频在线观看 | 国产在线aaa片一区二区99 | 亚洲天堂2017无码中文 | 国产精品视频免费播放 | 国产精品高潮呻吟av久久 | 久久精品一区二区三区四区 | 黑人巨大精品欧美一区二区 | 人妻尝试又大又粗久久 | 在线观看国产午夜福利片 | 久久 国产 尿 小便 嘘嘘 | av香港经典三级级 在线 | 国产黑色丝袜在线播放 | 精品人妻中文字幕有码在线 | 日本xxxx色视频在线观看免费 | 激情内射亚州一区二区三区爱妻 | 麻豆国产人妻欲求不满 | 色偷偷人人澡人人爽人人模 | 中文毛片无遮挡高清免费 | 欧美日韩视频无码一区二区三 | 性欧美大战久久久久久久 | 午夜精品一区二区三区的区别 | 亚洲熟熟妇xxxx | 欧美性生交活xxxxxdddd | 欧美阿v高清资源不卡在线播放 | 国产97色在线 | 免 | 最近的中文字幕在线看视频 | 亚无码乱人伦一区二区 | 亚洲一区二区三区偷拍女厕 | 在线а√天堂中文官网 | 婷婷色婷婷开心五月四房播播 | 欧美大屁股xxxxhd黑色 | 免费男性肉肉影院 | 性啪啪chinese东北女人 | 久久亚洲中文字幕无码 | 国内精品人妻无码久久久影院蜜桃 | 天下第一社区视频www日本 | 亚洲国产av精品一区二区蜜芽 | 欧美国产日产一区二区 | 老太婆性杂交欧美肥老太 | 国产精品手机免费 | 亚洲国产精华液网站w | 亚洲色www成人永久网址 | 综合网日日天干夜夜久久 | 国产高清av在线播放 | 中文字幕 亚洲精品 第1页 | 三上悠亚人妻中文字幕在线 | 久久久久免费精品国产 | 欧美三级a做爰在线观看 | 国产香蕉97碰碰久久人人 | 中文无码精品a∨在线观看不卡 | 国产午夜福利亚洲第一 | 欧美日本免费一区二区三区 | 久久精品国产大片免费观看 | 国产无遮挡又黄又爽免费视频 | 亚洲精品国产a久久久久久 | 久久精品国产99精品亚洲 | 蜜桃视频韩日免费播放 | 成人亚洲精品久久久久 | 日本一区二区三区免费播放 | 强奷人妻日本中文字幕 | 国产精华av午夜在线观看 | 日日碰狠狠躁久久躁蜜桃 | 日韩精品无码免费一区二区三区 | 四虎影视成人永久免费观看视频 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久久久99精品成人片 | 国产真实伦对白全集 | 亚洲精品国产品国语在线观看 | 国产人妻精品一区二区三区 | 乱码午夜-极国产极内射 | 亚洲乱码日产精品bd | 少妇性荡欲午夜性开放视频剧场 | 日本欧美一区二区三区乱码 | 人人妻人人澡人人爽欧美一区 | 国产高清av在线播放 | 国产人妻精品一区二区三区 | 激情综合激情五月俺也去 | 亚洲精品久久久久avwww潮水 | 久久精品国产日本波多野结衣 | 国产色视频一区二区三区 | 国产成人无码区免费内射一片色欲 | a在线亚洲男人的天堂 | 99久久精品国产一区二区蜜芽 | 久久精品国产一区二区三区肥胖 | 中文字幕中文有码在线 | 欧美精品无码一区二区三区 | 少妇高潮喷潮久久久影院 | 国产精品美女久久久久av爽李琼 | 精品人妻av区 | 熟女俱乐部五十路六十路av | 青青草原综合久久大伊人精品 | 亚洲午夜福利在线观看 | 欧美人与物videos另类 | 精品国产一区二区三区四区 | 欧美日韩在线亚洲综合国产人 | 日韩亚洲欧美中文高清在线 | 乱中年女人伦av三区 | 全黄性性激高免费视频 | 丰满妇女强制高潮18xxxx | 亚洲国产精品无码久久久久高潮 | 麻豆国产丝袜白领秘书在线观看 | 思思久久99热只有频精品66 | 日欧一片内射va在线影院 | 中文字幕精品av一区二区五区 | 午夜免费福利小电影 | 久久久精品456亚洲影院 | 无码国产乱人伦偷精品视频 | 久久人人爽人人爽人人片av高清 | 国产免费久久精品国产传媒 | 成人aaa片一区国产精品 | 亚洲乱码中文字幕在线 | 国产又粗又硬又大爽黄老大爷视 | 最新国产乱人伦偷精品免费网站 | 亚洲精品综合五月久久小说 | 水蜜桃亚洲一二三四在线 | 一本久道久久综合婷婷五月 | 日日麻批免费40分钟无码 | 国产熟女一区二区三区四区五区 | 欧美日韩一区二区免费视频 | av人摸人人人澡人人超碰下载 | 国产成人无码av片在线观看不卡 | 国产在线精品一区二区三区直播 | 久久久久免费精品国产 | 亚洲欧美日韩成人高清在线一区 | 无码乱肉视频免费大全合集 | 一本色道久久综合狠狠躁 | 精品国产成人一区二区三区 | 波多野结衣av一区二区全免费观看 | 国内精品一区二区三区不卡 | 色一情一乱一伦一区二区三欧美 | 国产精品福利视频导航 | 高清不卡一区二区三区 | 国产成人无码区免费内射一片色欲 | 又湿又紧又大又爽a视频国产 | 亚洲精品一区二区三区在线 | 玩弄少妇高潮ⅹxxxyw | 欧美激情内射喷水高潮 | 国产综合在线观看 | 强奷人妻日本中文字幕 | ass日本丰满熟妇pics | 俄罗斯老熟妇色xxxx | a国产一区二区免费入口 | 成人av无码一区二区三区 | 曰本女人与公拘交酡免费视频 | 超碰97人人做人人爱少妇 | 欧洲欧美人成视频在线 | 特黄特色大片免费播放器图片 | 色婷婷久久一区二区三区麻豆 | 国产精品怡红院永久免费 | 国产精品久久久久久无码 | 丁香花在线影院观看在线播放 | 无码福利日韩神码福利片 | 国内揄拍国内精品人妻 | 国产一区二区三区影院 | 人妻少妇被猛烈进入中文字幕 | 欧美国产日韩久久mv | 亚洲中文字幕无码一久久区 | 图片小说视频一区二区 | 国产凸凹视频一区二区 | 亚洲欧美精品aaaaaa片 | 久久成人a毛片免费观看网站 | 国产高潮视频在线观看 | 国产成人久久精品流白浆 | 国产成人无码av片在线观看不卡 | 国产熟女一区二区三区四区五区 | 免费观看又污又黄的网站 | 在线播放无码字幕亚洲 | 亚洲精品久久久久久一区二区 | 在线精品国产一区二区三区 | 成人无码视频免费播放 | 任你躁国产自任一区二区三区 | 日本在线高清不卡免费播放 | 色五月丁香五月综合五月 | 亚洲日韩一区二区 | 中文亚洲成a人片在线观看 | 国产成人无码午夜视频在线观看 | 欧美性生交活xxxxxdddd | 亚洲欧美色中文字幕在线 | 免费无码的av片在线观看 | 美女毛片一区二区三区四区 | 影音先锋中文字幕无码 | 荫蒂被男人添的好舒服爽免费视频 | 1000部啪啪未满十八勿入下载 | 欧美 丝袜 自拍 制服 另类 | 色欲综合久久中文字幕网 | 性欧美疯狂xxxxbbbb | 人妻无码久久精品人妻 | 图片小说视频一区二区 | 老司机亚洲精品影院无码 | a片在线免费观看 | 夜夜躁日日躁狠狠久久av | 亚洲人成无码网www | 精品国产一区av天美传媒 | 18无码粉嫩小泬无套在线观看 | 日韩精品一区二区av在线 | 最新国产麻豆aⅴ精品无码 | 在线播放免费人成毛片乱码 | 2020久久香蕉国产线看观看 | 国产熟女一区二区三区四区五区 | 亚洲国产精华液网站w | 强奷人妻日本中文字幕 | 小鲜肉自慰网站xnxx | 成人无码视频在线观看网站 | 日日麻批免费40分钟无码 | 成人无码精品1区2区3区免费看 | 欧美xxxxx精品 | 丰满人妻翻云覆雨呻吟视频 | 欧美放荡的少妇 | 国产区女主播在线观看 | 无套内射视频囯产 | 国产亚洲精品久久久久久久久动漫 | 蜜臀av在线播放 久久综合激激的五月天 | 国产亚洲欧美日韩亚洲中文色 | 国产国产精品人在线视 | 强辱丰满人妻hd中文字幕 | 女高中生第一次破苞av | 色一情一乱一伦一视频免费看 | 在教室伦流澡到高潮hnp视频 | 亚洲va中文字幕无码久久不卡 | 国产成人精品优优av | 内射老妇bbwx0c0ck | 无码一区二区三区在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 全黄性性激高免费视频 | 亚洲国产精品无码久久久久高潮 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产精品无码一区二区三区 | 毛片内射-百度 | 日本在线高清不卡免费播放 | 亚洲精品鲁一鲁一区二区三区 | 人人妻人人澡人人爽欧美一区 | 久久人妻内射无码一区三区 | 欧美国产日韩亚洲中文 | 又紧又大又爽精品一区二区 | 欧美阿v高清资源不卡在线播放 | 无人区乱码一区二区三区 | 午夜成人1000部免费视频 | 玩弄人妻少妇500系列视频 | 久久久无码中文字幕久... | 一二三四社区在线中文视频 | 国产精品美女久久久久av爽李琼 | 免费无码一区二区三区蜜桃大 | 日本欧美一区二区三区乱码 | 亚洲综合无码久久精品综合 | 国产suv精品一区二区五 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲精品一区二区三区大桥未久 | 一本久道久久综合婷婷五月 | 亚洲日本在线电影 | 国产精品久久久一区二区三区 | 天天av天天av天天透 | 日本一区二区三区免费高清 | 中文字幕无码乱人伦 | 精品水蜜桃久久久久久久 | 日韩人妻无码一区二区三区久久99 | 77777熟女视频在线观看 а天堂中文在线官网 | 日日碰狠狠丁香久燥 | 国产97色在线 | 免 | 18精品久久久无码午夜福利 | 十八禁真人啪啪免费网站 | 亚洲中文字幕无码一久久区 | 免费人成网站视频在线观看 | 男女爱爱好爽视频免费看 | 99精品国产综合久久久久五月天 | 又紧又大又爽精品一区二区 | 国产亚洲精品久久久久久 | 国产精品毛片一区二区 | 99久久久无码国产精品免费 | 亚洲精品中文字幕乱码 | 黑人巨大精品欧美黑寡妇 | 久久精品国产大片免费观看 | 中文字幕日韩精品一区二区三区 | 久久亚洲中文字幕精品一区 | 成人欧美一区二区三区 | 99久久人妻精品免费二区 | 300部国产真实乱 | 内射欧美老妇wbb | 中文字幕乱码中文乱码51精品 | 国产无遮挡吃胸膜奶免费看 | 扒开双腿吃奶呻吟做受视频 | 精品国精品国产自在久国产87 | 成人精品视频一区二区 | 国产精品人人爽人人做我的可爱 | 国产精品无码久久av | 男女超爽视频免费播放 | 国产熟女一区二区三区四区五区 | 国产两女互慰高潮视频在线观看 | 免费中文字幕日韩欧美 | 久久天天躁夜夜躁狠狠 | 国产精品香蕉在线观看 | 成人精品一区二区三区中文字幕 | 99精品久久毛片a片 | 人妻与老人中文字幕 | 伊人久久大香线蕉亚洲 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 荡女精品导航 | 无码精品人妻一区二区三区av | 色 综合 欧美 亚洲 国产 | 婷婷五月综合缴情在线视频 | 男女性色大片免费网站 | 人妻尝试又大又粗久久 | 最近的中文字幕在线看视频 | 亚洲国产成人a精品不卡在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 纯爱无遮挡h肉动漫在线播放 | 18精品久久久无码午夜福利 | 青青草原综合久久大伊人精品 | 国产莉萝无码av在线播放 | 国产成人一区二区三区别 | 成熟人妻av无码专区 | 成人影院yy111111在线观看 | 国产在线无码精品电影网 | 国产精品.xx视频.xxtv | 伊人久久婷婷五月综合97色 | 欧美成人免费全部网站 | 人人妻人人藻人人爽欧美一区 | 国产精品理论片在线观看 | 青青青手机频在线观看 | 麻花豆传媒剧国产免费mv在线 | 狠狠cao日日穞夜夜穞av | 欧美放荡的少妇 | 亚洲乱码中文字幕在线 | 久久精品人人做人人综合 | 日欧一片内射va在线影院 | 精品无码国产一区二区三区av | 精品久久久无码人妻字幂 | 激情内射日本一区二区三区 | 一个人免费观看的www视频 | 西西人体www44rt大胆高清 | 纯爱无遮挡h肉动漫在线播放 | 夜精品a片一区二区三区无码白浆 | 黑人玩弄人妻中文在线 | 久久精品99久久香蕉国产色戒 | 免费无码一区二区三区蜜桃大 | 鲁大师影院在线观看 | 久久国产劲爆∧v内射 | 国产精品99爱免费视频 | 捆绑白丝粉色jk震动捧喷白浆 | 日本又色又爽又黄的a片18禁 | 色婷婷欧美在线播放内射 | 两性色午夜视频免费播放 | 天天拍夜夜添久久精品 | 国产成人精品无码播放 | 激情国产av做激情国产爱 | 精品久久综合1区2区3区激情 | 粉嫩少妇内射浓精videos | 一本色道久久综合狠狠躁 | 久久精品人人做人人综合试看 | 成熟人妻av无码专区 | 日本精品少妇一区二区三区 | 国产av久久久久精东av | 天堂一区人妻无码 | 乱人伦人妻中文字幕无码久久网 | 沈阳熟女露脸对白视频 | 国产艳妇av在线观看果冻传媒 | 午夜性刺激在线视频免费 | 亚洲一区av无码专区在线观看 | 99精品视频在线观看免费 | 人人妻人人澡人人爽人人精品 | 永久黄网站色视频免费直播 | 日韩精品成人一区二区三区 | 欧美放荡的少妇 | 高潮毛片无遮挡高清免费 | 初尝人妻少妇中文字幕 | 久久成人a毛片免费观看网站 | 欧美高清在线精品一区 | 日韩视频 中文字幕 视频一区 | 亚洲国产欧美日韩精品一区二区三区 | 三级4级全黄60分钟 | 久久久久99精品国产片 | 97夜夜澡人人双人人人喊 | 麻豆成人精品国产免费 | 97人妻精品一区二区三区 | 久久久无码中文字幕久... | 性生交片免费无码看人 | 中文字幕无码免费久久99 | 玩弄少妇高潮ⅹxxxyw | 2020最新国产自产精品 | 兔费看少妇性l交大片免费 | 在线看片无码永久免费视频 | 丰满人妻精品国产99aⅴ | av在线亚洲欧洲日产一区二区 | 国产激情综合五月久久 | 天堂无码人妻精品一区二区三区 | 六月丁香婷婷色狠狠久久 | 在线亚洲高清揄拍自拍一品区 | 国产又爽又黄又刺激的视频 | 亚洲 高清 成人 动漫 | 欧美35页视频在线观看 | 国产成人综合美国十次 | 久久久久国色av免费观看性色 | 性生交大片免费看l | 玩弄少妇高潮ⅹxxxyw | 2019nv天堂香蕉在线观看 | 欧美刺激性大交 | 中文精品久久久久人妻不卡 | 免费国产黄网站在线观看 | 特级做a爰片毛片免费69 | 激情内射亚州一区二区三区爱妻 | 久在线观看福利视频 | 三上悠亚人妻中文字幕在线 | 一区二区三区乱码在线 | 欧洲 | 香港三级日本三级妇三级 | 玩弄少妇高潮ⅹxxxyw | 又色又爽又黄的美女裸体网站 | 亚洲热妇无码av在线播放 | 伊人久久婷婷五月综合97色 | 精品国产一区二区三区四区在线看 | 波多野结衣乳巨码无在线观看 | 精品偷自拍另类在线观看 | 国内丰满熟女出轨videos | 人人妻人人澡人人爽欧美一区 | 青青青爽视频在线观看 | 欧美人与牲动交xxxx | 狠狠综合久久久久综合网 | 国产97人人超碰caoprom | 久久99精品久久久久久 | 久久精品女人天堂av免费观看 | 国内综合精品午夜久久资源 | 东京热无码av男人的天堂 | 日本www一道久久久免费榴莲 | 在线欧美精品一区二区三区 | 午夜精品一区二区三区在线观看 | 亚洲欧美国产精品专区久久 | 女人被爽到呻吟gif动态图视看 | 亚洲精品鲁一鲁一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 正在播放老肥熟妇露脸 | 亚洲中文字幕无码中字 | 亚拍精品一区二区三区探花 | 99国产精品白浆在线观看免费 | 久久久久久国产精品无码下载 | 大肉大捧一进一出视频出来呀 | 麻豆国产97在线 | 欧洲 | 国产成人无码区免费内射一片色欲 | 国产成人精品视频ⅴa片软件竹菊 | 我要看www免费看插插视频 | 国产农村乱对白刺激视频 | 内射老妇bbwx0c0ck | 亚洲成av人影院在线观看 | 国产精品18久久久久久麻辣 | 国产精品手机免费 | 欧美xxxxx精品 | 精品乱子伦一区二区三区 | 久久国产精品精品国产色婷婷 | 国产成人无码一二三区视频 | 国产在线aaa片一区二区99 | 亲嘴扒胸摸屁股激烈网站 | 国产疯狂伦交大片 | 伊人久久大香线蕉午夜 | 曰韩无码二三区中文字幕 | 国产 精品 自在自线 | 久久无码专区国产精品s | 久久五月精品中文字幕 | 日本又色又爽又黄的a片18禁 | 荫蒂被男人添的好舒服爽免费视频 | 中文无码精品a∨在线观看不卡 | 高潮喷水的毛片 | 亚洲精品国产精品乱码视色 | 国产亚洲精品久久久闺蜜 | 97精品人妻一区二区三区香蕉 | 欧美变态另类xxxx | 东京热一精品无码av | 欧美xxxxx精品 | 爆乳一区二区三区无码 | 性啪啪chinese东北女人 | 亚洲欧美精品伊人久久 | 成熟妇人a片免费看网站 | 国产精品人人爽人人做我的可爱 | 在线天堂新版最新版在线8 | 熟女少妇在线视频播放 | 亚洲国产精品毛片av不卡在线 | 久久久精品成人免费观看 | 国产精品国产自线拍免费软件 | 国产激情无码一区二区app | 一本久道高清无码视频 | 亚洲精品一区二区三区婷婷月 | 色窝窝无码一区二区三区色欲 | 亚洲综合精品香蕉久久网 | 国产精品亚洲一区二区三区喷水 | 成人无码视频在线观看网站 | 沈阳熟女露脸对白视频 | 偷窥日本少妇撒尿chinese | 久久午夜无码鲁丝片午夜精品 | 亚洲爆乳大丰满无码专区 | 国产香蕉97碰碰久久人人 | 欧美精品一区二区精品久久 | 婷婷丁香五月天综合东京热 | 黑人粗大猛烈进出高潮视频 | 日本大香伊一区二区三区 | 99久久婷婷国产综合精品青草免费 | 亚洲成a人片在线观看无码 | 丰满少妇高潮惨叫视频 | 亚洲成色在线综合网站 | 天天躁日日躁狠狠躁免费麻豆 | 国产精品久久福利网站 | 性史性农村dvd毛片 | 无码人妻黑人中文字幕 | 丰满护士巨好爽好大乳 | 亚洲日韩av片在线观看 | 无码一区二区三区在线观看 | 久久亚洲精品中文字幕无男同 | 精品久久久无码人妻字幂 | 性色欲网站人妻丰满中文久久不卡 | 强辱丰满人妻hd中文字幕 | 国产人妻久久精品二区三区老狼 | 图片区 小说区 区 亚洲五月 | 在线观看国产一区二区三区 | 在线成人www免费观看视频 | 亚洲精品一区二区三区大桥未久 | 老司机亚洲精品影院无码 | 久久婷婷五月综合色国产香蕉 | 久久久久成人精品免费播放动漫 | 欧美人与善在线com | 国产成人午夜福利在线播放 | 伊人久久大香线蕉av一区二区 | 2019nv天堂香蕉在线观看 | 欧美肥老太牲交大战 | 亚洲va欧美va天堂v国产综合 | 精品乱子伦一区二区三区 | 玩弄少妇高潮ⅹxxxyw | 精品国产一区二区三区av 性色 | 色婷婷av一区二区三区之红樱桃 | 国产超碰人人爽人人做人人添 | 日韩av无码一区二区三区 | √天堂中文官网8在线 | 一本久道高清无码视频 | 性色欲情网站iwww九文堂 | 国产高清不卡无码视频 | 欧洲熟妇色 欧美 | 久久www免费人成人片 | 欧美性黑人极品hd | 亚洲最大成人网站 | 日本va欧美va欧美va精品 | 日本精品少妇一区二区三区 | 99久久精品日本一区二区免费 | 久久99精品久久久久久动态图 | 国产精品久久久久久亚洲毛片 | 成在人线av无码免观看麻豆 | 日本在线高清不卡免费播放 | 欧美阿v高清资源不卡在线播放 | 成人影院yy111111在线观看 | 蜜臀av无码人妻精品 | 久久久久久国产精品无码下载 | 久久综合九色综合欧美狠狠 | 中文字幕无码热在线视频 | 高清国产亚洲精品自在久久 | 国产成人人人97超碰超爽8 | 国内精品九九久久久精品 | 特级做a爰片毛片免费69 | 99riav国产精品视频 | 人妻与老人中文字幕 | 亚洲精品久久久久中文第一幕 | √8天堂资源地址中文在线 | 亚洲精品欧美二区三区中文字幕 | 激情内射亚州一区二区三区爱妻 | 中文字幕无码av激情不卡 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲国产高清在线观看视频 | 精品无码国产自产拍在线观看蜜 | 免费网站看v片在线18禁无码 | 娇妻被黑人粗大高潮白浆 | 亚洲人成网站在线播放942 | а√资源新版在线天堂 | 国产精品久久久久久久9999 | 国产香蕉97碰碰久久人人 | 人妻人人添人妻人人爱 | 国产乱码精品一品二品 | 中文字幕无码av波多野吉衣 | 中文字幕人妻丝袜二区 | 久久久久久久久888 | 国产极品美女高潮无套在线观看 | 老熟妇仑乱视频一区二区 | 欧美国产亚洲日韩在线二区 | 51国偷自产一区二区三区 | 久久久国产一区二区三区 | 国产人妻精品一区二区三区 | 欧美熟妇另类久久久久久多毛 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲综合久久一区二区 | 国产精品爱久久久久久久 | 成人性做爰aaa片免费看不忠 | 精品日本一区二区三区在线观看 | 久久精品中文字幕一区 | 日日摸天天摸爽爽狠狠97 | 欧美激情一区二区三区成人 | √8天堂资源地址中文在线 | 自拍偷自拍亚洲精品10p | 伊人久久大香线蕉午夜 | 最新版天堂资源中文官网 | 好男人www社区 | 中文字幕亚洲情99在线 | 亚洲男人av香蕉爽爽爽爽 | 欧美高清在线精品一区 | 亚洲爆乳精品无码一区二区三区 | 国内精品九九久久久精品 | 国产亚av手机在线观看 | 娇妻被黑人粗大高潮白浆 | 亚洲国产精品一区二区第一页 | 美女黄网站人色视频免费国产 | 99久久久国产精品无码免费 | 天天躁日日躁狠狠躁免费麻豆 | 日韩欧美群交p片內射中文 | 中文字幕乱码亚洲无线三区 | 亚洲熟妇自偷自拍另类 | 婷婷五月综合缴情在线视频 | 草草网站影院白丝内射 | 国产免费久久精品国产传媒 | 狠狠色噜噜狠狠狠7777奇米 | 99久久婷婷国产综合精品青草免费 | 精品 日韩 国产 欧美 视频 | 性史性农村dvd毛片 | 免费观看的无遮挡av | 精品人妻人人做人人爽夜夜爽 | 日韩少妇白浆无码系列 | 少妇厨房愉情理9仑片视频 | 国产精品-区区久久久狼 | 国产香蕉尹人视频在线 | 荫蒂添的好舒服视频囗交 | 东北女人啪啪对白 | 性欧美疯狂xxxxbbbb | 国产深夜福利视频在线 | 狠狠噜狠狠狠狠丁香五月 | 未满成年国产在线观看 | 国产精品.xx视频.xxtv | 风流少妇按摩来高潮 | 丰满护士巨好爽好大乳 | 女人被爽到呻吟gif动态图视看 | 九九综合va免费看 | 色欲久久久天天天综合网精品 | 欧美国产亚洲日韩在线二区 | 无码成人精品区在线观看 | 国产免费久久精品国产传媒 | 国产成人综合在线女婷五月99播放 | 久久国内精品自在自线 | 少妇愉情理伦片bd | 免费无码肉片在线观看 | 日本一区二区三区免费播放 | 少妇性l交大片 | 乱人伦人妻中文字幕无码 | 亚洲午夜福利在线观看 | 无遮挡国产高潮视频免费观看 | 久久精品国产精品国产精品污 | 色综合久久久无码网中文 | 中文精品无码中文字幕无码专区 | 亚洲呦女专区 | 国内精品一区二区三区不卡 | 天天拍夜夜添久久精品大 | 久久无码人妻影院 | 激情内射日本一区二区三区 | 亚洲性无码av中文字幕 | 纯爱无遮挡h肉动漫在线播放 | 香港三级日本三级妇三级 | 少妇厨房愉情理9仑片视频 | 国内精品一区二区三区不卡 | 国产成人无码av在线影院 | 在线播放无码字幕亚洲 | 国产亚av手机在线观看 | 国产69精品久久久久app下载 | 丝袜人妻一区二区三区 | 亚洲精品无码人妻无码 | 国产精品久久久一区二区三区 | √8天堂资源地址中文在线 | 亚洲色偷偷偷综合网 | 中文字幕久久久久人妻 | 国产亚洲精品久久久ai换 | 久久精品国产日本波多野结衣 | 日本乱偷人妻中文字幕 | 在线天堂新版最新版在线8 | 日欧一片内射va在线影院 | 色诱久久久久综合网ywww | 精品国精品国产自在久国产87 | 丁香啪啪综合成人亚洲 | 97无码免费人妻超级碰碰夜夜 | 成人片黄网站色大片免费观看 | 久久精品人人做人人综合 | 日韩亚洲欧美精品综合 | 国产精品丝袜黑色高跟鞋 | 18精品久久久无码午夜福利 | 色欲av亚洲一区无码少妇 | 久久久精品国产sm最大网站 | 亚洲国产精品无码久久久久高潮 | 无码人妻精品一区二区三区下载 | 亚洲一区二区三区在线观看网站 | 免费乱码人妻系列无码专区 | 人妻互换免费中文字幕 | 玩弄中年熟妇正在播放 | 国产精品美女久久久久av爽李琼 | 真人与拘做受免费视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 荫蒂被男人添的好舒服爽免费视频 | 免费看男女做好爽好硬视频 | 国产9 9在线 | 中文 | 国产精品久久久久9999小说 | 全黄性性激高免费视频 | 亚洲欧洲日本综合aⅴ在线 | 久久99久久99精品中文字幕 | 国产色视频一区二区三区 | 亚洲成av人片在线观看无码不卡 | 男人和女人高潮免费网站 | 国产麻豆精品精东影业av网站 | 精品国产一区av天美传媒 | 人妻互换免费中文字幕 | 国产精品18久久久久久麻辣 | 久久综合给久久狠狠97色 | 国产另类ts人妖一区二区 | 国产精品久久久久影院嫩草 | 爽爽影院免费观看 | 少妇性l交大片欧洲热妇乱xxx | 午夜福利不卡在线视频 | 久久99精品国产麻豆 | 国产成人无码av一区二区 | 亚洲精品成人福利网站 | 丝袜足控一区二区三区 | 欧美熟妇另类久久久久久多毛 | 国产内射爽爽大片视频社区在线 | 中文字幕乱妇无码av在线 | 亚洲男人av天堂午夜在 | 丁香花在线影院观看在线播放 | 小泽玛莉亚一区二区视频在线 | 国内精品久久毛片一区二区 | 亚洲人成影院在线无码按摩店 | 亚洲无人区一区二区三区 | 日本乱人伦片中文三区 | 小sao货水好多真紧h无码视频 | 国产做国产爱免费视频 | 67194成是人免费无码 | 国产精品资源一区二区 | 亚洲日韩精品欧美一区二区 | 免费无码av一区二区 | 亚洲人亚洲人成电影网站色 | 人妻人人添人妻人人爱 | 国产午夜无码精品免费看 | 国产亚洲人成在线播放 | 亚洲熟悉妇女xxx妇女av | 99精品视频在线观看免费 | 亚洲国产日韩a在线播放 | 亚洲七七久久桃花影院 | 午夜精品一区二区三区在线观看 | 300部国产真实乱 | 麻豆蜜桃av蜜臀av色欲av | 中文字幕无码免费久久99 | 婷婷丁香五月天综合东京热 | 亚洲熟妇色xxxxx欧美老妇y | 国产人妻精品午夜福利免费 | 亚洲一区二区三区国产精华液 | 亚洲s码欧洲m码国产av | 色 综合 欧美 亚洲 国产 | 一二三四社区在线中文视频 | 99久久久国产精品无码免费 | 国产精品久久久一区二区三区 | 欧美日韩一区二区免费视频 | 国产婷婷色一区二区三区在线 | 综合网日日天干夜夜久久 | 亚洲国产精品毛片av不卡在线 | 丰满人妻被黑人猛烈进入 | 国产无套粉嫩白浆在线 | 无码福利日韩神码福利片 | 亚洲狠狠色丁香婷婷综合 | 成人毛片一区二区 | 国产网红无码精品视频 | 岛国片人妻三上悠亚 | 亚洲人成人无码网www国产 | 精品国产av色一区二区深夜久久 | 国产一区二区三区日韩精品 | 国产成人综合美国十次 | 国产精品久久精品三级 | 日本又色又爽又黄的a片18禁 | 综合人妻久久一区二区精品 | 欧美人妻一区二区三区 | av香港经典三级级 在线 | 亚洲热妇无码av在线播放 | 性欧美大战久久久久久久 | 亚洲日韩av片在线观看 | 日日摸天天摸爽爽狠狠97 | 2020久久超碰国产精品最新 | 国产av无码专区亚洲a∨毛片 | 久久久久成人片免费观看蜜芽 | 无遮挡国产高潮视频免费观看 | 永久黄网站色视频免费直播 | 精品国产av色一区二区深夜久久 | 日韩人妻无码中文字幕视频 | 天天摸天天透天天添 | 67194成是人免费无码 | 国产成人一区二区三区别 | 久久精品国产一区二区三区肥胖 | 狂野欧美性猛xxxx乱大交 | 亚洲日本va中文字幕 | 一本久久伊人热热精品中文字幕 | 国产激情艳情在线看视频 | 一区二区传媒有限公司 | 欧美 丝袜 自拍 制服 另类 | 久久99久久99精品中文字幕 | 丰满人妻精品国产99aⅴ | 国产激情精品一区二区三区 | 最近中文2019字幕第二页 | 国产精品亚洲综合色区韩国 | 国产 浪潮av性色四虎 | 香蕉久久久久久av成人 | 色一情一乱一伦一区二区三欧美 | 欧美性黑人极品hd | 一本色道久久综合狠狠躁 | 欧美大屁股xxxxhd黑色 | 性做久久久久久久免费看 | 老子影院午夜伦不卡 | 日韩精品乱码av一区二区 | 国产片av国语在线观看 | 色婷婷久久一区二区三区麻豆 | 亚洲自偷自偷在线制服 | 免费国产黄网站在线观看 | 欧美第一黄网免费网站 | 无码福利日韩神码福利片 | 欧美精品在线观看 | 精品无码国产自产拍在线观看蜜 | 色情久久久av熟女人妻网站 | 四虎国产精品一区二区 | 午夜福利一区二区三区在线观看 | 高清无码午夜福利视频 | 亚洲 日韩 欧美 成人 在线观看 | 中文字幕精品av一区二区五区 | 亚洲精品一区三区三区在线观看 | 76少妇精品导航 | 国产97人人超碰caoprom | 男女爱爱好爽视频免费看 | 中文字幕无线码免费人妻 | 国产成人无码一二三区视频 | 国色天香社区在线视频 | 久久午夜夜伦鲁鲁片无码免费 | 成人综合网亚洲伊人 | 久久久久人妻一区精品色欧美 | 男人和女人高潮免费网站 | 欧美日韩一区二区三区自拍 | 在线观看国产午夜福利片 | 中文无码精品a∨在线观看不卡 | 国产xxx69麻豆国语对白 | 综合人妻久久一区二区精品 | 欧美三级不卡在线观看 | 午夜无码人妻av大片色欲 | 麻豆人妻少妇精品无码专区 | 久久午夜无码鲁丝片午夜精品 | 免费乱码人妻系列无码专区 | 中文字幕+乱码+中文字幕一区 | 好男人社区资源 | 国产精品va在线播放 | 激情爆乳一区二区三区 | 亚洲日韩一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 人妻有码中文字幕在线 | 国产suv精品一区二区五 | 熟女俱乐部五十路六十路av | 精品国产成人一区二区三区 | 国内精品久久久久久中文字幕 | 97无码免费人妻超级碰碰夜夜 | 久久99精品久久久久婷婷 | 久久精品国产大片免费观看 | 国产精品亚洲专区无码不卡 | 亚洲日韩乱码中文无码蜜桃臀网站 | 麻豆国产人妻欲求不满 | 成年美女黄网站色大免费视频 | 无码乱肉视频免费大全合集 | 亚洲 a v无 码免 费 成 人 a v | 国精产品一品二品国精品69xx | 牲欲强的熟妇农村老妇女视频 | 久久婷婷五月综合色国产香蕉 | a片免费视频在线观看 | 日本一区二区更新不卡 | 乱码av麻豆丝袜熟女系列 | 亚拍精品一区二区三区探花 | 欧美35页视频在线观看 | 亚洲第一无码av无码专区 | 撕开奶罩揉吮奶头视频 | 中文字幕人妻丝袜二区 | 国产精品理论片在线观看 | 久久精品女人天堂av免费观看 | 人妻尝试又大又粗久久 | 日日摸夜夜摸狠狠摸婷婷 | 波多野结衣 黑人 | 欧美丰满熟妇xxxx | 欧美精品国产综合久久 | 欧美变态另类xxxx | 亚洲日韩av一区二区三区四区 | 日韩精品成人一区二区三区 | 午夜福利试看120秒体验区 | 中文字幕+乱码+中文字幕一区 | 永久黄网站色视频免费直播 | 亚洲爆乳大丰满无码专区 | 久久精品一区二区三区四区 | 粉嫩少妇内射浓精videos | 精品久久久久久人妻无码中文字幕 | 在线播放免费人成毛片乱码 | 亚洲欧美精品伊人久久 | 人妻aⅴ无码一区二区三区 | 在线精品国产一区二区三区 | 97资源共享在线视频 | 久久zyz资源站无码中文动漫 | 亚洲国产精品久久久天堂 | 亚洲欧美中文字幕5发布 | 色狠狠av一区二区三区 | 性史性农村dvd毛片 | 伊人久久大香线蕉av一区二区 | 欧美老熟妇乱xxxxx | 日韩人妻无码一区二区三区久久99 | 中文无码精品a∨在线观看不卡 | 天天做天天爱天天爽综合网 | 日韩 欧美 动漫 国产 制服 | 国产人妻精品一区二区三区 | 亚洲成av人片天堂网无码】 | 少妇性荡欲午夜性开放视频剧场 | 国产精品无码mv在线观看 | 久久精品中文字幕大胸 | 国产香蕉尹人综合在线观看 | 香蕉久久久久久av成人 | 狠狠色欧美亚洲狠狠色www | 自拍偷自拍亚洲精品被多人伦好爽 | 任你躁国产自任一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 在线欧美精品一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 激情内射日本一区二区三区 | 久久精品女人天堂av免费观看 | 国产亚洲精品久久久久久 | 六月丁香婷婷色狠狠久久 | 日本丰满熟妇videos | 亚洲人成影院在线观看 | 国模大胆一区二区三区 | 成人无码精品1区2区3区免费看 | 国产一区二区三区四区五区加勒比 | 天天燥日日燥 | 色一情一乱一伦一区二区三欧美 | 国产亚洲人成a在线v网站 | 麻豆国产丝袜白领秘书在线观看 | 伊人色综合久久天天小片 | 无码人妻久久一区二区三区不卡 | 亚洲毛片av日韩av无码 | 国产在热线精品视频 | 精品偷拍一区二区三区在线看 | 亚洲精品欧美二区三区中文字幕 | 曰韩无码二三区中文字幕 | 99精品无人区乱码1区2区3区 | 久久综合久久自在自线精品自 | 性欧美熟妇videofreesex | 99久久人妻精品免费一区 | 亚洲色无码一区二区三区 | 强伦人妻一区二区三区视频18 | 亚洲精品一区三区三区在线观看 | 波多野结衣aⅴ在线 | 国产无套粉嫩白浆在线 | 亚洲精品一区三区三区在线观看 | 成人综合网亚洲伊人 | 无遮挡国产高潮视频免费观看 | 三上悠亚人妻中文字幕在线 | 自拍偷自拍亚洲精品10p | 国产精品视频免费播放 | 亚洲中文无码av永久不收费 | 精品厕所偷拍各类美女tp嘘嘘 | 国内揄拍国内精品少妇国语 | 美女黄网站人色视频免费国产 | 国产精品久久久久久亚洲影视内衣 | 熟妇人妻无乱码中文字幕 | 老熟女乱子伦 | 日本成熟视频免费视频 | 成人亚洲精品久久久久软件 | 亚洲精品成人av在线 | 欧美怡红院免费全部视频 | 亚洲无人区午夜福利码高清完整版 | 亚洲熟妇色xxxxx亚洲 | 国产精品无码一区二区桃花视频 | 国产亚洲tv在线观看 | 99久久久国产精品无码免费 | 4hu四虎永久在线观看 | 亚洲成a人片在线观看无码3d | 国产精品美女久久久久av爽李琼 | 国产精品久久久久久久9999 | 成人性做爰aaa片免费看不忠 | 亚洲熟悉妇女xxx妇女av | а√天堂www在线天堂小说 | 日本又色又爽又黄的a片18禁 | 我要看www免费看插插视频 | 秋霞成人午夜鲁丝一区二区三区 | 久久国产精品精品国产色婷婷 | 国产一区二区不卡老阿姨 | 亚洲日韩av片在线观看 | 亚洲中文字幕久久无码 | 女人被男人爽到呻吟的视频 | 色婷婷久久一区二区三区麻豆 | 久久久www成人免费毛片 | 18精品久久久无码午夜福利 | 欧美日韩综合一区二区三区 | 一个人看的视频www在线 | 久久成人a毛片免费观看网站 | 久久 国产 尿 小便 嘘嘘 | 一区二区传媒有限公司 | 国产高清不卡无码视频 | 色欲久久久天天天综合网精品 | 欧洲精品码一区二区三区免费看 | 中文字幕+乱码+中文字幕一区 | 无码乱肉视频免费大全合集 | 99久久人妻精品免费二区 | 欧美人与禽zoz0性伦交 | 性生交大片免费看女人按摩摩 | 亚洲国产精品无码久久久久高潮 | 日本乱偷人妻中文字幕 | 国产在线一区二区三区四区五区 | 欧美国产日韩亚洲中文 | 午夜福利试看120秒体验区 | 又大又硬又爽免费视频 | 99精品无人区乱码1区2区3区 | 国产精品无码成人午夜电影 | 国产亚洲欧美在线专区 | 色婷婷欧美在线播放内射 | 欧美自拍另类欧美综合图片区 | 丰满诱人的人妻3 | av无码久久久久不卡免费网站 | 在线 国产 欧美 亚洲 天堂 | 爱做久久久久久 | 亚洲精品国产精品乱码视色 | 国产亚洲美女精品久久久2020 | 国产成人精品优优av | 在线亚洲高清揄拍自拍一品区 | 成年美女黄网站色大免费视频 | 国产婷婷色一区二区三区在线 | 日韩人妻少妇一区二区三区 | 久久久无码中文字幕久... | 国产成人久久精品流白浆 | 日韩精品无码一本二本三本色 | 久久午夜夜伦鲁鲁片无码免费 | 精品久久久久久人妻无码中文字幕 | 人妻少妇精品无码专区动漫 | 亚洲の无码国产の无码影院 | 成熟妇人a片免费看网站 | 一区二区传媒有限公司 | 无码人妻丰满熟妇区毛片18 | 国产精品多人p群无码 | 欧美三级不卡在线观看 | 国产av一区二区三区最新精品 | 日日躁夜夜躁狠狠躁 | 国产精品高潮呻吟av久久 | 狠狠cao日日穞夜夜穞av | 精品国产乱码久久久久乱码 | 精品无人区无码乱码毛片国产 | 亚洲综合另类小说色区 | 亚洲精品鲁一鲁一区二区三区 | 妺妺窝人体色www婷婷 | 少妇一晚三次一区二区三区 | 久久久久久a亚洲欧洲av冫 | 中文字幕无码av波多野吉衣 | 青青草原综合久久大伊人精品 | 波多野结衣高清一区二区三区 | 无码福利日韩神码福利片 | 亚洲人成网站色7799 | 精品一区二区不卡无码av | 欧美成人免费全部网站 | 波多野结衣一区二区三区av免费 | 亚洲精品无码人妻无码 | 国产成人无码一二三区视频 | 精品国产一区二区三区四区在线看 | 日韩精品无码免费一区二区三区 | 一二三四社区在线中文视频 | 狠狠cao日日穞夜夜穞av | 麻豆国产人妻欲求不满谁演的 | 装睡被陌生人摸出水好爽 | 男人和女人高潮免费网站 | 国产va免费精品观看 | 亚洲熟悉妇女xxx妇女av | 亚洲小说图区综合在线 | 成人亚洲精品久久久久 | 在线观看欧美一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 性欧美牲交在线视频 | 麻豆av传媒蜜桃天美传媒 | 好男人www社区 | 久久无码专区国产精品s | 欧美性黑人极品hd | 国产免费观看黄av片 | 国产在线一区二区三区四区五区 | 国产精品美女久久久 | 日本熟妇乱子伦xxxx | 水蜜桃亚洲一二三四在线 | 中文字幕av无码一区二区三区电影 | 国产在线无码精品电影网 | 99久久精品午夜一区二区 | 亚洲aⅴ无码成人网站国产app | 久久国产自偷自偷免费一区调 | 88国产精品欧美一区二区三区 | 少妇人妻大乳在线视频 | 成人精品视频一区二区三区尤物 | 亚洲精品久久久久久久久久久 | 中文字幕精品av一区二区五区 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品免费大片 | 国产综合久久久久鬼色 | 老司机亚洲精品影院 | 无码av最新清无码专区吞精 | 亚洲一区二区三区四区 | 一二三四在线观看免费视频 | 日本熟妇浓毛 | 激情国产av做激情国产爱 | 久久熟妇人妻午夜寂寞影院 | 亚洲欧美精品aaaaaa片 | 亚洲日本va午夜在线电影 | 国产香蕉尹人视频在线 | 国模大胆一区二区三区 | 日本熟妇浓毛 | 国产精品.xx视频.xxtv | 精品久久久久久人妻无码中文字幕 | 波多野结衣乳巨码无在线观看 | 无码精品人妻一区二区三区av | 乱人伦人妻中文字幕无码久久网 | 色综合久久久久综合一本到桃花网 | 欧美精品无码一区二区三区 | 欧美乱妇无乱码大黄a片 | 日本熟妇大屁股人妻 | 狠狠色欧美亚洲狠狠色www | 亚洲无人区一区二区三区 | 欧美日韩一区二区免费视频 | 一二三四在线观看免费视频 | 亚洲色在线无码国产精品不卡 | 波多野结衣高清一区二区三区 | 激情综合激情五月俺也去 | 亚洲精品一区二区三区大桥未久 | 国产精品久久久久久久9999 | 奇米影视888欧美在线观看 | 无码帝国www无码专区色综合 | 性欧美熟妇videofreesex | 国产成人无码a区在线观看视频app | 国产精品国产三级国产专播 | 亚洲欧美国产精品久久 | 色综合天天综合狠狠爱 | 97无码免费人妻超级碰碰夜夜 | 国产艳妇av在线观看果冻传媒 | 人妻插b视频一区二区三区 | 久久天天躁夜夜躁狠狠 | 永久免费精品精品永久-夜色 | 成人精品视频一区二区三区尤物 | 色妞www精品免费视频 | 久久人人爽人人爽人人片ⅴ | 国产在线一区二区三区四区五区 | 亚洲 日韩 欧美 成人 在线观看 | 久久精品成人欧美大片 | 精品人妻中文字幕有码在线 | 色噜噜亚洲男人的天堂 | 中文字幕色婷婷在线视频 | 亚洲精品国偷拍自产在线麻豆 | 少妇性l交大片 | 色诱久久久久综合网ywww | 精品久久久久久人妻无码中文字幕 | 国产成人综合在线女婷五月99播放 | 一本色道久久综合狠狠躁 | 欧美老人巨大xxxx做受 | 亲嘴扒胸摸屁股激烈网站 | 日本欧美一区二区三区乱码 | 丰满少妇高潮惨叫视频 | 成人亚洲精品久久久久 | 99精品视频在线观看免费 | 国产另类ts人妖一区二区 | 人妻夜夜爽天天爽三区 | 成人精品天堂一区二区三区 | 国产成人亚洲综合无码 | 亚洲大尺度无码无码专区 | 亚洲色欲色欲天天天www | 亚洲大尺度无码无码专区 | 无码乱肉视频免费大全合集 | 日韩精品无码一区二区中文字幕 | 国内精品久久毛片一区二区 | 无码毛片视频一区二区本码 | 老熟女重囗味hdxx69 | 一区二区三区乱码在线 | 欧洲 | 久久久国产一区二区三区 | 一本色道久久综合狠狠躁 | 亚洲色成人中文字幕网站 | 成人动漫在线观看 | yw尤物av无码国产在线观看 | 国产精品毛多多水多 | 国产三级久久久精品麻豆三级 | 久久精品国产亚洲精品 | 国产av人人夜夜澡人人爽麻豆 | 日韩精品成人一区二区三区 | 亚洲综合久久一区二区 | 国产乱人伦偷精品视频 | 亚洲精品国偷拍自产在线麻豆 | 狠狠色色综合网站 | 日韩在线不卡免费视频一区 | 精品成人av一区二区三区 | 国产无套粉嫩白浆在线 | 波多野结衣aⅴ在线 | 大屁股大乳丰满人妻 | 国产一精品一av一免费 | 久久人妻内射无码一区三区 | 国产成人精品必看 | 最近的中文字幕在线看视频 | 丰满人妻一区二区三区免费视频 | 色婷婷久久一区二区三区麻豆 | 亚洲色www成人永久网址 | 亚洲精品国产第一综合99久久 | 狂野欧美激情性xxxx | 亚洲人成影院在线观看 | 四十如虎的丰满熟妇啪啪 | 亚洲aⅴ无码成人网站国产app | 精品国产精品久久一区免费式 | 色老头在线一区二区三区 | 国产特级毛片aaaaaaa高清 | 理论片87福利理论电影 | 无遮挡啪啪摇乳动态图 | 帮老师解开蕾丝奶罩吸乳网站 | 精品国产乱码久久久久乱码 | 免费无码午夜福利片69 | 在线观看欧美一区二区三区 | 国精品人妻无码一区二区三区蜜柚 | 女高中生第一次破苞av | 亚洲va中文字幕无码久久不卡 | www国产亚洲精品久久网站 | 亚洲精品鲁一鲁一区二区三区 | 午夜男女很黄的视频 | 中国女人内谢69xxxx | 又紧又大又爽精品一区二区 | 天海翼激烈高潮到腰振不止 | 国内精品人妻无码久久久影院蜜桃 | 夜夜高潮次次欢爽av女 | 亚洲 另类 在线 欧美 制服 | 亚洲精品鲁一鲁一区二区三区 | 亚洲精品一区国产 | 日本一区二区三区免费高清 | 无遮挡国产高潮视频免费观看 | 高潮毛片无遮挡高清免费 | 国产精品亚洲专区无码不卡 | 国产肉丝袜在线观看 | 亚洲一区二区三区国产精华液 | 免费国产成人高清在线观看网站 | 激情国产av做激情国产爱 | 成人三级无码视频在线观看 | 国产精华av午夜在线观看 | 精品久久8x国产免费观看 | 日韩欧美成人免费观看 | 亚洲区小说区激情区图片区 | 我要看www免费看插插视频 | 亚洲精品国产品国语在线观看 | 乱人伦中文视频在线观看 | 性欧美牲交在线视频 | 乱人伦中文视频在线观看 | 在线精品亚洲一区二区 | 撕开奶罩揉吮奶头视频 | av无码不卡在线观看免费 | 成人亚洲精品久久久久 | 1000部啪啪未满十八勿入下载 | 国产成人精品无码播放 | 两性色午夜视频免费播放 | 日本在线高清不卡免费播放 | 乱码av麻豆丝袜熟女系列 | 伊人久久大香线焦av综合影院 | 人妻中文无码久热丝袜 | 国产精品人妻一区二区三区四 | 人妻无码久久精品人妻 | 少妇人妻大乳在线视频 | 婷婷五月综合激情中文字幕 | 国产无遮挡又黄又爽又色 | 2020最新国产自产精品 | 88国产精品欧美一区二区三区 | 日韩少妇内射免费播放 | 伊人久久婷婷五月综合97色 | 清纯唯美经典一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 男女超爽视频免费播放 | 国产va免费精品观看 | 一本久久伊人热热精品中文字幕 | 国产成人一区二区三区别 | 日韩欧美中文字幕公布 | 图片区 小说区 区 亚洲五月 | 亚洲综合伊人久久大杳蕉 | 色诱久久久久综合网ywww | 亚洲高清偷拍一区二区三区 | 色窝窝无码一区二区三区色欲 | www国产亚洲精品久久网站 | 青青久在线视频免费观看 | 精品人妻人人做人人爽夜夜爽 | 亚洲熟妇色xxxxx欧美老妇y | 巨爆乳无码视频在线观看 | 久久国产自偷自偷免费一区调 | 国产av久久久久精东av | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 午夜嘿嘿嘿影院 | 四十如虎的丰满熟妇啪啪 | 午夜理论片yy44880影院 | 久久久久久av无码免费看大片 | 亚洲国产午夜精品理论片 | 亚洲а∨天堂久久精品2021 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲国产成人a精品不卡在线 | 中文字幕av伊人av无码av | 国产sm调教视频在线观看 | 水蜜桃av无码 | 人妻插b视频一区二区三区 | 日韩精品a片一区二区三区妖精 | 亚洲国产精品久久人人爱 | 在线a亚洲视频播放在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 秋霞成人午夜鲁丝一区二区三区 | 欧美成人高清在线播放 | 久久精品国产亚洲精品 | 欧美日韩在线亚洲综合国产人 | 久久精品人妻少妇一区二区三区 | 中文无码成人免费视频在线观看 | 免费网站看v片在线18禁无码 | 男人扒开女人内裤强吻桶进去 | 人人澡人人妻人人爽人人蜜桃 | 在教室伦流澡到高潮hnp视频 | 欧美午夜特黄aaaaaa片 | 欧美日韩人成综合在线播放 | 内射后入在线观看一区 | 国产熟妇高潮叫床视频播放 | 无码人妻久久一区二区三区不卡 | 亚洲va中文字幕无码久久不卡 | 精品成人av一区二区三区 | 国内精品一区二区三区不卡 | 精品无码一区二区三区爱欲 | 国产成人无码av一区二区 | 精品亚洲成av人在线观看 |