依托于Java虚拟机的语言
- Java - Ckojure - Kisp的方言 - Jython - 将python运行在JVM上 - Groovy - JVM上的脚本语言 - Scala - 专注于高并发解决方案 - Kotlin - 安卓开发首选
Java发展史
- 跨平台系统,Oak - Sun发布Java和HotJava产品 - JDK1.0,运行环境和开发环境,核心api,用户界面api,发布技术,jvm,使用Classic虚拟机解释执行 - JDK1.1 AWT,内部类,JDBC,RMI,反射,sun获得hotspot虚拟机 - Jython创造,目前已经可以运行Django了 - JDK1.2 兼容智能卡和小型消费设备,大型服务器系统,发布JSP/Servlet规范,Java分裂为J2EE,J2SE,J2ME,解释和编译混合执行 - JDK1.3 Hotspot成为Java默认虚拟机 - JDK1.4 Classic虚拟机淘汰 - JDK1.5 改名5.0,范型,注解,自动装箱拆箱,枚举,可变长参数,增强foreach - JDK1.6 开源OpenJDK,Hotspot是它的默认虚拟机 - 新语言Clojure出现 - Oracle收购BEA,得到JRockit虚拟机 - Scala:Twitter迁移大部分Ruby服务到Scala - Oracle收购Sun,准备规划整合Hotspot和JRockit虚拟机 - JDK1.7发布,新垃圾回收器G1,64位压缩指针,NIO2.0,增加invokedynamic指令 - JDK1.8 Lambda表达式 - JDK1.9 Java模块化
- 数字的表示
//JDK1.7允许在数字中加加入下划线分割int a = 0372;int b = 0xDada_Cafe;int c = 0x00_FF__00_FF;long la = 01;long lb = 0777L;long lc = 0x100000000L;long ld = 2_147_483_648L;long le = 0xC0B0L;float fa = 1e1f;float fb = 2.f;float fc = .3f;float fd = 3.14f;float fe = 6.022137e+23f;double da = 1e1;double db = 2.;double dc = .3;double dd = 0.0;double de = 1e-9d;double df = 1e137; |
- 数据类型
- 原始
- 数字型:(byte 8bit ,short 16bit ,int 32bit,long 64bit)有符号,char 16bit 无符号,float 32bit,double 64bit
- 布尔型:boolean :true,false
- 引用
- 原始
- 特性
- 跨平台
- 优秀的垃圾回收器
- 可靠的即时编译器
- 内容
- 虚拟机内部结构
- 虚拟机执行的字节码类型和功能
- Class文件结构
- 类的装载,连接,初始化
- 整数在虚拟机中的表示
- 在计算机中整数用补码表示,虚拟机也是
- 概念:原码,反码,补码
- 原码:1符号位 + 其余二进制数
- 反码:符号位不变,其余取反
- 补码:负数补码= 反码+1 ,正数补码= 原码
- 补码好处:
- 统一数字0的表示,原码很难确定无符号数字0
- 简化整数的加减计算,正负数计算统一成加法。
- 概念:原码,反码,补码
- 在计算机中整数用补码表示,虚拟机也是
//-10在虚拟机的表示 // 0x80000000 为符号为1,其余是0的32位数字,得到i位数字,并把除i之外的其他位数设置为0,然后把i移到最右输出 int d = -10; for(int i = 0; i<32;i++){ int t = (d & 0x80000000 >>> i) >>> (31-i); System.out.print(t); } |
- 浮点型在虚拟机的表示
- IEEE754定义的浮点数格式
- 三部分:符号位 + 指数位 + 尾数位
- float 32bit :1符号位 + 8指数位 + 23尾数位 s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
- 浮点数-5 1 10000001 0100000000000000000000
- 符号为 1 ,负数
- 指数位 129
- 尾数位(实际上是24位) : e不全位0,前面加1=10100000000000000000000 ,全为0,则附加0
- IEEE754定义的浮点数格式
- 表示特殊数字 - 正无穷 - 负无穷 - NaN - 最大浮点数 - 最小规范化正浮点数 - 最小正浮点数 - 0
编译和调试虚拟机
- 作用
- 得到一个debug版本,支持更多虚拟机参数
- 用于虚拟机代码单步调试
- centos7构建jdk8
- 安装jdk版本控制系统mercurial变幻莫测,download; centos :yum install mercurial
- OSX安装:brew install mercurial
- 拉取源码:
hg clone http://hg.openjdk.java.net/jdk8/jdk8 YourOpenJDK cd YourOpenJDK bash ./get_source.sh |
原文地址:https://www.cnblogs.com/fubinhnust/p/11956031.html
时间: 2024-12-12 10:52:03