Java 9 新特性及具體應用

目錄

1. 模塊系統(Jigsaw)

2. JShell(REPL工具)

3. 集合工廠方法

4. 接口私有方法

5. Stream API 增強

6. HTTP/2 客戶端(Incubator)

7. 多版本JAR包

總結


1. 模塊系統(Jigsaw)

作用:實現模塊化開發,解決"JAR地獄"問題,增強封裝性和安全性。
應用場景:大型項目依賴管理。
代碼示例

// 模塊聲明文件: module-info.java
module com.example.myapp {requires java.base;         // 引入基礎模塊requires java.sql;          // 引入SQL模塊exports com.example.util;   // 導出工具包
}


2. JShell(REPL工具)

作用:交互式命令行工具,即時執行代碼片段。
應用場景:快速驗證算法或API用法。
代碼示例

jshell> int a = 10;
a ==> 10jshell> String s = "Hello";
s ==> "Hello"jshell> System.out.println(s + " Java " + a);
Hello Java 10


3. 集合工廠方法

作用:快速創建不可變集合(List/Set/Map)。
應用場景:初始化配置或常量集合。
代碼示例

List<String> colors = List.of("Red", "Green", "Blue");
Set<Integer> primes = Set.of(2, 3, 5, 7);
Map<String, Integer> scores = Map.of("Alice", 90, "Bob", 85);// 嘗試修改會拋出 UnsupportedOperationException
colors.add("Yellow"); // ? 運行時異常


4. 接口私有方法

作用:在接口內封裝重復邏輯,提高代碼復用性。
應用場景:接口默認方法的輔助方法。
代碼示例

public interface Calculator {default int add(int a, int b) {return a + b;}default int multiply(int a, int b) {return a * b;}// 私有方法private void log(String operation) {System.out.println("執行操作: " + operation);}
}


5. Stream API 增強

特性takeWhile()/dropWhile()/iterate()改進。
應用場景:流式數據處理。
代碼示例

List<Integer> numbers = List.of(2, 4, 6, 8, 9, 10);// takeWhile: 遇到不滿足條件時終止
List<Integer> evenBeforeOdd = numbers.stream().takeWhile(n -> n % 2 == 0).collect(Collectors.toList()); // [2, 4, 6, 8]// iterate: 帶終止條件的生成
IntStream.iterate(0, i -> i < 5, i -> i + 1).forEach(System.out::print); // 輸出: 01234


6. HTTP/2 客戶端(Incubator)

作用:支持HTTP/2協議和WebSocket。
應用場景:高性能網絡請求。
代碼示例

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com")).build();client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);


7. 多版本JAR包

作用:同一JAR支持不同Java版本。
應用場景:向后兼容。
目錄結構

myapp.jar
├── META-INF
│   └── versions/9
│       └── com/example/NewFeature.class  # Java 9專用類
└── com/example└── Main.class                       # 通用類


總結

Java 9 通過模塊化重構了Java生態,同時提供:

  • 開發效率工具(JShell)
  • 語法糖(集合工廠方法)
  • 工程化支持(接口私有方法)
  • 性能優化(HTTP/2、Stream增強)
    建議在微服務架構或大型系統中優先采用模塊化設計。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93445.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93445.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93445.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第二十五天:構造函數/析構函數/拷貝構造

構造函數/析構函數/拷貝構造 1. 構造函數&#xff08;Constructor&#xff09; 定義與作用&#xff1a;構造函數是一種特殊的成員函數&#xff0c;其名稱與類名相同&#xff0c;沒有返回類型&#xff08;包括 void 也沒有&#xff09;。它的主要作用是在創建對象時初始化對象的…

【P14 3-6 】OpenCV Python——視頻加載、攝像頭調用、視頻基本信息獲取(寬、高、幀率、總幀數),視頻保存在指定位置

文章目錄1 讀取本地視頻1.1 絕對路徑 6種方式1.2 相對路徑 4種方式1.3 讀取本地視頻2 視頻基本信息3 調用攝像頭 并將視頻保存在指定位置P14 3-6 1 讀取本地視頻 現在要讀取本地視頻“video.mp4”&#xff0c; 視頻文件“video.mp4”和playVideo.py腳本文件&#xff0c;都在…

【DL學習筆記】常用數據集總結

一、如何找數據集 paperswithcode&#xff0c;但好像沒了 AutoDL Roboflow Kaggle Hungging Face 百度飛漿PP AIStudio 二、目標檢測數據集格式 常用數據集坐標格式 MSCOCO &#xff1a; 坐標格式&#xff08;x&#xff0c;y&#xff0c;w&#xff0c;h&#xff…

19.3 Transformers量化模型極速加載指南:4倍推理加速+75%顯存節省實戰

Transformers量化模型極速加載指南:4倍推理加速+75%顯存節省實戰 實戰項目:模型量化 Transformers 兼容性配置 量化模型加載核心配置邏輯 #mermaid-svg-rDjfMigtxckLYWp3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#merm…

Android 終端接入 GB28181 國標視頻平臺的完整解決方案解析

1. 引言&#xff1a;讓 Android 終端無縫融入國標視頻網絡在公安、交通、應急、工業、教育等領域&#xff0c;GB/T 28181 國標協議早已成為視頻監控與指揮調度的事實標準。傳統國標視頻網絡通常由固定部署的 IPC 攝像機、NVR、視頻管理平臺構成&#xff0c;設備形態單一。隨著一…

Docker目錄的遷移

# 遷移 docker 目錄 &#xff08;無論容器與鏡像占用空間大小&#xff0c;哪怕只占用1G&#xff0c;也需用此方式&#xff0c;否則可能遷移不成功&#xff09;service docker stopcd /var/lib/docker# 一個一個復制除 overlay2 外的其他所有文件夾cp -R builder /home/docker/l…

IOS APP 前端存儲

UserDefaults優點簡單易用提供簡單的鍵值對存儲接口無需復雜配置&#xff0c;開箱即用適合存儲少量簡單數據輕量級專門為存儲小量數據設計內存占用小性能開銷低自動持久化數據自動保存到磁盤應用重啟后數據仍然可用通過synchronize()方法可以強制立即寫入&#xff08;iOS 12已自…

在前端js中使用jsPDF或react-to-pdf生成pdf文件時,不使用默認下載,而是存儲到服務器

開源地址&#xff1a; https://github.com/ivmarcos/react-to-pdf 主要就是這個方法&#xff0c;有三種可選&#xff1a; 默認是save&#xff0c;也就是會自動觸發下載的方法&#xff0c;open方法是默認會打開一個pdf預覽的tab頁面&#xff0c;build方法就是在調用的函數gener…

會議征稿!IOP出版|第二屆人工智能、光電子學與光學技術國際研討會(AIOT2025)

往屆已EI檢索&#xff0c;歡迎投稿&#xff01; AIOT2024會后兩個月實現見刊&#xff01; AIOT2025已通過IOP-JPCS出版申請&#xff0c;獨立JPCS出版 AIOT2025已上線西安文理學院官網&#xff1a; 征文通知&#xff5c;第二屆人工智能、光電子學與光學技術國際…

CPP多線程2:多線程競爭與死鎖問題

在多線程編程中&#xff0c;多個線程協同工作能顯著提升程序效率&#xff0c;但當它們需要共享和操作同一資源時&#xff0c;潛在的問題也隨之而來&#xff1b;線程間的執行順序不確定性可能導致資源競爭&#xff0c;可能引發死鎖&#xff0c;讓程序陷入停滯。 多線程競爭問題示…

全國產飛騰d2000+復旦微690t信號處理模塊

UD VPX-404是基于高速模擬/數字采集回放、FPGA信號實時處理、CPU主控、高速SSD實時存儲架構開發的一款高度集成的信號處理組合模塊&#xff0c;采用6U VPX架構&#xff0c;模塊裝上外殼即為獨立整機&#xff0c;方便用戶二次開發。 UD VPX-404模塊的國產率可達到100%&#xff0…

物聯網 (IoT) 的頂級硬件平臺

物聯網 &#xff08;IoT&#xff09; 的頂級硬件平臺IoT&#xff08;物聯網&#xff09;不再是一個流行詞。隨著每天出現幾個鼓舞人心的用例&#xff0c;多家公司現在正在探索如何利用該技術實現業務增長。無論實施何種其他技術&#xff0c;基于物聯網的新設備正迅速成為一項重…

TCP傳輸層協議(4)

TCP應用層協議&#xff08;4&#xff09; 流量控制 接收端處理數據的速度是有限的. 如果發送端發的太快, 導致接收端的緩沖區被打滿, 這個時候如果發送端繼續發送, 就會造成丟包, 繼而引起丟包重傳等等一系列連鎖反應. 因此 TCP 支持根據接收端的處理能力, 來決定發送端的發送速…

雙向SSL認證之Apache實戰配置

防御未授權訪問&#xff0c;為企業級應用構筑雙重身份驗證防線 本文是關于Apache配置雙向SSL認證的深度技術指南&#xff0c;包含全流程操作、調試技巧及企業級解決方案&#xff0c;適用于運維工程師和安全管理員。 1.為什么需要雙向認證 &#xff1f; 核心價值 &#x1f51…

JavaScript 實用工具方法小全

1. 精確獲取小數位數/*** 獲取數字的小數位數&#xff08;支持科學計數法&#xff09;* param {number|string} num - 要檢查的數字&#xff0c;可以是數字或字符串形式* returns {number} 返回小數部分的位數* * 實現原理&#xff1a;* 1. 處理科學計數法&#xff08;如1.23e-…

【易錯題】C語言

今日遇到的易錯題 #include <stdio.h> int i;//全局變量默認初始化是0 int main() {i--;//-1if (i > sizeof(i)){printf(">\n");}else{printf("<\n");}return 0; }易錯點&#xff1a;sizeof的返回值類型實際為無符號整形&#xff0c;因此編…

第七十五章:AI的“思維操控師”:Prompt變動對潛在空間(Latent Space)的影響可視化——看懂AI的“微言大義”!

Prompt變動對潛在空間影響前言&#xff1a;AI的“思維操控師”——Prompt變動對潛在空間的影響可視化&#xff01;第一章&#xff1a;痛點直擊——Prompt“難伺候”&#xff1f;改一個字就“面目全非”&#xff01;第二章&#xff1a;AI的“思維圣地”&#xff1a;潛在空間&…

【計算機視覺與深度學習實戰】03基于Canny、Sobel和Laplacian算子的邊緣檢測系統設計與實現

第一章 引言 邊緣檢測作為計算機視覺和圖像處理領域的核心技術之一,在現代數字圖像分析中占據著舉足輕重的地位。邊緣是圖像中亮度變化劇烈的區域,通常對應著物體的輪廓、表面方向的不連續性、材質變化或照明條件的改變。準確而高效的邊緣檢測不僅是圖像分割、特征提取、模式…

【大語言模型 02】多頭注意力深度剖析:為什么需要多個頭

多頭注意力深度剖析&#xff1a;為什么需要多個頭 - 解密Transformer的核心升級 關鍵詞&#xff1a;多頭注意力、Multi-Head Attention、注意力頭、并行計算、特征學習、Transformer架構、深度學習 摘要&#xff1a;在掌握了Self-Attention基礎后&#xff0c;本文深入探討多頭注…

Python Condition對象wait方法使用與修復

在 Python 中&#xff0c;Condition 對象用于線程同步&#xff0c;其 wait() 方法用于釋放鎖并阻塞線程&#xff0c;直到被其他線程喚醒。使用不當可能導致死鎖、虛假喚醒或邏輯錯誤。以下是常見問題及修復方案&#xff1a;常見問題與修復方案1. 未檢查條件&#xff08;虛假喚醒…