谁最终需要Java模块?
拼图问题为1000。我作为X想要JPMS模块。 如果不是平台开发人员,X是什么?
我的回答是X是人(减去平台开发人员,因为那是一个条件) 。 我们都需要模块系统具有更安全的代码,从而产生更可靠的系统,从而带来更好的业务绩效,带来更好的经济效益并带来人类幸福。 也许我得出的结论有点过头了,但重点是,无论是否意识到,行业内的每个人都需要模块系统。 你会得到的。 首先,我们应该从问题的先前答案开始。
Nicolai Parlog说: 每个类型不是全部公开的库开发人员。
非常真实 作为一个库开发人员,我想设计我的库,以便分离API。 我希望将公共接口与实现分开。 这就是我们程序员所说的“封装”。 封装起来太好了。 我们喜欢这样做! 我们这样做,因为它很有趣! 我们喜欢它!
关于第二个想法,尽管我们这样做是因为它是一种创建可靠的无错误软件的工具。
它帮助使用我的代码封装内部状态和实现的代码开发人员编写更好的代码。 这有点像抚养孩子。 作为父母,我不允许他们做某些事情。 多吃巧克力,熬夜等等。 即使他们暂时看不到它,这也是为了他们自己的利益。 当然,后来,当他们长大并自己成为父母时,他们将理解并做同样的事情。 对于库开发人员和使用程序员的库来说,没有什么不同,除了,也许程序员永远不会长大。
同样,作为图书馆开发人员,我要使用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模块?相关推荐
- java 模块 分工_Java秒杀系统实战系列~构建SpringBoot多模块项目
摘要:本篇博文是"Java秒杀系统实战系列文章"的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项 ...
- java11模块化开发_【JDK 11】关于 Java 模块系统,看这一篇就够了
继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间隔了 Java 9 和 Java 10 两个非LTS(Long Term Supp ...
- 关于 Java 模块系统,看这一篇就够了
作者 | Emac 杏仁医生架构师兼平台组负责人,关注为服务.DevOps领域. 继 2014 年 3 月 Java 8 发布之后,时隔 4 年,2018 年 9 月,Java 11 如期发布,其间间 ...
- equinox java_带有Java模块的Eclipse Equinox
equinox java Eclipse Equinox项目为开发各种OSGi规范的实现提供了一个社区. 在Equinox和OSGi规范的中心是OSGi框架提供的Java tm动态模块系统. 许多其他 ...
- java模块是什么6_Java 9 揭秘(6. 封装模块)
Tips 做一个终身学习的人. Java 9 在这章节中, 主要介绍以下内容: 封装Java模块的不同格式 JAR格式增强 什么是多版本JAR 如何创建和使用多版本JAR JMOD是什么格式 如何使用 ...
- 微服务java模块内存管理_Java 9模块服务
微服务java模块内存管理 接线与查找 Java长期以来都有一个ServiceLoader类. 它是在1.6中引入的,但是自Java 1.2以来就使用了类似的技术. 一些软件组件使用了它,但是使用并不 ...
- java 多模块模块变灰色_到底谁需要Java模块?
java 多模块模块变灰色 拼图问题为1000.我作为X想要JPMS模块. 如果不是平台开发人员,X是什么? 我的回答是X是人(减去平台开发人员,因为那是一个条件) . 我们都需要模块系统具有更安全的 ...
- java模块_Java 9 揭秘(2. 模块化系统)
文 by / 林本托 Tips 做一个终身学习的人. 在此章节中,主要介绍以下内容: 在JDK 9之前Java源代码用于编写,打包和部署的方式以及该方法的潜在问题 JDK 9中有哪些模块 如何声明模块 ...
- final 最终 演练 java
final 最终 演练 java final修饰类 一个父类被修饰 子类去继承 提示 结论 类被final修饰 它就不能再被继承了 final修饰方法 在父类中定义了一个final方法 子类可以正常的 ...
最新文章
- MES系统模块设计之物料控制 Material Control -- 1
- springboot+hbase 集成
- 从未如此简单:10分钟带你逆袭Kafka!
- 6-MyBatis基础
- 社区团购如今进行得如火如荼
- Javascript设计网页中的下拉菜单
- [转]ios面试题收集(二)
- Could not find a version that satisfies the requirement torch==1.4.0 (from torchvision)
- 三大抽样分布——卡方分布、t分布、F分布
- Java项目:ssm党员管理系统
- ROS ros::NodeHandle nh(“~“)
- MacBook重装系统
- 啦啦啦啦啦啦啦啦啦啦啦啦
- mininet和ryu简单实现自定义topo
- springboot+Rabit实战二:(Rabbit MQ web 界面管理)
- 基于Android网上在线学生选课系统
- 「杂谈」面试中需要注意的非技术问题
- vue实现消息badge 标记_Badge 标记
- highCharts 设置标示线
- 一天一大 leet(二叉树的序列化与反序列化)难度:困难 DAY-16
热门文章
- MySQL 大表优化方案(1)
- ​通俗理解神经网络BP反向传播算法
- JavaFX官方教程(二)之JavaFX体系结构
- JAVA多线程和并发面试问题
- idea如何安装lombok
- java中遍历树形菜单,你可能不知道还有这样的方法
- C#中的序列化和反序列化
- HBase出现java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration问题
- 同步和异步有何异同,什么场景使用
- 使用SpringBoot搭建一个简单的webSocket服务