原来写了很多日志,但是都是在人人网,今天准备把这些都搬到iteye来,算是重新整理一下思路吧。
现在JIT很火,据说有的LUA jit的速度与C编译出的程序的速度是相当的,毕竟这方面做的比较早的比较有成果的还是jvm,网上搜了一下,系统分析JVM代码的资料是少的可怜,干脆,我就花点功夫去做个开拓者吧。以下所有分析基于最新jvm 的实现 jdk7的源代码,下载地址如下 http://download.java.net/openjdk/jdk7/ 我所使用的源代码的版本是 openjdk-7 build143 。
一、hotspot 入口 openjdk-7-ea-src-b142-12_may_2011\openjdk\hotspot\src\share\tools\launcher\java.c
1、SelectVersion:选择版本,主要依据是宏定义,命令行输入和manifest文件
2、CreateExecutionEnvironment (java_md.c中)
2.1 GetJREPath 可以参考windows里面的获取绝对路径的api GetModuleFileName和访问注册表的api RegQueryValueEx等
2.2 EnsureJreInstallation 验证硬件平台、ms 的crt、加载crt和jkernal.dll,调用jkernal.dll中的preJVMStart()
2.3 ReadKnownVMs
3、LoadJavaVM
4、SetClassPath
5、ParseArguments
6、SetJavaCommandLineProp
7、setXXX
8、ContinueInNewThread ---------线程内的函数是 JavaMain
8.1 _beginthreadex
8.2 AWTPreload(D3D_PRELOAD_FUNC)
8.3 WaitForSingleObject(thread_handle, INFINITE);
GetExitCodeThread(thread_handle, &rslt);
CloseHandle(thread_handle);
splash screen: 闪屏,程序初始化时为了提供好的界面所提前显示的界面
二、主要入口函数 JavaMain()
1、InitializeJVM
2、LoadMainClass
3、CallStaticVoidMethod
java.dll 对应 E:\jdk7\openjdk-7-ea-src-b142-12_may_2011\openjdk\jdk\src中的代码
注:本文写于 2011年5月份
分享到:
相关推荐
《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...
必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,书中还将ide操作纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者...
1. **自动装箱与拆箱**:JDK 6引入了自动装箱和拆箱功能,使得基本类型和其对应的包装类之间可以无缝转换。例如,`Integer i = 10;` 和 `int j = i;` 这样的操作在JDK 6中可以直接执行,无需手动调用`Integer.value...
必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,书中还将ide操作纳为教学内容之一,让读者能与实践相结合,提供的教学视频让读者...
Java JDK 7学习笔记,附源代码,视频。 ※※ 目录内容及使用方法 ※※ labs 文件夹:提供各章节练习使用的NetBeans项目。 samples文件夹:提供各章节相关的NetBeans范例项目。 tools文件夹:提供本书用到的相关软件...
通过这个JDK 6.0的学习笔记和源代码,你不仅可以学习到Java的基础知识,还能通过实际案例理解如何在项目中运用这些知识。随着Java技术的不断发展,虽然JDK 6.0已经过时,但它仍然是初学者理解和掌握Java编程思想的...
《林信良的JDK6学习笔记源代码》是一份珍贵的学习资源,它包含了林信良在其著作《JDK6学习笔记》中所使用的全部源代码。这份源代码集可以帮助读者深入理解书中讲解的Java编程概念和技术,尤其对于正在学习JDK6版本的...
This is summary I made out of Java class, where shows you some jdk codes of Math package in Java....It's my out-of-class study notes I summed up;
《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍 《java jdk 7学习笔记》是作者多年来教学实践经验的总结...
Java编译语言将Java代码编译成.class文件(只有一种形式),而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨平台,而Java将这个任务交给JVM,不同操作系统上的JVM将.class文件编译成不同...
** JDK 1.5,也称为Java SE 5.0,是Java开发工具包的一个重要版本,它引入了许多显著的新特性和改进,极大地提升了Java..."src"目录可能包含了示例代码或相关资源,进一步学习和理解这些特性可以通过查看源代码实现。
JVM执行的基本单位是.class文件,这些文件是由Java编译器从.java源代码文件编译而来。.class文件包含了经过编译后的字节码,这是一种中间代码,可以在任何支持JVM的平台上被解释执行。这种方式使得Java程序能够在...
此外,阅读和分析JDK源代码是提升Java技能的重要途径。这不仅有助于我们理解Java的内部工作原理,比如类加载机制、垃圾回收算法、同步机制等,还能帮助我们在遇到问题时能更快地定位并解决问题。例如,通过分析`...
4. **改进的编译器**:Javac编译器的性能得到提升,且支持注解处理器,可以自动生成源代码或元数据。 5. **JDBC 4.0**:增强了数据库连接池的管理,提供了自动连接和关闭,以及更强大的异常处理能力。 三、核心类库...
"Java JDK6 学习笔记"作为一份参考资料,可能包含了关于这些特性和改进的详细解释,以及如何在实际编程中应用它们的实例。通过这份笔记,你可以深入理解JDK6的核心概念,掌握如何利用新特性优化代码,提高开发效率。...
Java学习笔记JDK6课件和课本代码是一个珍贵的学习资源,尤其适合初学者或希望深入理解JDK6特性的开发者。这份资料集包含了PPT课件和源代码,旨在帮助学习者全面掌握Java编程语言的基础知识和JDK6的新特性。 Java是...
4. **变量注解**:注解是一种元数据,可以添加到源代码的元素上,如类、方法、变量等,用于提供编译器或运行时的信息。Java 5.0引入了标准的注解,如@Override、@Deprecated等。 5. **增强的for循环(foreach)**:...