Java 9 新特性學習記錄

參考:

  1. https://my.oschina.net/u/3209213/blog/1622984
  2. https://www.ibm.com/developerworks/cn/java/the-new-features-of-Java-9/index.html
  3. http://www.importnew.com/24528.html
  4. https://docs.oracle.com/javase/9/whatsnew/toc.htm

1. 模塊化

這個在其它語言中早就有了膜眠,主要是對大型系統(tǒng)很有幫助岩臣,可以有效的降低打包大小
、減少內存消耗宵膨、提升效率架谎。

根目錄中添加一個描述模塊的 module-info.java 文件,其中描述模塊的依賴和export辟躏,依此分析模塊之間的相互依賴谷扣。

不過我個人對需要添加這樣的描述文件的方式還是有點懷疑,這更像一個強力約束。因為 Java 代碼實現(xiàn)中本身就有 import, 是否公開有public会涎,理論上可以根據(jù)這些來做模塊級別依賴分析裹匙,當然可能比較麻煩。標記下末秃!
后記, 下面這篇文章基本解決了我的疑問概页,本質是一個模塊級別的package:
Java 9的模塊化--壯士斷"腕"的涅槃

2. JShell

java 語法這么復雜惰匙,搞個shell,表示懷疑實用性秃臣。用來吸引初學者?

或者 Java 準備繼續(xù)簡化下語法稚虎?

3. 多版本兼容Jar包

個人覺得這是個非常好的特性,很大程度上會提升舊系統(tǒng)維護者的升級意愿、幫助庫的開發(fā)者快速開始使用新特性丈牢。

這個特性結合 Java 新的版本機制來看,就更有必要了垮卓,這么快的發(fā)布機制,如果老的方式碱呼,大家使用新版本特性簡直就會疲于奔命坝尥巍男旗!

多版本兼容 JAR 功能能讓你創(chuàng)建僅在特定版本的 Java 環(huán)境中運行庫程序時選擇使用的 class 版本:

multirelease.jar
├── META-INF
│   └── versions
│       └── 9
│           └── multirelease
│               └── Helper.class
├── multirelease
    ├── Helper.class
    └── Main.class

4. 小升級

接口允許私有方法

對庫開發(fā)者是蠻有用的,進一步干掉多此一舉的 抽象類

public interface SayHi { 
    private String buildMessage() { 
        return "Hello"; 
    } 
    void sayHi(final String message); 
    default void sayHi() { 
        sayHi(buildMessage()); 
    } 
}

升級 集合、Stream 和 Optional 接口

  1. 集合: 添加 List.of()嗜闻、Set.of()、Map.of() 和 M ap.ofEntries()
List.of(); 
List.of("Hello", "World"); 
List.of(1, 2, 3);
Set.of(); 
Set.of("Hello", "World"); 
Set.of(1, 2, 3);
Map.of();
Map.of("Hello", 1, "World", 2);
  1. Stream:添加 ofNullable翠肘、dropWhile、takeWhile 和 iterate
@Test 
public void testDropWhile() throws Exception { 
    final long count = Stream.of(1, 2, 3, 4, 5) 
        .dropWhile(i -> i % 2 != 0) 
        .count(); 
    assertEquals(4, count); 
}
  1. Collectors : 添加 filtering 和 flatMapping
  2. Optional :添加了 ifPresentOrElse晚碾、or 和 stream 等方法

升級 <>

//java6及以前
Map<String,String> map6 = new HashMap<String,String>();
//java7和8 <>沒有了數(shù)據(jù)類型
Map<String,String> map7 = new HashMap<>();
//java9 添加了匿名內部類的功能 后面添加了大括號{}  可以做一些細節(jié)的操作
Map<String,String> map9 = new HashMap<>(){};

try 升級

Java7 的方式很像 Python 中 with 方式打開文件的處理方式笛求。
Java9 的方式狡孔,嗯,也蠻好吧辱揭,至少處理多個方便的多,看起來也舒服。

//java7和8及 每一個流打開的時候都要關閉,但是在try的括號中來進行關閉
@Test
public void test7(){
    try(InputStreamReader reader =new InputStreamReader(System.in)){
        reader.read();
    }catch (IOException e){
        e.printStackTrace();
    }
}

//java9每一個流打開的時候都要關閉,但是在try的括號中來進行關閉,在java8的基礎上進一步升級 直接在try括號中直接寫入 變量就好写穴,如果有多個流欣孤,就用分號隔開
//try(reader;writer){}
@Test
public void test9(){
    InputStreamReader reader = new InputStreamReader(System.in);
    try(reader; write){
        reader.read();
    }catch (IOException e){
        e.printStackTrace();
    }
}

G1 作為默認垃圾回收器

沒啥好說的篷朵,應該的, 成熟度足夠了

總結

整體而言段只,Java9 的升級基本集中提升性能澈缺、減少內存莱预、更便于維護杖们;更進一步適應云時代。 Java還是會很有生命力的列粪!

另外杭措,Java10 最期待類型推導了。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末巡球,一起剝皮案震驚了整個濱河市汹押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媚送,死亡現(xiàn)場離奇詭異拿霉,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門熏矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慧域,“玉大人,你說我怎么就攤上這事〉” “怎么了猛铅?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任混弥,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘俗或。我一直安慰自己干像,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布浪耘。 她就那樣靜靜地躺著澜躺,像睡著了一般削锰。 火紅的嫁衣襯著肌膚如雪朋截。 梳的紋絲不亂的頭發(fā)上拗慨,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天宠叼,我揣著相機與錄音简烤,去河邊找鬼丈咐。 笑死辆影,一個胖子當著我的面吹牛灭衷,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼案糙!你這毒婦竟也來了奢讨?” 一聲冷哼從身側響起亩码,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡返敬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年塑煎,在試婚紗的時候發(fā)現(xiàn)自己被綠了冷尉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震束。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡侵佃,死狀恐怖迈螟,靈堂內的尸體忽然破棺而出洗搂,到底是詐尸還是另有隱情,我是刑警寧澤挣棕,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布法严,位于F島的核電站溯街,受9級特大地震影響堤尾,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一棉浸、第九天 我趴在偏房一處隱蔽的房頂上張望嗡害。 院中可真熱鬧鹃骂,春花似錦象踊、人聲如沸史隆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羹应。三九已至煞烫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巡蘸。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓炕柔,卻偏偏與公主長得像衰琐,于是被迫代替她去往敵國和親羡宙。 傳聞我的和親對象是個殘疾皇子狗热,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容