为什么Java有一个中央API文档,而不是C ++?

时间:2011-11-06 05:14:46

标签: java c++ api

问题几乎解释了这一切。我一直在想为什么Java有很好的,有组织的和集中的API文档,但C ++库定义似乎分散在互联网上?

是否因为Sun在使Java API文档易于访问方面付出了一些努力?提前谢谢。

4 个答案:

答案 0 :(得分:10)

你称之为“精美,有组织/集中,API”的Java可能是Oracles官方实施的文档。 C ++实现也有自己的文档,例如,GNU的实现在http://www.gnu.org/s/libc/manual/(C部分)和http://gcc.gnu.org/onlinedocs/libstdc++/(C ++部分;请参阅“API和源文档”部分)中有详细记录。您还可以在MSDN Library中找到Microsoft C ++实现的完整文档。

您可能会发现Java API更简洁,文档更详细,因为它只有一个严肃的实现(Oracle的原始实现),使其文档成为语言本身的资源。

另一方面,C ++是一种标准,由各种各样的供应商实现,许多文档资源甚至不是基于任何特定的实现,而是基于标准本身。最后,互联网上不同的C ++资源往往在某些领域超越其他人。例如,cplusplus.com集中了关于<iostream><string>和初学者主题的良好文档,而SGI实施STL(http://www.sgi.com/tech/stl/)的文档成为STL的参考资源,可能是因为它的完整性和非常好的组织。

答案 1 :(得分:3)

C ++有一个语言规范和一组标准库。

Java还有一个语言规范,还有一组标准库。

我没有看到C ++标准和Java标准之间存在任何根本区别,除了Java还带有标准实现(来自Oracle,以前是Sun)。

PS: 不可否认,Java有一个用于GUI(Swing)的标准API,而C ++则没有。但你真的想强制像Windows MFC这样的“标准”,排除像Qt这样的替代品吗?

答案 2 :(得分:2)

部分区别在于C ++标准库的定义不如Java等价物。 C ++标准留下了很多的空间,实现在某些情况下表现得略有不同,豪华Java没有提供。所以对于Java来说,一旦你有一套好的,高质量的文档,你就完成了......你需要知道的一切就在那里。但是使用C ++,例如,STLPort的文档不一定与Dinkumware相匹配,而且最终会出现大量分散的文档。

答案 3 :(得分:1)

一个原因是C ++与单一供应商无关,因此默认情况下它不是集中式的。

另一个原因是Java提供了记录注释作为语言的一部分,Javadoc从一开始就作为标准JDK工具之一提供。这对API文档的可用性产生了影响。生成API文档始终是Java构建模型中的一个自然阶段。

C ++是一个不同的故事。我在GCC的basic_string.h实施中遇到了Nathan Myers的以下评论。

  

文档?那是什么?

仅在最近Doxygen建立了事实上的标准。很长一段时间,记录评论就像是黑魔法。每个项目都依赖于自己的工具,即使某些项目有非常好的文档,这些工具也无法用于一般用途。我记得有人乞求 Trolltech 发布 Qt 文档工具,但这种情况从未发生过。