web-dev-qa-db-ja.com

ビルドとコンパイル(Java)

これに対する答えはかなり明白であると考えていますが、ここにそれがあります:

学校向けの小さなプロジェクト(Java)で作業しているときは、compileします。

私の小屋では、プロジェクトにbuildにantを使用しています。

コンパイルはビルドのサブセットだと思います。これは正しいです?ビルドとコンパイルの違いは何ですか?

関連:
コンパイルとビルドの違いは何ですか?

121

「ビルド」は、ソフトウェアの「成果物」を作成するために必要なすべてのステップをカバーするプロセスです。 Java世界では、これには通常以下が含まれます。

  1. ソースの生成(時々)。
  2. ソースのコンパイル。
  3. テストソースのコンパイル。
  4. テストの実行(単体テスト、統合テストなど)。
  5. パッケージ化(jar、war、ejb-jar、earへ)。
  6. ヘルスチェックの実行(Checkstyle、Findbugs、PMD、テストカバレッジなどの静的アナライザー)。
  7. レポートを生成します。

ご覧のとおり、コンパイルはビルドの(小さな)部分にすぎません(ベストプラクティスは、MavenやAntなどのツールを使用してすべてのステップを完全に自動化し、ビルドを継続的に実行することです Continuous統合 )。

208
Pascal Thivent

私がここで見る答えのいくつかは文脈から外れており、これがC/C++の質問であればより意味があります。

短縮版:

  • 「コンパイル」は.Javaファイルを.classファイルに変換します
  • 「ビルド」は、コンパイルやその他のタスクを含む一般的な用語です。

「構築」は、コンパイルを含む全体プロセスを表すgeneric用語です。たとえば、ビルドプロセスには、Javaコードまたはドキュメントファイルを生成するツールが含まれる場合があります。

多くの場合、すべての.classファイルを取得してそれらを.jarに入れる「パッケージ」、または.classファイルと一時ディレクトリを消去する「クリーン」などの追加フェーズがあります。

37
Darien

コンパイルは、ソースコードをオブジェクトコードに変換する行為です。

リンクは、オブジェクトコードとライブラリを生の実行可能ファイルに結合する行為です。

Buildingは、compilingおよびlinkingで構成されるシーケンスであり、他のタスクも含まれる可能性がありますインストーラー作成など。

多くのコンパイラは、ソースコードのコンパイル後にlinkingステップを自動的に処理します。

コンパイルコードと実行可能コードの違いは何ですか?

27
Kaili

簡単な言葉で

コンパイルはJavaコード(人間が読める)をバイトコードに変換するので、仮想マシンはそれを理解します。

ビルドは、コンパイルされたすべてのパーツをまとめて実行可能ファイルを作成(ビルド)します。

9
Tom

実際、あなたは同じことをしています。 Antは、ソフトウェアのコンパイルに関連する広範なタスクを実行できるXML構成ファイルに基づいたビルドシステムです。 Javaコードのコンパイルはこれらのタスクの1つです。ファイルのコピー、サーバーの構成、zipとjarのアセンブル、Cなどの他の言語のコンパイルなど、他にも多くのタスクがあります。

ソフトウェアをコンパイルするのにAntは必要ありません。学校で行っているように手動で行うことができます。 Antのもう1つの代替手段は、Mavenと呼ばれる製品です。 AntとMavenはどちらも同じことを行いますが、方法はまったく異なります。

ルックアップ Ant および Maven 詳細について。

4
drekka
  • Buildは、プログラムのコンパイル済みバージョンです。
  • コンパイルは、(プログラム)を、プログラムを実行できるマシンコードまたは下位レベルの形式に変換することを意味します。

Javaの場合:ビルドは、名前付きフェーズのシーケンスを含むライフサイクルです。

たとえば、Mavenには3つのビルドライフサイクルがあり、次のビルドライフサイクルはdefaultです。

◾validate - validate the project is correct and all necessary information is available
◾compile - compile the source code of the project
◾test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
◾package - take the compiled code and package it in its distributable format, such as a JAR.
◾integration-test - process and deploy the package if necessary into an environment where integration tests can be run
◾verify - run any checks to verify the package is valid and meets quality criteria
◾install - install the package into the local repository, for use as a dependency in other projects locally
◾deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
3
Premraj

コンパイルとは、単にソースコードをバイナリに変換することです。ビルドとは、ビルドディレクトリに必要な他のファイルをコンパイルしてリンクすることです。

0
patrickandroid