琥珀ai_琥珀项目:Java的未来暴露
琥珀ai
如果一切按計劃進行(我們正在研究Jigsaw項目),那么Java 9將在不到100天的時間內啟動。 您可以在此處加入倒計時以發布它。 它將包含一長串新功能和升級功能,其中一些我們迫不及待想要看到實際應用。
但是,有些功能還沒有為Java 9做好準備,而這正是Project Amber出現的地方,因此這些功能可以成為現實。 這是什么意思? 讓我們找出答案。
專注于Var / Val,Enums和Lambda
Java語言架構師Brian Goetz于去年1月首次提出Amber項目,當時他提議創建一個項目來探索和孵化較小的,面向生產力的Java語言功能。
成為該項目一部分的功能的主要前提條件:它們已被接受為候選JEP,也稱為JDK增強建議。 在這個過程中,Oracle收集了有關Java開發工具包和OpenJDK增強功能的建議。 批準的提案將繼續成為Java的實際功能。
Goetz指出,該項目不是思考或討論改進Java的新想法和隨意想法的地方,并且“整個Internet仍然可以使用”。
3月16日,Goetz 歡迎Amber項目進入Java社區,并通過了前三個Java增強提案:
– 局部變量類型推斷(JEP 286) –使用初始化程序將類型推斷擴展到局部變量的聲明
– 增強枚舉(JEP 301) –使枚舉更好的功能
– Lambda剩菜(JEP 302) –改善lambda的可用性
為什么這三個項目受到如此特別的關注? 讓我們找出答案。
滿足琥珀項目的新功能
局部變量類型推斷
大多數開發人員對Java的主要問題之一是它太冗長。 盡管在閱讀并嘗試理解編寫函數時其他開發人員的想法時這可能是一件好事,但在實際編寫這些函數時可能會變得乏味。
此功能建議向Java添加一些語法糖以簡化它。 這將允許聲明變量而不必指定關聯的類型。 例如,這:
List<String> list = new ArrayList<String>(); final Stream<String> stream = getStream();將被替換為:
var list = new ArrayList<String>(); val stream = getStream();如果您想了解有關此功能的更多信息,以及社區對此有何看法,請查看我們的Java新本地變量類型推斷語言功能動手概述 。
增強枚舉
此功能的目標是增強Java語言中的枚舉構造的表達能力。 如提案中所述,Java枚舉是功能強大且常用的構造。 它們允許對常數進行分組,其中每個常數都是一個單例對象。 當變量必須等于為其預定義的值之一時,它將使變量成為一組預定義的常數。 例如,星期幾。
增強功能將允許枚舉類型變量(泛型支持),從而可以擴展枚舉。 它還將提供對枚舉常量的更清晰的類型檢查,以驗證和強制枚舉的約束。
具有泛型支持的枚舉將使我們能夠指示鍵集及其關聯的類型,并且我們能夠向單個項添加方法。 這兩個功能將協同工作,以使枚舉常量能夠承載特定于常量的類型信息以及特定于常量的狀態和行為。 增強型枚舉將使我們能夠使用通用類型定義枚舉。 當表示數學常數時,可以顯示此功能某些值的示例:
public enum MathematicalConstants < T > {E < Double > (Math.PI),PI < Double > (Math.E),ZERO < Integer > (0),ONE < Integer > (1),i < Complex > (new Complex(0, 1))private MathematicalConstants(T underlyingObject) {this.underlyingObject = underlyingObject;} }在此示例中,我們可以添加對其他方法的支持,同時仍然享受每種方法的類型安全性。 當底層對象不必是對象類型時,可以將不同類型傳遞給枚舉的構造函數,這展示了此功能可以帶來的優雅。
增強枚舉的另一個有用應用是減少在不同數據類型之間轉換的樣板代碼。 例如,jdbc類型轉換為Java類型。 它可以幫助提高我們的代碼自我編寫文檔的能力,并避免像“ instanceOf”檢查那樣的代碼氣味。
Lambda剩菜剩飯
Project Lambda于2014年隨Java 8一起發布,但總有改進的余地。 這里的想法是通過增強方法上下文中函數表達式的歧義來提高lambda表達式和方法引用的可用性。
此功能還著重于完成下劃線字符的修復,以指示未使用的lambda參數,并允許lambda參數對封閉范圍中的陰影變量進行處理。
在其他語言中已經存在使用下劃線作為未命名的lambda參數的符號的概念,并且其目標也是使其成為Java的一部分。 使用非常簡單,看起來像這樣:
BiFunction<Integer, String, String> biss = (i, _) -> String.valueOf(i);它為什么如此重要? 因為這將允許對未使用的參數進行更強的靜態檢查,并且還允許將多個參數標記為未使用。 但是,執行該選項可能很困難,因為下劃線已經是有效的標識符,并且需要進行一些調整和兼容性才能使其起作用。
Java的附帶項目
Project Amber加入了諸如Valhalla之類的Java長期項目,以處理不可變且無參考的對象, Shenandoah旨在減少GC暫停時間和XRender Graphics Pipeline ,以創建新的Java2D圖形管道為目標。 。
Lambda和Jigsaw是兩個比較受關注的項目。 Lambda項目是Java 8的一部分,于2014年3月引入,它將Lambda表達式和流引入Java。 Jigsaw項目即將成為Java 9的一部分,旨在使Java模塊化并將JRE分解為可互操作的組件。
這兩個項目都花費了大量的精力– Lambda于2009年12月首次引入,花了5年多的時間才成為Java的實際組成部分。 拼圖是在2008年12月推出的,隨后進行了將近9年半的工作。
這不一定意味著項目Amber將具有相同的時間表,但這很好地表明了將主要功能集成到Java中需要花費多長時間。 但是,在此項目的公告中充滿了希望。
除了通常獲得的郵件列表項目外,Goetz還發布了正式的回購協議。 與類似的項目不同,由于團隊將處理多個JEP,因此將在分支中完成工作,而默認的JEP將同步到jdk10。 這是否意味著Amber可能會成為下一個Java版本的一部分? 我們將不得不拭目以待。
為什么是琥珀色?
如果您想知道名稱及其名稱,Java開發人員兼SitePoint Java部分的編輯Nicolai Parlog將這個問題發給了Brian Goetz本人。 他得到了一個簡單的回答:“為什么不呢?”。
但是,Goetz建議舉行比賽以提出候選人。 他親自挑選了獲勝者,并提供了以下解釋:
@java @BrianGoetz @nipafx或更可能的是:琥珀在希臘語中被稱為elektron,這可能意味著“陽光直射 ”(根據Wikipedia)
— Kwakeroni(@kwakeroni) 2017年3月28日
而且您必須承認這聽起來很酷。
最后的想法
Java是一種大型語言,具有許多功能,能力和程序員。 Project Amber加入了已經在進行中的功能列表,所有這些功能都具有相同的目標-幫助開發階段更快地進行,并滿足Java工程師和開發人員的需求。
現在有兩個主要問題– Project Amber將采用哪些其他建議,以及將它們變成Java現實需要多長時間。
翻譯自: https://www.javacodegeeks.com/2017/05/project-amber-future-java-exposed.html
琥珀ai
總結
以上是生活随笔為你收集整理的琥珀ai_琥珀项目:Java的未来暴露的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gwt格式_GWT的渐进式Web应用程序
- 下一篇: DDOS服务器(DDos微信服务器)