Java 9 モジュール
Java 9 モジュールは、特定の機能を提供するパッケージのコレクションとして導入される新しいエンティティです。 Java 9 モジュールは、パッケージをモジュールに再配置して分類した後の Java 開発キットの最初のリリースです。これは、Java 9 プラットフォーム モジュール システム (JPMS) としても知られています。 Java 9 では、必要なモジュールのみを含めることでランタイムのサイズを削減できます。たとえば、GUI をサポートしていないデバイスの場合は、GUI モジュールを含めずにランタイムを作成できます。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
主なハイライト
- Java 9 モジュールは、パッケージの高レベルの抽象化の実装です。
- 機能に関連するすべてのパッケージが 1 つのモジュール (合計 95 モジュール) にパックされています。これにより、プラットフォームの完全性が向上し、強力なカプセル化が実現します。
- Java アプリケーションまたは Java API 用のモジュール式 JAR ファイルとして個別の Java モジュールを作成できます。
Java 9 モジュール システム
- Java 9 モジュールでは、機能的に関連したパッケージがモジュールと呼ばれる再利用可能なグループに集約されます。
- Java 9 モジュールにはリソース (画像や XML ファイルなど) が含まれる場合があります。 java.base モジュールは、すべてのモジュールに必要な独立したモジュールです。
- システム モジュールは標準であり、名前は java で始まります。
- たとえば、JavaFX モジュール (JavaFX で始まる名前)、JDK モジュール (jdk で始まる名前)、Oracle モジュール (oracle で始まる名前) などです。
Java 9 モジュールの種類
1.アプリケーションモジュール
- これらのモジュールはプログラマーによって作成されます。
- アセンブルされたパスの非公式 JAR には、モジュールの名前と定義を含むコンパイル済みの module-info.a クラス ファイルが含まれています。
2.自動モジュール
- 既存の JAR ファイルがモジュールに追加されると、自動モジュールが作成されます。
- JAR の名前がモジュールの名前になります。
3.名前のないモジュール
- これはクラスパスにロードされるが、モジュール パスにはロードされないクラスまたは JAR です。
- これは、以前に作成された Java コードとの下位互換性を維持するための包括的なモジュールです。
モジュール記述子
- module-info.java ファイルには、モジュール定義またはモジュールを説明するメタデータが含まれています。
- module-info.java をコンパイルすると、モジュール記述子を含む module-info.class が取得されます。これはモジュールのルート フォルダーに保存されます。
- モジュール記述子は 1 つ以上のエクスポートで構成され、句が必要です。
- パッケージを他のモジュールにエクスポートしたり、他のモジュールのパッケージを使用したりできるため、独立したモジュールです。
- メタデータには、一意の名前、exports 句、requires 句の 3 つが含まれます。
- 一意の名前: モジュールに与えられた名前。
コード:
module eg.com.module1 { }
- エクスポート条項: モジュール内のパッケージは、他のモジュールが使用できるようにエクスポートできます。
コード:
module eg.com.module1 { exports eg.com.module1.service; }
- Requires 句: 他のモジュールからのパッケージが必要な場合に使用されます。
コード:
{ requires eg.com.module1; }
Java 9 モジュール システム アプリケーションのモジュール
- JDK の bin フォルダーから JDK セットのモジュールを一覧表示します。 CLI で次のコマンドを実行します java –list-modules
- キーワード module は、モジュールを宣言するために使用されます。モジュール本体は、 module modulename { } のように中かっこで囲まれています。
- exports モジュール ディレクティブにより、モジュールのパッケージが他のすべてのモジュールのコードにアクセスできるようになります。
- エクスポート…適格レポートを定義します。 エクスポートされたパッケージにアクセスできるパッケージのリストは、カンマ区切りのリストで正確に指定できます。
コード:
module com.educba.util { exports com.educba.app; exports com.educba.security to com.educba.client, com.educba.producer; }
- オープン モジュール ディレクティブが使用されると、特定のモジュール内のすべてのパッケージが実行時および他のすべてのモジュールへのリフレクションを介してアクセス可能になります。モジュール内のすべてのパッケージへのランタイムのみのアクセスを許可するには、次のようにモジュール全体を開くことができます。
コード;
open module <em>modulename</em> { // module directives }
- To allow runtime-only access to packages in a module. An open module directive of the form opens package- can be used. The code in other modules can access the public types of a package and its nested public and protected types at runtime only. Reflection can be used to access all the types and the types’ members in the specified package.
- The code in the listed modules can access the public types of a package and its nested public and protected types at runtime only. Reflection to code in the specified modules can be used to access all of the types and types’ members in the specified package.
How to Create a New Java 9 Module?
- Create a directory structure
src\com.educba\com\educba
- In the command prompt
mkdir –r src\com.educba\com\educba
- Create a new module in a text editor and save it as a java file module-info.java.
module com.educba { }
- Set the environment variable JAVA_HOME to the path where Java is installed.
For example, JAVA_HOME C:\Program Files\Java\jdk-9\bin
Add %JAVA_HOME% to PATH in control Panel->system->advanced system setting->environment variables.
- To see the compiled module descriptor in the CLI.
Code:
>javap mods/com.educba/module-info.class
Output:
It shows requires java.base in the modules definition, though we had created an empty module. It is because java.base is the basic and independent module. All other modules depend on it.
Comparison Table of JDK 8 and JDK 9
The most obvious difference between JDK 8 and JDK 9.
Feature | Java 8 | Java 9 |
Top Level component | Package | Module |
New features launched | ● Lambda Expressions
● Stream API ● Date API |
● Java Module System (Jigsaw Project)
● Java REPL ● Milling Project Coin |
Performance | Compromised performance due to big size of jdk | Improved performance |
Testing and maintaining applications | Difficult with large size of JRE | Easy with REPL and reduced size depending on modules included. JShell or REPL: Read and evaluate Print Loop for easy execution and testing of Java Constructs like class, interface, enum, object, and statements easily. |
Security | It is compromised because of no encapsulation. Internal APIs can be accessed easily by users and potential hackers. Reflection could be used to learn about private members too. | String security as Reflection does not provide access to private members. Only those exposed by export keywords are available through reflection. |
Packaging format | JAR | JMOD can include native code and configuration files. |
結論
Java 9 は、分散アーキテクチャの新しいコーディング技術と互換性を持たせるために Java コードを再構築するために最も求められているものです。必要なモジュールを含めることを選択できるため、実行可能ファイルのサイズが削減され、パフォーマンスが向上します。強力なカプセル化により、潜在的なハッカーが利用できるクラスが少なくなり、より高いセキュリティが可能になりました。モジュール性により、依存関係の宣言と決定に透明性が提供されます。
よくある質問
Q1.レガシー アプリケーションを JAVA 9 に移行するにはどうすればよいですか?
答え: 従来のアプリケーションを Java 9 でコンパイルできます。コンパイル時に、Java 9 のモジュール構造にないコード部分でエラーが発生します。ここで、ある程度の費用が必要になります。必要なモジュールを含める時間です。 Jshell を使用して、必要な出力を得るために新しいコードをテストできます。
Q2.システムによってどのモジュールが提供されているかを確認するにはどうすればよいですか?
答え: java –list-modules を使用してモジュールをリスト表示できます。それらの機能についての知識を得るには、ドキュメントを参照する必要があります。
Q3. JAVA で動作するには IDE をインストールする必要がありますか?
答え: いいえ。コマンド ライン インターフェイスにどれだけ慣れているかによって異なります。 IDE は、ユーザーには知られていない多くのジョブをバックエンドで実行します。 CLI は、問題を特定して解決するための最良のオプションです。
Q4.モジュール内のパブリック パッケージにアクセスするにはどうすればよいですか?
回答: パブリック パッケージ info.java および required_package_name にアクセスするには、モジュールのモジュール定義に次の内容を追加する必要があります。
以上がJava 9 モジュールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。
