日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

netbeans 9_NetBeans 9抢先体验

發布時間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netbeans 9_NetBeans 9抢先体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

netbeans 9

Java 9即將來臨,NetBeans 9也即將來臨。在本文中,我們將看到NetBeans 9 Early Access為開發人員提供的支持,以幫助他們構建Java 9兼容的應用程序。

Java 9提供了許多(大約90種) 新功能,包括模塊和JShell,Read-Eval-Print-Loop(REPL)等。 您可能會在本文末尾的參考資料中找到更多信息,尤其是有關NetBeans 9支持JDK 9的鏈接 。

在本文中,我們將學習如何:

  • 從源代碼下載并構建Java 9 EA
  • 從源代碼下載并構建NetBeans 9 EA
  • 使用NetBeans 9 EA中的JShell REPL
  • 使用NetBeans 9 EA創建和構建模塊以及它們之間的依賴關系,使我們的生活更輕松
  • 1.構建OpenJDK 9 EA

    OpenJDK是任何JDK增強建議 (JEP)甚至Java規范請求 (JSR)的參考實現。 您可能有很多原因,為什么要從源代碼構建它而不下載預構建的二進制文件之一 ,例如:

    • 強制您從源代碼構建開源項目的公司政策
    • 您希望獲得最新的搶先使用OpenJDK
    • 您想要為您的特殊平臺構建

    當然,您可以通過下載預構建的二進制文件來繼續本文。 但是,如果您想學習如何構建JDK 9,請繼續閱讀。 構建自己的JDK映像具有許多優點,例如,您不需要安裝任何東西或進行修改,例如,MacOS上的Windows注冊表或Java Preferences面板會破壞當前的默認JDK(請參見本文 )。 可執行文件將始終在同一位置創建,并且通過更新存儲庫并重新構建源代碼,您始終可以擁有最新版本。

    您可以下載最新的OpenJDK 9二進制文件此頁面。 資料可以在Mercurial資料庫中找到。 例如OpenJDK 9倉庫在這里 ; 如果希望參與項目,那么Jigsaw回購項目將包含模塊化實現的主要內容。 在下面,您將獲得有關如何構建OpenJDK 9的一些技巧。

  • 克隆JDK 9 Master mercurial存儲庫。
  • 閱讀README或README-builds.html文件以獲取更多說明。
  • 開始構建之前的下一步是執行: bash get_source.sh或./get_source.sh如果您的shell已經是bash)。 在每次更新后調用此命令非常重要。 原因是hg update僅更新主存儲庫。 OpenJDK包含許多Mercurial存儲庫,這些存儲庫也需要更新。 這可以通過get_source.sh命令來完成。
  • ./configure --disable-warnings-as-errors
  • sudo make all
  • 上面的命令構建了OpenJDK的最新版本。 如果您希望構建OpenJDK的早期版本,則需要遵循以下提示:

  • hg up [tag]例如jdk-9+147
  • cd corba
  • hg up [tag]例如jdk-9+147
  • 對目錄重復步驟2和3: hotspot, jaxp, jaxws, jdk, langtools, nashorn
  • ./configure --disable-warnings-as-errors
  • sudo make clean
  • sudo make all
  • 二進制文件是在build/<platform_dir>/jdk中創建的,例如,如果您在build/macosx-x86_64-normal-server-release/jdk使用Mac。

    2.構建和配置NetBeans 9 EA

    您可以從http://wiki.netbeans.org/ JDK9Support下載具有JDK 9支持的最新NetBeans或從以下來源進行構建:

  • hg clone http://hg.netbeans.org/main
  • cd main
  • hg clone http://hg.netbeans.org/main/contrib
  • cd ..
  • ant
  • 二進制文件在nbbuild/netbeans創建。 將其配置為與JDK 8或JDK 9 EA( etc/netbeans.conf )一起運行。 jshell ,要啟用jshell ,您需要使用JDK 9 EA設置NetBeans 9。 因此,編輯etc/netbeans.conf以指向您在步驟1中構建的JDK 9 EA:

    netbeans_jdkhome="<path to OpenJDK 9 EA>/build/<platform_dir>/jdk"

    請備份此文件,因為下次構建NetBeans時,它將被覆蓋,因此您將不得不再次進行此修改。

    通過發出以下命令來啟動netbeans: bin/netbeans或bin\netbeans.exe具體取決于您的平臺。 通過工具 | NetBeans將最新的JDK 9 EA構建注冊為Java平臺 。 Java 平臺| 添加平臺 (參見圖1),然后選擇在步驟1中構建的OpenJDK 9 EA。

    圖1 –將JDK 9 EA平臺添加到NetBeans 9 EA

    3. NetBeans 9 EA中的JShell支持

    如果使用JDK 9實現啟動了NetBeans 9,則可以從菜單工具|菜單|菜單中訪問JShell 。 打開Java Platform Shell 。 JShell的工作原理與命令行相同,并且NetBeans快捷方式也可以使用它(例如sout --> (tab) )。 您可以在參考資料中閱讀有關JShell的更多信息。

    圖2 – NetBeans 9 EA中的JShell。

    4. NetBeans 9 EA中的模塊支持

    NetBeans 9 EA提供了許多好處,可以幫助您進行模塊化項目。 在繼續之前,您必須在“ 工具” |“設置”中設置JDK 9 EA平臺。 Java 平臺| 添加平臺并選擇您在步驟1中構建的OpenJDK 9 EA二進制文件的路徑。

    要將現有項目轉換為模塊,您需要執行兩項任務:

  • 在項目屬性中將項目設置為與JDK 9兼容:
  • 在Libraries中,將Java Platform設置為JDK 9 EA Java平臺(圖3)。
  • 在Sources中,將Source / Binary Format設置為JDK 9 (圖4)。
  • 在您的項目中添加一個Java模塊信息(即模塊描述符 module-info.java )(見圖5):
  • 檔案| 新檔案…| Java(類別)| Java模塊信息(文件類型)
  • 圖3 –將Java平臺設置為JDK 9 EA

    圖4 –將Java Sources設置為JDK 9

    圖5 –添加Java模塊信息

    module-info.java必須始終位于NetBeans 9中Java項目的根目錄中。這是NetBeans 9中的一項限制,而不是JDK 9中的一項限制。唯一的例外是,我們可以在一個目錄中包含多個module-info.java文件。一個Java項目就是我們進行單元測試的時候。 您可以在Test Packages添加module-info.java文件。

    但是,讓我們通過在NetBeans 9 EA中實現項目Jigsaw的快速入門指南來了解NetBeans 9 EA模塊的支持。

    我的第一個使用NetBeans 9的模塊化應用程序

    第一個示例是名為com.greetings的模塊,該模塊僅顯示“ Greetings!”。 該模塊包含兩個源文件:模塊聲明( module-info.java )和主類。

    按照約定(模塊名稱可以是Java限定的標識符),模塊的源代碼位于模塊名稱的目錄中(在本例中為com.greetings ),即使這不是必需的。

    通過執行以下步驟在NetBeans中創建一個新的Java項目:

  • 檔案| 新項目…
  • 選擇“ Java (類別)”和“ Java應用程序 (項目)”,然后單擊“ 下一步”。
  • 在下一頁中,選擇一個“項目位置”并輸入“ com.greetings”作為項目名稱,這是因為遵循本教程的約定,但是也可以使用常規的Java項目名稱,例如“ Greetings”。 將Main Class重命名為com.greetings.Main 。 點擊完成
  • 您應該看到一個名為com.greetings的Java項目,并且在其中包含一個包含main()方法的com.greetings.Main類。 像這樣修改它:

    com.greetings.Main

    package com.greetings;/** @author javacodegeeks */ public class Main {/** @param args the command line arguments */public static void main(String[] args) {System.out.println("Greetings!");} }

    要將Java項目轉換為模塊, module-info.java按照前面所述添加module-info.java ,即,右鍵單擊項目名稱并選擇File | File。 新檔案…| Java(類別)| Java模塊信息(文件類型)

    在項目的根包中創建一個空的module-info.java 。 按照Jigsaw教程重命名,如下所示:

    com.greetings.module-info.java

    module com.greetings { }

    您必須清理并構建項目才能使模塊重命名生效并成功運行。 您應該看到消息“問候!” 在輸出窗口中。
    使用NetBeans,您無需關心命令行語法以及javac和java命令的參數。 這些由NetBeans IDE負責。

    添加依賴

    第二個示例更新模塊聲明以聲明對模塊org.astro的依賴。 模塊org.astro導出API包org.astro 。

    按照上一org.astro的步驟創建一個名為org.astro的新Java項目。 這次不要創建Main Class。 創建項目后,右鍵單擊它,然后選擇“ 新建” |“新建”。 Java類…輸入World作為類名稱,輸入org.astro作為包名稱,然后單擊Finish 。 像這樣更新新創建的類:

    org.astro.World.java

    package org.astro;/** @author javacodegeeks */ public class World {public static String name() {return "world";} }

    添加module-info.java就像我們對以前那樣com.greetings 。

    org.astro.module-info.java

    module org.astro { }

    不要忘記清理和構建模塊重命名才能生效。

    現在,我們需要從com.greetings模塊到org.astro模塊添加一個依賴關系,以便使用其方法World.name() 。 但是在此之前, org.astro必須導出包含此方法的軟件包。 這兩個動作都需要在兩個模塊的module-info.java文件中進行。 NetBeans 9為您提供了有關如何執行操作的有用提示。

  • 打開org.astro的module-info.java并在方括號內鍵入Ctrl-Space 。 如示于圖6.選擇一個彈出菜單將出現,顯示可用的命令exports并通過鍵入繼續org.astro它是包名到出口。 NetBeans在鍵入時為您提供提示。 保存module-info.java您會注意到“ 項目”選項卡中軟件包的鎖定圖標變為打開的鎖定。
  • 打開com.greetings的module-info.java并在括號內按照上述步驟輸入requires org.astro的命令,這一次引用的是模塊名稱而不是程序包名稱(另一個原因是為什么Jigsaw項目的快速入門指南并不成功,因為它難以區分包和模塊名。 但是,NetBeans抱怨module not found錯誤消息module not found 。 為了使NetBeans能夠找到該模塊,還需要執行一步。
  • 右鍵單擊com.greetings Java項目的Libraries文件夾, com.greetings從彈出菜單中選擇“ 添加項目 ”。 選擇org.astro Java項目,然后單擊添加項目JAR文件 。 錯誤消失了。 另一種執行相同操作的方法是右鍵單擊項目com.greetings然后從彈出菜單中選擇“ 屬性 ”。 在“項目屬性”對話框中,單擊“ ”類別,然后單擊“ 模塊路徑”旁邊的+號。 選擇“ 添加項目”,然后選擇“ org.astro Java項目”,然后單擊“ 添加項目JAR文件” 。 請記住,如果您嘗試添加循環依賴性(例如,從`org.astro`到com.greetings ),則NetBeans將顯示一個對話框,顯示以下消息: 無法添加循環引用 (請參見圖7)。
  • 像這樣修改Main.main()方法,然后清理并構建兩個模塊。
  • 圖6 –模塊信息命令

    圖7 –循環依賴性錯誤

    com.greetings.Main.java

    package com.greetings; import org.astro.World; /** @author javacodegeeks */ public class Main {/** @param args the command line arguments */public static void main(String[] args) {System.out.format("Greetings %s!%n", World.name());} }

    當您粘貼新的System.out.format(...)語句時,NetBeans會識別World類,并建議添加import語句。 這是唯一可能的,因為您已經更新了兩個模塊的module-info.java文件,如下所示:

    com.greetings.module-info.java

    module org.astro {exports org.astro; }

    org.astro.module-info.java

    module com.greetings {requires org.astro; }

    NetBeans 9 EA為您提供了依賴性的可視化表示(模塊圖)。 只需在org.greetings module-info.java編輯器中單擊Graph按鈕,即可看到模塊依賴關系的漂亮圖表,如下圖所示。

    圖8 –模塊圖

    運行com.greetings模塊以查看輸出: Greetings world! 如預期的那樣。

    與項目Jigsaw的原始快速入門指南進行比較,以了解使用NetBeans IDE節省了多少鍵入內容。

    包裝模塊

    使用NetBeans打包模塊非常容易。 右鍵單擊項目com.greetings然后從彈出菜單中選擇“ 屬性 ”。 在Project Properties對話框(圖9)中,單擊Build下的Packaging類,然后選擇Create JLink distributionCreate Launcher并單擊OK 。 下次清洗和構建NetBeans時,將在com.greetings Java項目的dist文件夾內生成Java運行時映像,其中僅包含運行com.greetings所需的JDK模塊(即,僅java.base模塊)。 無需記住jlink命令的語法。

    圖9 –包裝模塊

    Java模塊化項目

    正如我們一開始提到的,NetBeans 9每個Java項目僅允許一個模塊。 但是,使用Java模塊化項目可以在這個特殊的Java項目中定義許多模塊。 我們將使用Java模塊化項目重新實現先前的模塊。 這是一個基于ant的項目,其中包含多個模塊并立即對其進行編譯。

  • 檔案| 新項目…
  • 選擇Java (類別)和Java Modular Project (項目)(圖10),然后單擊Next。
  • 輸入ModularGreetings作為項目名稱,然后單擊完成。
  • 右鍵單擊新創建的項目,然后從彈出菜單中選擇“ 新建模塊 ”。
  • 輸入com.greetings作為模塊名稱,然后單擊Finish 。 NetBeans將為此模塊打開module-info.java文件。
  • 重復上一步以創建org.astro模塊。
  • 如4.2中所述在兩個模塊之間創建依賴關系
  • 在每個模塊的classes中創建(或從4.2中創建的先前模塊中復制)軟件包。
  • 清潔并建造。 無需添加org.astro到的模塊路徑com.greetings ; 它是自動完成的。
  • 運行項目以查看正確的輸出: Greetings world!
  • 圖10 –新的Java模塊化項目

    圖11 – Java模塊化項目

    您會看到Java Modular Project具有許多優點,例如您不需要將其他項目顯式添加到Module路徑。 當您更新module-info.java時,這是自動完成的。

    服務

    松耦合是指其中每個組件對其他獨立組件的定義了解很少或不了解的系統。 這使各個組件可以獨立更改,而不會影響其他組件。

    但是,讓我們描述一個示例,以深入了解《 快速入門指南》的詳細內容。

    假設您有一個提供服務的提供者。 例如,這可以是AlertService (提供各種系統或應用程序警報), CoordinatesProvider (提供各種坐標系統,例如緯度/經度,GEOREF,UTM等), AlgorithmProvider (提供針對問題的各種算法解決方案)等為了實現松散耦合,您可以為調用程序類提供一個接口,以隱藏其背后的實際實現。 調用者(或服務使用者)類不需要了解任何實際的實現。 他們只需要知道如何訪問相關方法即可。 然后,在運行時以某種方式將實現提供給調用方類。 這樣,只要Provider接口不更改,實際的實現就可以在任何時候更改而無需調用者類知道。

    有多種方法可以實現松散耦合。 這通常是由服務提供商完成的。 服務定位器設計模式提供了對服務的全局訪問點,而無需將調用者(服務使用者)耦合到實現該服務的具體類上。 例如, Spring使用依賴注入 ( 控制反轉的一種形式),NetBeans的RCP 模塊化API使用Lookups和ServiceProviders等。Jigsaw使用Java 6中的ServiceLoader 。服務使用者和服務提供者類可以駐留在不同的模塊中。

    從拼圖快速入門指南 ,模塊com.socket提供服務NetworkSocketProvider為NetworkSocket秒。 在兩個不同的模塊中提供了此服務的兩種實現: org.fastsocket和org.smartsocket 。 我們的服務使用者模塊com.greetings僅需要依賴com.socket服務提供者模塊, com.greetings需要依賴服務實現模塊。

    圖12 –服務提供商

    讓我們看看如何實現這一目標。 在NetBeans 9 EA中,如我們之前com.socket ,創建一個新的Java Project com.socket ,而不提供Main類。

    如《 快速入門指南》中所述,創建兩個類com.socket.NetworkSocket和com.socket.spi.NetworkSocketProvider ,添加新的module-info.java以將項目轉換為Java 9模塊并將這兩個包導出到使用者類:

    com.socket.module-info.java

    module com.socket {exports com.socket;exports com.socket.spi;uses com.socket.spi.NetworkSocketProvider; }

    最后一條語句聲明此模塊向使用者提供com.socket.spi.NetworkSocketProvider服務。 不要忘記清理并構建此模塊,以使更改生效。

    接下來,讓我們創建org.fastsocket模塊。 與之前一樣,按照《 快速入門指南》中的描述創建兩個類org.fastsocket.FastNetworkSocket和org.fastsocket.FastNetworkSocketProvider ,添加一個新的module-info.java以將項目轉換為Java 9模塊,并為com.socket添加依賴項com.socket模塊:

    org.fastsocket.module-info.java

    module org.fastsocket {requires com.socket;provides com.socket.spi.NetworkSocketProviderwith org.fastsocket.FastNetworkSocketProvider; }

    最后一條語句提供com.socket.spi.NetworkSocketProvider服務提供程序的實現。 請注意,這個模塊不出口任何包!

    但是,該項目包含編譯錯誤。 你能說出為什么嗎?

    我們需要將com.socket添加到modulepath中(如果您不記得該怎么做,請參考本文前面的內容)。 清理并構建以確保沒有錯誤。

    您可以重復上述步驟以類似的方式創建org.smartsocket ,但是,快速入門指南并沒有這樣做,因此,您可以根據需要創建自己的實現。

    最后,創建消費者com.greetings Java項目(使用另一個目錄不亂用的com.greetings模塊我們在第一章4.1和4.2創建)與com.greetings.Main類,從的內容復制快速入門指南 ,添加一個新的module-info.java ,將項目轉換為Java 9模塊,并向com.socket添加一個依賴com.socket :

    com.greetings.module-info.java

    module com.greetings {requires com.socket; }

    確保您添加了模塊com.socket并完成。 清理并構建,然后運行com.greetings ,您將看到一個錯誤:

    運行時異常

    Exception in thread "main" java.lang.RuntimeException: No service providers found!at com.socket/com.socket.NetworkSocket.open(NetworkSocket.java:19)at com.greetings/com.greetings.Main.main(Main.java:8)

    為什么? 我們確實做了《 快速入門指南》中提到的內容。 NetBeans Java項目要求您在模塊路徑中添加org.fastsocket (然后將其自動添加到module-info.java ),然后該異常消失:

    org.fastsocket.FastNetworkSocket

    class org.fastsocket.FastNetworkSocket

    作為練習,您可以使用Java模塊化項目重復上述操作。 在這里,你不需要添加服務提供者實現模塊(如org.fastsocket )到模塊路徑com.greetings 。

    但是它是如何工作的呢? 拼圖使用ServiceLoader來定位各種服務提供者實現:

    服務加載器

    ServiceLoader<NetworkSocketProvider> sl= ServiceLoader.load(NetworkSocketProvider.class); Iterator<NetworkSocketProvider> iter = sl.iterator();

    sl.iterator()將遍歷org.fastsocket.FastNetworkSocketProvider和com.smartsocket.SmartNetworkSocketProvider (如果已實現)。

    在后臺, ServiceLoader創建一個提供程序配置文件,該文件存儲在服務提供程序的JAR文件的META-INF/services目錄中。 配置文件的名稱是服務提供者的完全限定的類名稱,其中名稱的每個組成部分均以句點( . )分隔,而嵌套的類則以美元符號( $ )分隔。 換句話說, ServiceLoader在模塊的build/classes/META-INF/services/文件夾(或dist/provider.jar )內創建一個文本文件package.Provider ,其中包含實現類的標準名稱,例如package.ProviderImpl 。

    在我們的示例中, com.socket/build/classes/META-INF/services/包含文本文件com.socket.spi.NetworkSocketProvider ,其中包含實現類org.fastsocket.FastNetworkSocketProvider (和com.smartsocket.SmartNetworkSocketProvider標準名稱com.smartsocket.SmartNetworkSocketProvider如果已實現)。

    至少,如果使用Java 6 ServiceLoader ,這應該是“幕后”實現! 不幸的是,Java 9修改了ServiceLoader的實現。

    Java 6 ServiceLoader具有許多限制:

    • 它不是動態的(您無法在運行時安裝/卸載插件/服務)
    • 它會在啟動時加載所有服務(因此需要更長的啟動時間和更多的內存使用量)
    • 無法配置; 有一個標準的構造函數,它不支持工廠方法
    • 它不允許進行排名/排序,即我們無法選擇要首先加載的服務(服務的排序是在發現時進行的)

    此外,Java 9對Java 6 ServiceLoader進行了如下修改:

    • 沒有相關服務; 新的基于模塊的服務定位器沒有相對行為
    • 服務訂購(如發現)丟失
    • 模塊路徑上的所有服務接口和實現均被展平為單個全局名稱空間
    • 服務加載沒有可擴展性/可定制性; 服務層提供者必須預先提供可用服務的固定映射
    • 多站點聲明; 每個使用服務的模塊還必須在模塊描述符中聲明正在使用該服務; 沒有全局的全層服務注冊表

    換句話說,如果您搜索com.socket/build/classes/META-INF/services/或com.socket/dist/com.socket.jar/META-INF/services/您將一無所獲。

    NetBeans RCP改為提供ServiceProvider ,它沒有上面提到的ServiceLoader的缺點。 它是動態的,因此您可以在應用程序運行時插入/拔出模塊,它不會在啟動時加載所有服務,并允許您設置優先級(使用@ServiceProvider批注的position屬性)。 不幸的是,它不適用于拼圖。

    5. NetBeans的進一步改進

    要使程序包可用于其他模塊,必須編輯module-info.java并添加一個exports語句,將程序包名稱作為參數傳遞。 這將導致包圖標更改為具有打開鎖的圖標,而不是已鎖定的圖標。

    一個不錯的快捷方式是能夠右鍵單擊一個包,然后選擇一個動作Export Package ,如下圖所示,該操作將相應地自動修改module-info.java ,而無需鍵入export命令。

    圖13 – NetBeans的改進; 添加導出包菜單項

    NetBeans RCP 模塊API (NetBeans胖客戶端平臺隨附的API)中已經存在此功能。

    在由許多模塊組成的項目中,通常很難找到依賴項存在于哪個模塊中。 一個很好的補充就是能夠在整個模塊(和/或庫模塊)中搜索我們要查找的類。 NetBeans RCP 模塊API (NetBeans胖客戶端平臺隨附的API)中已經存在類似的功能。

    當由于NetBeans找不到依賴項而遇到錯誤時,單擊提示blob將打開一個對話框,開發人員可以在其中鍵入所需的類,如下圖所示,然后選擇適當的模塊。 當開發人員請求將模塊依賴項添加到模塊路徑時(例如,通過右鍵單擊Libraries ),可以訪問相同的對話框。

    圖14 – NetBeans的改進; 搜索模塊的依賴關系

    最后,可以將一個新模塊添加到Java Modular Project中,但是無法刪除模塊,盡管至少要編寫這些行。 這是一個固定的EA錯誤。

    NetBeans 9 EA仍在大量開發中,尚未通過官方測試(也稱為NetCat),因此在此階段會遇到一些錯誤或奇怪行為是正常的。

    六,結論

    在本文中,我們了解了NetBeans 9 EA如何支持JDK 9 EA并簡化了開發人員的工作。 作為開發人員,您無需記住如何使用模塊路徑來構建和執行Java模塊的細節,或者如何jlink命令的細節。 NetBeans 9隱藏細節。 JShell也很好地集成了。 當然,某些改進可以使開發人員的生活更加輕松,但是這些改進將在將來的NetBeans版本中或作為插件出現。

    我們看到了可以用來創建模塊化Java應用程序的兩種項目。 我們看到了可以在module-info.java內部使用的五個可用命令中的四個: exports, requires, uses和provides 。 opens允許其他模塊使用反射來訪問您打開的包中的類型。

    可以“打開”普通模塊中的特定程序包,以便僅該程序包可在運行時進行深度反射:

    com.greetings.module-info.java

    module com.greetings {opens com.greetings; }

    一些Java框架和工具在運行時嚴重依賴反射來訪問未導出模塊的代碼。 它們提供了諸如依賴項注入,序列化,Java Persistence API的實現,代碼自動化,調試等功能。例如Spring和Hibernate。 這些框架和庫不知道您的應用程序模塊,但是它們需要訪問模塊的類型和私有成員,這打破了JDK 9中強封裝的前提。還可以打開整個模塊進行反射,例如:

    com.greetings.module-info.java

    open module com.greetings {requires com.socket; }

    與opens與exports進行比較, exports語句使您只能在編譯時和運行時訪問指定程序包的公共API,而opens語句使您可以在運行時使用反射來訪問指定程序包中所有類型的公共和私有成員。

    與拼圖游戲配合使用時,玫瑰花還不是全部。 專家社區尚未接受拼圖,并且對他們遇到的許多嚴重缺陷有很多擔憂。

    7.參考

  • NetBeans 9 EA
  • NetBeans 9 EA JDK 9支持
  • Sitepoint Java 9終極指南
  • JDK 9功能完整 ,JavaCodeGeeks
  • Java雜志 ,2017年7月至8月
  • Java 9系列: JShell ,Voxxed
  • Java 9 系列 :HTTP / 2 客戶端 ,Voxxed
  • Java 9系列: JVM ,Voxxed
  • Java 9系列:HTML5和 Javadoc ,Voxxed
  • Java 9 系列 : 并發 更新 ,Voxxed
  • Java 9系列:變量 句柄 ,Voxxed
  • Java 9系列:封裝大多數內部 API ,Voxxed
  • Java 9系列:多發行JAR 文件 ,Voxxed
  • Java 9 系列 : 分段 代碼 緩存 ,Voxxed
  • Java 9系列: 集合的 便利工廠方法 ,Voxxed
  • 拼圖中的嚴重缺陷
  • Bateman A.(2016),“為JDK 9做準備”, JavaOne 。
  • Bateman A.(2016年),“模塊化開發簡介”, JavaOne 。
  • Bateman A.和Buckley A.(2016),“高級模塊化開發”, JavaOne 。
  • Buckley A.(2016),“模塊和服務”, JavaOne 。
  • Buckley A.(2016),“拼圖項目:引擎蓋下的項目”, JavaOne 。
  • Bateman A.,Chung M.,Reinhold M.(2016年),“ Project Jigsaw Hack Session”, JavaOne 。
  • Deitel P.和Deitel H.(2017年),《 Java 9 for Programmers》,第四版,Deitel。
  • Evans,B.(2016),“ Java 9模塊的早期觀察” ,《 Java Magazine》 ,第26期,1-2月,第59-64頁。
  • Gupta A.(2015年), JDK 9 REPL:入門 ,JavaCodeGeeks
  • 慢跑TM。 (2016), 學習模塊化Java編程 ,Packt。
  • Mak S.和Bakker P.(2016年), Java 9 Modularity, O'Reilly(早期發行)
  • Reinhold M.(2016), 問題模塊反射訪問 , Voxxed
  • Sharan K.(2017年),《 Java 9公開供早期采用和遷移》 ,Apress。
  • Verhas P.(2017年),《 Java 9示例編程》 ,Packt。
  • Zhitnitsky A.(2015), Java 9搶先體驗:與JShell進行動手實踐– Java REPL ,JavaCodeGeeks。
  • 翻譯自: https://www.javacodegeeks.com/2017/07/netbeans-9-early-access.html

    netbeans 9

    總結

    以上是生活随笔為你收集整理的netbeans 9_NetBeans 9抢先体验的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。