V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhdsuperm
V2EX  ›  Java

Java 新特性分享~弱弱问下各位现在用 Java 11 了吗?用的啥 JDK

  •  1
     
  •   zhdsuperm · 2020-08-05 13:37:55 +08:00 · 6802 次点击
    这是一个创建于 1352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司把新项目切到 java11 了,不知道坑多不多~,新的 http client 还挺好用的 感觉 Java 11 出来之后的其他新版本没有太多亮点了。

    Java 11 新特性
    Java 12 新特性
    Java 13 新特性
    Java 14 新特性

    52 条回复    2020-08-21 18:10:55 +08:00
    wangyanrui
        1
    wangyanrui  
       2020-08-05 13:41:20 +08:00
    没啥区别,没几个人用 var, 也没几个人用模块化 ~
    zzzmh
        2
    zzzmh  
       2020-08-05 13:47:08 +08:00
    目前用的 java8 openjdk
    没有为什么,就都挺好用,而且服务器内存很吃紧不敢轻易升级,怕出错了炸内存再往回改麻烦
    keshawnvan
        3
    keshawnvan  
       2020-08-05 14:07:39 +08:00
    之前公司从 Java8 升级到了 Java11
    改造成本挺高,实际效果一般
    luckyrayyy
        4
    luckyrayyy  
       2020-08-05 14:11:56 +08:00
    公司项目 8,个人项目 11,后面的没觉得太多有用的,也就预览版文本块和增强空指针有点感兴趣
    wanglulei
        5
    wanglulei  
       2020-08-05 14:20:14 +08:00
    公司一直再用 1.8
    yamasa
        6
    yamasa  
       2020-08-05 14:29:05 +08:00
    jdk 新的 http client 不是坑挺多的么?当时遇到几个很难诊断的,果断换回 apache http client 那一套了。后面用的 spring 的 webclient 也不错。
    yamasa
        7
    yamasa  
       2020-08-05 14:30:46 +08:00
    11 没多少语言上特性啊。。。var,还有 collection 的几个类终于有官方的 of()了。比较期待后面的 record 和新 switch,以及 fiber 。
    zhdsuperm
        8
    zhdsuperm  
    OP
       2020-08-05 14:33:45 +08:00
    @yamasa 是呀,挺好用的,不过 webclient 引入 web-flux 在一些包里面有冲突
    gz911122
        9
    gz911122  
       2020-08-05 14:35:19 +08:00
    感觉还是 okhttp 好用啊...
    用的人也多
    industryhive
        10
    industryhive  
       2020-08-05 14:56:58 +08:00
    等 java17 吧,明年下半年发布,project loom 和 project valhala 等应该能上了,还能安全访问堆外内存,不用写什么 unsafe 了,到时候 zgc 也应该转正了,还是挺期待的。
    lxk11153
        11
    lxk11153  
       2020-08-05 15:23:50 +08:00
    lxk11153
        12
    lxk11153  
       2020-08-05 15:24:33 +08:00
    append #11 等 java 15 中 see /t/682318
    wysnylc
        13
    wysnylc  
       2020-08-05 15:31:56 +08:00
    @yamasa #7 官方的 of 生成的是不可变集合和 map,小心吃亏
    wysnylc
        14
    wysnylc  
       2020-08-05 15:35:21 +08:00
    @industryhive #10 zgc jdk15 转正 9 月份发布 jdk15 https://openjdk.java.net/jeps/377
    lxk11153
        15
    lxk11153  
       2020-08-05 15:35:45 +08:00
    @wysnylc #13 有那种优雅的生成可变的集合 /map 的 库 /写法吗?
    wysnylc
        16
    wysnylc  
       2020-08-05 15:43:45 +08:00
    @lxk11153 #15 Stream 可以生成 list set map,注意的是如果要自定义初始化 map 而不是 list 转 map 就只能一个个 put
    注意不要用双括号去初始化 map,一个双括号就会生成一个子类
    ben1024
        17
    ben1024  
       2020-08-05 15:49:09 +08:00
    万年 1.8 的哇
    clf
        18
    clf  
       2020-08-05 15:57:32 +08:00
    JDK8 的提升相比 JDK6 来说已经满足了很多人的需要了,再往上升级感觉成本太大。

    个人而言,相比去学习 JDK11,我更愿花时间学 Kotlin 。
    avalon0624
        19
    avalon0624  
       2020-08-05 16:01:11 +08:00
    还没,还是 Java8 。个人项目倒是在慢慢迁移到 Java11 上。
    luozic
        20
    luozic  
       2020-08-05 16:02:31 +08:00 via iPhone
    为啥不 kotlin or 直接换 golang rust ?
    a719031256
        21
    a719031256  
       2020-08-05 16:05:24 +08:00
    肯定是 jdk8 了,后续的 jdk 版本都是特性上的提升,没有性能上的提升,升级高版本 jdk 不划算
    intmax2147483647
        22
    intmax2147483647  
       2020-08-05 16:08:48 +08:00
    我们在用 JAVA11,var 挺香的,大家都写 JS/TS 多了,对 JAVA 的语法要求也就多了,以后版本出的新特性也都很期待
    CoderGeek
        23
    CoderGeek  
       2020-08-05 16:10:21 +08:00
    个人都是最新的 有感觉 公司还是 8
    mosliu
        24
    mosliu  
       2020-08-05 16:17:18 +08:00
    1.8 很舒服。
    感觉没太大必要到 11
    等等看 zgc 从试验性毕业
    qwerthhusn
        25
    qwerthhusn  
       2020-08-05 16:29:16 +08:00
    jdk 11,发行版是 Amazon Corretto

    从 8 之后,语言变化上没啥明显的。

    var 语法我感觉用途不大,就省几个字母而已

    我认为比较有意思的一项就是
    var object = new Object() {string a; int b;}
    这个可以将一个变量 cheat 进入 lambda 或者匿名内部类中( Java8 想要一个修改过的变量进入 lambda,只能用数组或者其他容器包装一下)

    默认用了 G1

    JDK 自带的新 HttpClient 很新,API 感觉没有 OkHttp 或者 Apache 的好用。而且在 TLS 上还有 BUG (可能后来修复了)

    模块化没用过不知道。。。

    其实我挺期待,多行文本块的,那样的话写多行 SQL 等各种东西就很直观了。只不过下一个 LTS 普及要等很久,可能我都已经下岗了
    azkaban
        26
    azkaban  
       2020-08-05 16:42:30 +08:00
    jdk8 用到死,阿里现在一直把新版本优化往 8 里加,感觉升级也没啥必要
    luxinfl
        27
    luxinfl  
       2020-08-05 16:47:53 +08:00
    自从把 jdk7 切到 jdk8 之后,就再也没怎么关注后面的版本了,出的实在是太快了。
    lrj2u
        28
    lrj2u  
       2020-08-05 16:53:51 +08:00
    我倒是想问问,如果用了 jdk11 以上的版本,ZGC 用过没?表现怎样?
    zliea
        29
    zliea  
       2020-08-05 17:31:55 +08:00
    编译级别 1.8,运行环境 11,基础框架输出了 8 和 11 编译版本。
    rockyou12
        30
    rockyou12  
       2020-08-05 17:45:10 +08:00
    11 和以后的 jdk 中其实添加了很多实用的工具性的 api,还是很好用
    ChanKc
        31
    ChanKc  
       2020-08-05 18:58:40 +08:00 via Android
    API 好用了很多。类型推断很鸡肋,我不用。Java 9 开始多了的 jshell 非常好用。单纯为了这个就值得在开发环境升级
    supermoonie
        32
    supermoonie  
       2020-08-05 19:03:14 +08:00 via iPhone
    java11 写出 java8 的感觉🤪
    oneisall8955
        33
    oneisall8955  
       2020-08-05 19:04:51 +08:00 via Android
    模块化后会有问题,例如一些库需要手动添加参数
    dutianze
        34
    dutianze  
       2020-08-05 19:57:48 +08:00
    java11 openjdk
    碰到过一个 bug JDK-8212586
    cgpiao
        35
    cgpiao  
       2020-08-05 20:47:48 +08:00 via iPhone
    java15 就跟 kotlin 很像了
    sagaxu
        36
    sagaxu  
       2020-08-05 21:11:27 +08:00 via Android
    @gz911122 okhttp 不支持带 body 的 get 方法,某些 API 要求 GET 带 body,比如字节家的巨量

    @a719031256 后续版本 g1 gc 有改进

    @azkaban 老项目没有必要升级,新项目也没必要死守 8
    putaozhenhaochi
        37
    putaozhenhaochi  
       2020-08-05 21:37:24 +08:00
    @cgpiao 看来服务端没什么切换 kotlin 的动力了
    WebKit
        38
    WebKit  
       2020-08-05 21:44:20 +08:00 via Android
    改造成 Java 11 还不如改成 kotlin
    Nich0la5
        39
    Nich0la5  
       2020-08-05 22:48:46 +08:00 via Android
    8 公司要求
    yanzhiling2001
        40
    yanzhiling2001  
       2020-08-06 00:23:59 +08:00
    看到 jdk 我就过来了,www.injdk.cn
    Mirage09
        41
    Mirage09  
       2020-08-06 01:00:29 +08:00 via iPhone
    8,好像没见到我司用 11 的。
    Lonely
        42
    Lonely  
       2020-08-06 01:34:27 +08:00 via iPhone
    大部分只看语法的变化而忽视了 jvm 的改动
    cco
        43
    cco  
       2020-08-06 09:31:07 +08:00
    平时自己练习的项目用的 Java11,公司项目 1.8 。
    说实在的 scala 还是可以的,就是 sbt 太垃圾了
    varrily
        44
    varrily  
       2020-08-06 09:36:54 +08:00
    公司 11,个人 8,懒得升了。
    abcbuzhiming
        45
    abcbuzhiming  
       2020-08-06 09:39:03 +08:00
    @lrj2u ZGC 的表现如何我不知道,但是在我这里有一个奇怪的现象:jdk11 启动 Spring 项目就是不如 jdk8 快,总是要慢个 1-2 秒,网上找也没找到答案。
    zhady009
        46
    zhady009  
       2020-08-06 09:52:54 +08:00
    @abcbuzhiming 为啥我这里测试和你相反..jdk11 更快
    而且之前测试过 jdk11 的 stream 耗时更加平均 jdk8 的第一次跑就很慢
    gz911122
        47
    gz911122  
       2020-08-06 10:24:54 +08:00
    @sagaxu
    get 带 body 也太魔鬼了.
    这么写接口不会被前端 /客户端打死吗
    newmlp
        48
    newmlp  
       2020-08-06 11:32:11 +08:00
    @ChanKc 如果返回值是模板套模板,那类型推导不是很香吗
    rykinia
        49
    rykinia  
       2020-08-06 15:37:24 +08:00
    @gz911122 其实 http 协议的设定就是任何请求都可以带 body
    gz911122
        50
    gz911122  
       2020-08-06 16:21:46 +08:00
    @rykinia 是的 , 设定是这样没错
    cheng6563
        51
    cheng6563  
       2020-08-09 22:40:18 +08:00
    想要个?.
    b2byco
        52
    b2byco  
       2020-08-21 18:10:55 +08:00
    JDK11 以上,其实 jdk9 开始 hotspot 在系统装了 GB18030 support package 后会因为字符集问题启动 VM 失败,OpenJ9 没有问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2405 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 16:11 · PVG 00:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.