关于自己编译JDK的问题
小弟初级程序员1枚,最近在看深入理解JAVA虚拟机1书,发现有很多疑惑,作者在第一章中实践编译OPENJDK,从官网上下载OPENJDK源码,编译完成后就可以当作JDK来...
小弟初级程序员1枚,最近在看深入理解JAVA虚拟机1书,发现有很多疑惑,作者在第一章中实践编译OPENJDK,从官网上下载OPENJDK源码,编译完成后就可以当作JDK来使用了,那么我想问的问题是
1。将JDK源码进行编译是做了点什么?是将JDK中的.java文件编译成.class文件吗?
2。JDK中包含开发工具包和JVM,作者编译完JDK以后,用的还是原来包中的JVM吗?
3。我们平常使用的JDK,例如JDK1。7中,里面的文件是以.java形式存在的还是以.class形式存在的,或者是以.java形式存在,要用的时候在用JVM去编译的? 展开
1。将JDK源码进行编译是做了点什么?是将JDK中的.java文件编译成.class文件吗?
2。JDK中包含开发工具包和JVM,作者编译完JDK以后,用的还是原来包中的JVM吗?
3。我们平常使用的JDK,例如JDK1。7中,里面的文件是以.java形式存在的还是以.class形式存在的,或者是以.java形式存在,要用的时候在用JVM去编译的? 展开
1个回答
展开全部
1 JDK是c/c++写的, 编译就是把JDK编译成可以运行的状态, 可运行的意思是指可以编译运行.java文件. 而一般情况下官方下载的JDK都是已经帮你编译好而已.
2 作者可以用自己编译的, 也可以用官方编译好的. 这个要看书中的说明了
3 JDK是c/c++写的, 里面和其他c++程序没什么区别, windows下面是一堆dll和一堆exe. 你说的.java文件是JDK的功能之一, 帮你编译java文件成class, JVM是运行class文件的容器
善意提醒: 如果你想学java, 而且没学过c++, 相信你是买错书了
2 作者可以用自己编译的, 也可以用官方编译好的. 这个要看书中的说明了
3 JDK是c/c++写的, 里面和其他c++程序没什么区别, windows下面是一堆dll和一堆exe. 你说的.java文件是JDK的功能之一, 帮你编译java文件成class, JVM是运行class文件的容器
善意提醒: 如果你想学java, 而且没学过c++, 相信你是买错书了
追问
谢谢,还有个问题,我在运行1个JAVA程序的时候,JVM是先把程序编译成JAVA字节码,然后再转换成机器码进行解析,如果在这个JAVA程序中需要引用到JDK中的某些方法,(jdk中有C/C++的,也有JAVA本身写的方法,假设引用的是JAVA写的方法)那么它拿到的直接是JAVA字节码的文件还是1个普通的JAVA程序文件?也就是说从JDK中拿过来的需要经过2步,还是只需要经过1步才能变成机器码?
追答
.java是给你看的 .class是给JVM看的 机器码是给CPU看的.
因此 JVM只认.class文件, (JDK的javac程序可以帮助你把.java转成.class).
你的引用其实也是.class文件的形式
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询