是否有一些好的、现代化的替代Javadoc的工具?

83

面对现实吧:没必要是一名设计师,也能看出默认的文档看起来很丑陋。

尽管网上有一些重新样式化的 文档资源,但默认行为应该代表产品,并且应该是相当好看的。

另一个问题是,与其他类似资源相比,的可用性已经不再更新。

特别是在使用Firefox的快速搜索时,非常大型的项目难以导航。

实践问题:
是否有任何独立的(桌面)应用程序,能够以比浏览器更易用的方式浏览现有的文档?
我正在思考像Mono的文档浏览器那样的东西。

理论问题:
有人知道是否有计划以某种标准化的方式发展文档呢?
编辑:这个主题的Sun'维基链接很有用。


4
如果javadoc能够生成有效的HTML 4.01或XHTML页面,那我会很高兴。 - akarnokd
2
你们有哪些可用性问题? - basszero
16
为什么会有人踩这个?我认为这是一个合理的问题:+1 - Daniel Sloof
2
(X)HTML 不应该是 Javadoc 的唯一方式。浏览器是访问(本地)知识库的非常有限的工具。 - ivan_ivanovich_ivanoff
14
我很喜欢 Javadoc。它清晰、简洁且直截了当。另一方面,MSDN 网站... - samoz
显示剩余10条评论
12个回答

43

我创建了一个Markdown (Java) Doclet,它可以将Markdown格式的源代码注释转换为相同的HTML Javadocs文档。

这个新的Doclet还会对文本进行一些重新设计,但是在此阶段生成的HTML没有发生改变。

这在一定程度上解决了HTML在Java注释中存在的问题,这可能是当前Javadoc最大的可用性问题。


21

我认为Javadoc的概念并不过时。据我所知,这些概念是多年前根植于一种名为doxygen的产品中的,该产品仍可用于其他语言(例如Objective-C,在该语言中它被广泛使用)。即使如此,它也有其前身 - 看看Donald Knuth用来创建TeX的编程环境(文学编程)。

尽管如此,拥有单一的源代码和文档非常吸引人。

除此之外,使用JavaDoc工具支持的插件系统可以定制文档的呈现方式,以满足您特定的需求。您可以提供一个插件(就像我们做的那样),将其直接发布到可以通过Web直接访问的数据库中。使用协作,任何人都可以提供其他评论或澄清信息,这些信息可能会回流到原始源代码中。


1
请查看ScalaDoc2 http://www.scala-lang.org/api/current/,然后再说Javadoc已经过时了。:-) 尽管我承认这是基本概念的更多或更少相同,只是实现方式更好。使用javadoc工具的新实现可能也可以做到同样的效果。 - Hans-Peter Störr

13

Javadoc是我见过的最好的源代码自动生成文档系统。其中很大一部分原因是它非常简单 - 即使我想用5年前的手机浏览javadocs也可以!虽然我同意有必要进行一些改进,特别是JDK浏览起来很麻烦,但我不敢完全重新发明轮子,因为我们目前拥有的是一种RESTful、易于使用的解决方案,可以在几乎任何地方使用。


1
好的,由于内部页面链接(例如http://download.oracle.com/javase/6/docs/api/java/lang/String.html#String(byte[]))使用了括号、方括号和其他不允许的字符,因此它们是无效的。这会导致在某些浏览器中无法正常显示。 - Joey
2
顺便说一下,更新一下这个评论,我现在实际上认为scaladoc2(请参见http://www.scala-lang.org/api/current/index.html)比javadoc更好,尽管主要是因为它借鉴了javadoc的优点,并添加了一些其他的好东西。 - Esko
2
又一次更新,JDK7中的javadoc系统进行了全面改进,现在看起来非常漂亮。有关参考,请查看官方API javadoc网址:http://download.oracle.com/javase/7/docs/api/ - Esko
是的,但它太丑了! - Ziggy
@Esko 我知道,我知道。不过你得承认:其他东西变得更漂亮了。Ruby更新了他们的文档样式... - Ziggy
显示剩余2条评论

11

我最近收到一封Sun公司正在改进Javadoc HTML输出的邮件转发。该邮件内容如下:

我们正在提议改进JDK7的javadoc/doclet。项目维基页面位于 http://wikis.sun.com/display/Javadoc/Home。作为建议的改进的一部分,将改进javadoc输出的用户界面。新设计的屏幕截图已上传至项目维基。 javadoc输出标记语言将被修改为有效的HTML和WCAG 2.0兼容。

因此,该项目仍在进行中,尽管有些晚了。然而,在我看来,Javadoc最大的缺点之一是它与HTML紧密耦合。许多类的Javadoc包括字面HTML,并依赖于输出也是HTML格式。这很不幸,但我认为这不会改变。尽管如此,这意味着开发人员可以在其中包含任何他们想要的无效、非规范等问题的HTML内容。因此,调整javadoc工具的输出只是其中的一部分,另一部分则不会和不能改变,因此仍然存在。

至于浏览文档,我也觉得HTML文档有些笨重。我通常使用Eclipse中的Javadoc视图。它也有缺点(速度慢,搜索功能不太好),但对于大多数事情来说已经足够了。


好消息!!!谢谢!!!我现在会编辑我的问题,提供这个有用的链接。 - ivan_ivanovich_ivanoff
@ivan_ivanovich_ivanoff,也许你可以向Sun团队表达你的关切。如果他们能让你满意,那么对我们所有人都有好处。 - Thorbjørn Ravn Andersen

5

个人认为Javadoc仍然非常有用,尤其是它标准化了。我不知道有哪种主要的文档风格更容易导航(这可能非常主观,但是例如我个人发现MSDN很难使用)。

对于搜索:使用Javadoc Search Frame,它使所有类型的Javadoc使用变得更加容易。它作为Firefox用户脚本Google Chrome扩展可用。


1
在我看来,Javadoc搜索框架似乎只在左侧框架中搜索包和类名称,这很有用,但不如全文搜索实用。 - Glenn Lawrence

4
为了回答你的实际问题,我通过谷歌和问朋友的方法得出了以下答案:Forrestdoc、doclet 和 doxygen。
至于第二个问题,我认为是的,它不是非常符合 Web 2.0 的风格,但至少可以在离线环境下工作,并且大小足够小以便与 API 一起发送。虽然我不喜欢使用框架,但对 javadoc 而言,它确实表现良好。我还没有看到任何改变它的计划。Eclipse 在阅读、解释和生成 javadoc 方面提供了一些支持。

3
您可能希望以不那么激进和专横的方式表达。大多数人并不关心技术资源的外观,“不够Web 2.0!”听起来像是空洞的市场用语。
那么,您认为“更可用”是什么?就我个人而言,我肯定希望有全文搜索和更好的使用浏览器,AJAX 可能可以帮助实现这些功能。
JavaDoc 的好处在于它与过时相反——它是任意可扩展的。为什么不编写doclet,以生成您想要的 API 文档?
为什么其他人到目前为止都没有这样做(显然是这种情况)是任何人的猜测——也许没有其他人像您一样强烈地感受到这一点。

1
  1. 事实是,人们对可用性的印象取决于良好的设计。
  2. AJAX - 用于本地 file:// 资源?
  3. 我相信,在 C/C++ 生态系统中没有人像我一样强烈地关注一致的命名,但这并不否定需要一致的命名。
- ivan_ivanovich_ivanoff
2
  1. 那么你认为“好的设计”具体是什么呢?我个人认为常规的JavaDoc设计得很好。
  2. 我想这不会是真正的AJAX,但类似的功能应该是可以实现的。
  3. 尽管如此,看起来当前的JavaDoc已经足够好,大多数人都没有费心去制作一个更好的 - 而这并不是很困难。
- Michael Borgwardt
1
  1. 标准部分:强结构化数据,不是HTML。实现部分:用Java编写的桌面应用程序;)3)我认为可以找到许多志愿者来改进Javadoc,但要使其严肃起来,需要一个JSR。对于这个主题来说,这是不现实的。
- ivan_ivanovich_ivanoff
@ivan_ivanovich_ivanoff:你认为需要哪些强结构化数据?为什么不编写一个 javadoc-doclet 来生成这种格式呢?我绝对反对桌面应用程序的想法,因为它会将您锁定在特定的应用程序上以查看文档。 - Mnementh

2

有一个DocBook文档生成器。相比于(X)HTML,DocBook是一种更丰富的文档类型,更适合描述技术内容。从DocBook源代码中,您可以生成各种不同的输出格式。


2

我个人希望有一个比HTML(因此标签繁琐)的JavaDoc更易读的“注释文档”标准。

例如,像这里使用的MarkDown将是非常好的选择,它在源代码中易于阅读,在源代码外部也可以很好地格式化。

在当前的JavaDoc中,我想象许多人会使用JavaDoc注释,但实际上并没有充分记录所需的内容。我相信每个人都曾浏览过API在线JavaDoc,而该文档未经记录或仅有少量记录,因此比应该更难使用。

这并没有得到代码重构工具(例如Eclipse内部或源代码提交后)的帮助,这些工具会完全破坏您可能在JavaDoc注释中放置的任何可读结构(例如,项目列表),转换为一个大的文本块,除非您真正使用两个回车符,否则无法实现您需要使用的换行)。


2
有没有人知道,是否有计划以某种标准化的方式改进Javadoc?
相应的JSR(JSR 260)已经从JDK 7中投票通过,该JSR指定了对Javadoc的增强。计划内容概述如下(来自this site):
升级Javadoc以提供更丰富的标签集,以允许更结构化地呈现Javadoc文档。此JSR涵盖:方法和字段的分类,类和包的语义索引,将静态、工厂、已弃用的方法与普通方法区分开,将属性访问器区分开,将信息组合和拆分为视图,嵌入示例和常见用例等。
JDK 7的总体前景非常暗淡,详情请参阅这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接