`
xieyj
  • 浏览: 99933 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

openJdk学习

阅读更多

    学习openJdk,主要是学习c++的面向对象思想,及开发大程序的思路。这段时间浏览了不少其中的代码,还是只能管中窥豹,没能从总体上领悟。在此想起曾在www.jdon.com上面看到有人大力鼓吹什么模式思维,宣扬什么数据库已死,算法什么不重要,大力排斥数据结构,感觉按他说的懂模式便懂了计算机。偶自认为略懂模式,模式只不过是软件公理(增加间接层解决问题)的招式提炼,用这么大力鼓吹吗?采用间接层解决问题的思路由来已久,在openjdk中模式也应用很多,但偶懂模式还是看不懂其总体思路,为何?偶的功力不够也,对计算机的底层、算法认识不足,没能领悟大师们的思路。不打好基础而追逐模式,有些舍本逐末,此乃题外话。

     openjdk在new javaThread()时候对线程的执行环境进行了初始化JavaThread::initialize(),里面重要的是jni_functions,此是本地环境(*env)的主要入口。通过jni.cpp里面jni_NativeInterface函数指针数组设置好了jvm的本地方法环境。本地方法的大多实现在hotspot/src/share/vm/prims/jni.cpp文件内。其中使用了大量的宏定义,看起来比较费劲。调用类里面的main方法便是通过jni_invoke_static来实现。从字面理解jni应该是已经编译成本地代码了,在这调用和解释器的调用应该略有不同。只看到了解释器的初始化,没看到何处让解释器解释字节码。

     程序通过JavaCalls::Call调用JavaCalls::call_helper,回调这样的用法在openJdk用得很多。真正调用的方法StubRoutines::call_stub(),这中间通过函数指针调用generate_call_stub返回值,如果每次generate_call_stub返回不同值,就是调用了不同的函数了(sun的这个应该是和jit有关,已经编译成本地方法,在这选用stubGenerator_x86_32.cpp),generate_call_stub返回__ pc()值,其中__采用宏定义表示_masm->,里面采用类汇编的写法,到Assembler::call方法调用真正的java方法,将一个地址转换为函数指针的技巧在有些地方还是有用的。

     上面stubRoutinds初始化在init_globals里面stubRoutines_init1()进行。

0
0
分享到:
评论

相关推荐

    openjdk8源码,适合深入学习jdk源码的同学

    openjdk8源码,适合深入学习jdk源码的同学

    openjdk8u-src.zip

    在openjdk开源源码站下载速度过慢,这里提供openjdk8u的完整可编译源码,供大家自己编译属于自己的jdk版本,已经阅读openjdk源码帮助学习。在openjdk开源源码站下载速度过慢,这里提供openjdk8u的完整可编译源码,供...

    openjdk1.6

    OpenJDK1.6的源码,有JDK源码和部分JDK未公开的源码,值得学习

    OpenJDK中rt.jar源码文件

    OPENJDK中rt.jar源码,用于个人学习和ECLIPSE查看源码使用

    openJDK源代码CHM

    为了方便学习java,从网上下载了jdk10的源代码,并把它做成了chm格式,方便查看学习。如果没有积分也可以从网址http://hg.openjdk.java.net/下载没有做成CHM格式的源代码

    openjdk-14_windows-x64_bin.zip

    windows openjdk 14 官网下载 仅用于学习 仅用于学习 仅用于学习 仅用于学习

    OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

    OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

    openjdk-15+36_src.zip

    openjdk15源码下载,希望可以帮助到想学习JDK源码的朋友 openjdk15源码下载,希望可以帮助到想学习JDK源码的朋友 openjdk15源码下载,希望可以帮助到想学习JDK源码的朋友 重要的事情说三遍

    OpenJDK-Research_codefollower.tar.gz

    OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

    openjdk-14_linux-x64_bin.tar.gz

    jdk14 openjdk 官网下载 Linux 版的 仅用于学习

    openjdk8,开源openjdk,for linux 在 linux 中手动安装 openjdk

    OpenJdk与Oracle官网的Jdk所遵守的开放协议不同,为了避免商业纠纷,建议选用OpenJdk,遵守的是 GPLv2 (GNU...openjdk与jdk最大的区别就是openjdk是开源的,并且openjdk不能Deployment(部署),所以比较适合开发学习。

    openjdk-8u40

    源码压缩包,解压缩后可参考/jdk/src/share/classes/java目录

    openjdk-8-src-b132-03_mar_2014.zip

    openjdk8源代码,欢迎下载学习。openjdk-8-src-b132-03_mar_2014.zip

    OpenJDK源码包

    从发布那一时刻起,Java社区的大众们就又开始努力学习,以适应这个新的开源代码基础(code-base)。 [1] OpenJDK在2013年发展迅速,被著名IT杂志SD Times评选为2013 SD Times 100,位于“极大影响力”分类第9位。

    openjdk8u-langtools.zip

    在openjdk开源源码站下载速度过慢,这里提供openjdk8u的langtools包,供大家阅读openjdk langtool部分源码实现帮助学习。在openjdk开源源码站下载速度过慢,这里提供openjdk8u的langtools包,供大家阅读openjdk ...

    Openjdk7master.zip

    openjdk7源码,以供大家学习使用,可再ubuntu中进行使用学习;

    openjdk.zip

    openjdk8的编译后的源码文,有需要的自提下吧,到share文件目录下查看源码,可以了解java底层的运行原理,用来学习还是很好的。

    openjdk7ForLinux.zip

    ubuntu可用的openjdk7;解压配置即可使用;共同学习。

    openjdk6-src.tar.gz

    直接在官网下载openjdk6的源码速度太慢这里直接提供openjdk6的源码供自己编译,或者查看源码帮助学习。 直接在官网下载openjdk6的源码速度太慢这里直接提供openjdk6的源码供自己编译,或者查看源码帮助学习。

    openjdk-13+33_linux-x64_bin.tar.gz

    linux 系统下安装 JDK, openjdk10, openjdk13 OpenJdk 与 Oracle 官网的 Jdk 所遵守的开放协议不同, 为了避免商业纠纷,建议选用OpenJdk, 遵守的是 GPLv2 (GNU General Public License version 2) ...适合学习使用。

Global site tag (gtag.js) - Google Analytics