据我所知,任何人都可以实现符合JVM specification标准的JVM(Java虚拟机).然而,当涉及到标准Java库(例如,StringArrayList等类)时,是否允许编译器重新实现这些类,或者允许任何JDK has使用Oracle提供的实现?如果允许第三方实现,谁能指出其中的几个,因为我在互联网上搜索了很多次,还没有找到任何答案.

我是Java生态系统的新手,有很长的C++背景.在C++中,Standard Template Library被标准化为C++标准的一部分,每个编译器都实现了自己的版本.然而,我没有为Java库类找到类似的标准.当然,有Oracle API documentation,但它并不能真正与C++提供的详细规范相比较.

推荐答案

是的,有,尽管由于OpenJDK SDK(包括JVM、JRE、Java类库(JCL)和所有东西)的免费提供,它们现在已经不那么频繁地使用了.

一个值得注意的项目是Apache Harmony,它拥有Java SE 5.0中几乎所有可用的类的实现.它实现了99%的Java SE 5类和大约97%的Java SE 6.Link here.

ApacheHarmony可以运行几个大型项目,包括Eclipse和Tomcat等.此外,Android基于这个项目中的类.

GNU有他们的项目,GNU Class Path.它声明在版本6之前的Java中实现了95%的类.

IBM还提供了自己的Full Java implementations,作为甲骨文试图提供的服务的完全替代品.IBM实现主要在基于Z/OS的大型机上使用.

有/有几个JCL实现.既然OpenJDK是可以免费获得的,那么使用替代产品的动力就会减弱.Android开始使用OpenJDK JCL.当Java不是免费的时候,有更多的努力转向非Oracle JVM、JRE和JCL(它们被Bundle 在一起构成JDK)

Java相关问答推荐

内容处置 destruct 了PSP请求

是否可以从@ TrustMapping中删除特定方法的基路径?

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

Java JAR环境(JRE)是否支持模块?

为什么如果数组列表中有重复项,我的代码SOMETIMES不返回true?

Java事件系统通用转换为有界通配符

Character::Emoji不支持带数字的字符吗?

Jlink选项&-strie-ative-Commands";的作用是什么?

Spring Boot@Cachebale批注未按预期工作

未找到适用于响应类型[类java.io.InputStream]和内容类型[Text/CSV]的HttpMessageConverter

舰队运行配置Maven版本

如何在Jooq中获取临时表列引用?

无法将GSON导入到我的JavaFX Maven项目

为什么这种递归会有这样的行为?

我的代码是线程安全的吗?[Java、CAS、转账]

使用@ExceptionHandler的GlobalExceptionHandler还是来自服务器的REST应答的ResponseEntity?

如何在Spring Security中设置一个任何人都可以打开的主页?

如何使用Hibernate v6.2构建NamingStrategy,以表名作为所有列的前缀?

如何通过gradle命令行从build.gradle获得Java targetCompatibility

这是JavaFX SceneBuilder的错误吗?