Создание против компиляции (Java)

Подумав, что ответ на это довольно очевиден, но здесь он идет:

Когда я работаю над небольшим проектом для школы (в java), я его компилирую.

В моем кооперативе мы используем ant для создания нашего проекта.

Я думаю, что компиляция является подмножеством здания. Это верно? В чем разница между построением и компиляцией?

Связанный:
В чем разница между компиляцией и построением?

Ответ 1

"Build" - это процесс, который охватывает все шаги, необходимые для создания "поставляемой" вашей программы. В мире Java это обычно включает в себя:

  • Генерация источников (иногда).
  • Компиляция источников.
  • Компиляция источников тестов.
  • Выполнение тестов (модульные тесты, интеграционные тесты и т.д.).
  • Упаковка (в банку, войну, ejb-jar, ухо).
  • Выполнение проверок работоспособности (статические анализаторы, такие как Checkstyle, Findbugs, PMD, тестовое покрытие и т.д.).
  • Создание отчетов.

Итак, как вы можете видеть, компиляция - это только небольшая часть сборки (и лучше всего полностью автоматизировать все этапы с помощью таких инструментов, как Maven или Ant, и постоянно запускать сборку, которая известна как Непрерывная интеграция).

Ответ 2

Некоторые из ответов, которые я вижу здесь, являются вне контекста и имеют больше смысла, если это вопрос C/С++.

Краткая версия:

  • "Компиляция" превращает файлы .java в файлы .class.
  • "Строительство" - это общий термин, который включает компиляцию и другие задачи.

"Building" - это общий термин, описывающий общий процесс, который включает компиляцию. Например, процесс сборки может включать инструменты, которые генерируют Java-код или файлы документации.

Часто бывают дополнительные этапы, такие как "пакет", который принимает все ваши .class файлы и помещает их в .jar или "clean", который очищает файлы .class и временные каталоги.

Ответ 3

Компиляция - это преобразование исходного кода в код объекта.

Связывание - это комбинация объектного кода с библиотеками в необработанный исполняемый файл.

Строка - это последовательность, состоящая из компиляции и ссылок, с возможными другими задачами, такими как создание установщика.

Многие компиляторы обрабатывают шаг привязки автоматически после компиляции исходного кода.

В чем разница между кодом компиляции и исполняемым кодом?

Ответ 4

Простыми словами

Компиляция переводит Java-код (человеческий читаемый) в байт-код, поэтому Виртуальная машина понимает это.

Здание ставит все скомпилированные части вместе и создает (строит) исполняемый файл.

Ответ 5

На самом деле вы делаете то же самое. Ant - это система сборки на основе файлов конфигурации XML, которые могут выполнять широкий спектр задач, связанных с компиляцией программного обеспечения. Компиляция вашего java-кода является лишь одной из этих задач. Есть много других, таких как копирование файлов, настройка серверов, сборка почтовых индексов и баннеров и компиляция других языков, таких как C.

Вам не нужно Ant для компиляции вашего программного обеспечения. Вы можете сделать это вручную, как вы делаете в школе. Другой альтернативой Ant является продукт под названием Maven. Оба Ant и Maven делают то же самое, но совершенно по-другому.

Поиск Ant и Maven для более подробной информации.

Ответ 6

Компиляция просто преобразует исходный код в двоичный, сборка компилирует и связывает любые другие файлы, необходимые в каталоге сборки

Ответ 7

TL;DR;

  • Build - это скомпилированная версия программы.
  • Компилировать означает, конвертировать (программу) в машинный код или нижний уровень, в котором программа может быть выполнена.

В Java: Build - это жизненный цикл, содержащий последовательность названных фаз.

например: maven имеет три цикла жизненного цикла, следующий - 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.