Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Các chế độ biên dịch (compilation modes) của Module trong Java 9

Module chứa package, có module descriptor: tên module, dependencies (requires), exported packages (exports).

module com.tutorialspoint.app {
    requires com.tutorialspoint.services;
    exports com.tutorialspoint.app.util;
}

Java 9 cung cấp 3 compilation mode:

1. Legacy Mode

  • Kích hoạt khi --source, --target, --release ≤ 8.
  • Compiler hành xử như Java 8: dùng -classpath, -sourcepath truyền thống.
  • Không dùng module options (--module-path, --module).
  • Code chạy như unnamed module tại runtime.
  • Dùng cho: migrate dần, build legacy project chưa modular.

2. Single Module Mode

  • Kích hoạt khi compilation environment ≥ 9 VÀ KHÔNG dùng --module-source-path.
  • Code tổ chức theo package hierarchy truyền thống.
  • Có module-info.java tại root source.
  • Chạy trên module-path (không phải classpath).
  • Chỉ 1 module-info.java trong source tree → "single module".
  • Cấu trúc:
src/
  module-info.java
  com/
    example/
      MyClass.java

3. Multi-Module Mode

  • Kích hoạt khi compilation environment ≥ 9 VÀ dùng --module-source-path.
  • Nhiều module dưới cùng 1 source root.
  • Mỗi module trong subdirectory riêng.
  • Compile-time: --module-source-path chỉ định root source.
  • Cấu trúc:
src/
  moduleA/
    module-info.java
    com/example/a/
  moduleB/
    module-info.java
    com/example/b/

So sánh 3 mode

ModeJava Version--module-source-pathModule-info.javaClasspath/Modulepath
Legacy≤ 8Không dùngKhông có / bỏ quaClasspath
Single Module≥ 9Không dùng1 file tại rootModule-path
Multi-Module≥ 9CÓNhiều file, mỗi module 1Module-path

Ví dụ compile Multi-Module

javac --module-source-path src -d out $(find src -name "*.java")

Hiểu 3 mode giúp cấu hình build đúng cho project modular, legacy, hoặc hybrid.