Java 即将迎来转折点?

嵌入式 Java

我并没有看到这个领域有什么变化。Oracle 完全放弃了在该领域的开发,已经不再提供支持非常流行的 ARM 架构的嵌入式应用程序的二进制文件了。

但是,我预测今年嵌入式应用程序中的 Java 应用将会增长。主要原因有三个:

Java ME

我觉得已经可以说,Java ME 已经死了。虽然去年 Java ME 工作组还做过一些工作将其移植到 JCP 下,但这项工作会在三月份停止。似乎 V2COM 是唯一一家对这个方向有兴趣的公司,他们应该是在与 Eclipse 基金会合作这个项目。

我对于今年的预测是,Java ME 不会再有任何开发,也不会有任何真正的应用再使用它。我都怀疑我在 2020 年的预测中是否还会提及它了。

Java EE(现在是 Jakarta EE)

2018 年是企业级 Java 统合的一年,必要的知识产权、代码和测试都从 Oracle 移交给了 Eclipse 基金会。

Eclipse 基金会现在在努力制定标准流程的细节方面,从而替代一直使用至今的 JCP 的流程。因此,这个领域我认为不会有任何重要的开发。一个可能的例外就是微服务和 MicroProfile。考虑到这种架构方式的流行,我认为 Java 在这个领域会出现很多进展。

Java SE(Core Java)

我认为,去年年初我们本应有两个 Java 的主要版本。考虑到 OpenJDK 项目的发布预定版,我甚至都不需要水晶球就能预测!好消息是,这个流程非常顺利。Java SE 10 和 11 都如期发布了,必要的 JSR 也同时被创建、审查并得到了通过。伴随这一点,JCP 已经完成了 JSR 过程(通过 JSR 387),因此整个流程变得更简单。

今年,我预言会有至少两个主要版本,JDK 12 和 JDK 13。同样,这并不意味着我有诺斯特拉达姆士(法国预言家)那种能力。JDK 12 已经蓄势待发,我也被邀请加入 Java SE 13 的专家小组,其他方面的工作也都在进行。

从技术的角度来看,我认为两个发布都是发展性的,而不是革命性的。JDK 12 带有一个全新的语言预览功能,即 switch 表达式。Raw string literals 也被计划加到 JDK 12 中,但由于最佳实现方式还需要进一步讨论,因此被撤下了。同样,这也证明了新的发布流程很有效。这个流程不会加入尚未完成的功能,而是将其延后到下一个版本。我的预测是,这个功能即使在 JDK 13 中也无法做好。JDK 13 中我能看到的大多数改变都是幕后工作,因为该版本计划了更流行的功能,如 Valhalla 和 Loom。

Java Community Process(Java 社区过程,JCP)

我认为今年应该是 JCP 确立的一年。我代表 Azul 参加了大部分的 JCP 执行委员会(EC),所以我觉得我在这方面很有发言权。现在 Java ME 已经不存在,企业级 Java 已经移动到了 Eclipse 基金会,因此 JCP 中剩下的唯一重要的就是 Java SE 了。还有几个其他的 JSR 过程,但从 Java 平台整体来说这些过程并不重要。而且,在 Java SE 中,大部分本来由专家小组负责但工作都以 JDK 增强提案(JDK Enhancement Proposal,JEP)的形式移交给了 OpenJDK 社区。

不幸的是,这并没有留给 JCP 多少工作。执行委员会已经将面对面会议的次数从每年三次减少到了两次。我认为,在 JavaOne(或Oracle Code One或其他任何名字)开始之前,会议的次数会减少为一次。

JCP 对于 Java SE 依然至关重要,因为它提供了核心 Java 平台的正式规则——TCK,从而人们能够验证 Java 二进制文件是否遵循标准,而且更为重要的是,能给予那些提供替代版 Java 二进制发布的公司(如 Azul)以合适的知识产权。

我认为,我们会在 JCP 中看到更多变化,更多的公司会直接参与进来。

JDK 二进制

说完 Java 的技术方面,接下来讨论今年最大的变动——Java 的分发方式,以及更为重要的更新方式。本月晚些时候我们将发布 JDK 8 和 JDK 11 的最后一个公开更新。尽管 JDK 11 是个长期支持发布(LTS),但这只是你使用 Oracle JDK 的情况,因为它已经采用了不同的授权方式。这意味着,你依然可以在开发和测试中免费使用 Oracle JDK,但无法在产品中免费试用。如果你想从 Oracle 获得免费的、能用于产品的二进制,就要获得 Oracle OpenJDK 二进制(从 jdk.java.net)。所有这些发布都不提供长期支持。

我的预测是,到今年年底,绝大部分 Java 用户都会放弃使用 Oracle JDK。一些组织(显然,Azul 也在其中)会提供 OpenJDK 的构建,同时提供多种形式的支持,包括从当前发布移植布丁等。

如果你还没有考虑今年该用哪个 Java 版本,那现在就该下决定了。从下个月开始,如果安全布丁对你来说很重要(它们的确很重要),你就得决定怎样获取它们了。

 为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html调用接口_Spring 自调用事务失效,你是怎么解决的?

前言" 相信大家都遇到一种事务失效场景,那就是 Spring 自调用,就是在 Service 方法内,调用另一个加 Transactional 注解的方法,发现事务失效,这时候你是怎么解决的呢? "1 事情回顾那是一个我忘了…

Java中AJAX工作原理是什么

AJAX 指异步JavaScript 及XML(Asynchronous JavaScript And XML)。 传统的Web应用允许用户填写表单(form),当提交表单时就向Web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个…

unity vscode没有智能提示_GAMES101课程环境搭建(Win10+VSCode)

最近B站上看到一个不错的图形学教程,复习下图形学知识挺好的。教程地址:GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili课程主页:GAMES101: 现代计算机图形学入门作业地址:往期作业汇总帖 - 计算机图…

Java中的变量、数据类型和运算符

1. java语言是一种强类型的语言,对各种数据类型都有明确的区分,而计算机使用内存来记忆大量运算时需要使用的数据,而当声明一个变量时,即在内存中划分一块空间存储数据,而变量类型决定划分内存空间的大小。 2.基本数…

python列表逐行写入excel_python表格数据到excel-想问下python3怎么将列表数据逐行写入excel表格呢?...

如何用python将数据写入excel表格 简介绍一下这两个库,先说xlrd,这个Excel比较,各种方法使用起来方便: bk xlrd.open_workbook(your.xls) sh bk.sheets()[-1] 上面两句就可以打开Excel表格中的一个sheet,sheets得到的…

10大最高效的Java库盘点

1. Java 标准库 不用怀疑,我说的就是Java标准库,很多人都低估了或者没有完全了解Java标准库,并且不知道如何在编程的时候使用它,有些人甚至都不用它,下面说一些Java标准库的简要说明 ● java.lang:总是默…

js 加入debug后可以进入controller_写给前端的 Nest.js 教程——10分钟上手后端接口开发

前言沉默了很久,一直都没发文章,有些惭愧。最近实习结束之后回了学校,提前开始做毕业设计了。对,就是毕业设计。近两个月把 React Native、Vue 3.0 和 Nest.js 都摸了一下,大概都摸懂了。鉴于掘金已经很多优秀的 Vue 3…

java new一个对象的过程中发生了什么

java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。 我们先假设是第一次使用该类,这样的话new一个对象就可…

2019年GitHub上最热门的Java开源项目

1JavaGuide https://github.com/Snailclimb/JavaGuide Star 22668 【Java学习面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。 2advanced-java https://github.com/doocs/advanced-java Star 7752 本系列知识出自中华石杉,可以作为互联网 Java 工程…

ecplice中class.forname一直报错_A6v5.1升级A6v7.0报错:调用Java代码

一 背景在升级7.0过程中,针对以前SQL2000数据库(主要是以前U3升级上来的账套)会出现java调用失败的情况,导致老版本的账套无法正常升级到最新的版本。错误提示:【com.aisino.a6.update.plugin.ViewsUpdatePlugin】升级业务数据出错升级报错图…

理解 Java 核心基础精髓

1、字符串不变性 下面这张图展示了这段代码做了什么 String s "abcd"; s s.concat("ef"); 2、equals() 方法与 hashCode() 方法的区别 HashCode 被设计用来提高性能。equals() 方法与 hashCode() 方法的区别在于: 如果两个对象相等(equa…

支付退款流程设计_电商订单系统,你该如何设计

文章来自:https://baijiahao.baidu.com/s?id1602959656926168475&wfrspider&forpc作者:人人都是产品经理点击加入:PHP自学中心技术交流微信群商务合作: 请加微信(QQ):2230304070精选教程推荐技术交流微信群我们在学习中单…

Java 对象之死

如何判断对象“无用”? 关于判断对象是否无用的算法,在JVM的发展过程中出现过两种算法:一种是引用计数和根集算法。 引用计数算法 例如下图中的object1的引用计数是2,GC的时候不回收,object6、object7引用计数为0&a…

python计算函数运行时间表_python计算一段代码的运行时间(类和函数)

使用python的timeit模块可以轻松的获得一段代码的运行时间。 一、获得一个类的运行时间:import timeit as ti gettime """ import time as t class MyTime: def __init__(self, go_time 0): self.go_time go_time if self.go_time 0: print(&quo…

图解Java常用数据结构

最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的. HashMap中的单链表是尾插, 而不是头插入等等, 后文不再赘叙这些…

python中怎么计算_python中的加减乘除运算

python中的加减乘除运算,是学习python入门的基础,是以后进行数学计算的关键部分。包括运算表达式的写法,运算规则,加减乘除,求余,求商等等。 工具/原料 python 电脑 方法/步骤 1 1.python中的加法运算&…

c++ 模拟拖动_2020电工(中级)模拟考试题及电工(中级)模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序2020电工(中级)模拟考试题及电工(中级)模拟考试题库,包含电工(中级)模拟考试题答案解析及电工(中级)模拟考试题库练习。由安全生产模拟考试一点通公众号结合国家电工(中级)考试最新大纲及电工(中级)考试真题…

12层的bert参数量_只需一个损失函数、一个超参数即可压缩BERT,MSRA提出模型压缩新方法...

来自武汉大学、北京航空航天大学和微软亚洲研究院的这项研究为模型压缩提供了新方向。机器之心报道,参与:魔王。论文链接:https://arxiv.org/pdf/2002.02925.pdf这篇论文提出了一种新型模型压缩方法,能够通过逐步模块替换&#xf…

常用的Java快捷键有哪些

不知道Java常用的快捷键在工作的时候是非常的耽误时间的,本篇文章小编就为大家稍微整理了一些常用的Java快捷键分享给大家。 Ctrl1或F2快速修复 CtrlD快捷删除行 ShiftEnter 快速切换到下一行,在本行的任何位置都可 CtrlF11快速运行代码 Alt上下键 快速移…

bootstrap文件不能被识别_如何使用npm安装bootstrap

经过我好多次的查询和实验,总结了一下在vue项目中使用bootstrap框架,npm安装注意。bootstrap中js插件依赖于jquery,所以在这之前必须安装jquery。jquery安装1、在package.json中添加一行代码:“jquery”: “^2.2.3”"depende…