美文网首页
chapter-1 初识JVM

chapter-1 初识JVM

作者: bryant_gbw | 来源:发表于2017-11-28 21:32 被阅读0次


本章知识点

1.JVM的概念

2.JVM发展历史 

3.JVM种类

4.Java语言规范

5.JVM规范

初识JVM - JVM概念

JVM是Java Virtual Machine的简称,意为Java虚拟机

虚拟机:指通过软件模拟的具有完整硬件系统功能的,运行在一个完全隔离环境中的完整的计算机系统。

有哪些虚拟机:VMWare、Visual Box、JVM。

VMWare或者Virtual Box都是使用软件模拟物理CPU的指令集。

JVM使用软件模拟Java字节码的指令集。

JNI(Java Native Interface):java与其他语言(C/C++)通信的API。

初识JVM  -  Java和JVM的历史

1996年SUN JDK 1.0 Classic VM:纯解释运行,使用外挂进行JIT(Just In Time),java的口号write once run anywhere。

1997年 JDK 1.1: 发布AWT,内部类,JDBC,RMI,反射。

1998年 JDK 1.2 Solaris Exact VM:JIT解释器混合;Accurate Memory Management(精确内存管理),数据类型敏感;提升GC(Gabage Collection)性能。JDK 1.2 开始称为Java 2 J2SE J2EE J2ME,加入swing,collection

2000年 JDK 1.3 HotSpot :作为默认虚拟机发布,加入JavaSound。

2002年 JDK 1.4: Classic VM退出历史舞台加入Asset正则表达式,NIO,IPV6日志,加密类库。

2004年发布 JDK 1.5 即JDK5、J2SE 5、Java 5:加入泛型,注解,装箱,枚举,可变长的参数,Foreach循环,java.util.concurrent并发包。

2006年 JDK1.6 JDK6:脚本语言支持,JDBC4.0,Java编译器API

2011年 JDK 7 发布:延误项目推出到JDK 8 ,动态语言增强,64位系统中的压缩指针,NIO2.0,在java.util.concurrent中加入fork/join是对并发包的一个补充。

2014年 JDK 8 发布:Lambda表达式,语法增强,Java类型注解。

2016年 JDK 9 :模块化。  

初识JVM - Java和JVM的历史 - 大事件

使用最为广泛的JVM为HotSpot。

HotSpot为Longview Technologies开发 被SUN收购。

2006年 Java开源 并建立OpenJDK,对java源码进行管理:HotSpot 成为Sun JDK和OpenJDK中所带的虚拟机,名字从之前的J2变为Java SE。

2008 年 Oracle收购BEA:得到JRockit VM。

2010年Oracle 收购 Sun:得到Hotspot。

Oracle宣布在JDK8时整合JRockit和Hotspot,优势互补:在Hotspot基础上,移植JRockit优秀特性。

KVM:由SUN发布,在IOS Android出来之前,广泛用于手机系统。

CDC/CLDC HotSpot:用于手机、电子书、PDA等设备上建立统一的Java编程接口;J2ME的重要组成部分。

JRockit:BEA。

IBM J9 VM:在IBM内部使用。

Apache Harmony:兼容于JDK 1.5和JDK 1.6的Java程序运行平台;与Oracle关系恶劣 退出JCP ,Java社区的分裂;OpenJDK出现后,受到挑战 2011年 退役;没有大规模商用经历;对Android的发展有积极作用。

初识JVM - 规范

Java语言规范:语法、变量、类型、方法。

JVM规范:Class文件类型,运行时数据,帧栈,虚拟机的启动,虚拟机的指令集。

初识JVM - Java语言规范

语法定义:

    IfThenStatement:if ( Expression ) Statement;

    ArgumentList:Argument、ArgumentList。

词法结构:

    \u + 4个16进制数字:表示UTF-16;

    行终结符:CR, or LF, or CR LF;

    空白符:空格 tab \t 换页 \f 行终结符;

    注释、标示符、关键字;

    Int:0 2 0372 0xDada_Cafe 1996 0x00_FF__00_FF;

    Long:0l 0777L 0x100000000L 2_147_483_648L 0xC0B0L;

    Float:1e1f 2.f .3f 0f 3.14f 6.022137e+23f;

    Double:1e1 2. .3 0.0 3.14 1e-9d 1e137;

    操作:+=  -=  *=  /=  &=  |=  ^=  %=  <<=  >>=  >>>=。

类型和变量:

    元类型:byte short int long float char boolean double

    泛型。

Java内存模型,类加载链接的过程,public static final abstract的定义,异常,数组的使用......

初识JVM - JVM规范

Java语言规范定义了什么是Java语言。

Java语言和JVM相对独立:Groovy、Clojure、Scala。

JVM:主要定义二进制class文件和JVM指令集等。

Class文件格式。

数字的内部表示和存储:Byte  -128 to 127......

returnAddress 数据类型定义:指向操作码的指针,不对应Java数据类型,不能在运行时修改,Finally实现需要。

定义PC。

堆、栈。

方法区。

整数的表达:

    原码:第一位为符号位(0为正数,1为负数);

    反码:符号位不动,原码取反;

    负数补码:符号位不动,反码加1;

    正数补码:和原码相同。

VM指令集:

    类型转化(l2i);

    出栈入栈操作:aload astore;

    运算:iadd isub;

    流程控制:ifeq ifne;

    函数调用:invokevirtual invokeinterface invokespecial invokestatic。

JVM需要对Java Library 提供以下支持:反射 java.lang.reflect,ClassLoader,初始化class和interface,安全相关 java.security,多线程,弱引用。

JVM的编译:源码到JVM指令的对应格式,Javap,JVM反汇编的格式。

JDK(Java Development Kit)

        Jdk是java程序设计语言,java虚拟机,java API类库的统称,jdk是支持java程序运行,开发的最小环境。

JRE(Java Runtime Environment)

        我们把java api类库中的java se的子集和java虚拟机称为jre,jre是支持java程序运行的标准环境。

JDK和JRE所覆盖的范围

java技术体系分为四个平台

Java card:支持一些java小程序(applets)运行在小内存设备(智能卡)上面的平台。

Java ME(micro edition):支持java程序运行在移动终端(手机,PDA)上的平台,对java api有所精简,并加入了针对移动终端的支持,之前称为J2ME,从jdk1.6之后修改。

Java SE(standar edition):支持面向桌面级的应用(如windows下的应用程序)的平台,提供Java核心API,之前称为J2SE。

Java EE(enterprise edition):支持使用多层应用构架的java平台,除了提供java se api外,还对其做了大量的扩充,也支持部署,之前称为J2EE。

Coin项目

        自2009年1月起,Coin便是Java7(和Java8)中一个开源的子项目,创建coin项目是为了反映java语言中的微小变动,项目的名字是个双关语——像硬币一样小的变化(small change comes as coins),而“套用一句老话”(to coin a phrase)指的是给Java语言添一个新的表述方式。

相关文章

  • chapter-1 初识JVM

    本章知识点 1.JVM的概念2.JVM发展历史3.JVM种类4.Java语言规范5.JVM规范 初识JVM - J...

  • 深入JVM内核 目录

    深入JVM内核 目录 深入JVM内核1 初识JVM深入JVM内核2 JVM运行机制深入JVM内核3 常用JVM配置...

  • 初识JVM

    Java 程序的执行过程 一个 Java 程序,首先经过 javac 编译成 .class 文件,然后 JVM 将...

  • JVM 初识

    Java 虚拟机简介 Java 号称 「一次编译,到处运行」的主要源于 JVM (Java Virtual Mac...

  • 初识JVM

    为猿不识JVM,侃称大神也枉然。 最近利用晚上时间学习了JVM相关知识,还未真正深入。以脑图形式记录了部分知识点,...

  • JVM初识

    今天对JVM进行了简单的学习,做了一个总结,如果有不对的地方还请大家指正。 一.java代码如何运行 编译型语言:...

  • jvm初识

    jvm内存模型介绍 Java语言优势巨大,一处编译随处运行,这个全依赖于jvm 自从内存管理机制之下,不再需要为没...

  • JVM初识

    一、JVM的基本介绍 JVM(Java Virtual Machine)又被分为三大子系统,类加载子系统,运行时数...

  • 初识JVM

    一.什么是 是()的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计...

  • 初识JVM

    对于从事C、C++程序开发的人员来说,他们既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任...

网友评论

      本文标题:chapter-1 初识JVM

      本文链接:https://www.haomeiwen.com/subject/oiqybxtx.html