2010-04-16 3 views
90

Думая, что ответ на это довольно очевидно, но здесь идет:Строительство против Компиляция (Java)

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

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

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

Связанный:
What is the difference between compiling and building?

ответ

156

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

  1. Генерация источников (иногда).
  2. Компиляция источников.
  3. Составление источников испытаний.
  4. Выполнение испытаний (модульные испытания, интеграционные испытания и т. Д.).
  5. Упаковка (в банку, войну, ejb-jar, ear).
  6. Выполнение проверок работоспособности (статические анализаторы, такие как Checkstyle, Findbugs, PMD, тестовое покрытие и т. Д.).
  7. Создание отчетов.

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

+1

Красиво написано, и спасибо вам большое. –

+1

Почему это называется «Непрерывная интеграция» вместо «Непрерывное строительство»? –

+0

@Pascal, Re * "постоянно запускайте сборку" * .. "* build *" означает? – Pacerier

8

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

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

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

+0

То, что вы говорите о том, «Интерпретация» ... компилирование переворачивает читаемый код человека в машинный код – mortsahl

+0

@tom, Вы означать «исполняемый» или «** баночка ** исполняемый»? – Pacerier

21

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

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

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

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

What is the difference between compile code and executable code?

+0

Некоторые другие возможные задачи: усиление (JDO), Javadoc-ing, упаковка и подписание. Кроме того, в некоторых средах, включая запуск автоматических тестов единиц/регрессий, как часть «сборки». –

+0

Как правило, при создании Java-проектов отсутствует этап связывания, и не создается сырой исполняемый файл.Скорее, скомпилированные классы упаковываются вместе в файл .jar как часть сборки. (Или .war или .ear, в зависимости от вашей целевой среды.) – markusk

+7

Чувак, это чистая копия и вставка и даже не подходит для Java ... –

4

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

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

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

+0

Вы также можете увидеть, что делает муравей, просматривая файл сборки (скорее всего, он называется build.xml). Даже если вы не знакомы с синтаксисом, вы можете видеть, что происходит. означает, что он компилирует некоторый Java-код. означает, что на самом деле выполняется скомпилированный код. Вероятно, это создание каталога для размещения файлов .class, компиляции кода, возможно, создания некоторых Javadoc и т. Д. – MatrixFrog

0

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

29

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

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

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

.

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

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

1

tldr;

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

В 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. 
Смежные вопросы