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

上一篇: How was Object class generated?

下一篇: How to access a smartcard in Java on Linux?