我只是很好奇,但我想知道是否可以完全删除JVM附带的Java标准类库,并从头开始一个新的[àLlassPath]。
如果可以,那么必须实现哪些类最小? (我想到了对象和字符串,但......我不知道。)
这样的事情打破了一些许可?有没有办法对“java”命令说“不使用rt.jar”?
提前致谢,
埃内斯托
答案 0 :(得分:5)
您可以使用-Xbootclasspath选项指定自己的核心类集。
如果您沿着这条路走下去,如果您打算使用第三方库,则可能会遇到很多问题,因为它们将依赖于核心API,并且您的版本中的任何不一致都可能导致错误。< / p>
作为绝对最小值,你可能不得不重新实现java.lang包中的所有内容。除了Object和String之外,还需要存在原始包装类,以便自动装箱工作。我不认为你可以在没有相当多的本机代码的情况下替换java.lang来使线程工作。
答案 1 :(得分:2)
理论上,“是”是可能的,尽管您可能还需要实现自己的JVM! JVM与一些低级类(Object,Class,Thread等)之间的关系使得这些类必须作为JVM的一部分来实现。
在实践中,这是一项如此重大的任务,你将在余生中继续努力,即使你成功了,也没有人会使用你的代码。这对我来说听起来并不像“有趣”。
这样的事情打破了一些许可?
不是说。但是,如果你试图发布它称之为“Java”,那么Sun的律师将会追究你的商标侵权行为。只有在针对Sun TCK进行验证的情况下,您才能合法地调用您的实现Java。
但我不想完全沮丧。如果你想破解JVM的内部或类似的东西,JNode project总是在寻找敏锐的新人。
答案 2 :(得分:0)
不,这根本不可行。我的意思是,当然,你可以做到,但你不会比拥有多年经验和大量Java专家的大型公司或开源项目做得更好。不过可能很有趣。