-
標記整理算法
查看全部 -
跟蹤收集算法
查看全部 -
垃圾回收值引用計數算法
查看全部 -
jdk11單文件源文件運行只需要java helloworld.java,不再需要javac編譯
查看全部 -
jdk10允許使用var關鍵字來定義變量:var i=10(必須初始化,否則編譯報錯,一旦初始化完成過后類型就會確定,不能再賦予其他類型的值,即i不能賦值為“abc”或者2.0等非int類型的值)
查看全部 -
jdk11標準的http請求,可以不用依賴第三方的http工具包
查看全部 -
優化64位架構
查看全部 -
methodhandler相較于反射更輕量級:
1.本質上講兩個都是在模擬方法的調用,但Reflection是模擬java代碼層次的調用,而MethodHandle是模擬的字節碼層次的,上面的例子中是模擬的invokevirtual指令。
2.Reflection是重量級的,而MethodHandle是輕量級的。
最重要的是,Reflection 只為java服務,而MethodHandle則可以服務于所有的運行在java虛擬機上的語言。
public?class?MethodHandlerTest?{ ????static?class?A?{ ????????public?void?println(String?s)?{ ????????????System.err.println("i?am?class?A:"?+?s); ????????} ????} ????public?static?void?main(String[]?args)?throws?Throwable?{ ????????Object?object?=?System.currentTimeMillis()?%?2?==?0???System.out?:?new?A(); ????????//無論?object是要那個實現類,下面的都能正確調用?到println方法 ????????getPrintlnMh(object).invokeExact("lisj"); ????} ????private?static?MethodHandle?getPrintlnMh(Object?target)?throws?Exception?{ ????????MethodType?methodType?=?MethodType.methodType(void.class,?String.class); ????????return?MethodHandles.lookup().findVirtual(target.getClass(),?"println",?methodType).bindTo(target); ????} }
查看全部 -
jdk11之前的版本通過反射訪問private修飾的屬性成員需field.setaccessable(),而jdk11則不需要設置
查看全部 -
export JAVA_11_HOME=...
export JAVA_12_HOME=...
export JAVA_HOME=$JAVA_11_HOME
alias jdk11="export JAVA_HOME=$JAVA_11_HOME"
alias jdk12="export JAVA_HOME=$JAVA_12_HOME"
通過配置可以設置默認jdk以及動態切換jdk版本,比如這個配置默認是使用jdk11,如果想使用jdk12的話只要只想jdk12即可實現切換
查看全部 -
摘要
開發一個處理內存分配但不實現任何實際內存回收機制的GC。一旦可用的Java堆耗盡,JVM將關閉。
目標
提供完全被動的GC實現,具有有限的分配限制和盡可能低的延遲開銷,但代價是內存占用和內存吞吐量。成功的實現是孤立的代碼更改,不會觸及其他GC,并且在JVM的其余部分中進行最小的更改。
查看全部 -
Unicode10執行結果為圖形
查看全部 -
JEP 327:Unicode 10
http://openjdk.java.net/jeps/327
摘要
升級現有的平臺API,支持10.0版本中的Unicode標準。
http://unicode.org/versions/Unicode10.0.0/
目標
支持最新版本的Unicode,主要在以下類中:
Character
并且String
在java.lang
封裝NumericShaper
在java.awt.font
包中,和Bidi
,BreakIterator
和Normalizer
在java.text
包中。
非目標
此JEP將不會實現四個相關的Unicode規范:
UTS#10,Unicode校對算法
UTS#39,Unicode安全機制
UTS#46,Unicode IDNA兼容性處理
UTS#51,Unicode表情符號
動機
Unicode是一個不斷發展的行業標準,因此我們必須使Java與最新版本保持一致。
描述
Java SE 10實現了Unicode 8.0。Unicode 9.0增加了7,500個字符和6個新腳本,Unicode 10.0.0增加了8,518個字符和4個新腳本。此升級將包括Unicode 9.0更改,因此將添加總共16,018個字符和10個新腳本。
查看全部 -
JEP 323:Lambda參數的本地變量語法
http://openjdk.java.net/jeps/323
摘要
允許
var
在聲明隱式類型的lambda表達式的形式參數時使用。目標
將隱式類型的lambda表達式中的形式參數聲明的語法與局部變量聲明的語法對齊。
非目標
將任何其他類型的變量聲明(例如,方法的形式參數)的語法與局部變量聲明的語法對齊。
動機
一個lambda表達式可以被隱式類型,其中類型的所有形式參數都推斷出:
(x,?y)?->?x.process(y)????//?implicitly?typed?lambda?expression
Java SE 10使隱式類型可用于局部變量:
var?x?=?new?Foo(); for?(var?x?:?xs)?{?...?} try?(var?x?=?...)?{?...?}?catch?...
為了與局部變量保持一致,我們希望允許'var'用于隱式類型的lambda表達式的形式參數:
(var?x,?var?y)?->?x.process(y)???//?implicit?typed?lambda?expression
統一性的一個好處是修飾符,特別是注釋,可以應用于局部變量和lambda形式,而不會失去簡潔性:
@Nonnull?var?x?=?new?Foo(); (@Nonnull?var?x,?@Nullable?var?y)?->?x.process(y)
描述
對于隱式類型的lambda表達式的形式參數,允許使用保留的類型名稱
var
,以便:(var?x,?var?y)?->?x.process(y)
相當于:
(x,?y)?->?x.process(y)
隱式類型的lambda表達式必須
var
用于其所有形式參數,或者不能用于任何形式參數。此外,var
僅允許隱式類型化lambda表達式的形式參數---顯式類型化的lambda表達式繼續為其所有形式參數指定清單類型,因此某些形式參數不允許其他人使用清單類型var
。以下示例是非法的:(var?x,?y)?->?x.process(y)?????????//?Cannot?mix?'var'?and?'no?var'?in?implicitly?typed?lambda?expression (var?x,?int?y)?->?x.process(y)?????//?Cannot?mix?'var'?and?manifest?types?in?explicitly?typed?lambda?expression
從理論上講,有一個lambda表達式可能就像上面的最后一行一樣,它是半顯式類型(或半隱式類型,取決于你的觀點)。但是,它超出了此JEP的范圍,因為它會深刻影響類型推斷和重載決策。這是保持lambda表達式必須指定所有清單參數類型或不指定的限制的主要原因。我們還希望強制推斷隱式類型化lambda表達式的參數的類型是否相同無論是否
var
使用。我們可能會在未來的JEP中回到局部推斷的問題。此外,我們不希望損害簡寫語法的簡潔性,因此我們不允許使用以下表達式:var?x?->?x.foo()
查看全部 -
JEP 321:HTTP客戶端(標準)
http://openjdk.java.net/jeps/321
摘要
通過JEP 110標準化JDK 9中引入的孵化?HTTP客戶端API?,并在JDK 10中進行更新。
目標
考慮孵化的API收到的反饋,
在
java.net.http
包中提供基于孵育的API?的標準化?API,和刪除孵化的API。
動機
這個JEP的動機與JEP 110的動機保持一致?。
查看全部
舉報