【问题标题】:Sun's Java Package Naming Convention: sun vs. com.sunSun 的 Java 包命名约定:sun vs. com.sun
【发布时间】:2010-11-22 20:06:34
【问题描述】:

在 JRE 中,Sun 的内部包以 2 个顶级域(sun 和 com)为前缀。例如,

com.sun.security.jgss
sun.security.jgss

他们选择哪个前缀对我来说似乎很随机。我很好奇 Sun 对此使用了什么规则。

【问题讨论】:

    标签: java naming-conventions packages


    【解决方案1】:

    不是问题的答案,但请注意,您不应直接在程序中使用“sun”或“com.sun”包。

    Why Developers Should Not Write Programs That Call 'sun' Packages

    这些包不是标准 Java 库的公共 API 的一部分,使用它们可能会使您的程序与 Java 的未来版本或 Sun 实现以外的 Java 实现不兼容(并且其他供应商有几种实现,包括 Apple、IBM 和 HP)。

    【讨论】:

    • 在您链接到的那个文档中,我没有看到任何关于不使用 com.sun.* 的信息;它只说不使用太阳。*。包名称 com.sun.* 只是意味着它是他们自己的公共软件的一部分,他们可以像任何其他公司一样提供这些软件。
    • @Jasper,你已经在另一个讨论中发布了这个链接 [stackoverflow.com/questions/1906673/… 但链接的文档只是关于“sun”包,而不是“com.sun”包。如果你能提供一个实际上告诉不要使用“com.sun”包的链接,你能否更新链接?
    【解决方案2】:

    如果您看一眼compatibility document for Java 5,您会发现还有其他原因:

    Apache - 从未支持 J2SE API 但被 javax.xml 包使用的 org.apache 类已在 5.0 中移至 **com.sun.**org.apache.package.internal 以便它们不会与开发人员下载的最新版本的类发生冲突。
    任何依赖于作为 J2SE 版本一部分的 org.apache 类的应用程序必须执行以下操作之一才能在 5.0 中工作:
    * 对应用程序进行编码,使其仅使用 JAXP 中受支持的接口。
    * 从 Apache 下载 org.apache.xalan 类。

    【讨论】:

      【解决方案3】:

      “com.sun”约定是更可取的格式,因为它遵循为命名 Java 包而建立的“命名约定”。

      http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html

      您应该使用您唯一的公司或个人网站 URL 作为包中的前几个词,以保证命名空间中的唯一性。以“sun”开头的可能不打算暴露在外面的世界。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-07
        • 2011-02-12
        • 2013-10-03
        • 2015-12-19
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多