170 likes | 478 Views
深入浅出 Java 虚拟机 —— 入门 第 2 讲 Java 规范和 JVM 规范简述 讲师:葛一鸣 微博: http://weibo.com/u/5236909237 QQ 群: 397196583. 深入浅出 JVM( 入门 ) - Java 规范和 JVM 规范简述. 学习目标 了解 Java 语言规范的基本内容 了解 JVM 规范的基本内容. 深入浅出 JVM( 入门 ) - Java 规范和 JVM 规范简述. Java 语言规范 语法 变量 类型 文法 JVM 规范
E N D
深入浅出Java虚拟机——入门 第2讲 Java规范和JVM规范简述 讲师:葛一鸣 微博:http://weibo.com/u/5236909237 QQ群:397196583
深入浅出JVM(入门) - Java规范和JVM规范简述 • 学习目标 • 了解Java语言规范的基本内容 • 了解JVM规范的基本内容
深入浅出JVM(入门) - Java规范和JVM规范简述 • Java语言规范 • 语法 • 变量 • 类型 • 文法 • JVM规范 • Class文件类型 • 运行时数据 • 帧栈 • 虚拟机的启动 • 虚拟机的指令集
深入浅出JVM(入门) - Java规范和JVM规范简述 • 语法定义 • IfThenStatement: if ( Expression ) Statement • ArgumentList: Argument ArgumentList, Argument if(true){do sth;} add(a,b,c,d);
深入浅出JVM(入门) - Java规范和JVM规范简述 • 词法结构 • \u + 4个16进制数字 表示UTF-16 • 行终结符: CR, or LF, or CR LF. • 空白符 • 空格 tab \t 换页 \f 行终结符 • 注释 • 标示符 • 关键字 Identifier:IdentifierCharsbut not a Keyword orBooleanLiteralorNullLiteralIdentifierChars:JavaLetterIdentifierCharsJavaLetterOrDigitJavaLetter:any Unicode character that is a Java letter (see below)JavaLetterOrDigit:any Unicode character that is a Java letter-or-digit (see below)
深入浅出JVM(入门) - Java规范和JVM规范简述 • 词法结构 • \u + 4个16进制数字 表示UTF-16 • 行终结符: CR, or LF, or CR LF. • 空白符 • 空格 tab \t 换页 \f 行终结符 • 注释 • 标示符 • 关键字 Identifier:IdentifierCharsbut not a Keyword orBooleanLiteralorNullLiteralIdentifierChars:JavaLetterIdentifierCharsJavaLetterOrDigitJavaLetter:any Unicode character that is a Java letter (see below)JavaLetterOrDigit:any Unicode character that is a Java letter-or-digit (see below)
深入浅出JVM(入门) - Java规范和JVM规范简述 public static void 打印() { System.out.println(“这个是中文方法哦!!"); } public static void main(String[] args) { 打印(); }
深入浅出JVM(入门) - Java规范和JVM规范简述 • 词法结构 • 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 • 操作 • += -= *= /= &= |= ^= %= <<= >>= >>>=
深入浅出JVM(入门) - Java规范和JVM规范简述 • 合法 • 合法 • 合法 • 非法 • 非法 • 合法 • 合法 • 非法 • 合法 • 非法 • 哪些是合法的数字呢? • private int a=0xDada_Cafe; • private float b=0x1.fffffeP+127f; • private float c=1996; • private float d=1996.3; • private int f=9999e2; • private double g=33e2; • private float h=0x1.fffep-12f; • private float i=1.fffep-12f; • private long p=0b1_1_1_0_1; • private long q=0b1_1_1_0_2;
深入浅出JVM(入门) - Java规范和JVM规范简述 class Value { intval; } class Test { public static void main(String[] args) { int i1 = 3; int i2 = i1; i2 = 4; System.out.print("i1==" + i1); System.out.println(" but i2==" + i2); Value v1 = new Value(); v1.val = 5; Value v2 = v1; v2.val = 6; System.out.print("v1.val==" + v1.val); System.out.println(" and v2.val==" + v2.val); } } i1==3 but i2==4 v1.val==6 and v2.val==6 • 类型和变量 • 元类型 • byteshort int long float char • 变量初始值 • boolean false • char \u0000 • 泛型 i1 i2为不同的变量 v1 v2为引用同一个实例
深入浅出JVM(入门) - Java规范和JVM规范简述 • Java内存模型 • 类加载链接的过程 • public static final abstract的定义 • 异常 • 数组的使用 • …….
深入浅出JVM(入门) - Java规范和JVM规范简述 • Java语言规范就介绍到这里,下面来看一下JVM规范吧!
深入浅出JVM(入门) - Java规范和JVM规范简述 • Java语言规范定义了什么是Java语言 • Java语言和JVM相对独立 • Groovy • Jython • JRuby • Clojure • Scala • JVM主要定义二进制class文件和JVM指令集等
深入浅出JVM(入门) - Java规范和JVM规范简述 • Class 文件格式 • 数字的内部表示和存储 • Byte -128 to 127 (-27 to 27 - 1) • returnAddress数据类型定义 • 指向操作码的指针。不对应Java数据类型,不能在运行时修改。Finally实现需要 • invokedynamic jdk7引入,专门针对动态语言 • 定义PC • 堆 • 栈 • 方法区
深入浅出JVM(入门) - Java规范和JVM规范简述 • VM指令集 • 类型转化 • l2i i2l i2f f2i • 出栈入栈操作 • aloadastoreiloadistore • 运算 • iaddisubfaddfsub • 流程控制 • ifeqifne • 函数调用 • invokevirtualinvokeinterfaceinvokespecialinvokestatic
深入浅出JVM(入门) - Java规范和JVM规范简述 • JVM需要对Java Library 提供以下支持: • 反射 java.lang.reflect • ClassLoader • 初始化class和interface • 安全相关 java.security • 多线程 • 弱引用