假设我有一个libraryId = org.abc和artifactId = myLibrary的库.模块名称的推荐名称是:myLibrary或org.abc.myLibrary?是否有任何官方指南的命名方案?

解决方法

一段时间以来,对于您的问题有两种不同的看法,但在模块系统开发过程中,社区解决了反向DNS方法.

唯一的模块名称 – 反向DNS

这里,假设模块名称应该是全局唯一的.鉴于这个目标,最实用的方法是遵循包命名策略,并反转维护者关联的域名. The State of the Module System says this:

Module names,like package names,must not conflict. The recommended way to name a module is to use the reverse-domain-name pattern that has long been recommended for naming packages.

此外,Mark Reinhold writes:

Strongly recommend that all modules be named according to the reverse Internet domain-name convention. A module’s name should correspond to the name of its principal exported API package,which should also follow that convention. If a module does not have such a package,or if for legacy reasons it must have a name that does not correspond to one of its exported packages,then its name should at least start with the reversed form of an Internet domain with which the author is associated.

这很清楚,由其他Java专家like Stephen Colebourne共享.

模块大于人工制品

有一段时间(2016年初),还有另一项推荐. JDK团队表示,模块名称可能不一定是唯一的,因为“因为模块比定义它们的工件更抽象”. Mark Reinhold writes:

Choose module names that start with the name of your project or product. Module (and package) names that start with reversed domain names are less likely to conflict but they’re unnecessarily verbose,they start with the least-important information (e.g.,com,org,or net),and they don’t read well after exogenous changes such as open-source donations or corporate acquisitions (e.g.,com.sun.*).

The reversed domain-name approach was sensible in the early days of Java,before we had development tools sophisticated enough to help us deal with the occasional conflict. We have such tools Now,so going forward the superior readability of short module and package names that start with project or product names is preferable to the onerous verbosity of those that start with reversed domain names.

另外,具有不包括域的模块名称将允许将该模块与另一个实现交换,只要它具有相同的名称(并且当然实现相同的公共API).

在上面的邮件里,Reinhold记录了他的意见变化:

Some people may prefer shorter,project-oriented names,and those can be fine to use in limited projects that will never,ever see the light of day outside of a single organization. If you create a module that has even a small chance of being open-sourced in the future,however,then the safest course is to choose a reverse-DNS name for it at the start.

概要

陪审团是在公众中公开表示反对的DNS一样的包装.

我应该如何命名我的Java 9模块?的更多相关文章

  1. ios – 错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器

    当我尝试在设备上运行应用程序时出现此错误.当我在模拟器上运行它并且post请求正常工作时,我没有收到此错误.这是我的代码片段:任何帮助表示赞赏.谢谢解决方法此错误通常会提示DNS相关问题.检查设备上的DNS设置并确认您可以使用Safari或其他浏览器浏览互联网.如果有一个url,你可以在同一台服务器上获取,尝试直接在设备上的Safari中访问它.

  2. 将POD规范属性与其Xcode配置中的不同构建设置相关联(例如,发布,调试)

    我正在尝试为现有的库项目创建POD规范.在Xcode项目中,构建设置为不同的构建配置定义了不同的预处理器宏例如:对于“调试”配置:对于“发布”配置:如何将这些设置映射到相应的POD规范?

  3. android – 在Mac上查看本地网络服务器,具有计算机名称,而不是IP

    解决方法简而言之,没有Android设备将无法通过.local地址默认访问您的Mac.OnMacs,“本地”通常会通过mDNS来解决.Android操作系统没有对mDNS的内置支持.Android通过标准DNS解析域名,除非您运行自己的本地DNS服务器,否则不会解析您的本地网络地址.Android设备要么使用ISP的DNS服务器,要么转发到ISP的路由器DNS服务器.

  4. 150行Node.js实现的dns代理工具

    这篇文章主要介绍了150行Node.js实现的dns代理工具,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 浅析Node.js:DNS模块的使用

    本篇文章主要介绍了Node.js:DNS模块的使用,DNS模块包涵有关DNS查询和操作的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

  6. Python DNS查询放大攻击实现原理解析

    这篇文章主要介绍了Python DNS查询放大攻击实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  7. PHP中PDO连接数据库中各种DNS设置方法小结

    这篇文章主要介绍了PHP中PDO连接数据库中各种DNS设置方法,结合实例形式总结分析了php常用的各种pdo连接数据库技巧,需要的朋友可以参考下

  8. Node.js中DNS模块学习总结

    本篇文章给大家详细介绍了Node.js中DNS模块的相关知识点,以及相关的实例代码做了分享,有兴趣的朋友参考下。

  9. Windows – ssh:无法解析主机名github.com STATUS_ACCESS_VIOLATION at eip = 68086014

    编辑1:给给我一个减号的人.在你看来,我不应该问.而是,格式化硬盘驱动器.这样会好吗?我在VMwareFusionVM中有这个问题.我不得不将我的网络从NAT改为Bridged,并开始工作.

  10. 域名系统 – 可能是NXDOMAIN劫持?

    112.224.30.64.in-addr.arpa.14:55:39.983324IP192.168.0.22.domain>192.168.4.11.44686:52751/0/0PTRphx1-ss-2-lb.cnet.com.所以,如果我正确读到这个,这是否意味着我的DNS服务器肯定会回复cnet.com地址?如果我使用nslookup,将其设置为192.168.0.22服务器,并查询一个jibberish域A记录,它什么都不返回.啊哈!你有一个com的搜索后缀–你对asdfjjjf.com的第一

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部