Java标志是一杯热咖啡,这杯热咖啡你很难与计算机编程联想到一起,这杯热咖啡却是Java这个名字的由来。故事是这样的,JAVA语言起名时,简姆斯 古斯林注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。他的一个同事马克 奥颇门(Mark Opperman)在一家咖啡店于同事品尝咖啡时得到了灵感,想到了Java一词。Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。
Class文件全名称为Java class文件,它是一组以8位字节为基础单位的二进制流,当我们运行JAVA程序的时候,首先.java文件需要先编译成.class文件,任何一个Class文件都对应着唯一一个类或接口的定义信息,Java虚拟机(JVM)加载class文件并运行
当我们用UltraEditor打开一个class类后,每个Class文件的头4个字节我们叫他魔数 (Magic Number)。仔细看上图中的数CAFE BABE(咖啡宝贝),它标识这个文件是否是能够被虚拟机接收的Class文件
紧接着魔数的存储的是Class文件的版本号,Java的版本号是从45开始的,JDK 1.1之后的每个JDK大版本发布主版本号向上加1(JDK 1.0~1.1使用了45.0~45.3的版本号)
00 00 : 表示主版本号,将16进制数0000转换成10进制后的数字是0,表示次版本号为0
00 31:表示次版本号,将16进制数0031转换成10进制后的数字是49,表示主版本号为49
00 00 00 31表示49.0版本,对应的JDK版本是1.5
综上图中 CA FE BA BE 00 00 00 31 表示本文件是JVM可加载的 class文件, 编译使用的JDK版本是JDK1.5
JDK版本号 |
Class版本号 |
16进制 |
1.1 |
45.0 |
00 00 00 2D |
1.2 |
46.0 |
00 00 00 2E |
1.3 |
47.0 |
00 00 00 2F |
1.4 |
48.0 |
00 00 00 30 |
1.5 |
49.0 |
00 00 00 31 |
1.6 |
50.0 |
00 00 00 32 |
1.7 |
51.0 |
00 00 00 33 |
1.8 |
52.0 |
00 00 00 34 |