首页 > 编程语言 >Java 9的模块化系统(JPMS):探讨Java 9引入的模块化系统,并解释其对Java生态的影响

Java 9的模块化系统(JPMS):探讨Java 9引入的模块化系统,并解释其对Java生态的影响

时间:2024-05-24 09:57:32浏览次数:23  
标签:JPMS 封装 模块化 系统 模块 Java

Java 9 模块化系统(JPMS)简介

Java 9 模块系统,也被称为 Java 平台模块系统 (JPMS),它是 Java 9 的核心特性之一,用于改进 Java 的大型应用的封装性和可维护性。

 

JPMS 的主要功能如下:

 
  • 模块化代码:JPMS 允许你将代码库划分为不同的模块,在没有显示声明的情况下,模块内部的类不会暴露给其他模块。
  • 更好的封装:JPMS 提供更强大的封装机制。你可以将内部的 API 和类隐藏起来,只暴露需要公开的接口和服务。
  • 显式依赖:在 JPMS 中,每一个模块都需要明确声明它所依赖的其他模块。这使得模块间的依赖关系更清晰、更易于管理。
  • 改善性能:通过提前编译和优化模块加载,JPMS 可以提升Java应用的性能。
 

引入模块化系统的原因和目标

 

模块化系统引入的主要原因:

 
  • 改善封装:在无模块化系统的情况下,Java的访问修饰符(public, private, protected, default)并不能完全满足代码隔离的需求。通过模块化,可以将内部类进行隐藏,只暴露需要公开的接口,提高了封装性。

  • 解决JAR地狱:Java的类路径(classpath)导致了著名的"JAR hell"问题,也就是说,如果在类路径上有多个版本的同一jar文件,那么可能会导致应用程序故障。通过JPMS的显式依赖声明,可以很好避免此类问题。

 

模块化系统引入的主要目标:

 
  • 可靠性配置:模块系统可以检查在编译时和运行时的依赖关系,这样可以确保每一个模块都是可靠的,避免了运行时才发现的错误。
  • 更强大的封装能力:只有在模块声明中明确指定的包才可以被其他模块访问,这样提高了Java的封装性能力。
  • 更优的性能:模块系统不仅可以减少Java应用运行时需要的内存占用,还可以提高应用的性能,因为JVM可以对模块进行更优化的处理

工作原理

<

标签:JPMS,封装,模块化,系统,模块,Java
From: https://blog.csdn.net/weixin_37954941/article/details/139115181

相关文章

  • Java异常处理:共享在设计和实现Java异常处理策略时的最佳实践
    一、概览Java异常处理的最佳实践通常包括以下几个方面:有效使用Java提供的异常类型,创建和使用自定义异常,异常链,异常处理策略,以及记录和传播异常。二、有效使用Java提供的异常类型检查异常(CheckedException):这些异常是在编译阶段就会被检查的异常,通常是预期内的问题......
  • JavaScript 动态网页实例 —— 简单的表单验证
            表单验证是网页设计、特别是网站设计中必不可少的内容,狭义的验证指“用户是否进行了输入”、“输入的数据类型或格式是否符合要求”等,而广义的验证则包括口令确认与身份验证等内容。本章和下一章对表单验证的方式、方法进行介绍,本章只介绍一些简单的验证,包括:......
  • JAVA计算机毕业设计基于SpringBoot的疫苗接种管理系统(附源码+springboot+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着全球范围内新冠疫情的爆发和持续,疫苗接种成为了防控疫情的重要手段。然而,疫苗接种的管理涉及到众多的环节和人员,如何有效地管理和跟踪接种者的接......
  • JAVA计算机毕业设计基于SpringBoot的窈窕之求食单平台的设计与实现(附源码+springboot+
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着生活节奏的加快和人们健康饮食意识的提升,越来越多的消费者开始关注菜谱的选择和制作。然而,市场上缺乏一个统一的、便捷的在线平台,用于提供丰富的......
  • 5 月,Java 岗位爆了???
    大家好,我是R哥。最近,R哥分享了两个特别有意思的面试辅导成功案例:35K*14薪入职了,这公司只要不裁员,我能一直呆下去。。干了2年多Java外包,终于脱离了!今天再分享一个振奋人心的面试辅导case:这个兄弟空窗期5个月,0Offer,面试一问项目就挂,报名面试辅导,1周内拿到3......
  • Java面向对象-常用类(String 、StringBuffer 、StringBuilder的使用与深入)
    常用类-字符串相关类1什么是StringString是不可变类,即一旦一个String对象被创建,包含在这个对象中的字符序列是不可改变的,直至该对象被销毁。String类是final类,不能有子类。2分类StringStringBufferStringBuilder3String的使用packagecom.qf.string_c......
  • 零基础学Java第二十一天之IIO流之对象流
    IO流之对象流1、对象流1、理解将对象写入到文件,将文件里的对象读取到程序中classObjectInputStream–对象输入流classObjectOutputStream–对象输出流序列化/钝化:程序里的对象写入到文件中反序列化/活化:文件中的对象读取到程序中2、注意对象所属的类......
  • Java 异常相关(二):异常处理机制的补充,自定义异常的使用等
    一、前言记录时间[2024-05-22]前置文章:Java异常相关:异常体系结构,异常与错误的区别等本文讲述Java异常相关知识,对异常处理机制进行补充,以及自定义异常的方式。文章对异常知识的描述显然是笼统而简洁的,对于异常的学习,更应注重平时的积累和整理。二、异常处理机......
  • Java enum 枚举类
    JavaEnum枚举类概述枚举类型本质上也是一种类,只不过是这个类的对象是有限的、固定的几个,不能让用户随意创建。如果针对于某个类,其实例是确定个数,则推荐将此类声明为枚举类。如果枚举类的实例只有一个,则可以看作时单例的实现方式。枚举类的实现JDK5.0之前classS......
  • Java中负载均衡
    文章目录负载均衡背景如何实现负载均衡呢常见的负载均衡有三种负载均衡的作用范围负载均衡的的常用算法负载均衡背景在互联网的发展早期由于用户量较少业务需求比较简单对于软件应用来说我们只需要一台高配的服务器既可以完成整个业务的支撑这样的软件架构成为......