
Oracle計劃在2013年中期發布Java SE 8。
Lambda項目
Lambda項目以及JSR-335希望提供將代碼建模為Java中數據的方法-用非精確的俗語來說,它旨在將功能用作Java中的一流對象 。 為此,lambda項目希望為Java語言提供以下四個擴展:
- Lambda表達式或閉包 ,使程序員可以以慣用語方式指定一段可執行代碼。 它們可以存儲在變量中,可以作為參數傳遞給方法,也可以用作方法的返回值。
- 擴展目標鍵入以將Lambda表達式綁定到特定類型的對象(類型推斷)。 這些類型可以稱為功能接口 -僅使用一種方法的Java接口。
- 方法和構造方法參考 ,允許程序員在要綁定到功能接口的對象上使用現有方法。
- 默認或虛擬擴展方法,用于在不破壞現有實現的情況下(尤其是在集合庫中)向現有接口添加更多方法。
List students = // ...
students.filter(new FilerFunction(){@Overridepublic boolean filter(Student s){return s.getEntryYear() == 2011;}}).map(new MapFunction<Student,Integer>(){@Overridepublic Integer map(Student s){return s.getGrade();}}).reduce(new ReduceFunction<Integer>(){@Overridepublic Integer reduce(Integer value1, Integer value2){Math.max(value1, value2);}});
相反,以下代碼將其功能與Project Lambda結合使用:
List students = // ...
students.paralell().filter(s -> s.getEntryYear() == 2011).map(s -> s.getGrade()).reduce(Math::max);
規范負責人和OpenJDK項目負責人Brian Goetz有關當前狀態的信息可以在Lambda州找到。
在Project Jigsaw中,由Oracle領導的OpenJDK社區試圖將模塊化引入Java語言。 該方法將不同于OSGi,因為他們希望在語言級別上通過靜態編譯時間檢查來建立它。 甲骨文公司的員工總是說他們在努力使Jigsaw與OSGi兼容。
Oracle首席平臺架構師和OpenJDK項目負責人Marc Reinhold描述了模塊化方法的三個原則:
- 模塊化是一種語言構造 –在Java平臺中以標準方式支持模塊化編程的最佳方法是將語言本身擴展為支持模塊。 開發人員已經根據語言考慮了標準的程序組件,例如類和接口。 模塊應該只是另一種程序組件。
- 應該嚴格執行模塊邊界 –模塊私有的類應該以與私有字段私有對類相同的方式私有。 換句話說,模塊邊界不僅應確定類和接口的可見性,還應確定其可訪問性。 沒有這種保證,就不可能構建能夠安全運行不受信任的代碼的模塊化系統。
- 靜態的單版本模塊解析通常就足夠了 –大多數應用程序不需要在運行時動態添加或刪除模塊,也不需要同時使用同一模塊的多個版本。 模塊系統應針對常見場景進行優化,但也應支持由實際用例(例如,應用程序服務器,IDE和測試工具)推動的范圍狹窄的動態多版本解析形式。
對于使用Jigsaw的程序員而言,這將特別值得注意,因為該語言現在將分為三個階段(而不是兩個階段):
- 編譯時間 : 編譯模塊的類。 編譯的類與資源(配置文件,元數據文件等)一起以JMOD格式(用于Java模塊)打包在一個歸檔文件中:
- 安裝時間:在安裝了JRE的任何計算機上,都會有一個模塊庫。 用戶可以在這里安裝Java模塊。
- 運行時間:可以執行定義主類的模塊 ( Invokable Module )。 JVM將從模塊庫中加載該模塊及其所需的任何模塊,然后執行代碼。
馬克·萊因霍爾德(Marc Reinhold)提供的有關拼圖項目的當前狀態的信息可以在拼圖項目:大圖—草稿1中找到 。
參考:我們的JCG合作伙伴 JohannesTh?nes在JohannesTh?nes博客上的 Java 8狀態更新 。
相關文章 :
- Java 7:項目代幣中的代碼示例
- Java 8虛擬擴展方法
- Java Lambda語法替代
- 將Java向前推進? 一個定義。 一年回顧。
- Java SE 7、8、9 –推進Java
- Java 7功能概述
翻譯自: https://www.javacodegeeks.com/2012/01/java-8-status-updates.html