chapter-1 初识JVM


本章知识点

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语言添一个新的表述方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 姓名:周君会 学号:17011210526 转载自: http://www.jianshu.com/p/...
    lotus儿阅读 1,935评论 1 9
  • 从今天开始读《深入理解 Java 虚拟机》一书,并开设了同名专题 深入理解 Java 虚拟机。计划在 2 周内将全...
    SawyerZh阅读 10,247评论 17 215
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,585评论 3 83
  • 每天都能看到如此精彩的文章吗?关注或加微信13373416716 肉鸡生长期只有短短几十天,特别是出栏前两周,肉鸡...
    3eadf294fac6阅读 118评论 0 0
  • 2017年9月9日(连续第208天总结) 今日目标完成情况: 1:案例 100% 2:抄写概念5遍 0% 3:...
    我来学而时习之阅读 206评论 0 0