V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hansonwang99
V2EX  ›  程序员

JDK 12 又来了,我学不动了...

  •  1
     
  •   hansonwang99 ·
    hansonwang99 · 2019-03-20 12:37:25 +08:00 · 9020 次点击
    这是一个创建于 2100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Java 大法好


    写在前面

    看到 JDK 12 又发布了,萌新不知不觉感觉瑟瑟发抖,从 Java 1.8 的函数式编程思维和范式 到 Java 1.9 的模块化特性的加持 以及还没来得及深切感受一下 Java 1.11 的 ZGC 强大之后,这次 JDK 12 到底有搞了些啥事情呢?我真的学不动了,我该怎么办呢?

    不管怎样,下面还是来看一下 JDK 12 的新特性解( fan )读( yi )吧!


    低暂停延时的垃圾收集器 (实验版)

    A Low-Pause-Time Garbage Collector (Experimental)

    添加一个名为 Shenandoah 的新垃圾收集 (GC)算法,该算法通过与正在运行的 Java 线程并发执行回收工作来减少 GC 暂停时间。Shenandoah 的暂停时间与堆大小无关,这意味着无论堆大小是 200MB 还是 200GB,都将拥有相同的暂停时间。


    微基准测试套件

    Microbenchmark Suite

    在 JDK 源代码中添加了一组基本的微基准测试套件,使得开发人员无论运行现有的微基准测试或者创建新的微基准测试都变得十分便利。


    Switch 表达式 (预览版)

    Switch Expressions (Preview)

    这是一个预览版语言特性。通过对 switch 语法进行了扩展,使其不仅可以作为语句( statement ),还可以作为表达式( expression ),并且两种形式都可以使用“传统的”或“简化的”语法用于作用于不同的范围或者控制执行流。这些更改将会简化日常编码,并且为在 switch 中使用模式匹配 (JEP 305) 做好了准备。


    JVM 常量 API

    JVM Constants API

    引入一个 API 来建模关键类文件( key class-file )和运行时构件( run-time artifacts )的标称描述,特别是对那些可从常量池加载的常量。


    仅保留 AArch64 实现

    One AArch64 Port, Not Two

    删除与 arm64 实现相关的所有源代码,同时保留 32-bit ARM 和 64-bit aarch64 实现。删除这些实现是为了让所有代码贡献者集中精力于一个实现上,从而消除维护两个实现所需付出的重复工作。


    默认类数据共享归档文件

    Default CDS Archives

    增强 JDK 构建过程,在 64 位平台上使用默认的类列表生成类数据共享(class data-sharing,CDS)存档。


    可中断的 G1 Mixed GC

    Abortable Mixed Collections for G1

    如果 Mixed GC 的 G1 存在超出暂停目标的可能性,则使其可被中止。


    G1 未使用分配内存即时返回

    Promptly Return Unused Committed Memory from G1

    增强 G1 垃圾收集器,以便在空闲时自动将 Java 堆内存返回给操作系统。


    参考文献


    后 记

    啥都不说了,JDK 13 您慢点出吧,快要掉队了,我跟不上了...

    50 条回复    2019-03-21 17:09:27 +08:00
    sadhen
        1
    sadhen  
       2019-03-20 12:47:04 +08:00   ❤️ 1
    学 Scala 吧,相当于你已经学到了 JDK 20,哈哈
    Cat73
        2
    Cat73  
       2019-03-20 13:02:19 +08:00
    算一算,几年后 Java 版本号能赶上你的年龄
    jxf2008
        3
    jxf2008  
       2019-03-20 13:16:31 +08:00   ❤️ 2
    改行 C/C++吧。十几年一个大版本,慢慢学:-)
    guokeke
        4
    guokeke  
       2019-03-20 13:22:44 +08:00
    学**, 项目做完了吗?
    lihongjie0209
        5
    lihongjie0209  
       2019-03-20 13:26:52 +08:00
    说实话,这些特性不影响写代码。哪怕不知道该怎么写就怎么写, 学这些干嘛
    AltairT
        6
    AltairT  
       2019-03-20 13:38:49 +08:00 via iPhone
    只跟 lts, 生产环境才 8 呢,换也是换 lts 的 11
    saluton
        7
    saluton  
       2019-03-20 13:42:02 +08:00
    @jxf2008 C++17 表示你说啥
    allanzhuo
        8
    allanzhuo  
       2019-03-20 13:42:27 +08:00
    8 的写法还没适应呢==!
    Kilerd
        9
    Kilerd  
       2019-03-20 14:06:19 +08:00
    pattern matching 该来的还是要来。 哈哈哈
    Procumbens
        10
    Procumbens  
       2019-03-20 14:09:59 +08:00
    @jxf2008 C++20 表示不服
    cuebyte
        11
    cuebyte  
       2019-03-20 14:14:34 +08:00
    @Kilerd 和 pattern matching 不沾邊吧,只是接近 kotlin 的那種。Java 要做類型推導可不是一朝一夕的事。
    DesmondLiu90
        12
    DesmondLiu90  
       2019-03-20 14:22:26 +08:00
    貌似 java 程序员不需要
    boris1993
        13
    boris1993  
       2019-03-20 14:30:33 +08:00 via Android
    同样只跟 LTS

    目前还在学 Java 8 的 Stream 和 Lambda

    等用得上 11 了再学 11
    jxf2008
        14
    jxf2008  
       2019-03-20 14:35:56 +08:00
    @saluton
    @Procumbens

    现在很多编译器 14 都不支持。。。。

    又:CSDN 的赵 4 老师前几天还在推荐 VC6.0,我真的很好奇他到底是做啥工作的
    xomix
        15
    xomix  
       2019-03-20 14:40:36 +08:00
    @jxf2008 那个赵四我也觉得很奇怪好似穿越来的人一样,可能是二十几年前高级开发人员吧
    SuperMild
        16
    SuperMild  
       2019-03-20 14:53:48 +08:00
    Kotlin, 真香.
    neoblackcap
        17
    neoblackcap  
       2019-03-20 14:53:54 +08:00
    @jxf2008 11 还是可以的,很公司都开始接受 11,更高的就难说了,说起 11,那也是 8 年前的产物
    zhuanggu
        18
    zhuanggu  
       2019-03-20 15:02:47 +08:00
    JDK 8 还没学完😢
    yizmaoaa
        19
    yizmaoaa  
       2019-03-20 15:44:34 +08:00
    JDK 12 把多行字符串给毙掉了,还是有点可惜的。
    coang
        20
    coang  
       2019-03-20 15:50:31 +08:00
    然而基本是 jvm 的更新.. 语法没有大更新..
    Raymon111111
        21
    Raymon111111  
       2019-03-20 16:03:40 +08:00
    语言不是重点, 多工作几年就懂了.
    philipjf
        22
    philipjf  
       2019-03-20 16:29:44 +08:00
    所以现在主流大厂生产环境用的是哪个版本?
    ukyoo
        23
    ukyoo  
       2019-03-20 16:52:35 +08:00
    安卓到现在只能兼容 8 的部分特性
    ostholz
        24
    ostholz  
       2019-03-20 17:26:58 +08:00
    Java 6 以后就再也不碰 Java 了。
    xuhaoyangx
        25
    xuhaoyangx  
       2019-03-20 19:23:29 +08:00
    kotlin 路过
    avalon0624
        26
    avalon0624  
       2019-03-20 21:01:41 +08:00
    只跟 lts , 现在生产环境还是 8, 慢慢来,跟得上
    forestyuan
        27
    forestyuan  
       2019-03-20 22:47:40 +08:00
    貌似 Java 现在要收费了吧
    heron518
        28
    heron518  
       2019-03-20 23:06:36 +08:00
    只能表示 JDK 8 之后没有在看过
    hhhsuan
        29
    hhhsuan  
       2019-03-20 23:39:15 +08:00 via Android
    @ukyoo 什么不兼容?
    mango88
        30
    mango88  
       2019-03-20 23:42:15 +08:00
    还在研究 java 8 的路过
    fansangg
        31
    fansangg  
       2019-03-20 23:53:21 +08:00
    kotlin 路过
    FLADIMIR
        32
    FLADIMIR  
       2019-03-20 23:54:51 +08:00 via Android
    没必要,我觉得 Java8 就 OK 了
    ibcker
        33
    ibcker  
       2019-03-21 00:14:23 +08:00
    楼上的,你们有人听过 swift 么?逃...
    ericgui
        34
    ericgui  
       2019-03-21 01:22:15 +08:00
    @jxf2008 其实是有道理的,这几年吧,我特别讨厌各种东西都飙版本,但 C++似乎很多公司还在用 C++98 什么的,当然,这个太落后了, 但 C++11 应该是主流的吧,所以 C++或许真的是个好选择
    xuanbg
        35
    xuanbg  
       2019-03-21 04:28:55 +08:00
    没看到 Java12 有什么需要学的新知识啊?不都是一些新功能吗??不是拿来用就行的吗???
    zkeeper
        36
    zkeeper  
       2019-03-21 07:55:31 +08:00
    转 Go 吧, 半年一个小版本, 哈哈
    bokchoys
        37
    bokchoys  
       2019-03-21 08:06:45 +08:00 via iPhone
    程序羊吗?
    lrh3321
        38
    lrh3321  
       2019-03-21 08:24:25 +08:00
    Kotlin 路过,语法糖吃着真香
    bobuick
        39
    bobuick  
       2019-03-21 08:47:39 +08:00
    话说现在 G1 生产普及到什么程度了,怎么感觉回头 ZGC 会像 G1 一样,还没怎么玩耍呢,就被后浪扑死在沙滩上了 =。=
    hellowes
        40
    hellowes  
       2019-03-21 08:49:11 +08:00
    没关系,JDK8 还没普及完了,JDK8 板载
    orangeD
        41
    orangeD  
       2019-03-21 08:49:19 +08:00 via Android
    还在用 6 的飘过
    weo0
        42
    weo0  
       2019-03-21 09:00:29 +08:00
    up 主 您好
    spotmini
        43
    spotmini  
       2019-03-21 09:25:01 +08:00
    现在才用 j8,2014 发布的,所以五年以后在学 12 也不迟
    MIMEIK
        44
    MIMEIK  
       2019-03-21 09:31:10 +08:00
    @ibcker 每次更新就像换了个语言(逃
    lhr_lovehoney
        45
    lhr_lovehoney  
       2019-03-21 09:43:15 +08:00 via Android
    @jxf2008 想不到那个赵老师这么出名
    NullWithMe
        46
    NullWithMe  
       2019-03-21 09:43:42 +08:00
    @Cat73 优秀
    murmur
        47
    murmur  
       2019-03-21 09:44:55 +08:00
    我们 java6 和 java8 还在混用,java12 那是遥不可及的梦
    q4336431
        48
    q4336431  
       2019-03-21 09:50:40 +08:00
    我有点想不通,升级这么快,有必要么
    darktutu
        49
    darktutu  
       2019-03-21 09:51:41 +08:00
    没整过 java 这个 C# 和 .net 版本快吗?
    gitbug
        50
    gitbug  
       2019-03-21 17:09:27 +08:00
    可以,但没必要
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2332 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:08 · PVG 00:08 · LAX 08:08 · JFK 11:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.