웹사이트 검색

자바 9 모듈


Java 9 모듈은 Java 구조의 가장 큰 변화 중 하나입니다. 여기에서는 "Java 9 모듈 시스템\에 대해 간략하게 소개하겠습니다.

자바 9 모듈

Java 9 모듈 시스템에 대한 다음 항목을 살펴보겠습니다.

  1. 소개
  2. 자바 SE 9: 직소 프로젝트
  3. 현재 자바 시스템의 문제점
  4. Java SE 9 모듈 시스템의 장점
  5. JDK 8과 JDK 9 비교
  6. Java 9 모듈이란 무엇입니까?
  7. 자바 9 모듈 시스템의 어머니
  8. Java 8 및 Java 9 애플리케이션 비교

소개

Oracle Corp은 Java 9 릴리스를 2017년 3월에서 2017년 9월로 연기했습니다. 우리가 알고 있듯이 Java SE 8에는 세 가지 큰 새 기능이 포함되어 있습니다(몇 가지 추가 개선 사항 및 새로운 기능 포함).

  1. 람다 식
  2. 스트림 API
  3. 날짜 API

같은 방식으로 Java SE 9에는 세 가지 주요 기능(몇 가지 추가 개선 사항 및 새로운 기능 포함)이 제공됩니다.

  1. Java 모듈 시스템(Jigsaw 프로젝트)
  2. 자바 REPL
  3. 제분 프로젝트 코인

이 게시물에서는 Oracle Jigsaw 프로젝트 기본 사항에 대해 설명합니다.

Java SE 9: 직소 프로젝트

Jigsaw 프로젝트는 Java SE 9: Java Module System의 완전히 새로운 개념을 도입할 예정입니다. Java SE 9 릴리스에서 Oracle Corp의 매우 크고 권위 있는 프로젝트입니다. 처음에는 Java SE 7 릴리스의 일부로 이 프로젝트를 시작했습니다. 그러나 큰 변화로 인해 Java SE 8로 연기되었다가 다시 연기되었습니다. 이제 2017년 9월에 Java SE 9와 함께 출시될 예정입니다. Jigsaw 프로젝트의 주요 목표:

  • 모듈식 JDK 아시다시피 현재 JDK 시스템은 너무 큽니다. 그래서 그들은 JDK 자체를 작은 모듈로 나누기로 결정하여 많은 이점을 얻었습니다(다음 섹션에서 곧 논의할 예정입니다).- 모듈식 소스 코드\n현재 소스 코드 jar 파일은 너무 큽니다. 특히 rt.jar은 너무 큽니다. 그래서 그들은 Java 소스 코드를 더 작은 모듈로 나눌 것입니다.- 모듈식 런타임 이미지 이 기능의 주요 목표는 "JDK 및 JRE 런타임 이미지를 재구성하여 모듈을 수용하는 것\입니다. - 대부분의 내부 API 캡슐화\n이 기능의 주요 목표는 \기본적으로 대부분의 JDK 내부 API에 액세스할 수 없도록 하지만 널리 사용되는 몇 가지 중요한 내부 API에 액세스할 수 있도록 하는 것\입니다.- Java 플랫폼 모듈 시스템\n이 기능의 주요 목표는 "사용자가 자신의 응용 프로그램을 개발하기 위해 모듈을 만들 수 있도록 허용하는 것\입니다.- jlink: Java Linker\n이 jlink 도구의 주요 목표는 "사용자가 자신의 응용 프로그램에 대한 실행 파일을 만들 수 있도록 허용하는 것\입니다.

이러한 사항을 명확하게 이해하지 못하더라도 걱정하지 마십시오. 다음 섹션과 다음 게시물에서 몇 가지 유용한 예제를 통해 이러한 개념에 대해 심도 있게 논의할 것입니다.

현재 자바 시스템의 문제점?

이 섹션에서는 현재 Java System의 문제점을 의미하는 "Java SE 9 모듈 시스템이 필요한 이유\에 대해 설명합니다. Java SE 8 이전 시스템에서는 Java 기반 응용 프로그램을 개발하거나 제공하는 데 다음과 같은 문제가 있습니다.

  • JDK가 너무 커서 작은 장치로 축소하기가 약간 어렵습니다. Java SE 8은 이 문제를 해결하기 위해 compact1, compact2 및 compact3의 세 가지 압축 프로필 유형을 도입했습니다. 그러나 이 문제는 해결되지 않습니다.
  • rt.jar 등과 같은 JAR 파일은 너무 커서 소형 장치 및 애플리케이션에서 사용할 수 없습니다.
  • JDK가 너무 크기 때문에 애플리케이션이나 장치가 더 나은 성능을 지원할 수 없습니다.
  • "public\ 액세스 수정자가 너무 개방적이기 때문에 현재 Java 시스템에는 강력한 캡슐화가 없습니다. 누구나 액세스할 수 있습니다.
  • JDK, JRE가 너무 커서 애플리케이션 테스트 및 유지 관리가 어렵습니다.
  • 대중이 너무 개방적이기 때문에 sun.*, *.internal.* 등과 같은 일부 내부 비핵심 API의 액세스를 피해서는 안 됩니다.
  • 사용자가 내부 API에도 액세스할 수 있으므로 보안도 큰 문제입니다.
  • 응용 프로그램이 너무 큽니다.
  • 구성 요소 간 Less Coupling을 지원하기가 약간 어렵습니다.

이 모든 문제를 해결하기 위해 Oracle Corp은 Java SE 9 Release에서 Java Module 시스템을 출시할 예정입니다.

Java SE 9 모듈 시스템의 장점

Java SE 9 Module System은 다음과 같은 이점을 제공할 예정입니다.

  • Java SE 9는 JDK, JRE, JAR 등을 더 작은 모듈로 분할하므로 원하는 모듈을 사용할 수 있습니다. 따라서 Java 애플리케이션을 소형 장치로 축소하는 것은 매우 쉽습니다.
  • 테스트 및 유지 관리 용이성
  • 더 나은 성능을 지원합니다.
  • public은 단순한 public이 아니라 매우 강력한 캡슐화를 지원합니다. (큰 개념이니 걱정하지 마세요. 곧 몇 가지 유용한 예를 통해 살펴볼 것입니다.)
  • 더 이상 중요하지 않은 내부 API에 액세스할 수 없습니다.
  • 모듈은 원치 않는 내부 세부 정보를 매우 안전하게 숨길 수 있으므로 더 나은 보안을 얻을 수 있습니다.
  • 원하는 모듈만 사용할 수 있기 때문에 애플리케이션이 너무 작습니다.
  • 구성 요소 간 Less Coupling을 지원하기 쉽습니다.
  • 단일 책임 원칙(SRP)을 지원하기 쉽습니다.

곧 이러한 모든 개념을 하나씩 살펴보겠습니다.

JDK 8과 JDK 9 비교

Java 9 모듈이란 무엇입니까?

Java 9 모듈 시스템의 어머니

현재 Java 9 모듈 시스템에는 Early Access JDK에 95개의 모듈이 있습니다. Oracle Corp은 JDK jar와 Java SE 사양을 두 개의 모듈 세트로 분리했습니다.

  • 모든 JDK 모듈은 "jdk.*\로 시작합니다.
  • 모든 Java SE 사양 모듈은 "java.*\로 시작합니다.

Java 9 모듈 시스템에는 "java.base\ 모듈이 있습니다. 기본 모듈이라고 합니다. 독립 모듈이며 다른 모듈에 종속되지 않습니다. 기본적으로 다른 모든 모듈은 이 모듈에 종속됩니다. 이것이 "java.base\ 모듈입니다. base” 모듈은 Java 9 모듈의 어머니라고도 합니다. 모든 JDK 모듈 및 사용자 정의 모듈의 기본 모듈입니다.

Java 8 및 Java 9 애플리케이션 비교

  • 하나의 모듈
  • 모듈 이름
  • 모듈 설명자
  • 패키지 세트
  • 유형 및 자원 세트

여기서 리소스는 module-info.java(모듈 설명자) 또는 기타 속성 또는 XML일 수 있습니다. 우리는 이 포스트에서 너무 많은 이론을 논의했습니다. Java 9 Module 시스템의 기초를 이해하기에는 이 정도면 충분하다고 생각합니다. 다음 게시물에서 몇 가지 기본 모듈 개발을 시작할 것입니다. 필요에 따라 이론 개념이나 Java 9 모듈 시스템 용어에 대해 좀 더 논의하겠습니다. "Java 9 모듈 시스템 소개\ 주제에 관한 모든 것입니다. 다음 게시물에서 Java SE 9 모듈 시스템 개념에 대해 더 논의할 것입니다. 내 게시물이 마음에 들거나 문제/제안/유형 오류가 있는 경우 댓글을 남겨주세요. . 내 자습서를 읽어 주셔서 감사합니다. 즐거운 Java SE 9 학습! 참조: Project Jigsaw