jvm是Java Virtual Machine 的简称意味Java虚拟机,指经过软件模拟的具备完整硬件系统功能的、运行在一个彻底隔离环境中的完整计算机系统正则表达式
有哪些虚拟机编程
虚拟机名称 实现方式
VMWare 使用软件模拟物理CPU的指令集
Visual Box 使用软件模拟物理CPU的指令集
JVM 使用软件模拟Java 字节码的指令集
复制代码
1996年 SUN JDK 1.0 Classic VM,纯解释运行,使用外挂进行JITjvm
1997年 JDK1.1 发布 AWT、内部类、JDBC、RMI、反射模块化
1998年 JDK1.2 Solaris Exact VM JIT 解释器混合 Accurate Memory Management 精确内存管理,数据类型敏感 提高的GC性能。从这时开始称为Java2 J2SE J2EE J2ME得出现加入Swing Collections性能
2000年 JDK 1.3 Hotspot 做为默认虚拟机发布 加入JavaSound加密
2002年 JDK 1.4 Classic VM退出历史舞台 Assert正则表达式 NIO IpV6 日志API 加密类库spa
2004年发布 JDK1.5 即 JDK5 、J2SE 5 、Java 5 泛型、注解、装箱、枚举、可变长的参数、Foreach循环指针
JDK1.6 JDK六、脚本语言支持、JDBC 4.0、Java编译器 API日志
2011年 JDK7发布 延误项目推出到JDK8 、G一、动态语言加强、64位系统中的压缩指针、NIO 2.0code
2014年 JDK8发布 Lambda表达式、语法加强、Java类型注解
2016年JDK9 模块化
使用最为普遍的JVM为HotSpot
HotSpot 为Longview Technologies开发 被SUN收购
2006年 Java开源 并创建OpenJDK HotSpot,成为Sun JDK和OpenJDK中所带的虚拟机
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的发展有积极做用
Java语言规范
语法 变量 类型 文法
复制代码
JVM规范
Class文件类型 运行时数据 帧栈 虚拟机的启动 虚拟机的指令集
复制代码
Java语言规范定义了什么是Java语言,Java语言和JVM相对独立,Groovy、Clojure、Scala,这三种均可以运行在JVM上。JVM主要定义二进制class文件和JVM指令集等
整数得表达
原码:第一位为符号位(0为正数,1为负数)
反码:符号位不动,原码取反
负数补码:符号位不动,反码加1
正数补码:和原码相同
打印整数的二进制表示 int a=-6; for(int i=0;i<32;i++){ int t=(a & 0x80000000>>>i)>>>(31-i); System.out.print(t); }
为何要用到补码呢? 由于在人们的计算概念中零是没有正负之分的,统一0的处理 统一处理加减法,无需增长减法器操做