java 多模块模块变灰色_到底谁需要Java模块?

java 多模块模块变灰色

拼图问题为1000。我作为X想要JPMS模块。 如果不是平台开发人员,X是什么?

我的回答是X是人(减去平台开发人员,因为那是一个条件) 。 我们都需要模块系统具有更安全的代码,从而产生更可靠的系统,从而带来更好的业务绩效,从而带来更好的经济效益并带来人类幸福。 也许我得出的结论太过分了,但重点是,无论是否意识到,行业内的每个人都需要模块系统。 你会得到的。 首先,我们应该从问题的先前答案开始。

Nicolai Parlog说: 每个类型不是全部公开的库开发人员。

非常真实 作为一个库开发人员,我想设计我的库,以便分离API。 我希望将公共接口与实现分开。 这就是我们程序员所说的“封装”。 封装起来很好。 我们喜欢这样做! 我们这样做,因为它很有趣! 我们喜欢它!

关于第二个想法,尽管我们这样做是因为它是一种创建可靠的无错误软件的工具。

它帮助使用我的代码封装内部状态和实现的代码开发人员编写更好的代码。 这有点像抚养孩子。 作为父母,我不允许他们做某些事情。 多吃巧克力,熬夜等等。 这是为了他们自己的利益,即使他们暂时还看不到它。 当然,后来,当他们长大并自己成为父母时,他们将理解并做同样的事情。 对于库开发人员和使用程序员的库来说,没有什么不同,除了,也许程序员永远不会长大。

同样,作为图书馆开发人员,我将为使用我的代码的开发人员而需要JPMS。 我的库不会仅仅因为封装而好坏。 (附带说明:这会更好,但不是因为其中的错误数量减少了。)我可以很容易地暗示我作为图书馆开发人员的需要最少是JPMS。 亲爱的程序员,谁在乎您是否使用我的库来射杀您的睾丸? 您有责任仅调用公共API,而不能调用一些经常修改的内部类和方法。 还是?

并不是的。 创建易于使用且难以出错的库也是我的责任。 这就是我们所说的可用性。 这是JPMS模块系统出现的地方。 没有JPMS,我可以记录哪些软件包是公共的,哪些是特定于实现的。 我与图书馆用户之间的约定是,他们将不使用图书馆的私有资源,因此,出于这种良好行为,我将使图书馆的公共部分保持稳定,以便他们无需在发行版本之间更改代码。 。 (顺便说一句,有没有人意识到这个名字,jPMS是多么的血腥?是什么?PMS,真的吗?更不用说看到与此有关的所有抽筋了:nomen est omen。这不是幸运的洗礼。)

让我们回到轨道上:为什么我们需要为此使用模块系统? 开发人员是纪律严明的人,他们不想伤害自己。 他们不应该,也不会使用库的内部代码。 从长远来看,这对他们不利,他们深知这一点。 从长远来看麻烦。 从长远来看,我们都死了。 在开发过程中,通常会在发布日期之前的几天,使用某个库的某些内部API似乎很有利可图。 以某种怪异的方式,这些内部调用正是您所需要的。 您知道您不应该使用它们,并且有一个很好的,礼貌的解决方案,但是这需要更多的时间来开发。 只是随着发布日期的临近,您没有时间遵循这种模式。 更不用说为“我能做到”而自豪,“我对这些工具的了解程度”,而不是因为羞辱篡改图书馆的私有部分而感到羞耻。

这就是Java Module System出现的地方。 您将无法执行快捷方式。 您会感叹过去Java面向全世界开放的美好时光,无论类加载器上有什么(更不用说FORTRAN编程了,是对还是对?),但是您将遵循规则,因为它否则将无法正常工作。

您认为使用库的内部部件并不容易受到虚荣的影响。 这是一个测试:您是否认识到我使用了“库的内部API”这一表达? 如果不是,那就感到羞耻,但不要承认。 没必要。 Java模块系统将有助于忘记不存在的事物,例如内部API。 废话。 API是公开的。 没有内部API之类的东西。 生成的代码将更好,更易于维护,不容易进行库升级,因此底线更便宜。

从长远来看,当我们全都死了时,我们的后代将创建更好的代码,并且具有模块级封装将是显而易见的事情,就像世界和平将是那个时候一样。

因此,我需要Java模块系统,您需要它,其他每个人都需要它来建立一个更美好的世界并实现世界和平。

免责声明:本文的作者没有以英语为母语

翻译自: https://www.javacodegeeks.com/2017/05/needs-java-modules.html

java 多模块模块变灰色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python如何保持数据类型不变_python 可变和不可变数据类型、格式化输出和基础运算符...

一、可变类型和不可变类型#可变类型:在id不变的情况下,value可以变,则称为可变类型,如:列表,字典#不可变类型:value一旦改变,id也改变,则称为不可变类型(id变&#xff0c…

MacBook Air的命令终端如何在root和普通用户之间切换

有时你需要在一些root级别的目录下创建和删除文件,如果你没有切换到root用户下,系统会提示你没有权限,如下所示: liaowenxiongdeMacBook-Air:local liaowenxiong$ mkdir test mkdir: test: Permission denied liaowenxiongdeMacB…

mysql导入数据显示进度条_导入数据思路+进度条

/// ///基础数据导入/// private voidLoadBasicData(){this.NowCount 0;this.AllCount 0;this.hasResult false;try{DelegateShowProssBar mi newDelegateShowProssBar(ShowProcessBar);this.BeginInvoke(mi, new object[] { "导入基础数据", "导入数据"…

redis key失效的事件_《分享几道高频 Redis 高频面试题,面试不用愁》

1、说说 Redis 都有哪些应用场景?缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。共享Session:对于一些依赖 …

mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...

事件function count(){var sum;//获取第一个输入框的值var aparseFloat(document.getElementById("txt1").value);//获取第二个输入框的值var bparseFloat(document.getElementById("txt2").value);//获取选择框的值var cdocument.getElementById("se…

解决文件内容的中文乱码_字符集_字符编码_字符编码方案

从第三方下载的java源文件,打开查看里面的中文全部是乱码,无论你使用什么字符编码集都无法正常显示,该文件是用UTF-8编码存档的,使用UTF-8解码也同样是乱码,相信很多人遇到类似的问题,我这里解决过一个经典…

安卓清理垃圾清理代码_从战中清理代码

安卓清理垃圾清理代码从战中清除代码–验证 让我们直接从一个例子开始。 考虑一个简单的Web服务,该服务允许客户向商店下订单。 订单控制器的非常简化的版本可能如下所示– RestController RequestMapping(value "/",consumes MediaType.APPLICATION_J…

rust为什么显示不了国服_捋捋 Rust 中的 impl Trait 和 dyn Trait

缘起一切都要从年末换工作碰上特殊时期, 在家闲着无聊又读了几首诗, 突然想写一个可以浏览和背诵诗词的 TUI 程序说起. 我选择了 Cursive 这个 Rust TUI 库. 在实现时有这么一个函数, 它会根据参数的不同返回某个组件(如 Button, TextView 等). 在 Cursive 中, 每个组件都实现了…

Sublime Text for Mac的快捷键

文章目录选择文本移动光标编辑文本查找/替换窗口显示书签和标记其它选择文本 快捷键说明CommandD先选中文本,再按CommandD,会选中下一个相同的文本,再继续按D(Command不放)则会选中下一个相同的文本,可以同时编辑被选中的文本Con…

zip unzip_zip和unzip上的Java要点

zip unzip压缩是编写文件时可以在我们的代码中发出的主要动作之一。 因此,我发现在zip和unzip上必不可少的简单Java代码段,并且必须易于访问。 要点是纯Java语言,并以zip格式存储两个文件。 完成后,打开打开的拉链并评估其内容。…

mysql不支持子查询_MySQL不支持子查询优化一例

一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 value一创建表create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 values(1,1),(2,2),(3,3…

nginx配合python_人生苦短我用python[0x02] nginx与python结合

原标题:人生苦短我用python[0x02] nginx与python结合**文章内容为原创,欢迎转载请注明出处**背景nginx是一款高性能的http服务器,python是一门无论做系统开发还是业务逻辑开发都是非常不错的动态语言,现在流行微服务,微…

Linux 文件颜色含义

目录文件:蓝色 一般文件:白色 符号链接:紫色 设备文件:黄色 可执行文件:绿色 链接文件:青色 图片文件:粉红色 压缩文件:红色 其它文件:灰色 链接文件&#xff1…

Mysql索引使用情况_介绍mysql索引失效的情况

mysql视频教程栏目索引失效的情况。索引对于MySQL而言,是非常重要的篇章。索引知识点也巨多,要想掌握透彻,需要逐个知识点一一击破,今天来先来聊聊哪些情况下会导致索引失效。图片总结版相关免费学习推荐:mysql视频教程…

java8根据某个id删选_Java 8可选

java8根据某个id删选在编程时,我们都面临着(最) 臭名昭著的NullPointerException 。 而且我相信我们所有人都同意,遇到NullPointerException也是一种痛苦。 为了使读者了解最新情况,著名的计算机科学家Tony Hoare引入了…

emacs python ide_Emacs Python IDE win7 x64

安装平台 win7 x64 ,emacs 23.3.1snippet工具,可自定义一些模板:.emacs 配置如下(add-to-list load-path "~/.emacs.d/yasnippet")(require yasnippet) ;; not yasnippet-bundle(yas/global-mode 1)自动完成工具,其实只…

解决阿里云 ssh 远程连接短时间没操作就会断掉的问题

在本地主机(例如:你自己的 MacBook)中打开 sshd 的配置文件,命令语句如下: sudo vim /etc/ssh/sshd_config注意:使用用户 root 编辑配置文件,否则会报错。 找到下面这个两行(/Clie…

oracle查看jdk文档_Oracle JDK 9 Early Access文档已更新

oracle查看jdk文档Raymond Gallardo于2017年4月4日发布的针对Oracle JDK 9的抢先 访问文档已更新,今天宣布对Oracle JDK9文档的抢先访问页面进行了更新。 Gallardo重点介绍了一些更新的部分,包括Oracle JDK 9的新增功能 , Oracle JDK 9迁移指…

python3 selenium_Python3+Selenium3自动化测试-(准备)

Python3Selenium3自动化测试-(准备)最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录,# 系统:win10(64位)# 浏览器:Chrome(67.0)、Firefox(61.0)、IE# python版本:3.6.5# Selenium:3.13…

MacBook如何通过键盘快捷键输入特殊字符_特殊符号

符号快捷键说明–[ Option ][ - ]破折号[ Option ] [ / ]除号≠[ Option ][ ]不等号≤[ Option ][ < ]≥[ Option ][ > ][ Option ][ \ ]左指双角引号[ Option ][ ’ ]拉丁文小写字母AE…[ Option ][ ; ]水平省略号≈[ Option ][ X ]约等于Ω[ Option ][ Z ]希腊文大写…