Object类是如何生成的?
我只是想知道如何从.java源文件中生成像java.lang.Object,java.lang.String这样的类(在Oracle提供的rt.jar中)。 我认为,他们的javac不可能编译它们。
我试图编译Dummy.java,其中包含“class Dummy {}”
lab @ labb:〜/ Documents $ set PATH =。:$ JAVA_HOME / bin
lab @ labb:〜/ Documents $ set CLASSPATH =。
lab @ labb:〜/ Documents $ javac -verbose Dummy.java
[解析开始RegularFileObject [Dummy.java]]
[解析完成12ms]
[源文件的搜索路径:]
[类文件的搜索路径:/usr/lib/jvm/java-7-oracle/jre/lib/resources.jar,/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar,/ usr / lib中/ JVM / JAVA -7- ORACLE / JRE / LIB / sunrsasign.jar,/ usr / lib中/ JVM / JAVA -7- ORACLE / JRE / LIB / jsse.jar,/ usr / lib中/ JVM / Java的7 ORACLE / JRE / LIB / jce.jar,/ usr / lib中/ JVM / JAVA -7- ORACLE / JRE / LIB / charsets.jar,/ usr / lib中/ JVM / JAVA -7- ORACLE / JRE /类, /usr/lib/jvm/java-7-oracle/jre/lib/ext/sunpkcs11.jar,/usr/lib/jvm/java-7-oracle/jre/lib/ext/dnsns.jar,/usr/lib /jvm/java-7-oracle/jre/lib/ext/zipfs.jar,/usr/lib/jvm/java-7-oracle/jre/lib/ext/localedata.jar,/usr/lib/jvm/java -7- ORACLE / JRE / lib / ext目录/ sunec.jar,/ usr / lib中/ JVM / JAVA -7- ORACLE / JRE / lib / ext目录/ ,.把sunjce_provider.jar]
[加载ZipFileIndexFileObject [/usr/lib/jvm/java-7-oracle/lib/ct.sym(META-INF /符号/ rt.jar中/爪哇/郎/ 对象的.class)]]
[检查虚拟]
[加载ZipFileIndexFileObject [/usr/lib/jvm/java-7-oracle/lib/ct.sym(META-INF / sym / rt.jar / java / lang / AutoCloseable .class)]]
[写RegularFileObject [Dummy.class]] [共131ms]
所有类都可以表示为Java代码(如您在此处所见:http://www.docjar.com/docs/api/java/lang/package-index.html)并由javac编译。 Object
是一个特殊的情况,只要被虚拟机加载,它就不会获得超类。
您可以使用反编译器(例如JAD)来查看如何查看.class的源文件。
在基类的情况下,有一些方法需要被native
及其实施系统相关的库,例如提供dll
for Windows或so
Linux操作系统。
字符串只有一个本地方法(实习生)。 对象有更多。 JRE中的类需要原生的与SO有关的事物,并且是非常低级的,比如原子值或线程(谢谢@yshavit),但绝大多数JRE库代码都是用Java编程的。
链接地址: http://www.djcxy.com/p/73813.html