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

做个小调查,有多少公司已经迁移到 JDK11 了?或者使用 OpenJDK?

  •  
  •   afirefish · 2020-03-05 11:15:12 +08:00 · 10506 次点击
    这是一个创建于 1484 天前的主题,其中的信息可能已经有所发展或是发生改变。
    66 条回复    2020-03-29 18:48:10 +08:00
    afirefish
        1
    afirefish  
    OP
       2020-03-05 11:16:20 +08:00
    或者使用 OpenJDK ?
    niuroumian
        2
    niuroumian  
       2020-03-05 11:18:00 +08:00 via iPhone   ❤️ 1
    zulujdk
    afirefish
        3
    afirefish  
    OP
       2020-03-05 11:22:01 +08:00
    @niuroumian 请教一下,和使用 OracleJDK 有任何区别吗?我看官网的描述是提供高度一致性。
    aaaafei
        4
    aaaafei  
       2020-03-05 11:32:39 +08:00
    jdk9 都还没升。感觉 8 之后的 stream 就能很好的满足我了。不清楚后面有什么新的特性。
    luckyrayyy
        5
    luckyrayyy  
       2020-03-05 11:35:06 +08:00
    我们有无关紧要的小项目用的是 11...上量的还都是 8
    hoichallenger
        6
    hoichallenger  
       2020-03-05 11:35:47 +08:00 via Android
    目前在用 adopt 的 11,还没出现过什么问题
    wupher
        7
    wupher  
       2020-03-05 11:42:41 +08:00
    自用的是 11,单位生产用的还是 8。

    貌似没有大问题。小的地方,有些额外的依赖类,需要手工添加在 pom 中。别的没大区别。
    xi_lin
        8
    xi_lin  
       2020-03-05 12:14:07 +08:00
    OpenJDK 性能差些
    hantsy
        9
    hantsy  
       2020-03-05 12:22:48 +08:00
    一直用 AdoptOpenJDK
    pzhdfy
        10
    pzhdfy  
       2020-03-05 12:28:19 +08:00
    JDK8 开发,加上 JDK11 兼容的代码(主要是 direct Bytebuffer 的 cleaner ),使用 jdk11 运行,G1 并行 full gc 感觉不错
    slyang5
        11
    slyang5  
       2020-03-05 12:30:13 +08:00
    @wupher 用上了 模块化了 ?
    sagaxu
        12
    sagaxu  
       2020-03-05 12:34:24 +08:00 via Android
    @xi_lin 8 之后性能一样了
    Zoro76
        13
    Zoro76  
       2020-03-05 12:40:54 +08:00
    还在用 jdk8
    Weixiao0725
        14
    Weixiao0725  
       2020-03-05 12:42:44 +08:00   ❤️ 2
    已经迁移到 Go 了。。
    laojin
        15
    laojin  
       2020-03-05 14:04:20 +08:00
    OpenJDK 8
    stlee
        16
    stlee  
       2020-03-05 14:27:47 +08:00
    还在用 8
    wupher
        17
    wupher  
       2020-03-05 14:51:59 +08:00
    自用项目,尚未使用模块化
    @slyang5
    rogerus
        18
    rogerus  
       2020-03-05 14:58:07 +08:00
    主要的生产系统还是 8。
    wysnylc
        19
    wysnylc  
       2020-03-05 15:05:42 +08:00   ❤️ 1
    8888888888888888
    Oktfolio
        20
    Oktfolio  
       2020-03-05 15:13:30 +08:00
    自用 Corretto 11
    yjxjn
        21
    yjxjn  
       2020-03-05 15:23:05 +08:00
    生产环境,1.8,部分老旧系统还在 1.6.
    自己自学 Java 还在用 8,够了。
    zzf2019
        22
    zzf2019  
       2020-03-05 15:28:25 +08:00
    openjdk 有些 jre 包没有,会让一些类报错,这是我项目经历过的血的教训
    infun
        23
    infun  
       2020-03-05 15:29:08 +08:00
    从 7 往 8 迁移中。。。WTF
    janus77
        24
    janus77  
       2020-03-05 15:30:26 +08:00
    jdk 稳定的很,如果不是为了新技术兼容和团队喜欢追升级,没人去升吧
    xiaowei0823
        25
    xiaowei0823  
       2020-03-05 16:00:19 +08:00
    openjdk version "1.8.0_242"
    OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)
    OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)
    ming7435
        26
    ming7435  
       2020-03-05 16:32:38 +08:00
    1.8 能用 1 万年
    passerbytiny
        27
    passerbytiny  
       2020-03-05 16:42:36 +08:00
    不需要调查,看下 spring boot 用得哪个就行了,目前的稳定版还是 8 : https://github.com/spring-projects/spring-boot/blob/2.2.x/spring-boot-project/spring-boot-parent/pom.xml

    master 的构建工具换 Gradle 了,这个我还不知道哪里看 java 版本。当然这也说明要准备从 Maven 切换 Gradle 了。
    chenyu0532
        28
    chenyu0532  
       2020-03-05 16:43:16 +08:00
    偶数的不才是 LTS 么。。奇数的你们也用??
    joyhub2140
        29
    joyhub2140  
       2020-03-05 16:51:08 +08:00
    @chenyu0532 java11 也是 LTS 啊
    beyondex
        30
    beyondex  
       2020-03-05 16:56:18 +08:00
    查了一下,JDK 8 是 2012 年发布的?反正 Java 是服务端语言,升级也不困难,为何还有这么多停留在 8 的?
    geekvcn
        31
    geekvcn  
       2020-03-05 17:02:41 +08:00
    @beyondex 首先 JAVA 不是服务端语言,什么端都能跑,你这点就有严重问题,其次,就算 JAVA 是服务端语言,就是因为是服务端,稳定第一,升级才需要做收益计算,如果升级不能带来收益,反而可能会导致不确定问题,鬼才升级,都是新项目用新版本,服务器上的老项目没人愿意动
    stevenkang
        32
    stevenkang  
       2020-03-05 17:58:43 +08:00 via Android
    我司生产还在 1.6,准备今年升 1.8
    huntcool001
        33
    huntcool001  
       2020-03-05 18:03:10 +08:00
    JDK 11 G1 默认开启后性能会提升一些吧. 其他感觉没啥必要.
    vitoliu
        34
    vitoliu  
       2020-03-05 18:47:01 +08:00
    JDK8 的调优做到了么?如果没做到,升了 11 线上 GC 出问题了你去踩坑噢?
    yanyueio
        35
    yanyueio  
       2020-03-05 19:02:16 +08:00 via Android
    @zzf2019 和这位大佬一样,用 open jdk8,但很多 jre 类库没有,需要 maven 自己引入。生产开发都是 8,虽然我了解 9,11。不明白用 11 开发,用 8 部署的,新的 feature 旧的运行时环境怎么兼容的?如果没有用到新 feature 那倒不如直接选 8 呢?
    dbpe
        36
    dbpe  
       2020-03-05 20:01:52 +08:00
    j8 没调优...想升 j11
    BBCCBB
        37
    BBCCBB  
       2020-03-05 20:04:12 +08:00
    @pzhdfy jdk11 里 clean 有啥新方法吗..
    BLF2
        38
    BLF2  
       2020-03-05 21:45:31 +08:00
    用 11 开发,编译的时候可以使用 jdk8 标准编译,然后就可以在 jdk8 上运行了,我们旧系统环境是 jdk7,但开发都是用 jdk8,然后编译的时候选 jdk7,然后在 jdk7 上运行
    jelipo
        39
    jelipo  
       2020-03-05 23:02:29 +08:00
    Java8 使用 OracleJDK,Java11 使用 AdoptOpenJDK,试了一些情景,OpenJDK 反而慢一点
    avalon0624
        40
    avalon0624  
       2020-03-05 23:21:40 +08:00
    还在用 8, 一直是 OpenJDK
    xuanbg
        41
    xuanbg  
       2020-03-06 00:04:41 +08:00
    @beyondex 怎么就不困难了。。。全部项目都要升级新版本 JDK,还要处理不知道多少兼容性问题。费时费力没什么眼面前看得到的收益,没人愿意干。

    怕的是哪个第三方库没有对应版本的话,那就真的是酸爽了。
    orm
        42
    orm  
       2020-03-06 00:49:08 +08:00
    $ java -version
    openjdk version "11.0.6" 2020-01-14 LTS
    OpenJDK Runtime Environment Zulu11.37+17-CA (build 11.0.6+10-LTS)
    OpenJDK 64-Bit Server VM Zulu11.37+17-CA (build 11.0.6+10-LTS, mixed mode)
    lc7029
        43
    lc7029  
       2020-03-06 02:24:19 +08:00   ❤️ 1
    生产仍然在用 1.4 路过。。。
    daveze
        44
    daveze  
       2020-03-06 08:20:35 +08:00 via iPhone
    已升 11,生产用 openjdk,开发用 jdk。
    MakHoCheung
        45
    MakHoCheung  
       2020-03-06 09:18:53 +08:00
    以后找下家公司薪资第二,是否用 java11 放第一
    huruwo
        46
    huruwo  
       2020-03-06 09:32:25 +08:00
    jdk8 战未来
    leafre
        47
    leafre  
       2020-03-06 10:21:35 +08:00
    JDK8
    joyhub2140
        48
    joyhub2140  
       2020-03-06 10:46:55 +08:00
    自用 jdk11,生产环境 8,不过有时候会对新旧版本语言特性产生混乱,所以今年需要把环境统一成 11 了。况且目前 java8->java11 的迁移,对于大部分中小规模的项目暂时还是无痛的,早日转总比等到 jdk8 结束支持再转好吧!
    ZZSZZSZZS
        49
    ZZSZZSZZS  
       2020-03-06 11:50:28 +08:00 via iPhone
    自用 OpenJDK,用的 vs 里带的那个版本
    Sendya
        50
    Sendya  
       2020-03-06 12:44:56 +08:00
    我司一个高量的对外 websocket 服务上了 jdk11 其他都还是 8
    afirefish
        51
    afirefish  
    OP
       2020-03-06 14:23:06 +08:00
    @ZZSZZSZZS vs 里面还内置了 jdk ????
    ZZSZZSZZS
        52
    ZZSZZSZZS  
       2020-03-06 15:04:03 +08:00 via iPhone
    @afirefish 安装的时候不是可以选择哪些组件吗😂,还内置了安卓 sdk 和 ndk 呢
    afirefish
        53
    afirefish  
    OP
       2020-03-06 16:05:13 +08:00
    @ZZSZZSZZS 看到了,是 android 用的 OpenJDK。。。我还以为 VS 能写 Java 了呢
    janxin
        54
    janxin  
       2020-03-06 16:32:52 +08:00
    6,不用谢
    jingege
        55
    jingege  
       2020-03-06 16:58:41 +08:00
    公司一般感觉都不太会升级吧。。。。因为也没有什么特别突出的特性让人有欲望升级的

    现在已经在用 go 了
    jimmyismagic
        56
    jimmyismagic  
       2020-03-06 19:11:28 +08:00
    一直在用 8,之后的没学过,也不会用,哈哈
    zouqiang
        57
    zouqiang  
       2020-03-06 20:11:20 +08:00
    openjdk 13
    tulongtou
        58
    tulongtou  
       2020-03-06 20:12:07 +08:00
    Jetbrains,最新的 IDE 都是 openJDK11
    jhsea3do
        59
    jhsea3do  
       2020-03-07 01:11:03 +08:00
    去年的项目要兼容 HPUX,AIX, 刚准备说 HPUX 最多支持到 JDK8, 结果翻了一下 HP 网页,居然发现对方来了一个飞跃性的突破...
    pzhdfy
        60
    pzhdfy  
       2020-03-07 14:02:36 +08:00
    pzhdfy
        61
    pzhdfy  
       2020-03-07 14:03:56 +08:00
    @BBCCBB
    不是新方法 而是 clean 的方法变了 没有兼容的代码直接拿到 jdk11 上运行会有 bug

    private static Cleaner lookupCleanerJava9(MethodHandles.Lookup lookup) throws ReflectiveOperationException
    {
    Class<?> cleaner = Class.forName("java.lang.ref.Cleaner");
    Class<?> cleanable = Class.forName("java.lang.ref.Cleaner$Cleanable");

    MethodHandle create = lookup.findStatic(cleaner, "create", MethodType.methodType(cleaner));

    Object theCleaner;
    try {
    theCleaner = create.invoke();
    }
    catch (Throwable t) {
    throw new RuntimeException("Unable to create cleaner", t);
    }

    MethodHandle register = lookup.findVirtual(
    cleaner,
    "register",
    MethodType.methodType(cleanable, Object.class, Runnable.class)
    ).bindTo(theCleaner);

    MethodHandle clean = lookup.findVirtual(cleanable, "clean", MethodType.methodType(void.class));

    return new CleanerImpl(register, clean);
    }

    private static Cleaner lookupCleanerJava8(MethodHandles.Lookup lookup) throws ReflectiveOperationException
    {
    Class<?> cleaner = Class.forName("sun.misc.Cleaner");
    MethodHandle register = lookup.findStatic(
    cleaner,
    "create",
    MethodType.methodType(cleaner, Object.class, Runnable.class)
    );

    MethodHandle clean = lookup.findVirtual(cleaner, "clean", MethodType.methodType(void.class));
    return new CleanerImpl(register, clean);
    }
    pzhdfy
        62
    pzhdfy  
       2020-03-07 14:07:37 +08:00
    另外个人观点 如果现状稳定 没有需求不建议老项目升级 风险较大
    我们遇到的问题是我们进程的堆有 200G,是个计算和内存密集型程序,容易发生 full gc, 原来可能暂停几十秒,使用 jdk11 后并行 full gc 一般控制在 3s 内
    cheng6563
        63
    cheng6563  
       2020-03-07 22:27:49 +08:00 via Android
    一直用的 centos 自带的 openjdk
    deef
        64
    deef  
       2020-03-08 11:06:55 +08:00
    一直在用 JDK8, 感觉近几年要是没什么重要的问题应该都不会升了
    zzzmh
        65
    zzzmh  
       2020-03-09 11:10:14 +08:00
    公司和自己都用 Openjdk8 感觉可以用到退休
    sunwei0325
        66
    sunwei0325  
       2020-03-29 18:48:10 +08:00
    新版任你发, 我用 java8
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1197 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:15 · PVG 07:15 · LAX 16:15 · JFK 19:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.