java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧

java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧

ID:30776442

大小:63.00 KB

页数:7页

时间:2019-01-03

java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧_第1页
java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧_第2页
java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧_第3页
java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧_第4页
java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧_第5页
资源描述:

《java-jvm是如何构建的?看看openjdk吧!-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java/JVM是如何构建的?看看OpcnJDK吧!-编程开发技术Java/JVM是如何构建的?看看OpenJDK木文山ImportNew-fzr翻译口javacodegeekso欢迎加入翻译小组。转载诘见文末要求。简介&历史正如有些人已经知道的那样,从Java7开始,OpenJDK就是Java的参考实现(ReferenceImplementation)。下图的时间线可以让你了解一下OpenJDK的历史。OpenJDK历史(2006至今)看看OpenJDK更详细的过去现在和将来[1]。如果你想了解

2、从Oracle,RedHat,etcetera等供应商那里下载得来的JDK或JRE库,那么可以告诉你,它们都是起源于OpenJDKo每个供应商在此基础上添加额外的部件。出于安全,专利或其他的考虑,这些额外的添加部分并不公开源码。OpenJDK由什么组成?OpenJDK由许多软件库组成,主要有corba,hotspot,jaxp,jaxws,jdk,langtools,以及nashorno在0penJDK8和0pcnJDK9Z间没有新的软件库加入,但有很多改变和结构调整,主要是因为JigsawJav

3、a自身的模块化[2][3][4][5]。代码的组成以及语言的分解构成(比例是估计的)Java语言和平台是如何构建的?J3V3通过引导一个

4、

5、

6、版本的J3V3例如,以其口身为构件建立。1「1的组件被组合在一起创建一个新的组件,即成为下一阶段的结构单元。关于这种自展的一个很好的例子请参考SchemefromScratch或是Wikipedia[7]。0penJDK8使用JDK7编译和构建,类似地,0penJDK9则使用JDK8编译构建。理论上,0penJDK8是可以使用从其自身创建的影像编译的,同理,

7、0penJDK9也能用0pcnJDK9编译。使用一个叫做循环启动影像的进程——创建OpenJDK的JDK影像,使用同样的影像,OpenJDK再一次被编译。也可以用make命令实现OpenJDK的编译:$makebootcycle-images#Buildimagestwice,secondtimewithnewlybu订tJDKmake命令在0penJDK8和0penJDK9下都提供了很多设置选项,可以通过命名的方式建立独立的组件或模块。如下:$make[component-name]

8、[modu

9、le-name]甚至并行运行多个构建过程,如2$makeJOBS=#Runparallelmakejobs最后,用instal1选项安装上述己构建的组件,如下:$makeinstall一些被神话了的东西具体来说,OpenJDK或是Hotspot都不完全是用C或C++写的,代码库中相当一部分代码是良好的OLE(对彖连接与嵌入)Java(详细请看上文的组成图表)。所以对OpenJDK作出贡献并不要求你必须是核心硬件开发者。即使是底层的C/C++代码库也不是那么让人望而生畏。下面就是从HotSpotre

10、po的vm/memory/universe,cpp中摘录出的一个代码片段http://hg.openjdk・java・net/jdk6/jdk6/hotspot/raw-file/a541ca8fa0e3/src/share/vm/memory/universe.cpp[10]:Universe::initialize_heap()if(UscParallelGC){#ifndefSER1ALGCUniverse::collectedHeap=newParallelScavengeHeapO;#e

11、lse//SERIALGCfatal(z,UseParallelGCnotsupportedinthisVM・〃);#endif//SERIALGC}elseif(UseGIGC){#ifndefSERIALGCGlCollectorPolicy*glp二newGlCollectorPolicy();GlCollcctcdllcap*glh=newGlCollcctcdllcap(glp);Universe::_collectedHeap=glh;#else//SERIALGCfatal("Use

12、GIGCnotsupportedinjavakernelvm.〃);ttendif//SERIALGC}else{GenCollectorPolicy*gcpolicy;if(UseSerialGC){gc_policy=newMarkSwccpPolicy();}elseif(UseConcMarkSweepGC){#ifndefSERIALGCif(UseAdaptiveSizePolicy){gc_policy二newASConcurrentMarkSweepPolicy()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。