1. 程式人生 > >java-1.5-1.9新特性

java-1.5-1.9新特性

————————————————————————————————————————————

加快OpenJDK的開發速度:繼2014年3月份釋出了Java 8之後,我們進入下一個兩年的釋出週期。 Java 9預計在2016年釋出,並且已經公佈了JEP(JDK改進提議)中的前期列表。同時,我們已經把一些新特性整理到了JSR(Java規範請求),還有提 出了一些希望包括在新版本中的其他特性。

這些重要的特性都包括在Jigsaw專案中。顯著的效能改善和期待已久的API包括:程序API更新,JSON將成為java.util的一部分,貨幣處理API對於想處在技術最前沿的你,可從這裡獲得Java 9的初期版本。

被接受的特性

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,現在是如下方式: 



 

在Java 9中,可以變換成如下方式(支援所有的作業系統): 



 

這次更新將會擴充套件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,裡面已經給出了使用說明和示例, 以下是幾個重要的例子: 



 

5. 改善鎖爭用機制

鎖爭用是限制許多Java多執行緒應用效能的瓶頸. 新的機制在改善Java物件監視器的效能方面已經得到了多種基準(benchmark)的驗證, 其中包括Volano. 測試中通訊伺服器開放了海量的程序來連線客戶端, 其中有很多連線都申請同一個資源, 以此模擬重負荷日常應用.

通過諸如此類的壓力測試我們可以估算JVM的極限吞吐量(每秒的訊息數量). JEP在22種不同的測試中都得到了出色的成績, 新的機制如果能在Java 9中得到應用的話, 應用程式的效能將會大大提升.

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暫時還沒有。

相關推薦

java-1.5-1.9特性

———————————————————————————————————————————— 加快OpenJDK的開發速度:繼2014年3月份釋出了Java 8之後,我們進入下一個兩年的釋出週期。 Java 9預計在2016年釋出,並且已經公佈了JEP(JDK改進提議)中的前期列表。同時,我們已經把一些新特性整理

jdk 1.5 1.6 1.7 1.8 1.9特性詳解帶例子

1.5 1.自動裝箱與拆箱: 2.列舉(常用來設計單例模式) 3.靜態匯入 4.可變引數 5.內省 1.6 1.Web服務元資料 2.指令碼語言支援 3.JTable的排序和過濾 4.更簡單,更強大的JAX-WS 5.輕量級Http Serv

Go 1.9 特性 Type Alias 詳解 type MyInt2 = int

Go 1.9 新特性 Type Alias 詳解 飛雪無情 2017 年 8 月 28 日 話題:語言 & 開發架構Go 北京時間 2017.08.25,Go1.9 正式版釋出了。Go1.9 經歷了 2 個 beta,好幾個月,終於定了,釋出了正式版本。Go 1.9

Mysql Connector 5.1 好用的特性

Mysql connector 5.1對於叢集部署的情況,給予了負載均衡、故障遷移、主從複製讀寫分離的支援。 故障遷移 使用mysql connector提供的故障遷移服務,首先需要配置相應的jdbc url: jdbc:mysql://[primary host][:port],[seco

Go 1.9 特性 Type Alias 詳解

北京時間2017.08.25,Go1.9正式版釋出了。Go1.9經歷了2個beta,好幾個月,終於定了,釋出了正式版本。Go 1.9包含了很多改變,比如類型別名Type Alias,安全併發Map,並行編譯等,都是很大的改變,今天這篇文章主要介紹類型別名 Type Ali

golang 發布 1.11,帶來特性 modules

替代 align 初步 src middle 成了 idt int 增加 美國當地時間8月24日,Go 開發團隊宣布推出 Go 1.11 正式版。 下載地址:https://golang.org/dl/ 國內下載地址:https://golang.google.cn/dl

【筆記】Rancher2.1容器雲平臺特性

term ext 進行 dashboard 分享 window ase new href 2018年10月6日,Rancher2.1版本正式發布。相比Rancher2.0版本,提供了許多新的特性: 1、支持集群和項目級別的硬件資源配額管理;2、支持3個節點的Rancher

3.1.C++11語言特性

3.1.1微小但重要的語法提升 nullptr和std::nullptr_t : nullptr取代0或NULL,表示一個pointer(指標)只想指向的no value。std::nullptr_t定義在<cstddef>中,為基礎型別。   3.1.2以au

Java 9 特性快速預覽

Java 8 已經出來三年多的時間了,原本計劃2016年七月份release Java 9,但是基於種種原因,Java 9 被推遲到了2017年的3月份,本人也在Open JDK的官網上看到了Java 10的標準也在制定當中,Java的發展真的越來越快了,在Java 9正式

陣列內容的交換——1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的求和——求 1到 100 的所有整數中出現多少次數字9

1.陣列內容的交換 #include<stdio.h> #include<stdlib.h> int main() { int arr1[] = { 1, 2, 3 }, arr2[] = { 4, 5, 6 }, i, t; for (i = 0; i < 3

C++上機報告 利用公式計算π=4(1-1/3+1/5-1/7+1/9-...)的近似值,直到括號中最後一項的絕對值小於0.000001為止。

上機內容:       利用公式計算π=4(1-1/3+1/5-1/7+1/9-...)的近似值,直到括號中最後一項的絕對值小於0.000001為止。 上機目的:鍛鍊思維能力。 我的程式: /* * 程式的版權和版本宣告部分: * Copyright (c)

利用公式計算π=4(1-1/3+1/5-1/7+1/9-...)的近似值,直到括號中最後一項的絕對值小於0.000001為止

#include<iostream> #include<cmath> using namespace std; int main( ) {int a=1;  double b=1,c=1,pi=0;  while(fabs(c)>=0.0000

hibernate4.1版本中的特性和hibernate3.3部分區別

1.資料庫方言設定 <property name=”dialect”>org.hibernate.dialect.MySQL5Dialect</property> 在3.3版本中連線MySQL資料庫只需要指明MySQLDialect即

Java 9 特性! 看過才知道強大

1、Java9 新特性之---目錄結構包含jdk8及以前的jdk版本,所有目錄結構以及目錄含義如圖:     jdk9之後,目錄結構發生變化如圖:這個新特性只要瞭解下就可以了,這個目錄結構是方便為了接下來新特性做保證2、Java9新特性之---JShell工具怎麼理解,怎麼用

Java近似求pi,利用公式pi=4*(1-1/3+1/5-1/7+.....)

public class Welcome {public static void main(String[] args) {// TODO Auto-generated method stubdouble pi=0;double n=1;double sum=0;doubl

kubernetes 1.6釋出,特性一覽

主要更新和釋出的主題 Kubernetes now supports up to 5,000 nodes via etcd v3, which is enabled by default. Kub

3.Java高階教程_12.Java 9 特性

Java 9 釋出於 2017 年 9 月 22 日,帶來了很多新特性,其中最主要的變化是已經實現的模組化系統。接下來我們會詳細介紹 Java 9 的新特性。 Java 9 新特性 模組系統:模組是一個包的容器,Java 9 最大的變化之一是引入了模組系統(Jigsa

用for和while循環求e的值[e=1+1/1!+1/2!+1/3!+1/4!+1/5!+...+1/n!]

主函數 int class urn log emp art print tracking /*編敲代碼,依據下面公式求e的值。要求用兩種方法計算: 1)for循環。計算前50項 2)while循環,直至最後一項的值小於10-4 e=1+1/1!+1/2!+1/

JDK 9特性匯總

one 已久 集合 哪些 com 描述 匯總 框架 可變 寫在前面: ?期待已久的JDK 9發布了,有哪些新特性值得我們去體驗呢?小編給你整理了JDK 9的新特性。 JDK9的關鍵更改: Java平臺模塊化系統:引入了一種新的Java編程組件模塊,