1.1 大規模なプログラム

小さなプログラムの作成方法はすでに学習しましたので、次は大規模なプログラムの作成方法を学習します。ご存知のとおり、プログラムが大きく複雑になるほど、その開発にはより多くの資金が支払われます:) そして、少し背景から始めましょう...

プログラムのサイズが大きくなるにつれて、開発者は 2 つの新たな課題に直面します。

  • 大勢の人が同じプログラムに取り組んでいます。
  • プログラムのコード全体を知っている人はいません。

プログラマーがプログラムのある場所のバグを修正し、同時に別の場所で何かを壊すという状況が頻繁に起こり始めました。リリースドキュメントには次のようなジョークもあります。

変更点のリスト:

  • 古いバグを修正しました:)
  • 新しいものを追加しました:(

そこで彼らは、この問題を解決するための 2 つのアプローチを考え出しました。それは、技術的アプローチと管理的アプローチです。

技術的なアプローチは、プログラムをライブラリとモジュールの部分に分割するというものでした。このような各モジュールは小さなレンガであり、そこから大規模なプロジェクトが構築されました。ライブラリは、さまざまなプログラムで使用できる汎用コンポーネントです。

管理上のアプローチはさらに興味深いもので、1 つのプロジェクト/ライブラリに取り組むことができる人の数を制限していました。経験的に、チームは「ピザ 2 枚で食べられる」ほど大きなチームでなければならないというルールさえ思いつきました。これは通常、1 つのプロジェクトに 8 名を超える人が取り組んでいる場合、プロジェクトを 2 つのプロジェクトに分割する必要があることを意味します。

Java 開発者コミュニティでは、あらゆる場面に対応するライブラリを作成し、公開することが一般的になっています。したがって、Java プログラマは同じコード (多くの場合未加工でバグが含まれている) を再度記述することはできず、既製の実績のあるソリューションを使用する必要がありました。

さらなる動機は、サーバー側ソリューションを作成する際に Java 言語が非常に人気を得たことです (Java 言語はバックエンドで動作しました)。まず、サーバー ソフトウェアの信頼性に対する要件は高く、 独自のコードを記述するよりも、実績のあるライブラリを使用することが常に推奨されます。

次に、サーバーにはコードのサイズに事実上制限がありません。モバイル アプリケーションの開発者は、アプリケーションを 10 メガバイトに詰め込み、デスクトップ アプリケーションの開発者は 100 メガバイトに詰め込もうとします。そして、Java バックエンド開発者はプロジェクトに数十ギガバイトのライブラリを詰め込むことができますが、誰も彼に何も言いません :)

ちなみに、これは冗談ではありません。数十のモジュールと数百のライブラリを含むバックエンド プロジェクトを簡単に見つけることができます。しかし、そのようなプロジェクトのビルド スクリプトを記述する (そして変更する) ことは非常に困難になってきています。

そしてメイビン登場。

1.2 Maven の概要

Maven は、プロジェクトのビルド管理のための特別な「フレームワーク」です。次の 3 つのことを標準化します。
  • プロジェクトの説明。
  • プロジェクトビルドスクリプト。
  • ライブラリ間の依存関係。

Maven の前任者はAntで、その後継者はGradleです。しかし、リストされた 3 つの標準を開発して完成させ、それらの相互作用を規制したのは Maven でした。Java コミュニティの活動を新たなレベルに引き上げたのは彼でした。さらに詳しく見てみましょう。

メイビン

技術的には、Maven は特別なプログラム/サービスであり、その主な目的はプロジェクトの構築プロセスを管理することです。アーカイブとしてダウンロードし、任意のディレクトリに解凍するだけです。これには特別なインストーラーは必要ありません。

彼女にはグラフィカル インターフェイスがありません。すべてのコマンドはコンソールを使用して与えられます。さらに快適に操作するために、OS に特別な環境変数を登録することをお勧めします。

Maven には、プロジェクトのビルド時に使用するライブラリを保存する特別なリポジトリ(ディレクトリ/フォルダ) もあります。ディスク上のフォルダーを選択し、それをリポジトリとして割り当てる必要があります。

もう 1 つの興味深い点は、すべてのライブラリにグローバル Maven リポジトリが存在することですが、これについては少し後ほど説明します。

1.3 Maven をダウンロードしてインストールする

Maven には公式サイトmaven.apache.orgがあります。このプロジェクトには大量のドキュメントがあるため、何か問題や追加の質問がある場合は、恥ずかしがらずにお問い合わせください。

また、ダウンロード ページ ( https://maven.apache.org/download.cgi ) では、Maven アーカイブ (apache-maven-3.8.5-bin.zip) をダウンロードできます。解凍されたアーカイブは約 10 MB 必要ですが、ローカル Maven リポジトリには最終的に数百メガバイトのメモリが必要になります。

Maven は Java で書かれており、少なくともバージョン 7 の JRE と定義された JAVA_HOME 環境変数が必要です。

コンピューター上に Maven 用のフォルダー ( d:\devtoolsなど) を作成し、その中に Maven が含まれるアーカイブを抽出するだけです。その結果、プロジェクトのメイン バイナリが配置されるd:\devtools\maven\binのようなフォルダーが作成されるはずです。

1.4 環境変数

その後、解凍したアーカイブから bin フォルダーへのパスを PATH 環境変数に追加する必要があります。

Windows 10 で環境変数を設定するには、[コントロール パネル] - [システム] - [システムの詳細設定] に移動する必要があります。次に、「環境変数」をクリックし、PATH を見つけて「編集」を選択し、パスd:\devtools\maven\binを行の末尾に追加します。パスは bin フォルダーに正確に到達する必要があることに注意してください。

Unix ベースの OS では、コンソール コマンドを使用して環境変数を追加できます。

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

すべてを正しく行った場合は、コンソールで「mvn -v」コマンドを入力する必要があります。応答として、次のようなものが表示されます。

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 ローカル Maven リポジトリ

Maven がプロジェクトをビルドするときに使用する jar ライブラリを保存する特別なフォルダーを設定することもできます。このフォルダーはローカル Maven リポジトリと呼ばれます。

そのようなフォルダーが指定されていない場合、Maven は現在のユーザーのホーム ディレクトリにフォルダーを作成します。私のディレクトリは次のとおりです: C:\Users\Zapp\.m2

フォルダーには「.m2」というかなり特殊な名前が付けられています。Linux ユーザーを怖がらせるわけではありませんが、さまざまな「リポジトリ」やサービス情報のその他のストレージに名前を付けるためのかなり一般的なアプローチです。

重要!Maven をシステム フォルダーに配置しないでください。操作中にこれらのフォルダーへの書き込み権限が必要になります。これは、ウイルス対策やオペレーティング システムにとって悪影響を及ぼす可能性があります。

バージョン 3.5 より前の Maven では、M2_HOME という環境変数が必要でしたが、これは必要なくなりました。

Maven の構成の詳細については、リンクhttps://maven.apache.org/configure.htmlを参照してください。