温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Module模块和包区别

发布时间:2026-10-08 21:49:40 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java 里,**包(Package)和模块(Module,Java 9+)**是两个不同层级的概念,主要区别如下:


一、什么是包(Package)

包是类和组织代码的命名空间

  • 用来避免类名冲突
  • 控制访问权限(public、protected、默认、private)
  • 物理上对应目录结构

示例:

package com.example.util;

public class StringUtils {
}

特点:

  • 只管“类怎么放”
  • 没有强约束“哪些类能被外部用”
  • 同一个包里的类可以互相访问(默认权限)

二、什么是模块(Module)

模块是比包更高一级的代码组织单位(Java 9 引入)

  • 一个模块可以包含多个包
  • 明确声明:
    • 自己导出哪些包
    • 依赖哪些模块

模块描述文件:module-info.java

module com.example.app {
    requires java.sql;
    exports com.example.util;
}

含义:

  • 只有 exports 的包,其他模块才能用
  • 没导出的包,即使 public 也不能被外部访问

三、核心区别对比

对比项 包(Package) 模块(Module)
引入版本 Java 1.0 Java 9
作用层级 类级别 多个包级别
主要目的 命名 + 访问控制 系统级封装与依赖管理
是否控制依赖 ❌ 无 ✅ 有
是否控制对外暴露 仅靠访问修饰符 显式 exports
对应文件 目录 module-info.java

四、简单类比

  • 包 ≈ 文件夹
  • 模块 ≈ 一个“受控的项目 / 组件”

包解决“类放哪、怎么命名”
模块解决“谁可以用我、我依赖谁”


五、什么时候用模块?

  • ✅ 大型项目 / 框架 / JDK 自身
  • ✅ 微服务基础模块
  • ❌ 小项目、学习 Demo(用包就够了)

如果你愿意,我可以:

  • 用 一个完整小例子 演示包 + 模块
  • 或对比 Maven 模块 vs Java 模块
  • 或讲 为什么 Java 9 要引入模块

你想看哪一个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手