您好,登錄后才能下訂單哦!
本篇內容介紹了“JDK16有哪些新特性”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
jenv add ${JDK16_Path}jenv global openjdk64-16
java -versionopenjdk version "16"2021-03-16OpenJDK Runtime Environment (build 16+36-2231)OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)
Cannot determine path to 'tools.jar' library for 16 (path/to/jdk-16) when running from IDEA, you should update to the latest version.
版本控制元數據大小方面,轉換后的存儲庫的初始原型已顯示出版本控制元數據的大小顯著減少。例如,使用Git的jdk倉庫的.git目錄大約為300MB,而使用Mercurial的.hg目錄大約為1.2GB。減少元數據可保留本地磁盤空間并減少克隆時間,同時減少傳輸的數據。
可用工具方面,與Mercurial相比,Git可用的工具更多。所有的文本編輯器都可以本地或通過插件實現Git集成。此外,幾乎所有的IDE都帶有Git集成,包括Eclipse、Visual Studio、IDEA。
可用托管方面,有許多選項可用于托管Git倉庫,無論是自托管還是作為服務托管。使用外部源碼托管提供程序的原因包括性能、與開發人員進行交互的Web API的訪問權限控制 以及 蓬勃發展的社區。
通過fork一份JDK 16源碼倉庫,可以一邊閱讀源代碼,一邊做筆記并提交,方便持續學習JDK源碼。使用Git的upsteam保持JDK源碼的更新,同時也保持自我更新。
如網速夠快,通過Github在線閱讀代碼的工具Github1s,快速在瀏覽器中翻閱JDK 16源碼也是非常方便。
更小的鏡像體積分發時會更加迅速
應用程序/容器的啟動要迅速
# 獲取Alpine Linux鏡像docker pull alpine# 運行鏡像docker run alpine echo'Hello Alpine!'
REPOSITORY TAG IMAGE ID CREATED SIZEalpine latest 7731472c3f2a 7 weeks ago 5.61MB
FROM openjdk:16-jdk-alpineVOLUME /tmpARG JAR_FILEADD ${JAR_FILE} app.jarENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 構建鏡像,設置JAR_FILE參數指向Spring Boot程序Jar包路徑docker build --build-argJAR_FILE=target/rest-service-0.0.1-SNAPSHOT.jar -t alpine-jdk16-app:latest . # 查看鏡像docker images # 根據鏡像,啟動容器運行# -d參數 后臺運行# -p參數 Spring Boot默認端口8080,映射到容器端口8080docker run -d-p8080:8080 alpine-jdk16-app:latest # 查看容器運行docker ps # 驗證成功之后可以停止容器docker stop${CONTAINER_ID} # 訪問應用curl-w'\n' http://127.0.0.1:8080/greeting?name=jdk16
隱式聲明了屬性
隱式聲明了構造器
隱式聲明了equals()、hashCode()、toString()
隱式聲明了屬性的訪問器,訪問器名稱與屬性同名
public record Point(int x, int y) {}
List<Merchant>findTopMerchants(List<Merchant> merchants, int month) { // Local record record MerchantSales(Merchant merchant, double sales) {} // 使用MerchantSales Record類臨時包裝merchant和sales,方便做處理。 return merchants.stream() .map(merchant ->new MerchantSales(merchant, computeSales(merchant, month))) .sorted((m1, m2) ->Double.compare(m2.sales(), m1.sales())) .map(MerchantSales::merchant) .collect(toList());}
if (obj instanceofString) { String s = (String) obj; ...}
if (obj instanceofString s) { // 通過使用模式匹配可以直接使用s局部變量 ...}
publicbooleanequals(Object o) { if (!(o instanceof Point)) returnfalse; Point other = (Point) o; return x == other.x && y == other.y;}
publicbooleanequals(Object o) { return (o instanceof Point other) && x == other.x && y == other.y;}
if (a instanceof Point p) { // p is in scope ...} else { // p not in scope here} // p not in scope here if (b instanceof Point p) { // Sure! ...}
if (x instanceofInteger num) { ... }elseif (x instanceofLong num) { ... }elseif (x instanceofDouble num) { ... }
“JDK16有哪些新特性”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。