ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ систСма Java (JPMS), прСдставлСнная Π² Java 9, позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ прилоТСния Π½Π° логичСски обособлСнныС Π±Π»ΠΎΠΊΠΈ β€” ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

НС Maven/Gradle ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π² Maven ΠΈ Gradle β€” это структурныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ систСмы сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ зависимостями ΠΈ сборкой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ модулями Π² контСкстС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы Java (JPMS).

ΠœΠΎΠ΄ΡƒΠ»ΡŒ - это Π½Π°Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², содСрТащих Ρ‚ΠΈΠΏΡ‹ (классы ΠΈ интСрфСйсы) рСсурсы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ статичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

КакиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚?

  • Π”Π΅Π»Π°Π΅Ρ‚ зависимости явными
  • Π£Π»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, прСдотвращая созданиС Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ модулями. ВсС ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ доступов Ρƒ классов, Π½ΠΎ Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа Π½Π΅ Π±Ρ‹Π»ΠΎ.

Одним ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… прСимущСств JPMS являСтся Ρ‡Ρ‘Ρ‚ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ зависимостСй. Π’ старой систСмС Ρ‡Π΅Ρ€Π΅Π· classpath всС классы ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ доступны Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ Π±Π΅Π· явного указания Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ошибкам ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ использованию Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π‘ JPMS Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ зависимости Π½ΡƒΠΆΠ½Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅Π³ΠΎ части Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ модулям.

ДСскриптор

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ дСскриптор - Ρ„Π°ΠΉΠ» module-info.java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ зависимости Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΠ½ экспортируСт для Π΄Ρ€ΡƒΠ³ΠΈΡ…. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π² ΠΏΠ°ΠΏΠΊΠ΅ src/main/java.

ДСскриптор описываСт:

  • Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, экспортируСмыС, Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π½ΠΎ-экспортируСмыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простого дСскриптора:

module com.example.myapp {
    requires java.sql;
    exports com.example.myapp.service;
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ называСтся com.example.myapp ΠΈ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ (requires) ΠΌΠΎΠ΄ΡƒΠ»ΡŒ java.sql ΠΈ экспортируСт (exports) ΠΏΠ°ΠΊΠ΅Ρ‚ com.example.myapp.service, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ модулями. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ exports, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈ нСдоступными для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ систСма Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ совмСстимости с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями JDK. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° JPMS, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ систСму Ρ‡Π΅Ρ€Π΅Π· classpath.


ΠœΠ΅Ρ‚Π° информация

ΠžΠ±Π»Π°ΡΡ‚ΡŒ:: 00 Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ:: Устройство Java
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ::
Π‘ΠΎΠ·Π΄Π°Π½Π°:: 2024-10-15
Автор::

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ