Java 12 / JDK 12正式发布,你们公司还在用哪个版本?

虽然Java12已经发布,但是目前大部分公司还停留在Java8甚至Java7.6。Java9发布后去了解了下,大概就模块化编程比较吸引人。

现在我们公司大部分人还在用Java7,部分人用Java8的lameda,stream,localdate等与其他接口兼容转换比较心累。所以目前Java8是主流,6.7也比较用的多。

目前市场上使用的主流版本还是java 8,我们用的也是java 8。

虽然说各种新版本的出现会带来很多的新特性,但是有些新特性在实际工作中并不是那么好使。比如java 9里面的模块化带来的代价就非常高。

所以说升不升级其实取决于新版本带来的新特性以及使用这些新特性我们要付出的代价之间的取舍。如果只是纯粹的为了学习那么当然是直接升级了。

而且由于12才刚出来,我们肯定不能乖乖的去当小白鼠啦,就算升级也是直接升到11而不会选择最新版本。当然如果你就是头铁就是要尝鲜也不是不行,只是个人不建议。

感谢邀请!很荣幸回答您的问题,作为一名从事Java行业多年的开发工程师,很开心回答您的问题。

首先,在我们软件行业来说一般都有这么一个规则,开发环境类的软件版本一定不要用最老的,也一定不要使用最新版本的。为什么呢?

一般老版本的很多功能了都没有了,可能在开发中会导致你会找不到你需要的类,或者其他开发的错误;但是如果你用最新的话,可能版本还不太稳定,可能经常会出现这样那样的bug,但是因为是新版本,很少人使用,所以就算出现错误你自己可能解决不了,那就很尴尬了。

目前我们公司使用的是JDK1.8版本的,这个也是目前市场上的主流版本

因为JDK1.8不会很老,但是也不是很新,因为我知道可能很多老的系统还在用1.6或者1.7版本的,就算出现新版本也不会去及时更换,因为更换很麻烦,很多人不愿意去折腾。

希望我的回答能够帮助到你,有什么不同意见可在下方留言讨论!我是架构师之旅,欢迎您的关注!

Java从业有几年了,目前所在互联网大厂还主要用的是Java8。个人感觉java8挺好的,还有很多原因导致自己还没有开始java11的研究,更加谈不上java12的研究了。

对于技术的更新我的观点是:激进地研究,保守地引进。

在我看来Java的大版本更新,势必会带来很多编码上的改变,不过还是优先要保持业务代码的稳定性,在自己吃透且已经大规模应用的前提下引入可以大大降低风险。

谢邀!

最近这几年都在用java8,挺好用的,没打算换!11还没用上呢12就来了。

看看前几天官宣:

我们来分析分析看看加了哪些新功能:

  1. Shenandoah:低暂停时间的 GC(实验性功能)。新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行 evacuation 工作来减少 GC 暂停时间。使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是 200 MB 还是 200 GB,都将具有相同的暂停时间。

  2. 微基准测试套件。JDK 源码中新增了一套微基准测试套件,使开发人员可以轻松运行现有的微基准测试并创建新的基准测试。

  3. Switch 表达式(预览功能)。扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

  4. JVM 常量 API。引入 API 对关键类文件和运行时工件建模,特别是可从常量池加载的常量。在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用(JVMS 5.1)类型,它们能够描述每种可加载常量。符号引用以纯 nominal 形式描述可加载常量,与类加载或可访问性上下文区分开。有些类可以作为自己的符号引用(例如 String),而对于可链接常量,定义了一系列符号引用类型(ClassDesc、MethodTypeDesc、MethodHandleDesc 和 DynamicConstantDesc),它们包含描述这些常量的 nominal 信息。

  5. 只保留一个 AArch64 实现。删除了与 arm64 相关的所有源,同时保留 32 位 ARM 实现和 64 位 aarch64。

  6. 可中止的 G1 Mixed GC。如果 G1 Mixed GC 存在超出暂停目标的可能性,则使其可中止。

G1 及时返回未使用的已分配内存。增强 G1 GC,在空闲时自动将 Java 堆内存返回给操作系统。为了实现向操作系统返回最大内存量的目标,G1 将在应用程序不活动期间定期执行或触发并发周期以确定整体 Java 堆使用情况。这将导致它自动将 Java 堆的未使用部分返回给操作系统。而在用户控制下,可以可选地执行完整的 GC,以使返回的内存量最大化。


总的来,新特性侧重点在底层,对开发来说没有太大的帮助。GC有了新的算法(http://openjdk.java.net/jeps/346),大家可以在网上看到详细介绍。也希望openJDK版本更新不要这么频繁,只考虑自己新版本的炒作噱头而忽略广大用户的感受是有欠妥当的。大家觉得呢?

大狂客,七年软甲开发,三年架构经验,持续分享技术方面的见解,希望能够和同样喜欢技术的你沟通交流!

JAVA8是一个比较经典的版本,笔者一直在用这个版本,最近oracle宣布8停止商用,作为开发java应用程序超级多的阿里最近也有不少动作,比如即将开源openJDK的阿里版本,相信openjdk在未来会大肆推广使用。

2022-04-03

2022-04-04