为了账号安全,请及时绑定邮箱和手机立即绑定
  • 标记整理算法

    查看全部
  • 跟踪收集算法

    查看全部
  • 垃圾回收值引用计数算法

    查看全部
  • 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执行结果为图形

    查看全部
    0 采集 收起 来源:Unicode 10

    2019-04-25

  • JEP 327:Unicode 10

    http://openjdk.java.net/jeps/327

    摘要

    升级现有的平台API,支持10.0版本中的Unicode标准

    http://unicode.org/versions/Unicode10.0.0/

    目标

    支持最新版本的Unicode,主要在以下类中:

    • Character并且Stringjava.lang封装

    • NumericShaperjava.awt.font包中,和

    • BidiBreakIteratorNormalizerjava.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个新脚本。


    查看全部
    0 采集 收起 来源:Unicode 10

    2019-04-25

  • 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中进行更新。

    目标

    除了JEP 110目标之外,这个JEP还将:

    • 考虑孵化的API收到的反馈,

    • java.net.http包中提供基于孵育的API 的标准化 API,和

    • 删除孵化的API。

    动机

    这个JEP的动机与JEP 110动机保持一致 。


    查看全部
首页上一页1234下一页尾页

举报

0/150
提交
取消
课程须知
本课程是对 JDK 新版本的特性进行解读,并不会介绍 Java 语言及语法特性。所以,在学习本课程之前,需要对 Java 语言有所了解。
老师告诉你能学到什么?
1. 多版本 JDK 的安装和配置 2. JDK11 核心新特性的介绍及代码演示 3. JDK12 核心新特性的介绍及代码演示

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!