Budowanie a Kompilowanie (Java)

Myślenie, że odpowiedź na to pytanie jest dość oczywista, ale oto ona:

Kiedy pracuję nad małym projektem dla szkoły (w Javie), kompiluję .

Na moim koopie używamy ant do zbudowania naszego projektu.

Myślę, że kompilowanie jest podzbiorem budowania. Czy to prawda? Jaka jest różnica między budowaniem a kompilowaniem?

Powiązane:
Jaka jest różnica między kompilacją a budowaniem?

Author: Community, 2010-04-16

7 answers

"Build" to proces, który obejmuje wszystkie kroki wymagane do stworzenia "deliverable" oprogramowania. W świecie Javy zazwyczaj obejmuje to:

  1. generowanie źródeł (czasami).
  2. Kompilowanie źródeł.
  3. Kompilowanie źródeł testowych.
  4. wykonywanie testów (testy jednostkowe, testy integracyjne itp.).
  5. Pakowanie (do słoika, wojny, ejb-jar, ucho).
  6. przeprowadzanie kontroli stanu (analizatory statyczne, takie jak Checkstyle, Findbugs, PMD, test coverage, itp.).
  7. generowanie raportów.

Więc jak widzisz, kompilowanie jest tylko (małą) częścią kompilacji (a najlepszą praktyką jest pełna automatyzacja wszystkich kroków za pomocą narzędzi takich jak Maven lub Ant i ciągłe uruchamianie kompilacji znanej jako Continuous Integration).

 174
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-16 05:28:06

Niektóre z odpowiedzi, które tu widzę, są poza kontekstem i mają więcej sensu, gdyby to było pytanie C / C++.

Wersja skrócona:

  • "Kompilowanie" się zmienia .pliki java do .class files
  • 'Budowanie' jest ogólnym terminem obejmującym kompilowanie i inne zadania.

"budowanie" to ogólny termin opisujący ogólny proces , który obejmuje kompilację. Na przykład, proces budowania może zawierać narzędzia, które generują kod Java lub pliki dokumentacji.

Często pojawią się dodatkowe fazy, takie jak "pakiet", który zabiera wszystkie Twoje .pliki klas i umieszcza je w a .słoik, czyli "czysty", który oczyszcza .pliki klas i katalogi tymczasowe.

 32
Author: Darien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-16 02:46:35

Kompilowanie jest aktem przekształcania kodu źródłowego w kod obiektowy.

Łączenie jest aktem łączenia kodu obiektowego z bibliotekami w surowy plik wykonywalny.

Budowanie jest sekwencją składającą się z kompilowania i łączenia , ewentualnie z innymi zadaniami, takimi jak tworzenie instalatora.

Wiele kompilatorów obsługuje Krok linkowania automatycznie po skompilowaniu kodu źródłowego.

Jaka jest różnica między kompilacją kod i kod wykonywalny?

 22
Author: Kaili,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:05

W prostych słowach

Kompilacja tłumaczy kod java (human czytelne) do bajtkodu, więc Maszyna wirtualna to rozumie.

Budowanie stawia wszystkie skompilowane części razem i tworzy (buduje) an wykonywalny.

 8
Author: Tom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-11 15:17:21

Właściwie robisz to samo. Ant jest systemem zbudowanym w oparciu o pliki konfiguracyjne XML, który może wykonywać szeroki zakres zadań związanych z kompilacją oprogramowania. Kompilowanie kodu java to tylko jedno z tych zadań. Istnieje wiele innych, takich jak kopiowanie plików, konfigurowanie serwerów, montowanie zipów i jarów oraz kompilowanie innych języków, takich jak C.

Nie potrzebujesz Ant do kompilacji swojego oprogramowania. Możesz to zrobić ręcznie, tak jak robisz to w szkole. Inną alternatywą dla mrówek jest produkt o nazwie Maven. Zarówno Ant, jak i Maven robią to samo, ale w zupełnie inny sposób.

Lookup Anti Maven Po Więcej Szczegółów.

 4
Author: drekka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-16 02:26:25
  • Build jest skompilowaną wersją programu.
  • Compile oznacza konwersję (program) do kodu maszynowego lub postaci niższego poziomu, w której program może być uruchomiony.

W Javie: Build to cykl życia zawierający sekwencje nazwanych faz.

Na przykład: maven ma trzy cykle życia build, następny to default build life cycle.

◾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.
 2
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 13:05:07

Kompilowanie to tylko konwersja kodu źródłowego do binarnego, budowanie to kompilowanie i łączenie wszelkich innych plików potrzebnych do katalogu kompilacji

 0
Author: patrickandroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-16 02:26:35