Java 12 发布了,决定Java未来的三大主要项目!

如何用python开发“跳一跳”游戏【附源码】 jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。 阅读详情

Java 12 发布了,决定Java未来的三大主要项目!

Java 12 发布了,没有引起很大的讨论。对于 Java 这样一门成熟的语言来说,每一次更新似乎都无法满足庞大的 Java 开发群体与生态圈。再加上 Oracle 对 Java 耐人寻味的态度,Java 的未来会如何?
Java 的变化速度从未如此之快——如今,该语言的新版本每六个月就会发布一次。

而之所以能够实现如此重大的转变,自然离不开一系列专注于提高其性能与添加新功能的协作性项目的贡献。这些项目的目标可谓雄心勃勃。正如 JetBrains 开发者布道师 Trisha Gee 在 QCon 伦敦 2019 大会上所言,“Java 即将迎来很多超酷的东西。”

而发展道路中的以下三大主要项目,将有助于确定 Java 的未来方向。

一、Loom 项目

尝试改进 Java 语言的并发处理方式,或者说是在对计算机在不同指令集执行之间切换能力的探索。

甲骨文公司 Loom 项目技术负责人 Ron Pressler 在 QCon 伦敦 2019 大会上向希望编写软件以处理并发任务的 Java 开发者们提出了两种都不够完美的选项:要么编写无法通过扩展处理大量并发任务的“简单同步阻塞代码”,要么编写可扩展但编写难度极高且调试过程复杂的异步代码。

为了寻求解决这个问题的方法,Loom 项目引入了一种将任务拆分为线程的新方法——所谓线程,即是指计算机在运行指令时的最小可能执行单元。在这方面,Loom 引入了被称为 fibers 的新型轻量级用户线程。

他在大会上指出,“利用 fibers,如果我们确保其轻量化程度高于内核提供的线程,那么问题就得到了解决。大家将能够尽可能多地使用这些用户模式下的轻量级线程,且基本不会出现任何阻塞问题。”

利用这些新的 fibers,用户将能够扩展 Java 虚拟机(JVM)以支持定界延续(delimited continuations)机制,从而使得指令集的执行实现暂停以及恢复。对这些延续进行暂停与恢复的任务将由 Java 中的 ForkJoinPool 调度程序以异步模式处理。

根据说明文档所言,fibers 将使用与 Java 现有 Thread 类非常相似的 API,这意味着 Java 开发人员的学习曲线应该不会太过陡峭。

二、Amber 项目

Amber 项目的目标,在于支持“更小、面向生产力的 Java 语言功能”的开发,从而加快将新功能添加至 Java 语言中的速度。

这套方案非常适合自 Java 9 以来,以更快速度持续发布的各 Java 新版本。

目前,以下 JDK 增强提案(简称 JEP)正在进行当中,并隶属于 Amber 项目之内。

生字符串:

https://openjdk.java.net/jeps/326

生字符串使得开发人员能够更轻松地对文本进行适当格式化,且无需引入由转义字符带来的复杂性。

举例来说,开发人员不必使用
转义字符来表示换行符,因此在以下字符串中:

Hello

World

可以直接编写为:

`Hello

World`

而非原本的:

"Hello
World
"

该提案的说明文档中提到,这一变更将使得各类文本客串的输入变得更加简单,包括文件路径以及 SQL 语句等等。

如大家所见,生字符串应被包含在反引号之内。

用于 JDK API 的 Java 编译器 Intrinsic:

https://openjdk.java.net/jeps/348

此项提案将允许开发人员对需要定期调用的重要代码段进行性能优化。

具体来说,它允许开发人员将特定于 JDK 的方法指定为编译时内部化候选项,从而指示编译器对其性能进行优化。

考虑到在 Java 当中的重要意义,此提案的说明文档将 String::format 与 Objects::hash 作为编译时内部化方法示例。这些方法可以使用 @IntrinsicCandidate 进行注释,以指示编译器将其视为编译时内部化候选项。如此一来,JDK 的 javac 编译器即可通过修改创建出内部化进程的处理机制。

Pattern Matching:

https://openjdk.java.net/jeps/305

Pattern Matching 能够简化利用 Java 中 instanceof 运算符检查对象是否属于特定类的过程,而后提取该对象的组件以进行进一步处理。

如此一来,以下操作语法:

if (obj instanceof Integer) {
int intValue = ((Integer) obj).intValue();
// use intValue
}

将可被简化为:

if (x instanceof Integer i) {
// can use i here, of type Integer
}

Switch Expressions:

https://openjdk.java.net/jeps/325

Switch expressions 已经在 Java 12 当中以预览版形式推出,允许开发人员利用更简单的语法通过 switch 语句为输入内容指定不同的响应方式。

举例来说,现在我们不再需要始终在以下语法当中使用 switch 语句:

switch (port) {
case 20:
type = PortType.FTP;
break;
}

而可以采取以下更为简洁的表达方式:

Switch (port) {
case 20 -> PortType.FTP;
}

三、Valhalla 项目

Valhalla 项目专注于支持“高级”JVM 与语言功能的开发。

目前 Valhalla 项目的候选提案还比较有限,具体包括:

Value Types:

https://openjdk.java.net/jeps/169

此项提案旨在允许 JVM 处理一种新的类型,即 Value Types。

这些新的不可变类型将拥有与 int 等基元类似的内存效率,但同时又与普通类一样能够保存一整套基元集合。提案说明文档中指出,其目标在于“为 JVM 基础设施提供处理不可变与无引用对象的能力,从而实现使用非基元类型进行高效按值计算的目标。”

Generic Specialization:

https://openjdk.java.net/jeps/218

此项提案扩展了适用于泛型的具体类型,其中包括基元以及即将推出的 Value Types。

英文原文
https://www.techrepublic.com/article/future-of-java-programming-language-three-major-projects-on-the-horizon/

四、来自 Oracle 的警告

Java 8 是目前使用率最高的一个 Java 版本,发布于 2014 年,而 Oracle 对 Java 8 的官方支持时间持续到 2020 年 12 月,之后将不再为个人桌面用户提供 Oracle JDK 8 的修复更新;在 2019 年 1 月之后,不再提供免费的商业版本更新,届时想要继续获得 Oracle 的商业支持和维护,需付费订阅。

近日,Oracle 的销售代表发出的一封邮件引起了热议,该邮件称“Java 8 的非公开可用的关键补丁更新”将于 2019 年 4 月 16 日发布,拥有有效许可证的客户才可以享用。邮件继续称,如果没有安装这些更新,可能导致“你的服务器和桌面环境暴露且易受***。”

但在许多 Java 用户看来,这封邮件像是一种敲诈勒索或恐吓策略。

Java 12 发布了,决定Java未来的三大主要项目!

五、Oracle 撒手,OpenJDK 继续向前

虽然 Oracle 官方选择了不再支持,但 Java 社区却把担子接了下来。红帽 Java 平台团队的首席工程师 Andrew Haley 曾表示,红帽计划在 2023 年之前继续提供对 OpenJDK 8 的支持:

在我看来,这算比较正常的。几年前,OpenJDK 6 更新(jdk6u)项目被 Oracle 放弃,我接管了它,然后 OpenJDK 7 也发生了同样的事情。最后,Azul 的 Andrew Brygin 接管了 OpenJDK 6。由来自多个组织成员组成的 OpenJDK Vulnerability Group 就重要的安全问题进行协作。在广大的 OpenJDK 社区和我的团队(Red Hat)的帮助下,我们定期为关键 bug 和安全漏洞提供更新。我觉得这样的过程同样适用于 OpenJDK 8 和下一个长期支持版本,即 OpenJDK 11。

如果可以得到社区的支持,我很高兴能够领导 JDK 8 更新项目和 JDK 11 更新项目。

除了红帽以外,AWS 推出了 OpenJDK 长期支持版本 Amazon Corretto。阿里巴巴也开源了 OpenJDK 长期支持版本 Alibaba Dragonwell。

六、Java 老矣,尚能饭否?

Java 是最好的语言么?不是,因为在每个领域都有更合适的编程语言。

C 语言无疑是现代计算机软件编程语言的王者,几乎所有的操作系统都是 C 语言写成的。C++ 是面向对象的 C 语言,一直在不断的改进。

JavaScript 是能运行在浏览器中的语言,丰富的前端界面离不开 Javascript 的功劳。近年来的 Node.js 又在后端占有一席之地。Python 用于系统管理,并通过高性能预编译的库,提供 API 来进行科学计算,文本处理等,是 Linux 必选的解释性语言。

Ruby 强于 DSL(领域特定语言),程序员可以定义丰富的语义来充分表达自己的思想。Erlang 就是为分布式计算设计的,能保证在大规模并发访问的情况下,保持强壮和稳定性。Go 语言内置了并发能力,可以编译成本地代码。当前新的网络相关项目,很大比例是由 Go 语言编写的,如 Docker、Kubernetes 等。

编写网页用 PHP,函数式编程有 Lisp,编写 iOS 程序有 Swift/ObjectiveC。

一句话概括,能留在排行榜之上的语言,都是好的语言,在其所在的领域能做到最好。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

其一,语法比较简单,学过计算机编程的开发者都能快速上手。

其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等等。

最重要的一点是符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性,编译时检查,较为高效的运行效率,跨平台能力,丰富的 IDE,测试,项目管理工具配合。都使得 Java 成为企业软件公司的首选,也得到很多互联网公司的青睐。

没有短板,容易从市场上找到 Java 软件工程师,软件公司选择 Java 作为主要开发语言,再在特定的领域使用其他语言协作编程,这样的组合选择,肯定是不会有大的问题。

所以综合而言,Java 语言全能方面是最好的。

随着 Java 每半年更新一次的脚步,Java 的新版本中也出现了越来越多与其他语言相似的特性,博采众长的 Java,还能继续保持生机,你觉得呢?

GoldenDB 兼容模式冲突场景解析:MySQL 连接模式 vs Oracle 语法兼容 阅读详情

相关推荐

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 666

java 软件更新原理

Java 软件的更新原理主要涉及到软件版本管理和软件升级。 软件版本管理是指在软件开发过程中,通过维护不同版本的代码来支持软件的迭代开发和维护。这样,在软件发布新版本时,可以通过比较新版本代码与旧版本代码的差异,来确定新版本更新了哪些内容。 软件升级是指将软件从旧版本升级到新版本的过程。软件升级通常是通过在线更新或者手动下载安装包的方式完成的。在线更新时,软件会自动检查是否有新版本,如果有,则会自...

weixin_42601702的博客 474

【计算机组成原理实验】状态机实验

理解“状态机”概念,掌握“状态机”思想描述时序系统。通过下列三种基于D触发器的计数器结构,构建状态机的状态转移电路:环形计数器、扭环计数器和条件判断的扭环计数器。基于“状态机”原理,设计一个“交通灯”系统:控制红黄绿信号灯按照以下顺序循环点亮:“绿 黄 红 绿 ……”,红灯、绿灯和黄灯的亮灯持续时间可以通过拨码开关独立设置。红灯和绿灯是持续亮灯模式,黄灯则是闪烁亮灯模式。

Rover_jb的博客 1332

Java 21:有什么新变化?

【优快云 编者按】这篇文章详细介绍了Java 21 的新特性和改进。Java 21是新的长期支持(LTS)版本,其中包括了15个Java增强提案(JEPs)。其中最重要的特性之一是虚拟线程的最终化,这些线程的创建和调度成本较低,使并发应用程序的编写变得更容易。文章还介绍了一些新的预览特性,如字符串模板(用于字符串插值)、序列化集合(增强了 Java 的集合 API)、未命名模式和变量、未命名类和...

优快云资讯 4548

C/C++ 计算程序运行的时间

C/C++计算程序执行时间的方法,精度依次增加,推荐度也依次增加 1.#include <time.h> clock_t start, finish; double process_interval ; start=clock(); process(); //要计时的程序 finish=clock(); process_interval =(double)(finish-star...

stu_shanghui的博客 1020

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

2025 年 Java 核心技术全面升级与深度应用解析

通过掌握以上技术栈和实战经验,你将能够应对90%以上的Java校招技术面试,并在实际开发中快速上手企业级项目。建议结合在线编程平台(如LeetCode、牛客网)进行针对性练习,提升编程熟练度和问题解决能力。

sss191s的博客 1782

6G网络的关键技术、应用前景与挑战并存的科技征途

移动通信技术正以前所未有的速度迭代更新,而6G技术的研发进程渐渐成为了当前科技领域的热点。全球各国已纷纷将目光投向了充满想象的6G时代。本文将探讨全球6G技术研发的最新进展,以及6G技术的核心创新与潜在应用。

fiberroad的博客 2424

Java版本的更新迭代

以上展示了Java的主要版本及其关键特性。流行版本包括Java 8、Java 11和Java 17。Java 8因其稳定性和功能丰富仍被广泛使用,Java 11作为LTS版本被很多项目采用,Java 17是最新的LTS版本,推荐新项目使用。通过这些示例代码,开发者可以了解每个版本的新特性及其用法。

weixin_47260194的博客 1649

Qt for Android:基于libusb实现CH340x串口通信的高效开发方案

本文详细介绍了在Qt for Android环境下,基于libusb实现CH340x串口通信的高效开发方案。通过绕过Android高版本系统的权限限制,利用libusb+JNI技术实现稳定通信,适用于工业手持终端等场景。文章涵盖环境搭建、核心实现、常见问题解决方案及性能调优经验,帮助开发者快速掌握这一关键技术。

weixin_42715608的博客 427

别再手动挂载NPU了!手把手教你用Ascend-Docker-Runtime一键启动昇腾AI容器

本文详细介绍了如何使用Ascend-Docker-Runtime一键启动昇腾AI容器,大幅简化NPU设备挂载流程。通过环境变量ASCEND_VISIBLE_DEVICES,开发者可以灵活指定NPU设备,提升开发效率。文章还提供了安装配置指南、高级使用技巧和常见问题排查方法,帮助开发者快速掌握这一高效工具。

weixin_42662605的博客 253

2025-2026年Java语言最新进展与技术演进全景解析

Java近两年迭代聚焦语法简化、性能优化与场景适配,推出Java25LTS与Java26,实现从“传统企业级语言”向“现代化全场景语言”的转型。核心升级包括原始类型模式匹配、惰性常量、结构化并发、G1GC优化、HTTP/3支持、向量API增强及安全体系加固,全面赋能云原生、AI与高并发场景。通过精细化演进与生态协同,Java持续强化稳定性、安全性与开发效率,确立其在新兴技术领域的核心地位。

AHCYZG的博客 222

冰河木马实验(V8.4)

简述: 百科词条 冰河木马开发于1999年,跟灰鸽子类似,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,跟后来的灰鸽子等等成为国产木马的标志和代名词。 冰河的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。其中攻击者使用G-client.e...

野原新之助 1万+

今天,Java 12 正式发布了!

自 2 月 7 日开始,Java 12 / JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日,也就是今天——Java 12 正式发布了! 全面学python的时代,作为程序员你怎么看? https://edu.youkuaiyun.com/topic/python115?utm_source=csdn_bw Java 12新特性 ...

优快云资讯 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

技术更新的速度让人害怕,决定Java未来的三大主要项目是什么?

Java 12 发布了,没有引起很大的讨论。对于 Java 这样一门成熟的语言来说,每一次更新似乎都无法满足庞大的 Java 开发群体与生态圈。再加上 Oracle 对 Java 耐人寻味的态度,Java 的未来会如何?Java 的变化速度从未如此之快——如今,该语言的新版本每六个月就会发布一次。而之所以能够实现如此重大的转变,自然离不开一系列专注于提高其性能与添加新功能的协作性项目的贡献。这些项...

weixin_33725722的博客 425

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java12正式发布主要特性一览

原标题:版本帝Java 12 / JDK 12 正式发布,八大重大更新及部分代码示例 一、简介 去年九月,Oracle推出了一个长期支持的版本Java 11 (18.9 LTS),但是此次发布的Java 12是短期支持版本,可以在下一个版本发布之前获得Oracle的商业支持。自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日Java ...

郝伟老师的博客——大数据、并行计算与人工智能时代 1114

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java 12 正式发布,8大新特性!

自 2 月 7 日开始,Java/JDK 12 就进入了 RC 阶段。按照发布周期,美国当地时间 3 月 19 日,也就是北京时间 20 号 Java 12 正式发布了!...

Java技术栈,分享最主流的Java技术 6227

Java 12正式发布,新特性解读!

Java 12 如约而至,除了那些值得关注的特性,你也应该思考下 Java 的未来。在 Java 9 之前,当一个版本被宣布为首选版本,存在一个“培育”(bedded-in)新 GA 版本的重叠期。在此期间,上一个版本将会继续进行免费更新。为确保新旧版本间的干净切换,即便旧版本已不再是首选版本,通常也会继续维护 12 个月以上。但是随着 Java 版本发布更改为遵循严格的时间表后,事实上宣告了传统...

weixin_33921089的博客 88
上一篇: 在阿里干了5年招聘,这10条建议我必须分享给你!
下一篇: 豆瓣上9分以上的Java技术书籍——附知识整理
大G哥
博客等级 码龄9年 5303粉丝 1408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值