标签:develop 源码 compiler title 部分 llvm 项目 upload dir
转自:http://rednaxelafx.iteye.com/blog/1549577
这是链接帖。主体内容都在各链接中。
怕放草稿箱里过会儿又坑掉了,总之先发出来再说…回头再慢慢补充内容。
先把ItEye网站上的信息聚合起来。
近期提问帖:
阅读openjdk源代码
如何来看OpenJDK源码
如何分析OpenJDK中JVM的实现
一个个回复太麻烦了,合在一块儿写这么一篇。
================
前言
我的VM帖的索引
高级语言虚拟机(HLLVM)群组
新浪微群“JVM源码阅读活动”
如何构建javac的调试环境
为什么有时候调试代码的时候看不到变量的值
自己编译JDK的src.zip的步骤
Ubuntu下编译openjdk成为可调试版
有人在Centos5 下build jdk1.6 成功吗?
ItEye论坛讨论帖:
Java IDE 添加 JDK 源代码关联
JDK(32bit)的高级安装——Client模式与Server模式
===========================
OpenJDK概况
http://openjdk.java.net
OpenJDK历史
曾任OpenJDK 6项目发布经理一职的Joe Darcy在OSCON 2011上讲解了JDK与OpenJDK的历史与现状。下面引用他的演示稿中的几幅图。
OpenJDK的历史与版本系谱:
Joe在他更早的一篇博文里详细描述过OpenJDK(特别是OpenJDK 6)的系谱。同一段文字也发布在OpenJDK的JDK 6项目主页面。
Red Hat的Deepak Bhole则从项目的开源性角度写了另一篇讲述OpenJDK项目历史的博文。
综合上述资料及其它来源的一些信息可知:
Sun JDK有“发布列车”(release train)的概念。例如说,在JDK 6还在早期开发阶段,连首个版本都尚未发布时,JDK 6就是最新的开发分支,而同时也存在着JDK 1.4.2 update和JDK 5 update两个老版本的维护分支。开发通常是在最新分支上进行的;当功能或修复在最新分支上稳定下来之后,会backport到老版本的维护分支。
... | JDK 1.4.2 update -> ... v JDK 5 | | JDK 5 update -> ... v JDK 6 | | JDK 6 update -> ... v ...
类似这样。当Sun决定将JDK开源出来时,JDK 6与JDK 6 update 1都已经正式发布,而JDK 6 update维护分支已经从最新开发分支分离出来一段时间了;此时最新的开发分支是JDK 7。所以很自然的,OpenJDK以JDK 7为基础演化而来。
开源Java社区欢迎OpenJDK的工作,但JDK 7尚在早期开发阶段,不适合实际部署。在社区需求的驱动下,OpenJDK创建了JDK 6的对应版本——OpenJDK 6项目。但这份代码并不是从JDK 6 update分支开源而来,而是以OpenJDK 7 build 20为基础,将一些不适合放在JDK 6的代码去掉之后再打上JDK 6 update分支累积的一些代码更新而来。然后JDK 6 update、(Open)JDK 7、OpenJDK 6三个分支就分开发展了。这就是上面的系谱图所展现的情况。
在Oracle完成对Sun的收购后,OpenJDK的开发模型基本维持跟原本Sun时代一致;只在非常最近才开始有新的变化。在JDK 7正式发布、JDK 7 update项目建立后,JDK 8就成为了现在的最新开发分支。
现状是,Oracle主要也是在OpenJDK上进行主要的功能开发,这部分是以GPLv2 + Classpath Exception许可证完全开源的。同时Oracle也在开发一些商用的、闭源的功能,例如Java Flight Recorder。将这些闭源功能叠加在开源的OpenJDK上打包起来,就是产品版的Oracle JDK 7 / 7 update / 8。
OpenJDK与Oracle JDK
大家都会对这个问题感兴趣:OpenJDK与Oracle JDK到底有多像?
说真的我也不知道准确答案。从外部看:
这种情况下,还是让我们相信Joe Darcy的说法吧。继续引用他在OSCON 2011上的演示稿里的图:
JDK、OpenJDK与HotSpot VM的版本
Oracle/Sun JDK、OpenJDK与HotSpot VM的版本对应关系
OpenJDK的其它发行版
IcedTea
UltraViolet™ Virtual Machine Development Kit
--------------------------
OpenJDK源码结构
主项目
引用自OpenJDK 8的README
----------------------------
编译OpenJDK
如何通过Mercurial下载OpenJDK的源码
经验帖:
在XUbuntu 10.10上以JRL源码构建Oracle JDK 6 update 23
Oracle已经决定不再以JRL许可证发布JDK 6的源码,所以上面这篇经验帖的许多内容变得没用了。不过这帖里也有写了OpenJDK的build方法,其实很简单的(取决于在什么平台上…)。
周志明(IcyFenix)写的《深入理解Java虚拟机》一书的第一章,1.5小节介绍了在Windows上build出OpenJDK 7的步骤,也值得入门者参考。
淘宝的同事大仁的经验帖:Ubuntu10.04下build OpenJDK7 的过程
哪位大大编译过OpenJDK6,请教些问题
最新的OpenJDK 8里有新的build infrastructure,编译过程可能会有些变化。
===========
真的要读JVM的源码么?
第0次JVM源码阅读活动讨论了“是不是真的要读JVM源码,要读的话读什么,相关的推荐阅读”的话题。
具体内容请参考活动的演示稿:为啥别读HotSpot VM的源码
特别推荐Maxine VM项目。
最新的一篇综述报告讲解了Maxine VM的目标、高层架构、性能水平等。
Maxine VM的其它相关文献也都很值得一读
https://wikis.oracle.com/display/MaxineVM/Publications
===========
阅读HotSpot VM的源码
HotSpot VM的源码结构
简记java launcher与HotSpot VM对VM参数的处理
请教一个share/vm/oops下的代码做fast subtype check的问题
HotSpot中这么多的Mutex Locker知多少
[请教]hotspot的模板解释方法时如何将方法的指令串起来
修改java.lang.String类时出错?
查看HotSpot VM动态生成的机器码
HotSpot没实现Megamorphic inline caching?
关于OpenJDK1.7的javac源码中JavaCompiler类的一点疑问
请教ad文件的格式
===========
结合论文来阅读源码
必读资料
HotSpot Internals for OpenJDK
(该wiki迁移到了OpenJDK官网上。老的https://wikis.oracle.com/display/HotSpotInternals/Home已经改为只读模式)
===========
邮件列表
在OpenJDK官网左边栏上面的Mailing Lists
标签:develop 源码 compiler title 部分 llvm 项目 upload dir
原文地址:http://www.cnblogs.com/thingk/p/6902761.html