一、Java技术体系
Java技术体系包括以下几个组成部分:Java程序设计语言以及运行在Java虚拟机上的其他语言,各种硬件平台上的Java虚拟机,Class文件格式,Java API类库,来自商业机构和开源社区的第三方Java类库。
按照关注的重点业务领域进行划分,Java技术体系可分为如表1所示4个平台。
表1
| 平台名称 | 平台描述 |
|---|---|
| Java Card | 支持Java程序运行在小内存设备(比如智能卡)的平台 |
| Java ME | 支持Java程序运行在移动终端(比如手机、PDA)的平台 |
| Java SE | 支持桌面应用程序的Java平台 |
| Java EE | 支持使用多层架构的企业应用程序的Java平台 |
Jave SE是标准平台,Java Card,Java ME,Java EE与Java SE相比具有共同点,也有不同点。相应于Java Card,Java ME,Java EE中的SDK,Java SE中具有JDK,另外还有JRE。JDK和JRE包含的内容以及内容的层次结构如图1所示。
如果不作特别说明,接下来的介绍以Java SE平台作为线索,比如Java技术体系的发展史其实是Java SE平台的发展史,Java虚拟机的发展史其实是Java SE平台下Java虚拟机的发展史。
图1

二、Java技术体系发展史
原名为“Oak”,于1995年改名为“Java”。经历版本序列:Java 1.0,Java 1.1,Java 1.2,Java 1.3,Java 1.4,Java 1.5,Java 1.6,Java 1.7,Java 1.8。最新开发版本为Java 1.9。
由于以Java SE平台为线索,等价的版本序列称呼有:Java SE 1.0,Java SE 1.1,Java SE 1.2,Java SE 1.3,Java SE 1.4,Java SE 1.5,Java SE 1.6,Java SE 1.7,Java SE 1.8,Java SE 1.9。
也可以是:JDK 1.0,JDK 1.1,JDK 1.2,JDK 1.3,JDK 1.4,JDK 1.5,JDK 1.6,JDK 1.7,JDK 1.8,JDK 1.9。
三、Java虚拟机发展史
常见Java虚拟机列表如下:Sun Classic VM,Sun HotSpot VM,Sun CDC-HI VM,Sun CLDC-HI VM,Sun Squawk VM,BEA JRockit VM,IBM J9 VM,Microsoft JVM等。
其中,Sun CDC-HI VM和Sun CLDC-HI VM是Java ME平台下的Java虚拟机,Sun Squawk VM是Java Card平台下的Java虚拟机。
另外,不同JDK版本使用的Java虚拟机如表2所示。
表2
| JDK版本 | 使用的Java虚拟机 |
|---|---|
| JDK 1.0 | Sun Classic VM |
| JDK 1.1 | Sun Classic VM |
| JDK 1.2 | Sun HotSpot VM与Sun Classic VM并存 |
| JDK 1.3 | Sun HotSpot VM与Sun Classic VM并存 |
| JDK 1.4 | Sun HotSpot VM |
| JDK 1.5 | Sun HotSpot VM |
| JDK 1.6 | Sun HotSpot VM |
| JDK 1.7 | Sun HotSpot VM |
四、Java技术体系展望
Java技术体系(Java SE平台)的总体发展趋势有以下几点:
- 模块化
- 混合语言,即Java虚拟机上支持的语言越来越不只有Java语言,还有新语言和旧语言的移植版本
- 多核并行
- Java语言语法进一步丰富
- 64位虚拟机
五、OpenJDK源代码
2006年11月11日,Sun公司宣布最终会将Java开源,并随之将Sun JDK的源代码(其中自然包括HotSpot VM的源代码,HotSpot VM便成为了Sun JDK和OpenJDK的共同虚拟机)在GPL v2协议下公开,并建立OpenJDK组织对其进行独立管理。在Sun JDK源代码发布过程中,产生了一些变化(比如Sun公司没有权限公开产权代码导致的变化,代码文件头的版权注释不一致等),但是总的来说,OpenJDK源代码与Sun JDK源代码几乎没有差异,因而相应编译得到的OpenJDK和Sun JDK也几乎没有区别。
要想深入了解JDK的技术细节,可以通过阅读JDK源代码,自己编译一个JDK,跟踪调试JDK等方式来进行学习。由于OpenJDK源代码与Sun JDK源代码几乎没有差异,因此如果想深入了解Sun JDK的技术细节,可以通过阅读OpenJDK源代码,自己编译一个OpenJDK,跟踪调试OpenJDK等方式。
5.1、编译OpenJDK
步骤如下:
- 获取OpenJDK源代码,作者从网上下载了openjdk-7u40-fcs-src-b43-26_aug_2013.zip源代码包
-
构建编译环境,首先安装一个“Bootstrap JDK”,作者安装目录为/mnt/bigdisk/apps/jdk1.6.0_45,再执行如下命令,安装编译时需要的工具(作者使用Ubuntu 14.04操作系统):
1sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev ant -
使用编译脚本进行编译,编译脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38export LANG=C #设定Bootstrap JDK路径 export ALT_BOOTDIR=/mnt/bigdisk/apps/jdk1.6.0_45 #允许自动下载依赖 export ALLOW_DOWNLOADS=true #并行编译的线程数 export HOTSPOT_BUILD_JOBS=2 export ALT_PARALLEL_COMPILE_JOBS=2 #跳过与先前版本的比较 export SKIP_COMPARE_IMAGES=true #使用预编译头文件 export USE_PRECOMPILED_HEADER=true #要编译的内容 export BUILD_LANGTOOLS=true export BUILD_HOTSPOT=true export BUILD_JDK=true #避免某些插件的编译 BUILD_DEPLOY=false #不编译安装包 BUILD_INSTALL=false #编译结果存放目录 export ALT_OUTPUTDIR=/mnt/bigdisk/openjdk/build unset JAVA_HOME unset CLASSPATH STATIC_CXX=false make DEBUG_BINARIES=true all 2>&1 | tee $ALT_OUTPUTDIR/build.log
5.2、跟踪调试OpenJDK
OpenJDK源码主要使用C/C++语言编写,因而,可使用GDB,Code::Blocks,Microsoft Visual Studio,Netbean For C/C++等工具或者IDE进行调试,从而可跟踪OpenJDK运行中的具体过程,比如本地方法的具体执行细节。
参考文献:
[1]http://stackoverflow.com/questions/2857376/difference-between-java-se-ee-me
[2]https://en.wikipedia.org/wiki/Java_Card
[3]http://mail.openjdk.java.net/pipermail/porters-dev/2008-April/000125.html
[4]http://openjdk.java.net/faq/
[5]http://www.brainbugs.net/build-openjdk-on-freebsd-9/
[6]http://ubuntuforums.org/archive/index.php/t-15120.html
1202

被折叠的 条评论
为什么被折叠?



