重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下载JDK源代码啊,openJDK上有完整的JDK源代码,JDK源代码由C++、Java、C、汇编 这四种语言组成。JVM主体是C++写的,JNI部分是C,工具类是Java写的,JVM里混有汇编代码。路径:openjdk-7-fcs-src-b147\jdk\src\share\native\java\lang\System.c 找到这个
创新互联专注于企业网络营销推广、网站重做改版、环江网站定制设计、自适应品牌网站建设、H5技术、电子商务商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为环江等各大城市提供网站开发制作服务。
/* Only register the performance-critical methods */
static JNINativeMethod methods[] = {
{"currentTimeMillis"念岁, "()J", (void *)JVM_CurrentTimeMillis},
{"nanoTime", "()J"仔蔽睁, (void *)JVM_NanoTime},
{"arraycopy", "(" OBJ "I" OBJ "II)V", (void *)JVM_ArrayCopy},
};
方法的实现应该在JVM部分,路径openjdk-7-fcs-src-b147\并游hotspot\src\share,不同的操作系统实现不一样,应该是在对应的操作系统的包下
//这里翻译成C,庆隐可以据此再翻译成Java
//不过誉宽厅从C的角度来说,因为可以直接操作指针,所以这段代码是臃肿没有意义的
//但如果翻译Java,那么是有意义的
//其意义就在于将一个32整型数组转换成一个8位字节数组
void Encode(uint8_t* output, uint32_t* input, uint32_t len)
{
uint32_t j, tmp;
for(j = 0; j len; j++){
巧局 tmp = input[j];
output[0] = tmp;
tmp = 8;
output[1] = tmp;
tmp = 8;
output[2] = tmp;
tmp = 8;
output[3] = tmp;
output += 4;
}
}
从Java的角度来说,Java这种语言的应用主要是在高层应用。Java的语法总体而言比较简单,封装机制比较完善,这些简单性就是为了使开发者能把精力集中在业务流方面,而不是语言本身方面。Java的这种特性使得了解Java底层机制并不能对你应用Java产生太大的帮助。做Java的人更应该去关心一些软件工程相关的问题,而不是拘泥于底层实现机制。而且由于Java本身并不复杂,且很少涉及直接硬件编程,因此只要有一定的Java程序设计经验,一般都能体会到其内部实现的大致情况,例如堆栈大体上如何布局等,这已经足够了,你再去详细了解每一个细节,并不能帮助你把程序写得好很多。
从一个所有语言通用的观点来说,了解一个语言的编译细节,是要建立在对语言本身一定理解的基础之上的。当一个具有钻研精神的程序员具备了这样的基础之时,他自然而然会去了解更深入的细节。新手的很多“有没有用,该不该学”的问题,恰恰是反映了他们还没有具备那样的学习基础,新手需要的不是一步登天的想法,而是踏踏实实把基础打牢的决心。而且了解编译细节也并非只是知道“每句语言对应了哪句汇编代码”那么简单的,这是一个非常复杂的学习过程,需要相当的基本功,包括梁虚亏编译原理、计算机组成原理、接口原理、操作系统原理等等计算机专业里最复杂的课程内容。而且对于高级语言而言,也并不存在一个你所想象中的汇编和语句的一一对应关系。
最后,还想澄清一些概念。严格意义上说,Java不属于编译型语言,因为Java的“编译器”仅仅是将Java代码翻译成字节码,而不是机器码。字节码通过虚拟机转变为本地机器指令。研究这些底层代码一般有几种目的,一是逆向工程,二是加深对语言理解,以期写出更好的代码,三是编译理论的研究者改进编译过程。我前面已经分析过,对誉卖于Java这种橡神语言而言,第二个目的并不是一个正确的方向,至少不是一个有效的方向。而第三个目的则远远不是一般人所能企及的,这里面有个人能力的原因,也有制度方面的原因(所以你所说的“改进Java”只能作为一种业余爱好意义上的改进,并不具有实践上意义,除非有一天你能进入具有发言权的大型公司或组织,并成为其中的核心技术人员)。研究Java字节码一般是基于第一个目的,即逆向工程。而至于说研究虚拟机怎样把字节码编程本地指令,则一般是虚拟机设计人员研究的问题,Java程序员去研究的话,意义也不大。
我不知道说了这么多有没有把问题讲清楚。
1、需要百度下载一个jad.exe的工具包,放到个人jdk版本的主目录下的bin目录下。
2、同时需要把下载下来的一个名为net.sf.jadclipse_3.3.0.jar的jar包复制到eclipse-plugins目录下。
3、打开eclipse 在window-preferences 下对工具jadClipse进行配置。
4、最后还需坦坦拆要修改eclipse的配置方式File Associations ,找到 .class 文件,并把jad设为 .class文件的 默认打开方式。
5、最后可以看到 jad工具配信拆置成功后 ,eclipse 显示成功让枣,以String.class为例。
6、Java Decompiler 是一个jar包查看的绿色工具,无需eclipse便可直接打开并查看 jar包内容,点击OK即可查看任何一个exe程序的源代码。