Java线程清理程序项目再次提出

如果获得批准,OpenJDK的工作将帮助开发人员发现HotSpot JVM和JVM工具界面中的数据竞争条件

如果提出的线程清理程序能够实现,那么Java开发人员就会在他们的项目中遇到竞争条件。

在OpenJDK社区中提出的项目Tsan将探索并孵化一个线程消毒功能,该功能将集成到HotSpot JVM和JVM工具界面中。

[ 15个Java框架,为开发人员提供了帮助。• 哪些工具支持Java的新模块化功能。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
线程清理会让Java用户看到数据竞争条件。在数据竞争中,多个线程访问共享数据并尝试同时更改它,从而导致错误和意外的行为。

该项目由谷歌的Jean Christophe Beyler提出,他说Google平台团队已经在内部开展了一个线程清理项目。项目Tsan线程消毒提案遵循以前的两个提议,也是Beyler提出的:2018年11月,他提出了 Atlantis,并于2018年7月提出了Java Thread Sanitizer。

Tsan项目将调查谷歌在线程消毒方面的努力是如何做得足够通用,以便推入主线Java项目。谷歌的努力也有可能因过于具体而被拒绝。

Oracle:Eclipse不能使用Java EE商标

但Oracle仍然致力于与Jakarta EE工作组和Jakarta EE规范流程合作

Java EE(企业版)迁移到Eclipse Foundation已经遇到了一些问题,Oracle不允许基金会使用Java规范商标。然而,正如一篇博客所暗示的那样,Eclipse执行董事Mike Milinkovich坚持认为Java EE并没有死亡,甲骨文也没有将其杀死。

[ 15个Java框架,为开发人员提供了帮助。• 哪些工具支持Java的新模块化功能。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
经过数月的“诚信”谈判,Eclipse基金会和负责Java EE的Oracle一直无法就使用Java EE规范当前使用的Java商标或修改javax包命名空间的条款达成一致,上周末公告说。Oracle的Java商标是该公司的财产,Eclipse无权使用它们。Milinkovich引用了Eclipse Foundation的Jakarta EE企业Java实现的含义:

使用javax包名称空间的Jakarta EE组件规范可能会从未来的Jakarta EE平台规范中完全省略。
该javax包名称空间可雅加达EE规范内使用,但也可以使用仅“按原样”。不允许修改。继续使用javax包命名空间的Jakarta EE规范必须保持与相应Java EE规范兼容的TCK(技术兼容性工具包)。
使用javax命名空间的任何规范将继续具有与以前相同的Java EE容器和认证要求。声称使用javax命名空间符合任何版本的Jakarta EE规范的实现必须测试并分发嵌入由Oracle许可的经过认证的Java SE(标准版)实现的容器。
规范必须从“Java EE”命名约定更改为“Jakarta EE”约定,包括诸如EJB(Enterprise JavaBeans),JPA(Java Persistence API)和JAX-RS(用于RESTful Web服务的Java API)等首字母缩略词。
当被问及由于与甲骨文的分歧而产生的潜在平台不兼容性时,Minkovich说需要开发这些技术问题的解决方案。雅加达EE工作组将于本周开始与社区进行讨论。例如,二进制兼容性可以通过在构建时,部署时或运行时执行字节码修改的工具来实现和提供。

Milinkovich预计未来的Java EE工作将不会使用javax命名空间,而是使用新的命名空间,例如jakarta。尽管遭遇了挫折,但仍将继续将Java EE迁移到Eclipse。Milinkovich指出,已经取得了一些进展,例如Oracle向Eclipse 提供了GlassFish应用服务器,它已经作为Java EE参考实现。批准的雅加达规范将在Eclipse许可下提供。继续在今年晚些时候发布雅加达EE 8版本。超越雅加达EE 8,计划雅加达EE 9。

甲骨文表示,它仍然致力于与Jakarta EE工作组和Jakarta EE规范流程合作,以创建Jakarta EE平台。但该公司承认它无法达成商标和使用协议javax。Eclipse于2017年9月继承了Oracle的企业Java开发。

Dubbo Java RPC项目毕业于Apache顶级状态

高性能,轻量级RPC框架提供容错,负载平衡,运行时路由以及自动服务注册和发现

Apache Software Foundation已将其基于Java的远程过程调用(RPC)框架Apache Dubbo从孵化器升级到顶级项目状态。Dubbo包括基于接口的远程调用,容错,智能负载平衡以及自动服务注册和发现。

[ 15个Java框架,为开发人员提供了帮助。• 哪些工具支持Java的新模块化功能。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
与其他RPC系统一样,Dubbo基于定义服务的概念,即指定使用其参数和返回类型远程调用的方法。在服务器上,Dubbo实现接口并侦听客户端调用。在客户端上,存根提供与服务器相同的方法。Dubbo的其他特性包括:

支持多种负载均衡策略,下游服务状态用于减少延迟并提高系统吞吐量。
支持可以离线或在线检测服务的服务注册表。
微内核和插件设计,可通过第三方实现扩展到核心功能,包括协议,序列化和传输。
运行时流量路由,可以对其进行配置,以便根据规则路由流量。这支持包括数据中心路由和蓝绿部署在内的功能。蓝绿色是与AB测试类似的devops的变更管理策略。
可视化服务治理,包括查询健康状况,服务元数据和统计信息等任务的工具。
运行Dubbo的最常见方式是在Spring Framework中,尽管Dubbo也可以在API配置中运行。达博由电子商务公司阿里巴巴开源,并被包括中国人寿和中国电信在内的其他公司使用。

您可以从Apache网站下载Apache Dubbo。

Pivotal使用受支持的Java发行版来回答Oracle

Pivotal Spring Runtime包括对Pivotal的OpenJDK发行版,Spring Java项目和Apache Tomcat的持续更新和支持

Pivotal提供支持的标准Java发行版,其中还包括Spring Framework和Apache Tomcat。该产品名为Pivotal Spring Runtime,按年订购,价格基于Kubernetes Pods或计算核心。

Pivotal Spring Runtime包是为响应Oracle关于Java Development Kit(JDK)发行版的新策略而提供的。在先前提供永久许可证和年度支持费用之后,Oracle已经开始要求为关键任务部署订阅商业Java支持。

[新的Java即将到来!了解Jakarta EE企业Java路线图。| 新的Java版本在这里!了解你需要知道的一切有什么用Java JDK 11的新功能和什么的Java EE 8的新功能。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
Pivotal Spring Runtime的组件包括:

Pivotal OpenJDK发行版,持续支持以及安全性和性能更新。
支持Spring项目,包括Spring Framework,Spring Boot,Spring Cloud和Spring Cloud Dataflow。
支持Apache Tomcat Java服务器。Pivotal支持开源Tomcat项目和自己的Tomcat分布式Pivotal tc Server。
该公司称,Pivotal Spring Runtime 为其整个Java生态系统提供了Pivotal的Spring Framework, Spring Boot,Spring Cloud和Spring Cloud Data Flow支持。Pivotal Spring Runtime支持Linux和Windows上的Java工作负载,包括裸机,虚拟机,容器和Kubernetes主机。

通过Pivotal Spring Runtime,Pivotal提供对Java 8和Java 11的长期支持,支持延续到2023年。因此,Pivotal Spring Runtime提供了Oracle流行的JDK发行版的替代方案。虽然甲骨文是最知名的Java发行版,但其他人也加入了竞争,包括IBM和Azul。

您可以 从Pivotal Network 下载Pivotal Spring Runtime。

MacOS针对新的Java图形管道

Lanai项目将使用Apple的Metal图形API而不是弃用的OpenGL

Java将根据Apple的Metal图形API获得一个基于Apple的新图形渲染管道,该项目名为Lanai Project,在OpenJDK社区中浮动。

Oracle和JetBrains的工程师们已经在探索Metal API,在JDK沙箱中研究概念和原型的证明。Metal被设计为OpenGL的长期替代品,作为Apple平台上的渲染管道,提供更好的性能和更简单的GPU设计。

新的Java即将到来!了解有关Java JDK 13中新功能的所有信息。| 了解Jakarta EE企业Java路线图。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。
Java Development Kit和OpenJFX目前使用OpenGL,Apple已弃用。目前,如果MacOS系统中不存在OpenGL,则JDK桌面API无法运行且无法启动。OpenJFX也处于类似的位置。拉奈的目标包括:

通过Metal API为MacOS创建Java 2D渲染管道,至少与当前的OpenGL管道一样。
为OpenFX开发类似的Metal管道。
一对拉奈项目建议书的公告强调,在JDK渲染管线是内部实现,所以拉奈不会制造或以其他方式暴露的Java API。甲骨文的Phil Race是Java 2D小组的负责人,预计将领导该项目。该项目的投票正在OpenJDK社区进行,直到2019年7月23日。

OpenJDK Mobile:将Java引入iOS的计划

浮动在OpenJDK社区的提案试图在Apple的iOS上快速启动Java。移动开发人员Gluon首席技术官Johan Vos表示,该计划涉及重新启动OpenJDK Mobile项目的工作,该项目旨在为iOS和Android构建OpenJDK类和API。

Vos最近发布了一份与这些努力有关的公告。OpenJDK Mobile的核心是在最新版本的OpenJDK源代码库中为iOS和Android提供相同的API,利用Java开发人员熟悉的工具。然而,第一个焦点是iOS,它缺乏对Java的传统支持。Apple不允许Java虚拟机在平台上运行。

[新的Java即将到来!了解有关Java JDK 13中新功能的所有信息。| 了解Jakarta EE企业Java路线图。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
OpenJDK Mobile的新计划需要使用GraalVM提前编译器在构建时编译代码。(Vos指出,即时编译不是iOS上的选项。)然后,编译的Java代码可以与为目标操作系统编译的本机库链接以创建可执行文件。这已经基于Java 11在iOS上完成了。使用GraalVM Native Images和OpenJDK类,开发人员可以创建遵循Apple规则的应用程序。Java开发人员不必学习Objective-C或Swift来编写iOS软件。

“虽然Java在移动游戏中可能会迟到,但它是跨平台的,以安全性为基础创建的事实,并且它允许与云服务的安全连接,使其成为移动开发的真正严肃语言, “沃斯说。

Java从一开始就用于Android开发。然而,Vos表示,Android不支持Java 11,需要自己的开发工具–Android Studio和程序。他说,许多开发人员在使用Android上的Java项目和库时面临严重问题。

此计划的一部分是OpenJDK master的同步分支,它将使用Project Skara创建。可以利用基于Skara的存储库为iOS和Android构建OpenJDK。

将Java引入iOS已成为过去十年中几个项目的目标。其他努力包括Gluon 自己的Eclipse插件 和现已解散的 RoboVM工具。

Eclipse企业Java将于2019年9月发布

Eclipse表示,Jakarta EE 8将与Java EE 8完全兼容,并为未来版本提供更好的云和微服务支持

Jakarta EE 8 是企业Java 的Eclipse Foundation实现,有望与Java Enterprise Edition 8完全兼容 ,预计将于2019年9月10日到货.Eclipse已经在GitHub上提供了Jakarta EE平台规范 。

该基金会本周报告了雅加达TCK(技术兼容套件)工作,雅加达规范项目名称和雅加达规范范围声明的进展情况。TCK 1.0流程文档预计将在不久的将来完成。本文档将涵盖诸如TCK必须具备的材料以便被认为适合提供便携性,挑战测试的过程以及解决它们等方面。

[新的Java即将到来!了解有关Java JDK 13中新功能的所有信息。| 了解Jakarta EE企业Java路线图。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题。]
雅加达EE工作中已包含数十个项目, 包括GlassFish应用服务器和Jakarta TCK。雅加达EE的未来计划包括与云端本地技术(包括Docker和Kubernetes)的更好集成以及对微服务的更好支持。Jakarta EE 9版本可能包括JavaServer Faces 3.0和EE Security 1.1等技术。

Eclipse于2017年从Oracle 接管了企业Java的开发。据报道,2019年5月,Eclipse未能获得使用 Oracle的Java规范商标的许可。Eclipse否认这意味着Jakarta EE的终结,但Eclipse无法修改javax包名称空间。基金会规范委员会尚未就甲骨文的限制程序达成共识。

此外,Eclipse正在寻求Java Community Process下所有EE规范贡献者的版权许可。这是为了确保Eclipse有权在基金会自己的流程下发展规范。

JDK 13:Java 13的新功能

Java 13的官方开发目标包括对垃圾收集,应用程序类数据共享和文本块的改进

Java Development Kit(JDK)13是标准Java的下一个版本,已经达到了第二个“减速”阶段,因此所有新功能都已被锁定。为JDK 13提出的一项功能,但从未添加到官方列表中,这是

jpackage
 用于打包自包含Java应用程序的  工具,但已经错过了。JDK 13不再考虑它。

[新的Java即将到来!了解  Jakarta EE企业Java路线图。| 新的Java版本在这里!了解你需要知道的一切  有什么用Java JDK 11的新功能  和  什么的Java EE 8的新功能。| 使用InfoWorld的App Dev Report简报了解编程中的热门话题  。]

JDK 13将于2019年9月17日到期。初始候选版本将于8月8日到期。以下是正式为JDK 13提供的功能:

  • 在预览阶段添加文本块。文本块是一个多行字符串文字,可以避免大多数转义序列的需要。文本块以可预测的方式自动格式化字符串,并使开发人员可以控制格式。该项目列举了为Java添加文本块背后的一些目标。一个目标是通过使表达跨越几行源代码的字符串变得容易,同时避免常见情况下的转义序列来简化Java程序的编写。第二个目标是增强程序中字符串的可读性,这些程序表示用非Java语言编写的代码。第三个目标是通过规定任何新构造可以表达与字符串文字相同的字符串集,解释相同的转义序列,并像字符串文字一样进行操作来支持字符串文字的迁移。 原始字符串文字是JDK 13提出的一个特性,但有利于文本块,它采用了不同的方法来表示字符串而不转义换行符和引号。原始字符串文字专注于字符串的原始性,但Java项目团队现在认为焦点是错误的,因为虽然原始字符串文字可能跨越多行源代码,但它们涉及支持未转义分隔符的昂贵要求。已经为JDK 13预测了原始字符串文字,但从未正式添加到其建议的功能列表中。
  • 重新实现传统套接字API,这将涉及使用 更简单,更现代的实现替换API 
    net.Socket
     和  
    java.net.ServerSocket
    API 使用的底层  实现,易于调试和维护。新的实现旨在易于适应使用用户模式线程(也称为光纤),这些线程正在Project Loom中进行探索  。上述传统API可以追溯到JDK 1.0,并且包含传统C和Java代码的混合,这些代码被描述为调试和维护的痛苦。遗留实现还存在其他问题:支持异步关闭,导致可靠性和移植问题的本机数据结构,以及需要彻底检查的并发问题。 
  • 已经为JDK 13提出了第二个switch表达式预览。在JDK 12中有一个  ,但是要进行一个更改:要从
    switch
     表达式中生成  一个值  
    break
     ,要删除with value语句以支持a  
    yield
     声明。目的是扩展,  
    switch
    以便它可以用作语句或表达式,因此两个表单既可以使用
    case ... :
     带有连贯符号的传统标签,也可以使用  新  
    case … ->
     标签,而不需要通过,还有一个新的语句用于从
    switch
     表达式中产生值  。这些更改将简化编码并为模式匹配做好准备  。 
  • 增强  ZGC(Z垃圾收集器)  以将未使用的内存返回到操作系统,引用的提议被集成到JDK 13中.ZGC被称为可扩展的低延迟收集器,目前不会将未使用的内存返回到操作系统即使长时间没有使用内存。对于某些应用程序和环境而言,此行为并非最佳,尤其是那些需要关注内存占用的应用程序和环境,例如应用程序可能长时间处于空闲状态并与其他应用程序共享或竞争资源的容器或环境。
  • 扩展应用程序类 – 数据共享(AppCDS),以便在应用程序执行结束时动态存档类。存档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序和库类。该提案处于目标阶段,旨在提高AppCDS的可用性,并消除用户进行试运行以创建每个应用程序的类列表的需要。

在当前的减速阶段,优先级1到优先级3的错误将被修复,而优先级4和优先级5的错误将被删除。某些优先级1和优先级2错误可能会在批准后推迟。即将发布的阶段包括7月18日的第二个阶段和8月8日的首发候选人。

开始使用JDK 12中的新开关表达式! 了解如何使用语句和表达式一样  

if
,  
if-else
,  
switch
,  
for
,并  
while
 声明变量,做出决策,并在Java中遍历12]

哪里可以下载beta JDK 13版本

您可以   从jdk.java.net网站下载JDK 13版本。第一个JDK 13 beta版本可用于Linux,MacOS和Windows。