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

生产环境用比较新的 Java 版本,有遇到什么坑的吗?

  •  
  •   luckyrayyy · 2019-08-22 11:36:39 +08:00 · 8237 次点击
    这是一个创建于 1919 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想从 8 切到 11 了,不知道有没有什么风险。

    34 条回复    2019-08-23 11:59:08 +08:00
    ahmcsxcc
        1
    ahmcsxcc  
       2019-08-22 11:37:20 +08:00
    8 已经很新了吧
    weo0
        2
    weo0  
       2019-08-22 11:56:39 +08:00
    我都见过用 6 的。。。。
    fumichael
        3
    fumichael  
       2019-08-22 11:59:44 +08:00   ❤️ 1
    甲骨文律师信警告呗
    luozic
        4
    luozic  
       2019-08-22 12:05:54 +08:00 via iPhone
    license 除非用 openjdk 等
    wysnylc
        5
    wysnylc  
       2019-08-22 12:08:49 +08:00
    11 是 tls,有什么坑也轮不到你踩,或者说大部分人包括我和我们
    ben1024
        6
    ben1024  
       2019-08-22 12:13:22 +08:00
    生产没事别折腾
    abdiweli
        7
    abdiweli  
       2019-08-22 12:15:10 +08:00
    我们的一个项目还在 6 上
    anakinsky
        8
    anakinsky  
       2019-08-22 12:31:32 +08:00
    8 以后的版本不能商用了吧
    echo1937
        9
    echo1937  
       2019-08-22 12:33:58 +08:00
    @fumichael #3
    @anakinsky #8

    JDK 的免费版本,我知道的就有 6 个。
    zzf2019
        10
    zzf2019  
       2019-08-22 13:18:43 +08:00
    jdk 我昨天用 openjdk 遇到过坑,openjdk 太精简了,有些偏门的问题,直接无解,现在换成 oracle jdk,大了点,但是应该不会出现问题了
    Cbdy
        11
    Cbdy  
       2019-08-22 13:22:45 +08:00
    我司生产用这个
    https://adoptopenjdk.net/
    likaka
        12
    likaka  
       2019-08-22 13:46:03 +08:00
    没有升级理由
    Rwing
        13
    Rwing  
       2019-08-22 14:00:32 +08:00
    9 月份就出 13 了,然而很多人还在用 8 并且认为 8 很新 (狗头)
    CloudnuY
        14
    CloudnuY  
       2019-08-22 14:03:58 +08:00
    祖传 1.5 不说话🙊
    micean
        15
    micean  
       2019-08-22 14:05:00 +08:00
    就等着 13 了
    iPhoneXI
        16
    iPhoneXI  
       2019-08-22 14:05:59 +08:00 via Android
    8 新个鬼
    10 加上了 var 类型推断,11 是 lts
    LeeSeoung
        17
    LeeSeoung  
       2019-08-22 14:12:29 +08:00
    = =我觉得 10 以上的版本自己小项目玩玩还可以,大部分生产还是 8 为主,避免后面找人接坑一头雾水。。
    Cbdy
        18
    Cbdy  
       2019-08-22 14:33:16 +08:00
    @LeeSeoung compile level 8,跑在 Java 11 的 JVM 上,毕竟新版本性能、GC 提升明显
    monkeyk
        19
    monkeyk  
       2019-08-22 14:50:09 +08:00
    都 8 已经 5 年了, 不计划更新 /
    echo1937
        20
    echo1937  
       2019-08-22 14:59:31 +08:00
    @zzf2019 #10 都是些啥问题啊,分享分享
    qwerthhusn
        21
    qwerthhusn  
       2019-08-22 15:50:55 +08:00
    tls1.3 支持的不是特别好,作为客户端如果连接到支持 tls1.3 的 http 服务时,偶现的握手失败,不过新的更新貌似已经解决了这个问题。。(因为 java11 出来的时候好像 tls1.3 还没最终发布,实现的草稿)

    jdk9 开始带的那个 HttpClient 建议也别使用,继续使用第三方的 http 库,也是多线程情况下出现线程永远卡死处于 WAITING 状态(不知道跟 HTTP2 有没有关系),JDK 的 JIRA 上有不少 HttpClient 相关的 BUG,特别是跟 TLS1.3/HTTP2 相关的

    其余的没发现啥问题,用的 amazon corretto
    guisheng
        22
    guisheng  
       2019-08-22 15:52:40 +08:00
    11 可以自己创建项目玩,不建议直接上生产
    xuanbg
        23
    xuanbg  
       2019-08-22 15:54:27 +08:00
    上 11 的话,很多 8 的代码都要改。。。然后就怂了
    qwerthhusn
        24
    qwerthhusn  
       2019-08-22 15:57:29 +08:00
    HttpClient 的 BUG,使用默认的 API,没瞎设置什么参数,最后所有的线程都卡死在这里

    "XNIO-1 task-3" #58 prio=5 os_prio=0 cpu=214.82ms elapsed=61392.57s tid=0x00007fabf404a800 nid=0x1a972 waiting on condition [0x00007fac577fc000]
    java.lang.Thread.State: WAITING (parking)
    at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
    - parking to wait for <0x000000008994e000> (a java.util.concurrent.CompletableFuture$Signaller)
    at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:194)
    at java.util.concurrent.CompletableFuture$Signaller.block([email protected]/CompletableFuture.java:1796)
    at java.util.concurrent.ForkJoinPool.managedBlock([email protected]/ForkJoinPool.java:3128)
    at java.util.concurrent.CompletableFuture.waitingGet([email protected]/CompletableFuture.java:1823)
    at java.util.concurrent.CompletableFuture.get([email protected]/CompletableFuture.java:1998)
    at jdk.internal.net.http.HttpClientImpl.send([email protected]/HttpClientImpl.java:541)
    at jdk.internal.net.http.HttpClientFacade.send([email protected]/HttpClientFacade.java:119)
    lzxz1234
        25
    lzxz1234  
       2019-08-22 16:12:33 +08:00
    8 -> 11,开发环境,尝试多次,每次坚持几个月就退回去了。。。
    liujialongstar
        26
    liujialongstar  
       2019-08-22 16:25:31 +08:00
    还在用 7
    yizmaoaa
        27
    yizmaoaa  
       2019-08-22 16:30:44 +08:00
    我是 zulu 的 12 目前没有发现问题
    yjxjn
        28
    yjxjn  
       2019-08-22 16:33:08 +08:00
    @Rwing 我们前一阶段才升级到 8.哈哈哈
    smilekung
        29
    smilekung  
       2019-08-22 16:56:20 +08:00 via Android
    11.0.1 httpclient 有一个 bug 会导致栈溢出 最新版已经修复 所以还是等几个版本修修 bug 吧
    zzf2019
        30
    zzf2019  
       2019-08-23 09:26:23 +08:00
    @echo1937 下面的人已经说完了,就是 httpclient 这个包大有问题
    echo1937
        31
    echo1937  
       2019-08-23 09:30:50 +08:00
    @zzf2019 #30 那还是继续用第三方 HttpClient 吧
    cco
        32
    cco  
       2019-08-23 10:11:50 +08:00
    openjdk8 目前很稳。
    0xljh
        33
    0xljh  
       2019-08-23 10:13:55 +08:00
    用 adoptopenjdk11
    Aresxue
        34
    Aresxue  
       2019-08-23 11:59:08 +08:00
    生产用 8 吧,如果用户量不大而且稳定性要求不高(项目本身就是技术升级试点)可以试试 11,类型推断还不错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5431 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:42 · PVG 14:42 · LAX 22:42 · JFK 01:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.