V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
SkyLine7
V2EX  ›  Java

有 jdk11 的开源项目吗(非 demo)

  •  
  •   SkyLine7 · Jan 7, 2021 · 4160 views
    This topic created in 1938 days ago, the information mentioned may be changed or developed.

    一直用的 jdk8,想学习一下 jdk11 的新特性. 1.jdk8 升级到 jdk11 性能提升大吗? 2.jdk8 升级到 jdk11 需要做哪些操作,改动的点? 3.jdk9 中的模块化拆包如何运用到真实的商业项目中

    21 replies    2021-01-12 15:05:01 +08:00
    hihanley
        1
    hihanley  
       Jan 7, 2021
    同样想了解
    hantsy
        2
    hantsy  
       Jan 7, 2021
    商业项目有什么,我可以帮升到 15 。
    echo1937
        3
    echo1937  
       Jan 7, 2021
    用 JDK15 跑了一下用 JDK8 开发的项目,啥问题也没发现,挺意外的。

    明年下半年一定要把开发环境迁移到 JDK17 。
    hantsy
        4
    hantsy  
       Jan 7, 2021
    关键语法上还是有差别的。Java 11 - 15 以后的一些小特性,还是不错。

    比如:Text Block, var, Map.of/List.of/Set.of, record 等。

    https://github.com/hantsy/spring-playground/blob/master/programming-models/webmvc-fn/src/main/java/com/example/demo/DemoApplication.java
    SkyLine7
        5
    SkyLine7  
    OP
       Jan 7, 2021
    @echo1937 有用到 jdk11 的新特性吗?
    hantsy
        6
    hantsy  
       Jan 7, 2021
    Java Module 目前大部分开源的项目已经添加 module 描述,包括 Spring 。

    一句话,不好用。

    目前 jmps 的依赖解析也比较松散,没有 module 描述也会自动解析。 到后面这规肯定会严格起来。
    SkyLine7
        7
    SkyLine7  
    OP
       Jan 7, 2021
    @hantsy 好的,老哥有这方面的项目吗
    hantsy
        8
    hantsy  
       Jan 7, 2021
    @SkyLine7 生产项目我早就上 Java 11 了。
    个人玩一直在尝试最新的 Java 。上面的连接 是 Java 15 写的,用了新语法( text block, record 等)。
    qwerthhusn
        9
    qwerthhusn  
       Jan 7, 2021
    从 Java8 到 11 升级不需要修改任何代码,语法上也基本上没有变化,我能想到的就是 var 了,不过这个你可以选择不用,我也很少用。module 也没使用,不影响使用 11 。

    反正我的感觉是 8 到 11 没有啥大的新东西可以用。

    升级的话,唯一可能需要注意的就是第三方依赖,有些依赖比较陈旧不支持 11
    xuweifeng1987
        10
    xuweifeng1987  
       Jan 7, 2021
    元旦节 jdk8---》 jdk11,一个字符都没改,完美
    echo1937
        11
    echo1937  
       Jan 7, 2021
    @SkyLine7 #5 我大部分情况下,是用 JDK15 的环境写 JDK8 的代码,

    JDK9,集合类型有了 copyOf 和 of 方法,但我还是在用 Guava,

    JDK10,局部变量支持类型推导 var,我还是习惯写全类型,或者使用 Lombok,

    JDK11,有了新的 HttpClient API,本想替换掉第三方的 HttpClient API,但是引入的包有附带依赖,那继续用吧,

    简单来说,需要一个适用的过程,我最喜欢的还是 Text Block 。
    hantsy
        12
    hantsy  
       Jan 7, 2021
    @qwerthhusn 8-》 11 细节上的东西还是有不少。
    1. var
    2. Collection 的 of 工厂方法
    3. Optional, Stream 等增强,更方便
    4. HttpClient, Flow(ReactiveStreams API 克隆)
    hantsy
        13
    hantsy  
       Jan 7, 2021
    @echo1937 record, sealed 都实用
    hantsy
        14
    hantsy  
       Jan 7, 2021
    @echo1937 实际项目中新 Java 版本运行有没有问题,丢给 CI 就好了。
    industryhive
        15
    industryhive  
       Jan 7, 2021
    java8 的 Hotspot 几乎已经优化到了极限,升级到 java11,性能提升很小,大概只有 16%。要想继续挖掘优化潜力,还得看 graalvm 。
    hantsy
        16
    hantsy  
       Jan 7, 2021
    @industryhive 对于开发而言,我没指望过性能提升。语言本身相关的语法的进化才是我关心的关键点。

    至于 16%嘛,我个人表示很怀疑。因为看过国内外的一些常见 Java 框架的使用的不同的 JDK 的 Benchmark 结果情况,基本不会有什么很大提高(大部分情况下差不多),个别测试反而 Java 8 占优势。

    为什么要升级,Java 11 写程序更爽,就这么简单。
    SkyLine7
        17
    SkyLine7  
    OP
       Jan 8, 2021
    @echo1937 好的,也就是说升级了版本,还是很多版本新特性没用上
    echo1937
        18
    echo1937  
       Jan 8, 2021
    @SkyLine7 #17 习惯是很可怕的东西,组里的有些同事,JDK8 的 Steam API 和 Lambda 都用不利索
    byte10
        19
    byte10  
       Jan 8, 2021
    @qwerthhusn 不是向下兼容吗,啥项目不能使用 11 运行。
    tmackan
        20
    tmackan  
       Jan 8, 2021
    Java8 不挺好吗。。。。
    SkyLine7
        21
    SkyLine7  
    OP
       Jan 12, 2021
    @byte10 很多第三方配置文件要改,jar 包要升级
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1228 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 17:39 · PVG 01:39 · LAX 10:39 · JFK 13:39
    ♥ Do have faith in what you're doing.