`
xieyj
  • 浏览: 101848 次
  • 性别: 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
分享到:
评论

相关推荐

    openjdk1.6

    对于学习OpenJDK 1.6源码的开发者,了解如何构建和调试OpenJDK是非常重要的。这通常涉及设置环境变量、使用make工具或Gradle构建系统,以及利用JDB(Java Debugger)进行源码级别的调试。 6. **社区参与**: ...

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

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

    openjdk-17.0.2(openjdk-17.0.2_macos-x64_bin.tar.gz)

    **OpenJDK 17.0.2:深入解析与应用** OpenJDK 17.0.2 是一个开放源代码实现的Java Development Kit,它遵循Java SE(标准...同时,OpenJDK的开源特性也意味着有广泛的社区支持,为学习和解决技术问题提供了有力保障。

    CentOS7使用RPM卸载OpenJdk

    在本文中,我们学习了如何使用 RPM 卸载 OpenJdk 在 CentOS7 系统中。我们了解了如何检查当前系统是否安装了 Java,如何卸载 OpenJdk,以及如何解决应用程序锁定问题。这些知识点将帮助我们更好地管理 CentOS7 系统...

    openjdk8u-src.zip

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

    OpenJDK8_x64_Mac.zip

    对于开发者而言,OpenJDK8的源代码开放使得研究Java的内部工作原理成为可能,这对于学习Java虚拟机的工作机制和进行性能优化特别有用。此外,OpenJDK社区活跃,持续更新和维护,提供了良好的问题报告和解决机制。 ...

    openjdk-9的安装包(linux)

    标题中的“openjdk-9”指的是OpenJDK(Open Java Development Kit)的第9个主要版本,这是一个开源、免费的Java开发工具包,用于构建和运行Java应用程序。...不过,学习和实验目的,了解OpenJDK-9仍然是有价值的。

    openjdk-17_windows-x64_bin.zip

    6. **JDK源代码**:在“openjdk-17_windows-x64_bin”压缩包中,除了包含编译好的二进制文件,还包括OpenJDK的源代码,这有助于开发者深入理解Java平台的底层实现,便于调试和学习。 7. **性能优化**:OpenJDK 17对...

    OpenJDK中rt.jar源码文件

    OpenJDK中的rt.jar文件是Java运行时库的核心组成部分,包含了Java标准类库(Java Standard Library)的大部分源代码。...通过深入学习和研究,我们可以提高编程技艺,解决实际问题,甚至为OpenJDK贡献自己的代码。

    openjdk 9.04 linux版本 解压安装包

    学习和使用OpenJDK 9.0.4不仅意味着你可以编写和运行Java应用程序,还可以深入理解Java平台的内部机制,探索最新的特性和优化,提升编程效率。同时,对于Linux管理员来说,了解如何在服务器上安装和配置OpenJDK也是...

    openjdk 9.04 windows版本 解压安装包

    OpenJDK 9.0.4是Java Development Kit的一个开源实现...为了充分利用OpenJDK 9.0.4,开发者需要了解这些新特性和变化,并学习如何在项目中应用它们。此外,保持对JDK更新的关注,以便及时掌握最新的Java技术发展动态。

    openjdk-19(openjdk-19-ea+24_macos-aarch64_bin.tar.gz)

    6. **增强的JShell(JShell增强)**:Java内置的REPL(Read-Eval-Print Loop)工具JShell得到了改进,包括更强大的历史搜索和编辑功能,使得学习和调试Java代码更为便捷。 7. **改进的JEP(JEP改进)**:Java ...

    openjdk8完整源码

    《OpenJDK8完整源码解析》 OpenJDK,全称Open Source Java Development Kit,是Java开发工具包的一个开源实现,它包含了JVM(Java虚拟机)和...在实践中学习,用代码解决问题,这正是OpenJDK8源码带给我们的宝贵财富。

    java-8-openjdk-amd64

    同时,由于OpenJDK的开源性质,开发者可以自由查看源码,理解和定制Java运行时环境,这对于学习Java技术栈和进行企业级开发具有重要意义。 总之,Java 8 OpenJDK AMD64是一个为64位AMD处理器优化的开源Java开发和...

    openjdk7Andjdk7.7z

    同时,编译过程也是学习Java虚拟机和Java平台技术的好方法。压缩文件中的"openjdk7Andjdk7"很可能包含了所有必要的源代码和二进制文件,便于在CentOS环境下进行编译和安装。 总的来说,这个压缩包提供了OpenJDK 7的...

    openjdk-17.0.2(openjdk-17.0.2_linux-x64_bin.tar.gz)

    8. **src.zip**(可能包含):提供源代码,方便开发者查看和学习Java平台的内部实现。 OpenJDK 17.0.2的一些重要特性包括: - **Records**:这是一种新的语言特性,允许创建不可变的数据类,简化代码并减少错误。 -...

    openjdk8源码官网下载地址

    用户可以通过此链接直接下载OpenJDK 8的源码,并对其进行研究学习或进行二次开发。 #### 三、解压后的目录结构 解压OpenJDK 8源码包后,可以看到以下主要目录和文件: 1. **.jcheck**:此文件夹包含了用于检查JDK...

    openjdk6-sourcecode

    《OpenJDK6源代码深度探索》 OpenJDK6是Java Development Kit(JDK)的一个开源实现,它为开发者提供了深入理解Java虚拟机(JVM)和Java平台核心类库的机会。源代码的开放性使得程序员能够查看、学习并改进Java的...

    OpenJDK源码

    通过研究OpenJDK源码,开发者可以学习到诸如垃圾回收、内存管理、多线程、网络编程、并发控制等高级主题。 首先,让我们深入了解JVM。JVM是Java程序运行的平台,它负责将字节码转换为机器码执行。在OpenJDK源码中,...

    openjdk-7(2)

    OpenJDK 7是Java开发工具包...虽然OpenJDK 7在Windows上的编译版本已经有些年代,但它对于理解Java发展历程和学习经典特性仍然具有很高的价值。同时,对于需要兼容旧版Java应用的场景,OpenJDK 7仍然是一个可靠的选择。

Global site tag (gtag.js) - Google Analytics