Java 11 发布啦! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sinar
V2EX    Java

Java 11 发布啦!

  •  1
     
  •   Sinar 2018-09-26 11:11:12 +08:00 13770 次点击
    这是一个创建于 2641 天前的主题,其中的信息可能已经有所发展或是发生改变。
    94 条回复    2018-09-28 07:52:17 +08:00
    ddddad
        1
    ddddad  
       2018-09-26 11:20:33 +08:00
    嗯,可以升级了
    nicevar
        2
    nicevar  
       2018-09-26 11:20:47 +08:00
    一个个都成版本帝了
    wdlth
        3
    wdlth  
       2018-09-26 11:22:36 +08:00
    授权方式变了,法务部门又要笑了……
    glues
        4
    glues  
       2018-09-26 11:29:52 +08:00   4
    不好意思,我们的项目还在用 1.5
    mosliu
        5
    mosliu  
       2018-09-26 11:35:38 +08:00
    ZGC 不超过 10ms 感觉值得一试
    sagaxu
        6
    sagaxu  
       2018-09-26 11:37:43 +08:00 via Android
    收费了
    qfpZ2KhNsF23UGbN
        7
    qfpZ2KhNsF23UGbN  
       2018-09-26 11:40:09 +08:00
    java8 新特性都没用上,就出 11 了
    Violienk
        8
    Violienk  
       2018-09-26 11:41:40 +08:00
    国内用最多的肯定是 1.7
    jjianwen68
        9
    jjianwen68  
       2018-09-26 11:41:48 +08:00 via Android   1
    本地用 oraclejdk 开发,服务端运行使用 openjdk ?
    kyrre
        10
    kyrre  
       2018-09-26 11:43:03 +08:00
    感觉 java8 还没摸透,要落伍啊
    uuau
        11
    uuau  
       2018-09-26 11:49:11 +08:00
    LTS 值得研究一番啊!
    Hancock
        12
    Hancock  
       2018-09-26 11:50:10 +08:00
    。。。
    LeonKennedy
        13
    LeonKennedy  
       2018-09-26 11:52:20 +08:00
    同,8 还没捂热乎,11 都出来了
    Sinar
        14
    Sinar  
    OP
       2018-09-26 11:54:02 +08:00   6
    来自官网:
    重要的变化和信息
    以下是此版本的一些重要更改和信息。在某些情况下,这些发行说明中提供了有关下述更改的其他详细信息。

    Applet 和 Web Start 应用程序所需的部署堆栈在 JDK 9 中已弃用,并已在 JDK 11 中删除。
    如果没有部署堆栈,则已从支持的 JDK 11 配置列表中删除了支持的浏览器的整个部分。
    在 Windows 和 macOS 上可用于 JRE 安装的自动更新不再可用。
    在 Windows 和 macOS 中,在以前版本中安装 JDK 可选择安装 JRE。在 JDK 11 中,这不再是一个选项。
    在此版本中,不再提供 JRE 或 Server JRE。仅提供 JDK。用户可以使用 jlink 创建较小的自定义运行时。
    JDK 中不再包含 JavaFX。它现在可以从 openjfx.io 单独下载。
    Oracle JDK 不再包含 JDK 7,8,9 和 10 中提供的 Java Mission Control。它现在是一个单独的下载。
    以前的版本被翻译成英语,日语和简体中文以及法语,德语,意大利语,韩语,葡萄牙语(巴西),西班牙语和瑞典语。但是,在 JDK 11 及更高版本中,不再提供法语,德语,意大利语,韩语,葡萄牙语(巴西),西班牙语和瑞典语翻译。
    Windows 的更新包装格式已从更改 tar.gz 为.zip ,这在 Windows 操作系统中更常见。
    已更新的 macOS 包格式已更改.app 为.dmg ,这更符合 macOS 的标准。
    Jafee
        15
    Jafee  
       2018-09-26 11:54:21 +08:00 via iPhone
    等一个月后和 mojave 一起装。
    Sinar
        16
    Sinar  
    OP
       2018-09-26 11:55:01 +08:00
    JavaFX 迁移到: https://openjfx.io/
    xenme
        17
    xenme  
       2018-09-26 11:57:11 +08:00
    @Jafee 一个月后估计就出 12 了
    Sinar
        18
    Sinar  
    OP
       2018-09-26 11:58:50 +08:00
    Gradle 请升级到 4.8+ 版本
    Sinar
        19
    Sinar  
    OP
       2018-09-26 11:59:38 +08:00
    @xenme #17 233 那也没事,反正 LTS 还是 Java11
    Sinar
        20
    Sinar  
    OP
       2018-09-26 12:07:16 +08:00
    删除旧版本控制台以及 web 支持,Mac 操作如下:
    sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
    sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane
    Sinar
        21
    Sinar  
    OP
       2018-09-26 12:07:30 +08:00
    关于多 Java 版本切换(如下为 Mac 修改方式,其他系统类似):
    在终端配置文件( zshrc / bash_profile 等任意)添加:
    # Java
    export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
    export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
    export JAVA_11_HOME=`/usr/libexec/java_home -v 11.0`
    # 切换版本(在这里替换即可)
    export JAVA_HOME=$JAVA_11_HOME
    wdlth
        22
    wdlth  
       2018-09-26 12:16:52 +08:00
    不知道什么时候有 PPA 跟进
    baozq
        23
    baozq  
       2018-09-26 13:34:32 +08:00   4
    求别更新了,学不动了
    Yuicon
        24
    Yuicon  
       2018-09-26 13:37:36 +08:00
    lts 的版本出来了 可以把 9 和 10 一起看了
    kaedea
        25
    kaedea  
       2018-09-26 13:38:24 +08:00 via Android
    一步到位直接转 Kotlin 吧
    Sinar
        26
    Sinar  
    OP
       2018-09-26 13:40:20 +08:00   1
    @kaedea #25 好主意( Scala 表示情绪稳定 2333
    dbpe
        27
    dbpe  
       2018-09-26 13:40:41 +08:00   2
    Js 引擎被抛弃了...我我...我昨天刚引进去一个..
    Sinar
        28
    Sinar  
    OP
       2018-09-26 13:47:57 +08:00 via Android
    @dbpe 揉揉你(并发出了爽朗的笑声
    qfdk
        29
    qfdk  
    PRO
       2018-09-26 14:01:47 +08:00 via iPhone
    之前就研究了 奇葩的版本号 好像还有 java18 19 啥的 以后按照年份命名 三年一个 lts 坑爹啊
    qfdk
        30
    qfdk  
    PRO
       2018-09-26 14:19:16 +08:00
    @dbpe #27 完蛋了,还真是,上周刚公测了。 然后有计划升到 lts 长期维护版,惨了。那边的一个全是 Nashorn 渲染的,客户用所谓的 js 写了很多脚本,api 都是根据那边来的。 天啊啊啊啊啊。。。
    passerbytiny
        31
    passerbytiny  
       2018-09-26 14:25:26 +08:00
    @Sinar #13
    关于下面这句话,我有个问题,6 之后有中文?

    以前的版本被翻译成英语,日语和简体中文以及法语,德语,意大利语,韩语,葡萄牙语(巴西),西班牙语和瑞典
    语。但是,在 JDK 11 及更高版本中,不再提供法语,德语,意大利语,韩语,葡萄牙语(巴西),西班牙语和瑞典语翻译。
    passerbytiny
        32
    passerbytiny  
       2018-09-26 14:29:38 +08:00
    随便 Oracle 怎么发布,新项目用哪个版本,还是要看 Pivotal、Red Hat 以及它们管理的 Spring 社区和 Hibernate 社区用哪个
    bk201
        33
    bk201  
       2018-09-26 14:42:23 +08:00
    这随随便便的抛弃东西不是好习惯啊,你可以分离开做为一个附加模块多好.
    janxin
        34
    janxin  
       2018-09-26 15:07:46 +08:00
    @Sinar 版本随便发,用新版程序正常跑算我输
    Sinar
        35
    Sinar  
    OP
       2018-09-26 15:09:43 +08:00
    @janxin #34 从 Java9 开始,Java 已经放弃兼容性了
    Sinar
        36
    Sinar  
    OP
       2018-09-26 15:10:07 +08:00
    @passerbytiny #32 说得好,等框架了
    Sinar
        37
    Sinar  
    OP
       2018-09-26 15:18:54 +08:00
    @dbpe #27 给你看这个 https://github.com/junit-team/junit5/issues/1481 目前比较好的方式是换用 JVM 上的脚本语言( Groovy,Jruby 等),或者使用 GraalVM 这类的东西( https://www.graalvm.org/docs/reference-manual/polyglot/)
    lfzyx
        38
    lfzyx  
       2018-09-26 15:24:46 +08:00   1
    @Sinar Java 版本切换在 linux 上是用 update-alternatives 的
    Sinar
        39
    Sinar  
    OP
       2018-09-26 15:26:02 +08:00
    @dbpe #27 刚刚看了一下,GraalVM 明确支持 Java11 版本字节码,意味着程序可以直接跑在 GraalVM 上,而且现在已经有 Mac 和 Linux 的社区版了
    Sinar
        40
    Sinar  
    OP
       2018-09-26 15:34:30 +08:00
    @lfzyx #38 好的,如果 V2 提供修改回复的功能就好了
    Linux 相关切换版本:
    sudo update-alternatives --config java
    sudo update-alternatives --config javac
    sudo update-alternatives --config javadoc
    Sinar
        41
    Sinar  
    OP
       2018-09-26 15:35:14 +08:00
    @lfzyx #38 原谅我对 Linux 了解较浅(
    dbpe
        42
    dbpe  
       2018-09-26 15:46:13 +08:00
    @qfdk emmmmmm..真是个悲伤的故事...我是因为一些遗留的项目文件里 js 一些奇怪的数据结构(json 又不是 json)..自己构建树状结构数据麻烦..所以想用魔法打败魔法(js 打败 js)
    Terry05
        43
    Terry05  
       2018-09-26 15:59:32 +08:00
    看来是时候把项目升级到 Java8 了
    x66 data-uid=
        44
    x66  
       2018-09-26 16:43:28 +08:00
    授权方式变了,难道没有人关注一下吗?有没有大神能用通俗易懂的语言介绍一下跟之前有什么区别?
    https://www.oracle.com/technetwork/java/javase/terms/license/javase-license.html
    niuroumian
        45
    niuroumian  
       2018-09-26 17:25:51 +08:00 via iPhone
    不允许用来处理数据,不许用在生产环境,只能用来开发,构建原型系统
    Narcissu5
        46
    Narcissu5  
       2018-09-26 17:42:04 +08:00   7
    讲真的楼上一群 java8 都没吃透的实在搞笑么,这都 8012 年了。java 演进的太慢而不是太快,不然也不会有 lomok,kotlin 之类的流行。你们这样真的 35 就准备转行吧。

    另外 java 对于异步的支持真的太慢了
    starcraft
        47
    starcraft  
       2018-09-26 17:46:15 +08:00 via iPhone
    下一个生产环境真正的 lts 一定是 j8 了。这个版本实在太经典。
    niuroumian
        48
    niuroumian  
       2018-09-26 17:48:29 +08:00 via iPhone
    好比 Oracle 出了一款最新菜刀,此刀可以用来练习切菜,但是切的菜不能吃,给 Oracle 付费你才能吃
    SuperMild
        49
    SuperMild  
       2018-09-26 18:00:33 +08:00
    感觉授权变化是针对 Google 和 Andriod 的,以后收费就有理有据了。
    Sinar
        50
    Sinar  
    OP
       2018-09-26 18:10:02 +08:00
    @starcraft #47 同,电脑一套 Java8 一套 Java11,而且好多第三方的 JVM 语言还是以 Java8 为基础的
    dbpe
        51
    dbpe  
       2018-09-26 18:31:23 +08:00
    @Narcissu5 异步 Ver.X 那套能应付嘛?我没有这方面的经验..但是这个框架进入视野很久了.(没碰过) 但是还是想知道真正的场景下,能否应付..求大牛指教
    Sin
        52
    Sin  
       2018-09-26 18:33:40 +08:00
    是时候开始用 .net 了
    MeteorCat
        53
    MeteorCat  
       2018-09-26 18:34:05 +08:00 via Android
    龟缩 java7
    luopengfei14
        54
    luopengfei14  
       2018-09-26 19:02:41 +08:00 via iPhone
    @nicevar 全在刷版本号,连 Linux 内核也在刷
    myu7815
        55
    myu7815  
       2018-09-26 19:56:01 +08:00
    11 的小版本升级需要重新安装吗
    jamesxu
        56
    jamesxu  
       2018-09-26 20:20:35 +08:00 via iPhone
    bobuick
        57
    bobuick  
       2018-09-26 20:35:32 +08:00
    1.8 的半残 lambda, stream 用溜了没
    Sinar
        58
    Sinar  
    OP
       2018-09-26 20:36:29 +08:00
    @x66 #44 实际上就是,JavaSE 10 是最后一个可以免费商用的 Java SE 版本,JavaSE 11 只能免费做学习和测试,不能免费从事任何形式的商业活动。
    msl12
        59
    msl12  
       2018-09-26 21:37:13 +08:00
    随便你升,公司永远用的 1.8。
    sagaxu
        60
    sagaxu  
       2018-09-26 22:03:48 +08:00 via Android   3
    @Sinar #58 这个说法并不正确,11 和以前的版本一样可以商用,但是免费版只更新半年,等 12 发布后,11 的更新不再公开发布,只有付费用户才能获得 11 的后续更新。

    想继续使用保持更新的 oraclejdk 11,只能付钱。或者干脆使用 openjdk,有 redhat 等公司在维护。或者考虑 zulujdk。其实 linux 系统,用大公司发行版维护的 openjdk 也不错,不用担心安全问题。


    TL;DR 免费的 oraclejdk,包括 lts 在内,每个大版本只支持 6 个月了,没钱的改用 openjdk 去.
    Sinar
        61
    Sinar  
    OP
       2018-09-26 22:25:31 +08:00
    @sagaxu #60 哦哦哦,感谢!
    Dk2014
        62
    Dk2014  
       2018-09-26 22:29:43 +08:00
    今天 ubuntu 18.04 lxc 装默认的 java 直接 11 了
    我还专门找 ppa 换回 java8
    orm
        63
    orm  
       2018-09-26 22:55:59 +08:00 via iPhone
    刚看了一下,11 官方有 deb 格式的安装包了
    tairan2006
        64
    tairan2006  
       2018-09-26 23:05:34 +08:00
    @Sinar mac 上用 jenv 管理就行
    PythonAnswer
        65
    PythonAnswer  
       2018-09-26 23:30:52 +08:00
    Oracle 真是烦啊. 搞开源的都恨他.
    kyrre
        66/span>
    kyrre  
       2018-09-27 05:37:50 +08:00
    @PythonAnswer 对,所以新启项目连 mysql 都不用了,坚决用 PostgreSQL。
    Cbdy
        67
    Cbdy  
       2018-09-27 06:44:18 +08:00 via Android
    tls1.3 好评
    erosripe
        68
    erosripe  
       2018-09-27 07:49:25 +08:00 via Android
    是时候开发一个事务中间件,来搞 Java 了
    chocotan
        69
    chocotan  
       2018-09-27 08:51:07 +08:00
    不是说 openjdk 和 oraclejdk 除了协议不一样外,其他基本一样吗?
    Sanko
        70
    Sanko  
       2018-09-27 08:56:07 +08:00 via Android
    难道没人用 java10 么
    x66
        71
    x66  
       2018-09-27 09:01:47 +08:00
    @sagaxu 但是官网上有写 Oracle JDK11 不能用于进行任何数据处理或任何商业、生产,而没有提到半年的问题啊?

    Further, You may not:
    - use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;

    https: //www.oracle.com/technetwork/java/javase/terms/license/javase-license.html
    sagaxu
        72
    sagaxu  
       2018-09-27 09:17:57 +08:00 via Android
    @x66 oracle 还发布了一个 gpl+ce 的版本

    http://jdk.java.net/11/
    zhangwugui
        73
    zhangwugui  
       2018-09-27 09:23:01 +08:00
    还在用 JDK8 的路过。
    mrzhang76
        74
    mrzhang76  
       2018-09-27 09:30:37 +08:00 via Android
    本校教材还在讲 java7(ω)
    ZiLong
        75
    ZiLong  
       2018-09-27 09:33:48 +08:00   1
    @Narcissu5 @dbpe 昨晚 springone 大会上出了几个新项目,愿景是想把异步响应式编程带到 everywhere。关系型数据库的一步连接项目 R2DBC https://github.com/r2dbc
    ZiLong
        76
    ZiLong  
       2018-09-27 09:38:26 +08:00
    @x66 @niuroumian 不用担心,redhat 罩着,![adoptionjdk]( https://adoptopenjdk.net/)
    ixiaohei
        77
    ixiaohei  
       2018-09-27 10:16:23 +08:00
    @starcraft 然而 2019 年初公共更新结束。商业和生产要交钱才能继续更新。估计到时候捅几个漏洞看戏
    ixiaohei
        78
    ixiaohei  
       2018-09-27 10:17:48 +08:00
    @Sanko java 10 2018 年 11 月结束更新。你敢用么?
    wohenyingyu03
        79
    wohenyingyu03  
       2018-09-27 10:37:38 +08:00
    我还没懂原来 jdk 不包含 jre ?只有 jdk 的意思是只能编译不能运行?
    Sinar
        80
    Sinar  
    OP
       2018-09-27 11:10:53 +08:00
    @wohenyingyu03 #79 JRE 是单独的运行环境,JDK 是开发 + 运行环境(也就是内置了 JRE ),从 Java11 开始不再提供单独的 JRE,但你可以通过 jlink 指令创建属于自己的 JRE 通过组合模块的形式)
    LowBCoder
        81
    LowBCoder  
       2018-09-27 11:11:50 +08:00
    别更了,我真的学不动了!
    Sinar
        82
    Sinar  
    OP
       2018-09-27 11:15:06 +08:00
    @wohenyingyu03 #79 不同版本的 JDK 所携带的 JRE 也是不一样的,常见的有 Hotspot ( Oracle )和 OpenJ9 ( IBM )
    wohenyingyu03
        83
    wohenyingyu03  
       2018-09-27 11:18:36 +08:00
    @Sinar 谢谢解答,那原来提供了 jdk 还捆绑单独的 jre 的目的是什么呢?我以为 jdk 是不包含 jre,所以每次都装两个……
    yemoluo
        84
    yemoluo  
       2018-09-27 11:20:01 +08:00
    我前几天才刚写完 [Java 9]( https://www.twle.cn/c/yufei/java9/java9-basic-index.html) 的特性,还想着 Java 10 可以慢慢写,看来我的速度都赶不上官方的速度了

    现在还在一边慢慢肯 java 并发编程方面的知识,Java 11 的特性介绍,按照计划,估计要年底了。
    Sinar
        85
    Sinar  
    OP
       2018-09-27 11:32:50 +08:00
    @wohenyingyu03 #83 JDK 分为两部分,Java API 和 JRE,JavaAPI 就是我们常用的各种自带类和方法,但是写完的代码需要有东西运行和测试,就要依靠 JRE (调用 JVM )。开发的时候我们需要调用 JavaAPI 并用 JRE 运行。发布时,程序编译成字节码,就不需要依赖 JavaAPI 而直接在 JRE (调用 JVM ) 上运行了。所以,发布时直接捆绑程序和 JRE 即可,不需要把整个 JDK 都包含进去。
    还有一个情况就是,一些业务为了追求性能,已经无法满足 Java 代码和字节码的优化,于是开始对 JRE (尤其是 JVM ) 进行定制,就有了类似于 OpenJ9 这样的东西。
    Sinar
        86
    Sinar  
    OP
       2018-09-27 11:38:18 +08:00
    @wohenyingyu03 #83 至于之前版本的安装包捆绑 JRE,大概是为了生产环境测试 233,其实完全可以不安装
    southsala
        87
    southsala  
       2018-09-27 11:57:44 +08:00
    去趟雷吧,我上次升级买 sql 一大堆连接工具登不上
    earendil1412
        88
    earendil1412  
       2018-09-27 12:50:53 +08:00
    @passerbytiny Spring 5.1 已经支持了 java 11
    passerbytiny
        89
    passerbytiny  
       2018-09-27 14:40:16 +08:00
    @wohenyingyu03 JDK 捆绑 JRE 是 Sun 和 IE 的遗留。Java 早期版本是以 Applet 为亮点的,Applet 的运行环境需要安装到操作系统环境上的 JRE,为了最小安装,一般独立提供。而早期 JDK 的安装方式超级挫(实际上现在也很挫),必须要手动配置环境变量,意味着单独安装 JDK 的话,并不一定有操作系统认识的 JRE,所以 Sun 干脆提供了 JDK+可选的 JRE 的安装方式。
    passerbytiny
        90
    passerbytiny  
       2018-09-27 14:41:17 +08:00
    @earendil1412 #84 兼容性支持,不等于全面支持
    someonedeng
        91
    someonedeng  
       2018-09-27 15:10:58 +08:00
    zgc 10ms 听起来很有诱惑力。
    dbpe
        92
    dbpe  
       2018-09-27 18:26:59 +08:00
    @ZiLong 静待...
    stanjia
        93
    stanjia  
       2018-09-27 20:08:47 +08:00
    Oracle 果然,,, 要命
    dif
        94
    dif  
       2018-09-28 07:52:17 +08:00
    lambda 和 stream 都没写溜。。。用用 var。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2605 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 13:20 PVG 21:20 LAX 05:20 JFK 08:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86