JVM笔记(2)

Stella981
• 阅读 647

第一部分

  第一张 走进Java

     这一章主要讲述的是 Java发展的历程和不同公司研发Java虚拟机(虚拟机家族丰富的恩怨纠葛)。在这个虚拟机家庭中HotSpot以他独有的优势在虚拟机中独占鳌头,经久不衰。还有就是最后一节是一个实战事例,就是自己编译JDK(如果window系统可以安装VMware下安装Linux系统(ubunto版本)搭建编译环境),这个例个人感觉很不错,自己也在着手在干,也希望有兴趣的同学也去做一做。

第一点 Java技术体系

      按照功能划分:  Java核心类库, Java虚拟机,  Java程序设计语言。

      按照产品划分:  1. Java Card  支持Java小程序运行在小内存设备上的平台。

               2. Java ME  支持Java程序运行在移动终端上的平台。

               3. Java SE  支持面向桌面级应用上的平台。

               4. Java EE 支持使用多级架构的企业应用的Java平台。 

第二点 Java虚拟机家族

          1)Java虚拟机鼻祖: sun Classic  /  Exact VM

        对于sun Classic虚拟机来说它只是单纯的通过解释器来执行Java程序,而他的编译器需要通过外挂的形式,但是它是世界上第一款商用虚拟机,这样子就足以让我们记住它。

        Exact VM来说,它是有了现代高性能的虚拟机的雏形,对于来说它有准确的管理内存的优势,但是不幸的是不久它就被HotSpot VM取代了。而且在windows和Linux的试用版本都没发布。

        2)武林盟主:HotSpot VM 

        再来说一说HotSpot VM它不仅继承了sun之前虚拟机的准确式的内存管理和他自己的热点代码探测技术,还有优秀的理念和成果。使它成为了全世界使用最多的虚拟机。最后说一下其实它最初不是Java语言研发的,是为Self虚拟机设计的。

        3)小家碧玉:Mobile  /  Embedded VM  

        因为sun/oracle公司在Java ME发展不太好(在智能手机这部分主要是Android和ios占领)所以最终把Java ME这部分规划到Java SE Embedded下。

        4)天下第二:BEA JRockit  /  IBM J9 VM

        BEA JRockit当时主要是为服务器硬件和服务端应用场景的一款虚拟机,它的代码全部是通过即时编译器完成的,而且他的垃圾回收器在当时也是比较优秀的,但是EBA被oracle收购了,他最终永远的停留在R28版本。

        J9是一款和HotSpot相类似的,它发展全面在服务端,桌面开发,嵌入式的多用途的虚拟机,在职责分离和模块化这部分相比HotSpot虚拟机要好。J9这款虚拟机至今还非常活跃。

        5)软硬合璧:BEA Liquid  VM /  Azul VM

        Liquid VM 可以直接运行在自家的Hypervisor系统的虚拟机,可以说他本身就实现操作系统的必要功能,自身就可以直接控制硬件操作,可以最大的发挥硬件的能力,最终它也停止更新。

        Azul VM 是运行在vega系统上的Java虚拟机,他又有优秀的PGC和C4收集器,可以控制多个cpu和管理数百GB内存的硬件资源。

        6)挑战者:Apache Harmony /   Google Android Dalvik VM 

        对于Harmony和Dalvik只能称之为虚拟机不能称Java虚拟机,想要兼容Java体系,必须通过TCK的兼容性测试,由于sun没有把TCK的授权提供给Apache,导致Apache退出JCP组织,sun又开源了JDK,最终导致Apache领导的Apache Harmony不了了之。

        Dalvik是Android的虚拟机,但是在Android 5.0时候就被ART替代。

         7)Graal VM一款在HotSpot虚拟机上开发的跨语言的全栈虚拟机

第三点 展望未来

        总的来说Java未来是很难被替代的。

未完更新中,还会优化内容的!!!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
2个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这