Java 9のモジュールシステムとは?JPMSのメリットと基本的な使い方を解説
Java 9で導入された最も重要な新機能の一つがモジュール(Module)です。これは「Project Jigsaw」によって実現されたJavaプラットフォーム・モジュール・システム(JPMS)と呼ばれる仕組みで、コードをモジュールと呼ばれる小さなコンポーネント単位に分割できます。
各モジュールは明確な責務を持ち、正しく動作するために必要な他のモジュールへの依存関係を自ら宣言します。これにより、従来のクラスパスベースの開発では困難だった、堅牢なカプセル化と依存関係の明示化が可能になりました。
モジュラープロジェクトの作成手順
まず、module-info.javaという名前のファイルを作成し、対象となるパッケージ(モジュール)に配置します。例えば、パッケージ名がcom.mycompany.mypackageである場合、このファイルは同じ場所にsrc/com.mycompany.mypackage/module-info.javaとして保存します。
モジュールの定義には、requires(依存関係の宣言)とexports(公開範囲の指定)という2つのキーワードを使用します。
他のモジュールに依存する場合
あるモジュールが別のモジュールを必要とする場合は、次のように記述します。
module com.tutorialspoint.greetings {
requires org.tutorix;
}この例では、「com.tutorialspoint.greetings」モジュールが「org.tutorix」モジュールに依存していることを宣言しています。
モジュールの内容を外部に公開する場合
逆に、自分のモジュールのパッケージを他のモジュールから利用できるようにするには、次のように記述します。
module org.tutorix {
exports org.tutorix;
}exports句で指定されたパッケージのみが外部に公開され、それ以外のパッケージはモジュール内部に隠蔽されます。
モジュール化の主なメリット
- セキュリティの向上: モジュールは不要な情報や内部的な詳細を安全に隠蔽できます。各モジュールがアクセスできるのは、相手モジュールがexportsで公開したパッケージの内容のみであり、すべてのpublic APIにアクセスできるわけではありません。つまり、あるモジュール内でpublicとして定義されたクラスやメソッドも、exportsされていない限り他のモジュールからは利用できません。
- アプリケーションの小型化と高速化: 必要なモジュールだけを選んで組み合わせられるため、無駄のない軽量なアプリケーションを構築できます。
- 小規模デバイスへの容易なデプロイ: メモリ要件が大幅に削減されるため、IoTデバイスなどのリソースが限られた環境にも簡単に展開できます。
- 単一責任の原則(SRP)をサポート: 各モジュールが一つの明確な責務を持つため、設計原則に沿ったクリーンなアーキテクチャを実現しやすくなります。
- コンポーネント間の疎結合を実現: モジュール間の依存関係が明示されることで、コンポーネント同士の結合度が下がり、保守性と再利用性が向上します。
このように、Java 9のモジュールシステムは、大規模アプリケーションの保守性、セキュリティ、パフォーマンスを大幅に改善する強力な機能です。従来のJARファイルベースの開発に比べて、依存関係の管理が明確になり、意図しないAPIの利用を防ぐことができます。
-
Javaのクラスの種類一覧!具象・抽象・final・POJO・静的・内部クラスを徹底解説
Javaには、用途や宣言方法に応じてさまざまな種類のクラスが存在します。それぞれのクラスには固有の役割があり、適切に使い分けることで、保守性の高いコードを書くことができます。この記事では、Javaの代表的な6つのクラスの種類について、コード例とともにわかりやすく解説します。 1. 具象クラス(Concrete Class) 具象クラスとは、抽象メソッドを持たない通常のクラス、または親クラスやインターフェースのすべてのメソッドを実装しているクラスのことです。直接インスタンス化できる、最も一般的なクラスです。 コード例 public class Concrete { // 具象クラス
-
SOCKS5プロキシのメリットとは?VPNとの違いや活用法を徹底解説
VPNとプロキシサーバーを比較すると、多くの人はVPNの方が信頼性とセキュリティが高いと考えています。確かにその通りです。VPNは暗号化されたトンネルを通じて安全な接続を確立できる一方、従来のプロキシサーバーはWeb閲覧中の安全性を十分に保証してくれません。 では、「SOCKS5プロキシ」という言葉を聞いたことはありますか?SOCKS5は、プロキシサーバーのより安全なバージョンとも言える存在で、プライバシーとセキュリティを強化するための追加の利点をもたらしてくれます。 この記事では、SOCKS5プロキシの基本情報、主なメリット、そして安全な接続を確立するためにSOCKS5プロキシをVPNと併