`
tiangaopp
  • 浏览: 3587 次
社区版块
存档分类
最新评论

JAVA 9模块系统(一)

    博客分类:
  • JAVA
 
阅读更多

    在JAVA 9之前,我们会遇到一些JAR相关的问题:有些是缺少相关依赖,有些是存在多个版本,这可能导致功能错误,甚至是系统的崩溃。对开发者来说,我们很容易理解各个JAR有自己的标识,组件之间存在依赖。但是对JAVA来说,JAR包只是一系列的Class文件,不能描述JAR包的属性。

    JAR依赖发生的错误,在复杂的系统中可能会遇到。 常见的如:

    1. NoClassDeffFoundError 这个发生在JVM执行相关依赖的代码。找到缺失的依赖比较容易,但分析缺少的原因可能需要相对困难。 一般我们通过工具,生成依赖图,再来找出运行时缺少相关依赖的原因。

    2. Shadowing 这个只不同的JAR包,存在相同的命名(package + class name). 这种情况比较少见。在项目有一次遇到。在测试环境,出现JVM找不到Object的方法,但是在本地环境确不能重现。后来发现,在不同的JAR包存在相同的命名,而本地与测试环境加载jar包的顺序不一样,所以表现出不同的效果。

    3. 版本冲突 这个比较常见,我们往往引入依赖JAR包,这个会引入其它依赖。可能会出现对同一个JAR包,出现多个版本。一般来说编译工具会优化这个问题,警告我们存在多个版本,选择最新的版本使用。

    4. 模块的弱封装 如果依赖的某个JAR包,跨越package的边界,是是否定义为public。这可能导致虽然我们某些功能定义为public, 但是确是为模块内部使用,不应该为其它的JAR包调用,但是在JAVA9出现前不能从技术上根本解决这个问题。

    5. 启动的性能 许多应用程序,比如使用spring, 在启动的时候回消耗许多时间。JVM虽然class为lazy load, 但是当需要一个class时,需要知道这个class是在哪个JAR包。所以,启动的时候一般需要执行JAR包的扫描,以确保知道对应的class路径。

    6. JRE裁剪 如果你应用程序,不需要Swing, SQL, XML, 能裁剪这些代码吗?JAVA 8 定义JRE三个模块的子集,但是这些是固定的,不能动态调整,并不能满足对JRE部分裁剪的需求。

    后面的文章,我们将讲述JAVA 9如何解决这些问题。最主要的,JAVA 9在设计理念上将影响我们,让大家更加注重模块图,更加注重模块之间的依赖管理。

分享到:
评论

相关推荐

    Java9模块化开发核心原则与实践

    Java9是Java语言的一个重大更新,其引入了模块化系统,这一变化对于大型项目和库的管理和维护具有深远影响。本文将深入探讨Java9模块化开发的核心原则与实践,帮助开发者理解和掌握这一新特性。 一、模块化系统:...

    Java9模块化demo

    Java 9 模块化是 Java 语言发展中的一个重要里程碑,它引入了模块系统,旨在提高软件的可维护性、安全性和性能。这个模块化系统称为 Project Jigsaw,它的核心概念是将大型程序分解为相互独立、清晰定义的模块。在 ...

    Java 9 模块化编程英文版电子书.pdf

    Koushik Kothagal所著的《Modular Programming in Java 9》是一本专注于Java 9模块化编程的电子书,它详细阐述了Java平台模块系统(JPMS),即Jigsaw项目的成果。Jigsaw项目的目标是模块化Java平台本身,并使Java...

    JAVA模块化系统实践.pdf

    这涉及到Java平台模块系统(JPMS)的介绍和应用,该系统自Java 9开始被引入到标准Java平台中,旨在解决传统Java应用程序中存在的问题,如类路径混乱(Classpath Hell)和庞大的单体式JDK等问题。 #### 二、模块化的...

    Java 9 模块化编程_英文版

    Java 9 模块化编程是Java语言发展中的一个重要里程碑,它引入了模块系统,显著提高了软件的可维护性、可扩展性和可移植性。这一重大改进使得大型项目能够更有序地组织其代码库,降低了依赖冲突的可能性,并优化了...

    java9 模块化讲解文档

    Java 9 是 Java 平台的一个重要版本,它引入了模块化系统,即 Project Jigsaw,这是为了提高Java平台的可维护性、安全性和性能。模块化系统将Java应用程序和库分解为独立的、声明性定义的单元,称为模块,这使得...

    moditect, Java 9模块系统的工具.zip

    moditect, Java 9模块系统的工具 ModiTect - 用于 Java 9模块系统的工具版本 1.0.0. Beta1 - 2018-03-18ModiTect项目旨在为使用 Java 9模块系统("") 提供高效工具。目前支持以下任务:为给定构件生成 modu

    java 模块化 开发

    OSGi(Open Service Gateway Initiative)是 Java 的一个运行时动态模块系统,提供了静态模块化的解决方案。OSGi 规范描述了 OSGi 运行时的工作行为方式。 在 OSGi 中,一个模块(也称为 bundle)是一个普通的 JAR ...

    《Java9模块化开发核心原则与实践》书中源码

    Java 9是Java平台的重大更新,引入了模块化系统,这一改变对Java的生态系统产生了深远影响。本书《Java9模块化开发核心原则与实践》由Sander Mak和Paul Bakker共同撰写,旨在深入探讨Java 9的模块化系统,帮助开发者...

    图书:Java模块

    Java模块系统通过引入明确的模块定义和封装机制,有效地解决了这个问题。书中会介绍如何使用`module-info.java`文件来声明模块的依赖和暴露的API,以及如何通过`requires`、`exports`、`uses`和`provides`关键字来...

    关于Java 7模块系统

    关于Java 7模块系统

    Java小型物业管理系统,涵盖停车、安保、客服、工单、收费、财务、办公自动化等模块.zip

    Java小型物业管理系统,涵盖停车、安保、客服、工单、收费、财务、办公自动化等模块 Java小型物业管理系统,涵盖停车、安保、客服、工单、收费、财务、办公自动化等模块 Java小型物业管理系统,涵盖停车、安保、...

    java实现模块化 学生选课系统

    Java模块化主要是通过Java 9引入的模块系统来实现的,它可以将大型项目分解为多个独立的、可管理的模块,提高代码的组织性和可维护性。每个模块都有明确的边界,定义了自己的API,并可以依赖其他模块。在学生选课...

    深入解析Java模块系统(JPMS):工作原理与实践应用

    Java模块系统(JPMS)是Java 9中引入的一项重大改进,旨在提供一种新的代码组织方式,以支持模块化开发。模块化使得代码更加清晰、易于维护,同时增强了应用程序的安全性和性能。本文将深入探讨JPMS的工作原理、关键...

    JAVA 模块开发资源

    2. **Java 9及以上的模块系统** - **Jigsaw项目**:Java 9引入了全新的模块化系统,也称为Jigsaw项目,它为大型应用提供了更强大的封装和依赖管理机制。 - **模块描述符**:`module-info.java`文件用于定义模块...

    JAVA系统开发登入模块及用户管理模块模板

    在JAVA系统开发中,用户管理和登录模块是任何应用程序的基础组件,尤其对于初学者而言,理解并实现这些功能至关重要。这个模板提供了基础的架构,帮助开发者快速构建这些功能。以下是相关知识点的详细说明: 1. **...

    Java 模块开发.rar

    Java 平台模块系统是在 JDK 9 正式发布的。...下一次,我们再来讨论 JDK 9 之后,我们应该怎么使用 Java 平台模块系统。 缺失的访问控制 我们都清楚并且能够熟练地使用 Java 的访问修饰符。这样的访问修饰符一共有三个

    java 电影售票系统

    【Java 电影售票系统】是一个基于Java编程语言开发的应用程序,设计用于模拟电影院的售票流程。这个系统提供了从选择电影、场次到购买门票等一系列功能,对于初学者来说,它是一个很好的实践项目,有助于理解面向...

    java网上购物系统论文 java网上购物系统论文

    Java网上购物系统论文 本文总结了Java网上购物系统论文的主要内容,涵盖了系统总体功能框架图、...通过对系统技术架构的设计和实现, Java网上购物系统可以满足用户的购物需求,提供一个高效、可靠的网上购物平台。

Global site tag (gtag.js) - Google Analytics