你知道这些鼎鼎大名的Java底层核心公司吗

在讨论Java虚拟机——JVM的时候,有几个知名的,不得不提到的JVM的产品和公司。

一、Oracle HotSpot:这是由Sun公司开发的虚拟机。它由最初的Classic VM开始,到推出崭露头角的Exact VM的虚拟机,是现代化高性能虚拟机的最初形态,如热点探测、两级即时编译器(GIT)、编译器与解释器的混合工作模式等,再到后来威震天下的HotSpot是一个目前使用范围最广的Java虚拟机,它是Oracle JDK和OpenJDK的默认JVM,是聊天时没有特殊指定时的缺省JVM。因为是“最正宗”,因其稳定性和性能而广受好评,虽然后来被Oracle收购,后来的发展也越来越厉害。

       HotSpot VM,它的热点代码探测能力,可通过执行计数器,找出最具有编译价值的代码,随后通知JIT编译器以方法为单位进行编译。这样子可以做到,如果某方法被频繁调用,将会触发标准编译和OSR(栈上替换)编译动作,编译器和解释器联动工作,可在最优化的程序响应时间与最佳执行性能中达到平衡,并且无须等待本地代码输出才能执行程序,即时编译器的时间压力也相对减小,有助于引入更多的代码优化技术。

二、BEA JRockit:专注于服务器端应用,内部不包含解释器,后来被Oracle公司收购。JRockit以其高性能而著称,特别是在服务器端应用中表现优异。全部代码都靠即时编译器编译执行,号称世界上最快的Java虚拟机。在被Oracle收购后,同HotSpot JVM合并后取名为HotSpot,从此彻底销声匿迹。

三、蓝色巨人IBM公司J9:定位与Hotspot接近,以高性能著称,适用于多种用途,包括服务器、桌面应用和嵌入式系统。如果部署在IBM公司自己的服务器上,号称是世界上最快的虚拟机。该JVM于2017年正式对外发布,名为Open J9,并交给Eclipse基金会打理。与HotSpot和JRockit并称为“三大商业Java虚拟机”。

四、Azul VM:由Azul公司开发,是一个开源的JVM,是与特定硬件平台绑定、软硬件配合的专有虚拟机,专注于低延迟、高吞吐量的应用场景。它在通用硬件平台上表现出色。所以针对HotSpot做了大量改进,性能非常之高。但是它只能运行在自己的系统以及硬件平台上。

五、Tobao VM,又名阿里JVM。2012年TaobaoVM 已经有一定名气。阿里巴巴作为国内Java最大应用商,应用集群规模达十几万甚至几十万,因此自研JVM很有意义。Taobao VM特点是在阿里产品上性能高,硬件严重依赖Intel的CPU,损失了兼容性,提高了性能。

六、Microsoft JVM:微软早在IE3浏览器中支持Java Applets并自研了Microsoft JVM,直到1997年遭到Sun公司起诉才放弃,从而windows都安装的HotSpot。直到2021年5月份,Microsoft基于OpenJDK重新带来了其产品化的JDK产品,内置其自研的JVM

七、Apache Harmony:https://harmony.apache.org,Java的世界哪离开得了Apache,曾在JDK 1.5、1.6时期Apache也来参和一脚,这款VM是IBM和Intel联合开发的开源JVM,后遭到Sun公司的抵制不给颁发JCP认证,无奈2011年黯然退场

八、Dalvik JVM:谷歌开发,应用于Android系统。它只能称作虚拟机, 并不能称为Java虚拟机,因为并未遵循规范。此VM从Android 5.0时被ART VM替换

九、Embedded VM:也叫KVM千字节虚拟机,应用于移动领域。Sun公司进军嵌入式领域的虚拟机,用于手机、Pad、汽车等领域,这就是“大名鼎鼎”的J2ME

这些JVM各有其特点和优势,选择哪个JVM取决于具体的应用需求和环境。

如果需要高性能的服务器应用,可以选择BEA JRockit或IBM J9 VM;而对于需要低延迟和高吞吐量的场景,则可以考虑使用Azul Zing。对于大多数通用用途,Oracle HotSpot仍然是最常用和可靠的选择。

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

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

相关文章

【elementui】记录手动控制el-table的排序图标高亮

当前elementui版本:2.8.2 vue2 场景:点击列头排序,入参传了排序相关的参数,但是列表的相关列排序图标没有高亮,其实多半是表格在不知道的地方自己又渲染了一遍,把排序高亮给弄没了,所以需要手…

C++设计模式--单例模式

单例模式的学习笔记 参见链接1&#xff0c;链接2 #include <iostream> #include <mutex>using namespace std;/*懒汉模式&#xff1a;只有在用到了才实例化对象并返回&#xff08;调用了对外的接口才会实例对象&#xff09;*/ /*构造函数私有化&#xff0c;只对外…

Linux实现双网卡绑定

1、介绍 linux 主机安装双网卡&#xff0c;共享一个IP地址&#xff0c;对外提供访问&#xff0c;实际同样连接两条物理线路到交换机实现平时双网卡同时工作&#xff0c;分流网络压力&#xff0c;同时提供冗余备份&#xff0c;监控&#xff0c;防止物理线路的单点故障。 配置双…

C语言 ——— 函数指针数组的讲解及其用法

目录 前言 函数指针数组的定义 函数指针数组的使用 前言 数组是存放一组相同类型数据的存储空间 关于指针数组的知识请见&#xff1a;C语言 ——— 指针数组 & 指针数组模拟二维整型数组-CSDN博客 那么要将多个函数的地址存储到数组中&#xff0c;这个数组该如何定义…

C++中的依赖注入

目录 1.概述 2.构造函数注入 3.setter方法注入 4.接口注入 5.依赖注入框架 6.依赖注入容器 7.依赖注入框架的工作原理 8.依赖注入的优势 9.总结 1.概述 依赖注入是一种设计模式&#xff0c;它允许我们在不直接创建对象的情况下为对象提供其依赖项&#xff1b;它通过将…

云仓技术带来的物流变革影响

1、实时可视性&#xff1a; 云仓技术使物流公司能够实时跟踪和监控货物在供应链中的位置和状态。这种实时可视性提供了更好的货物追踪和管理能力&#xff0c;同时也提高了客户服务的质量。 ———————————————————— 2、仓储优化&#xff1a; 云仓技术可以…

从0开始搭建vue + flask 旅游景点数据分析系统(四):编写前端首页【数据驾驶舱】

本期我们编写数据驾驶舱页面(Dashboard)这个页面。主要任务是引入echarts 组件编写数据驾驶舱页面。 视频教程后续会更新在我的B站&#xff1a;https://space.bilibili.com/1583208775?spm_id_from666.25.0.0 推荐从教程第一集开始从零开始学习&#xff1a;https://blog.csdn…

OpenCV中的圆形标靶检测——findCirclesGrid()(四)

这里把上一篇文章中分析的函数源码及其注释张贴出来,具体如下。 void CirclesGridClusterFinder::hierarchicalClustering(const std::vector<Point2f> &points, const Size &patternSz, std::vector<Point2f> &patternPoints) { #ifdef HAVE_TEGRA_…

实验室责任人员管理保障实训系统安全

在智慧校园的实训管理生态中&#xff0c;实验室责任人员的角色犹如精密机器中的关键齿轮&#xff0c;他们不仅是实验室安全与高效运转的守护者&#xff0c;更是实训教学质量的直接塑造者。这一角色的重要性&#xff0c;在智慧校园的数字化转型中得到了前所未有的凸显&#xff0…

将Git远程仓库中的项目迁移到另一个远程库, So easy

需求描述 将一个Git远程仓库中的项目迁移到另一个远程库, 这里的示例是将原来控管在 Bitbucket的项目迁移到GitHub。 当然,能想到的最简单的方式就是在GitHub创建一个新项目,然后把原来的文件 add, commit , push 。这样的话虽然代码是控管了,但是之前提交的历史记录并没有…

vue2,vue3项目无限滚动组件,支持滑动

参数说明 items&#xff1a;项目数组 stepTime&#xff1a;每一步滚动的时间间隔&#xff08;毫秒&#xff09; stepHeight&#xff1a;垂直滚动时每一步的高度 stepWidth:水平滚动时每一步的宽度 threshold&#xff1a;判断是否需要滚动的项目数量阈值 containerHeight&#x…

Linux系统配置STM32的开发环境(代码编辑,编译,下载调试)

常见的stm32开发都是直接使用keil-MDK工具的&#xff0c;这是个集成开发环境&#xff0c;包含了代码编辑&#xff0c;编译&#xff0c;下载&#xff0c;调试&#xff0c;等功能&#xff0c;而且keil还是个图形化操作工具&#xff0c;直接可以点击图标案件就可以实现编译下载啥的…

Tableau入门|数据可视化与仪表盘搭建

原视频链接&#xff08;up:戴戴戴师兄&#xff09;&#xff0c;文章为笔者的自学笔记&#xff0c;用于复习回顾&#xff0c;原视频下方有原up整理的笔记&#xff0c;更加直观便捷。因为视频中间涉及的细节较多&#xff0c;建议一边操作&#xff0c;一边学习。 整体介绍 可视化…

set,map(java)

前言&#xff1a;要了解set和map&#xff0c;首先需要对搜索树和哈希有一定的了解&#xff0c;才能进一步深入的了解set和map。 1.搜索树 &#xff08;1&#xff09;性质&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点值都小于根节点的值。 若它的右子树不…

【单机锁】实现原理

文章目录 1.互斥锁 sync.Mutex 的实现原理&#xff1b;1.1获取策略有如下两种&#xff1a;1.2sync.Mutex的方案1.2.1具体方案如下&#xff1a;1.2.2转换的条件&#xff1a;1.2.3运行的两种模式&#xff1a;1.2.4两种模式的转换条件1.2.5唤醒标识&#xff1a; 1.3源码走读 2. sy…

Android 异步编程:RxJava的基本使用以及搭配Retrofit一起使用

目录 Rxjava是什么如何使用Rxjava的知识点使用场景 一、是什么&#xff1f; RxJava是一个基于响应式编程&#xff08;Reactive Programming&#xff09;和观察者模式&#xff08;Observer pattern&#xff09;的Java库。它提供了一种异步、基于事件流的编程方式&#xff0c;…

猫头虎分享:PyTorch异常ModuleNotFoundError: No module named ‘torch’解决方案

&#x1f42f; 猫头虎分享&#xff1a;PyTorch异常ModuleNotFoundError: No module named ‘torch’解决方案 &#x1f4bb; 摘要 在本篇博客中&#xff0c;我们将深入探讨如何解决PyTorch中常见的“ModuleNotFoundError: No module named ‘torch’”错误。通过详细的步骤指…

loadrunner录制解决提示安全问题

点击页面任意位置&#xff0c;输入&#xff1a; thisisunsafe

差分法求解 Burgers 方程(附完整MATLAB 及 Python代码)

Burgers 方程的数值解及误差分析 引言 Burgers 方程是一个非线性偏微分方程&#xff0c;在流体力学、非线性声学和交通流理论中有广泛应用。本文将通过数值方法求解带粘性的 Burgers 方程&#xff0c;并分析其误差。 方程模型 Burgers 方程的形式为&#xff1a; u t u u …

gp_Trsf和Ncollection_Mat4获得值注意:

gp_Trsf在获取值得时候索引开始时1&#xff0c;是一个三行四列得矩阵。 Ncollection_Mat4开始得索引值时0&#xff0c;是一个四行四列得矩阵。