程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java9的一些新特征引見

Java9的一些新特征引見

編輯:關於JAVA

Java9的一些新特征引見。本站提示廣大學習愛好者:(Java9的一些新特征引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Java9的一些新特征引見正文


被接收的特征
1. Jigsaw 項目;模塊化源碼

Jigsaw項目是為了模塊化Java代碼、將JRE分紅可互相協作的組件,這也是Java 9 浩瀚特點種的一個。JEP是邁向Jigsaw四步中的第一步,它不會轉變JRE和JDK的真實構造。JEP是為了模塊化JDK源代碼,讓編譯體系可以或許模塊編譯並在構建時檢討模塊界限。這個項目本來是隨Java 8宣布的,但因為推延,所以將把它加到Java 9.

一旦它完成,它能夠許可依據一個項目需求自界說組件從而削減rt.jar的年夜小。在JDK 7 和JDK 8的rt.jar包中有年夜約20,000個類,但有許多類在一些特定的情況外面並沒有被用到(即便在Java 8的緊湊散布特征中曾經包括了一部門處理辦法也存在著類冗余)。這麼做是為了能讓Java可以或許輕易運用到小型盤算裝備(好比收集裝備)中,進步它的平安和機能,同時也能閃開發者更輕易構建和保護這些類庫。

2. 簡化過程API

截止到今朝,Java掌握與治理體系過程的才能是無限的。舉個例子,如今為了輕便獲得你法式的過程PID,你要末挪用當地法式要末要本身應用一些變通計劃。更多的是,每一個(體系)平台須要有一個分歧完成來確保你能取得准確的成果。

希冀代碼能獲得Linux PIDS,如今是以下方法:
 

public static void main(String[] args) throws Exception
{
  Process proc = Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });
 
  if (proc.waitFor() == 0)
  {
    InputStream in = proc.getInputStream();
    int available = in.available();
    byte[] outputBytes = new byte[available];
 
  in.read(outputBytes);
  String pid = new String(outputBytes);
 
  System.out.println("Your pid is " + pid);
  }
}

在Java 9中,可以變換成以下方法(支撐一切的操作體系):
 

System.out.println("Your pid is " + Process.getCurrentPid());

此次更新將會擴大Java與操作體系的交互才能:新增一些新的直接清楚明了的辦法行止理PIDs,過程名字和狀況和列舉多個JVM和過程和更多工作。


3. 輕量級 JSON API

今朝有多種處置JSON的Java對象,但JSON API 獨到的地方在於JSON API將作為Java說話的一部門,輕量而且應用Java 8的新特征。它將放在java.util包裡一路宣布(但在JSR 353外面的JSON是用第三方包或許其他的辦法處置的).

4. 錢和泉幣的API

在Java 8引進了日期和時光的API以後, Java 9引入了新的泉幣API, 用以表現泉幣, 支撐幣種之間的轉換和各類龐雜運算. 關於這個項目標詳細情形, 請拜訪https://github.com/JavaMoney,外面曾經給出了應用解釋和示例, 以下是幾個主要的例子:
 

//新的類型: Money & FastMoney
 
Money amt1 = Money.of(10.1234556123456789, "USD"); // Money is a BigDecimal
FastMoney amt2 = FastMoney.of(123456789, "USD"); // FastMoney is up to 5 decimal places
Money total = amt1.add(amt2);
 
// 錢表殺青列國泉幣的辦法:
 
MonetaryAmountFormat germanFormat = MonetaryFormats.getAmountFormat(
Locale.GERMANY);
 
System.out.println(germanFormat.format(monetaryAmount)); // 1.202,12 USD

5. 改良鎖爭用機制

鎖爭用是限制很多Java多線程運用機能的瓶頸. 新的機制在改良Java對象監督器的機能方面曾經獲得了多種基准(benchmark)的驗證, 個中包含Volano. 測試中通信辦事器開放了海量的過程來銜接客戶端, 個中有許多銜接都請求統一個資本, 以此模仿重負荷平常運用.

經由過程諸如斯類的壓力測試我們可以預算JVM的極限吞吐量(每秒的新聞數目). JEP在22種分歧的測試中都獲得了精彩的成就, 新的機制假如能在Java 9中獲得運用的話, 運用法式的機能將會年夜年夜晉升.

關於JEP 143的更多內容

6. 代碼分段緩存

Java 9的另外一特性能晉升來自於JIT(Just-in-time)編譯器. 當某段代碼被年夜量反復履行的時刻, 虛擬機遇把這段代碼編譯成機械碼(native code)並貯存在代碼緩存外面, 進而經由過程拜訪緩存中分歧分段的代碼來晉升編譯器的效力.

和本來的單一緩存區域分歧的是, 新的代碼緩存依據代碼本身的性命周期而分為三種:

- 永駐代碼(JVM 內置 / 非辦法代碼)

- 短時間代碼(僅在某些前提下實用的設置裝備擺設性(profiled)代碼)

- 歷久代碼(非設置裝備擺設性代碼)

緩存分段會在各個方面晉升法式的機能, 好比做渣滓收受接管掃描的時刻可以直接跳過非辦法代碼(永駐代碼), 從而晉升效力.

7. 智能Java編譯, 第二階段

智能Java編譯對象sjavac的第一階段開端於JEP 139這個項目, 用於在多核處置器上晉升JDK的編譯速度. 如今這個項目曾經進入第二階段(JEP 199), 目標是改良sjavac並讓其成為代替今朝JDK編譯對象javac的Java默許的通用編譯對象.

其他值得等待的內容:
8. HTTP 2.0客戶端

HTTP 2.0尺度固然還沒正式宣布, 然則曾經進入了終究審查階段, 估計可以在Java 9宣布之前審查終了. JEP 110將會從新界說並完成一個全新的Java HTTP客戶端, 用來代替如今的HttpURLConnection, 同時也會完成HTTP 2.0和收集接口(原文websockets). 它如今還沒被JEP正式承認但我們願望在Java 9中包括這一項目標內容.

官方的HTTP 2.0 RFC(Request for Comments, 官方技巧評論辯論/會議記載等等的一系列文檔記載)預訂於2015年2月宣布, 它是基於Google宣布的SPDY(Speedy, 疾速的)協定. 基於SPDY協定的收集絕對於基於HTTP 1.1協定的收集有11.81%到47.7%之間的明顯提速, 如今曾經有閱讀器完成了這個協定.

9. Kulla籌劃: Java的REPL完成

這個取名為Kulla的項目比來宣告將於2015年4月整合測試, 固然曾經不太有願望能遇上Java 9的宣布, 但假如進度快的話也許恰好能遇上. 如今Java並沒有來自官方的REPL(Read-Eval-Print-Loop)方法, 也就是說如今假如你想要跑幾行Java代碼做一個疾速的測試, 你依然須要把這幾行代碼封裝在項目或許辦法外面. 固然在一些風行的IDE外面有Java REPL對象, 但它們並沒有官方支撐, 而Kulla項目也許就可以成為Java官方宣布的REPL處理計劃.

這些新功效出自何處?

JEP和JSR其實不是惹是生非, 上面就引見一下Java成長的生態情況:

小組 - 對特定技巧內容, 好比平安, 收集, Swing, HotSpot, 有配合興致的組織和小我

項目 - 編寫代碼, 文檔和其他任務, 至多由一個小組資助和支撐, 好比比來的Lambda籌劃, Jigsaw籌劃和Sumatra籌劃.

JDK改良提案(JEP) - 每當須要有新的測驗考試的時刻, JEP可以在JCP(Java Community Process)之前或許同時提出非正式的標准(specification). 被恰是承認的JEP正式寫進JDK的成長道路圖並分派版本號.

Java標准提案(JSR) - 新特征的標准湧現在這一個階段, 可以來自於小組 / 項目, JEP, JCP成員或許Java社區(community)成員的提案. 每一個Java版本都由響應的JSR支撐, Java 9臨時還沒有.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved