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

Java 11 发布啦!

  •  1
     
  •   Sinar · 2018-09-26 11:11:12 +08:00 · 12942 次点击
    这是一个创建于 2032 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    收费了
    socradi
        7
    socradi  
       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 还没摸透,要落伍啊
    onnfee
        11
    onnfee  
       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  
       2018-09-26 14:01:47 +08:00 via iPhone
    之前就研究了 奇葩的版本号 好像还有 java18 19 啥的 以后按照年份命名 三年一个 lts 坑爹啊
    qfdk
        30
    qfdk  
       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
        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
    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,所以每次都装两个……😂
    GTim
        84
    GTim  
       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   ·   我们的愿景   ·   实用小工具   ·   2779 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:17 · PVG 20:17 · LAX 05:17 · JFK 08:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.