<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java 10 特性和增強特性 > 原文: [https://howtodoinjava.com/java10/java10-features/](https://howtodoinjava.com/java10/java10-features/) 在 [Java 9](https://howtodoinjava.com/java9/java9-new-features-enhancements/) 發布之后,Java 10 很快問世。 與以前的版本不同,Java 10 并沒有那么多令人興奮的特性,但仍然沒有幾個重要的更新會改變您的編碼方式以及其他將來的 Java 版本。 ```java Table of Contents JEP 286: Local Variable Type Inference JEP 322: Time-Based Release Versioning JEP 304: Garbage-Collector Interface JEP 307: Parallel Full GC for G1 JEP 316: Heap Allocation on Alternative Memory Devices JEP 296: Consolidate the JDK Forest into a Single Repository JEP 310: Application Class-Data Sharing JEP 314: Additional Unicode Language-Tag Extensions JEP 319: Root Certificates JEP 317: Experimental Java-Based JIT Compiler JEP 312: Thread-Local Handshakes JEP 313: Remove the Native-Header Generation Tool New Added APIs and Options Removed APIs and Options ``` ## JEP 286:局部變量類型推斷 Java 現在具有`var`樣式聲明。 它允許您聲明局部變量而無需指定其類型。 變量的類型將從創建的實際對象的類型推斷出來。 它聲稱是 JDK 10 中開發人員唯一真正的特性。 ```java var str = "Hello world"; //or String str = "Hello world"; ``` 在上面的示例中,兩個語句都是等效的。 在第一句話中,`str`的類型由分配類型`String`的類型確定。 > 閱讀更多: [Java `var` – 局部變量類型推斷](https://howtodoinjava.com/java10/var-local-variable-type-inference/) ## JEP 322:基于時間的發行版本控制 從 Java 10 開始,Oracle 調整了基于時間的版本字符串方案。 版本號的新格式為: ```java $FEATURE.$INTERIM.$UPDATE.$PATCH ``` 與舊版本不同,新的基于時間的版本不會延遲,并且特性將每六個月發布一次,并且對發布中的哪些特性沒有限制。 也有長期發行(LTS)。 它主要針對企業客戶。 LTS 版本的產品將提供 Oracle 的首要和持續的支持,目標是每三年一次。 此外,這些版本的更新將至少提供三年。 > 閱讀更多: [Java 版本 – 基于時間的發行版本控制](https://howtodoinjava.com/java10/java-version/) ## JEP 304:垃圾收集器接口 在早期的 JDK 結構中,構成垃圾收集器(GC)實現的組件分散在代碼庫的各個部分。 它已在 Java 10 中進行了更改。現在,它是 JVM 源代碼中的一個干凈接口,可以快速輕松地集成替代收集器。 它將改善不同垃圾收集器的源代碼隔離。 這純粹是重構。 之前工作的所有內容都需要事后進行工作,并且性能不應降低。 ## JEP 307:用于 G1 的并行全 GC Java 9 引入了 G1(垃圾優先)垃圾收集器。 G1 垃圾收集器的設計避免了完整的收集,但是當并發收集不能足夠快地回收內存時。 進行此更改后,將發生后備完整 GC。 G1 的完整 GC 的當前實現使用單線程的 mark-sweep-compact 算法。 此更改將使 mark-sweep-compact 算法并行化,并使用相同數量的線程。 當用于收集的并發線程無法足夠快地恢復內存時,將觸發該事件。 線程數可以通過`-XX:ParallelGCThreads`選項控制。 ## JEP 316:備用存儲設備上的堆分配 進行此更改的目的是使 HotSpot VM 能夠在用戶指定的備用存儲設備(例如 NV-DIMM)上分配 Java 對象堆。 要在此類內存中分配堆,我們可以添加一個新選項`-XX:AllocateHeapAt=<path>`。 該選項將采用文件系統的路徑,并使用內存映射來實現在存儲設備上分配對象堆的預期結果。 現有的與堆相關的標志,例如`-Xmx`,`-Xms`等,以及與垃圾回收相關的標志將繼續像以前一樣工作。 ## JEP 296:將 JDK 森林整合到單個存儲庫中 作為此更改的一部分,為了簡化和簡化開發,將 JDK 森林的許多存儲庫合并到一個存儲庫中。 在 JDK 9 中,有八個存儲庫:`root`,`corba`,`hotspot`,`jaxp`,`jaxws`,`jdk`,`langtools`和`nashorn`。 在統一森林中,通常將 Java 模塊的代碼合并在單個頂級`src`目錄下。 例如,今天在 JDK 森林中,存在基于模塊的目錄,例如 ```java $ROOT/jdk/src/java.base ... $ROOT/langtools/src/java.compiler ... ``` 在合并林中,此代碼改為組織為: ```java $ROOT/src/java.base $ROOT/src/java.compiler ... ``` ## JEP 310:應用程序類 - 數據共享 此特性的目標是改善啟動范圍,擴展現有的類數據共享(“ CDS”)特性,以允許將應用程序類放置在共享檔案中。 JDK 5 中引入的類數據共享允許將一組類預處理為共享的存檔文件,然后可以在運行時對其進行內存映射以減少啟動時間。 當多個 JVM 共享同一個存檔文件時,它還可以減少動態內存占用。 當前,CDS 僅允許引導類加載器加載歸檔的類。 應用程序 CDS 允許內置系統類加載器,內置平臺類加載器和自定義類加載器加載歸檔的類。 指定`-XX:+UseAppCDS`命令行選項可為系統類加載器,平臺類加載器和其他用戶定義的類加載器啟用類數據共享。 ## JEP 314:其他 Unicode 語言標簽擴展 目的是增強`java.util.Locale`和相關 API,以實現 [BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) 語言標簽的其他 Unicode 擴展。 最初在 Java SE 7 中添加了對 BCP 47 語言標簽的支持,并且對 Unicode 語言環境擴展的支持僅限于日歷和數字。 該 JEP 將在相關的 JDK 類中實現最新的 [LDML 規范](https://www.unicode.org/reports/tr35/tr35.html#Locale_Extension_Key_and_Type_Data)中指定的更多擴展。 該 JEP 將增加對以下附加擴展的支持: * cu(貨幣類型) * fw(一周的第一天) * rg(區域替代) * tz(時區) 修改后的相關 API 為: ```java java.text.DateFormat::get*Instance java.text.DateFormatSymbols::getInstance java.text.DecimalFormatSymbols::getInstance java.text.NumberFormat::get*Instance java.time.format.DateTimeFormatter::localizedBy java.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePattern java.time.format.DecimalStyle::of java.time.temporal.WeekFields::of java.util.Calendar::{getFirstDayOfWeek,getMinimalDaysInWeek} java.util.Currency::getInstance java.util.Locale::getDisplayName java.util.spi.LocaleNameProvider ``` ## JEP 319:根證書 cacerts 密鑰庫是 JDK 的一部分,旨在包含一組根證書,這些根證書可用于建立對各種安全協議中使用的證書鏈的信任。 但是,JDK 源代碼中的 cacerts 密鑰庫當前為空。 cacerts 密鑰庫將填充由 Oracle Java SE Root CA Program 的 CA 頒發的一組根證書。 許多供應商已經簽署了所需的協議,并且每個供應商都將包含一份根證書列表。 那些沒有簽署協議的人目前不會包括在內。 下一個版本將包含處理時間較長的內容。 這也意味著兩個 Oracle & Open JDK 二進制文件在特性上都相同。 以后,默認的 TLS 等關鍵安全組件將在 OpenJDK 構建中正常工作。 ## JEP 317:基于 Java 的實驗性 JIT 編譯器 此特性使基于 Java 的 JIT 編譯器 **Graal** 可用作 Linux / x64 平臺上的實驗性 JIT 編譯器。 Graal 將使用 JDK 9 中引入的 JVM 編譯器接口(JVMCI)。Graal 已經存在于 JDK 中,因此將其作為實驗性 JIT 啟用將主要是一項測試和調試工作。 要將 Graal 用作 JIT 編譯器,請在 Java 命令行上使用以下選項: ```java -XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler ``` Graal 是從頭開始完全覆蓋 Java 中的 JIT 編譯器。 以前的 JIT 編譯器是用 C++編寫的。 ## JEP 312:線程本地握手 通過使無需執行全局 VM 安全點就可以在應用程序線程上執行回調成為可能,該 JEP 為提高 VM 性能奠定了基礎。 這意味著 JVM 可以停止單個線程,而不僅僅是所有線程。 線程本地握手將首先在 x64 和 SPARC 上實現。 其他平臺將恢復到正常的安全點。 新的產品選項`-XX:ThreadLocalHandshakes`(默認值`true`)使用戶可以在受支持的平臺上選擇常規安全點。 ## JEP 313:刪除本機頭生成工具 它將從 JDK 中刪除`javah`工具,這是一個單獨的工具,可在編譯 JNI 代碼時生成頭文件,因為可以通過`javac`來完成。 這是 Java 10 的另一項著重于內務處理的特性。 ## 新增的 API 和選項 Java 10 中添加了 73 個新 API。讓我們來看看其中的幾個: | API | 描述 | | --- | --- | | `Optional.orElseThrow()` | 新方法`orElseThrow`已添加到`Optional`類。 它與現有的`get`方法同義,并且現在是它的首選替代方法。 | | `List.copyOf`,`Set.copyOf`和`Map.copyOf` | 這些方法從現有實例創建新的集合實例。 | | `Collectors.toUnmodifiableList`,`Collectors.toUnmodifiableSet`,`Collectors.toUnmodifiableMap` | 這些方法允許將`Stream`的元素收集到不可修改的集合中 | | `--jdk.disableLastUsageTracking` | 要為正在運行的 VM 禁用 JRE 上次使用情況跟蹤。 | | `--add-stylesheet` | 在生成的文檔中提供對使用多個樣式表的支持。 | | `--main-stylesheet` | 為了幫助將主要樣式表與任何其他樣式表區分開。 | | `@summary` | 添加以明確指定用作 API 描述摘要的文本。 默認情況下,從第一句話推斷出 API 描述的摘要。 | ## 刪除的 API 和選項 | API | 描述 | | --- | --- | | `LookAndFeels` | | | `Runtime.getLocalizedInputStream`,`Runtime.getLocalizedOutputStream` | 已過時的國際化機制的一部分,并且沒有已知用途。 | | RMI 服務器端多路復用協議支持 | 它已在 JDK 9 中禁用,現在已被刪除。 | | 常見的 DOM API | `com.sun.java.browser.plugin2.DOM`和`sun.plugin.dom.DOMObject` API 已被刪除。 應用程序可以使用`netscape.javascript.JSObject`來操作 DOM。 | | `FlatProfiler` | 在 JDK 9 中已棄用,已通過刪除實現代碼來作廢。 | | `-Xoss`,`-Xsqnopause`,`-Xoptimize`,`-Xboundthreads`和`-Xusealtsigs` | 選項已刪除。 | | `policytool` | *策略工具*安全工具已從 JDK 中刪除。 | | `com.sun.security.auth.**`中不推薦使用的類 | 下面的類現在已移除:`com.sun.security.auth.PolicyFile`、`com.sun.security.auth.SolarisNumericGroupPrincipal`、`com.sun.security.auth.SolarisNumericUserPrincipal`、`com.sun.security.auth.SolarisPrincipal`、`com.sun.security.auth.X500Principal`、`com.sun.security.auth.module.SolarisLoginModule`、`com.sun.security.auth.module.SolarisSystem` | 總體而言,Java 10 具有許多我們日常編程中可能不會使用的特性,但是它仍然具有許多在幕后起作用的特性,從而使其成為重要的里程碑。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看