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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 10将如何改变您的编码方式

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 10将如何改变您的编码方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

突出顯示Java 10中新的Java局部變量類型推斷功能

早在2016年,Java社區就掀起了新的JDK增強提案(JEP): JEP 286 。 現在,兩年后,局部變量類型推斷可以說是Java 10中最值得注意的功能。這是Java語言開發人員為簡化Java應用程序編寫所采取的又一個步驟。

在下面的文章中,我們將解釋所有這些含義以及它將如何影響您的代碼。

分解局部變量類型推斷

這項新功能將為Java添加一些語法功能–簡化它并改善開發人員的體驗。 新語法將減少與編寫Java相關的冗長性,同時保持對靜態類型安全性的承諾。

換句話說,您無需指定關聯的類型就可以聲明變量。 聲明如:

List <String> list = new ArrayList <String>();
Stream <String> stream = getStream();

將被以下新的簡化語法取代:

var list = new ArrayList <String>();
var stream = getStream();

如您所見,Local Variable Type Inference將引入' var '關鍵字的使用,而不是要求明確說明變量的類型。

眾所周知,Java有點冗長,在理解函數編寫時您或其他開發人員的想法時可能會很不錯。 但是,對于那些認為用Java開發軟件過于繁瑣的人來說,此功能標志著巨大的變化。

盡管類型推斷不是Java中的新概念,但它是局部變量的新概念。

它是在Java 7中(作為Project Coin的一部分)通過菱形運算符(<>)引入的,該運算符允許在不使用類型綁定ArrayList <>的情況下初始化列表,而在Java 8中使用Lambda Formals進行引入。 例如,使用菱形運算符可以編寫以下代碼:

List <String> list = new LinkedList <String>();

現在,Oracle團隊正在將其進一步發展。

社區回應

實際上,在JEP 286成為JEP之前……Oracle進行了一項調查 ,以更好地了解Java社區對該建議的看法。 在大多數情況下,調查著眼于對該提案的總體感覺以及社區如何實施該提案。 在回答的2,453個開發人員中,結果大部分是積極的:

調查問題:您如何看待建議的局部變量類型推斷功能?

該調查的第二部分重點介紹了潛在的語法選擇,建議根據其他語言(如C#,Scala,Swift,C ++)的相似用法或使用“ let ”來選擇5個選項。

大多數用戶投票贊成var / val選項:

可能的語法選項

最后,團隊決定選擇第二受歡迎的選擇,僅var 。

Java社區的大多數成員似乎都贊成這種新選擇,其中許多人都要求Oracle“與時俱進”。 反對該功能的少數開發人員聲稱,對于那些開始使用Java邁出第一步的人來說可能會很困難,或者指出現有語法是“冗長和易讀性的正確組合”。

當然,在JEP 286摘要頁面上,您可以找到添加新功能的以下理由:

“ Java幾乎是唯一不包含局部變量類型推斷的流行的靜態類型語言。 在這一點上,這不再是一個有爭議的功能”

這將如何影響您的代碼?

一旦我們從系統中獲得了對新功能的全部興奮,通常我們要問自己的第一個問題是:這將如何影響我的代碼? 在功能摘要中,“ Java所需的樣板編碼程度”是主要動機,因此我們可以期待將來省略清單類型聲明。

更具體地說,治療將限于:

  • 帶有初始化器的局部變量
  • 增強的for循環中的索引
  • 在傳統的for循環中聲明的本地人

Oracle的Java團隊聲明它將不適用于:

  • 方法參數
  • 構造函數參數
  • 方法返回類型
  • 領域
  • 捕獲形式(或任何其他類型的變量聲明)

由于Java承諾支持Java的早期版本,因此我們可以假定它不會破壞向后兼容性。

加:GC改進和其他客房整理

JDK 10中有2個JEP專注于改進當前的垃圾回收(GC)元素。 第一個垃圾收集器接口(JEP 304)將引入一個干凈的垃圾收集器接口,以幫助改善不同垃圾收集器的源代碼隔離。

在當前的Java版本中,HotSpot源中散布著一些GC源文件。 在實現新的垃圾收集器時,這成為一個問題,因為開發人員必須知道在哪里尋找這些源文件。 該JEP的主要目標之一是為HotSpot內部GC代碼引入更好的模塊化,具有更簡潔的GC接口,并使其更易于實現新的收集器。

計劃用于Java 10的第二個JEP是用于G1的并行完全GC(JEP 307),它致力于通過使完全GC并行化來提高G1最壞情況的延遲。 G1在Java 9中成為默認的GC,此JEP的目標也是使G1并行化。

在Java 10計劃的其他功能中,我們可以期望:

  • 線程本地握手(JEP 312)–這將引入一種在線程上執行回調的新方法,因此停止單個線程(不僅是所有線程或不停止所有線程)既可行又便宜。
  • 備用內存設備上的堆分配(JEP 316)–允許HotSpot VM在備用內存設備上分配Java對象堆,這將由用戶指定
  • 附加的Unicode語言標簽擴展(JEP 314)–目標是增強java.util.Locale及其相關API,以實現語言標簽語法的附加unicode擴展(BCP 47)
  • 基于Java的實驗性JIT編譯器(JEP 317)– Oracle希望使其Java JIT編譯器Graal能夠在Linux / x64平臺上用作實驗性JIT編譯器。
  • 根證書(JEP 319)–這里的目標是在Oracle Java SE中開源根證書
  • 根證書頒發機構(CA)計劃,使OpenJDK構建對開發人員更具吸引力。 它還旨在減少OpenJDK和Oracle JDK構建之間的差異
  • 將JDK森林整合到一個單一的存儲庫中(JEP 296)–該JEP的主要目標是做一些內部管理,并將JDK森林的眾多存儲庫合并到一個單一的存儲庫中
  • 刪除Native-Header生成工具(javah)(JEP 313)–這很簡單,很重要–從JDK刪除了javah工具

請在家嘗試一下

就像其他所有JDK版本一樣,Oracle已經創建了一個早期訪問版本,Java用戶可以下載該版本以測試新功能。 實際上,該JEP自2016年初以來就可以進行試駕了,所以您還等什么呢?

即使您尚未開始考慮遷移到JDK 9,了解新功能并有機會向平臺設計者提供反饋也是了解新版本并對其產生影響的好方法。社區。

最后的想法

最近,我們一直密切關注Java平臺的開發。 自從去年9月發布Java 9以來,感覺整個平臺已經完成了180次。他們向我們介紹了模塊化Java,加上Mark Reinhold宣布JDK 10將在2018年3月發布,并且Java將轉換為Java 9。 6個月的發布周期。

諸如Project Jigsaw之類的功能強大的項目阻止了Java的新版本的發布。 現在,我們將每6個月獲得一個新版本,從2018年9月JDK 11開始,每3年就會提供長期支持版本。

基本上,不要太自在。 Oracle在未來幾年中對Java平臺制定了宏偉的計劃。 現在,雖然,被抓到的最好的Java 9與我們的工程副總裁,和合Steingarten的, 就在這里 。

翻譯自: https://www.javacodegeeks.com/2018/03/java-10-will-change-way-code.html

總結

以上是生活随笔為你收集整理的Java 10将如何改变您的编码方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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