Membangun vs. Menyusun (Jawa)

141

Berpikir bahwa jawaban untuk ini cukup jelas tetapi ini dia:

Ketika saya mengerjakan proyek kecil untuk sekolah (di Jawa) saya menyusunnya .

Di kandang saya, kami menggunakan semut untuk membangun proyek kami.

Menurut saya kompilasi adalah bagian dari bangunan. Apakah ini benar? Apa perbedaan antara Membangun dan Mengompilasi?

Terkait:
Apa perbedaan antara menyusun dan membangun?

sixtyfootersdude
sumber

Jawaban:

232

"Build" adalah proses yang mencakup semua langkah yang diperlukan untuk membuat "pengiriman" perangkat lunak Anda. Di dunia Java, ini biasanya mencakup:

  1. Menghasilkan sumber (terkadang).
  2. Menyusun sumber.
  3. Menyusun sumber pengujian.
  4. Menjalankan pengujian (pengujian unit, pengujian integrasi, dll).
  5. Pengemasan (ke dalam toples, war, ejb-jar, ear).
  6. Menjalankan health check (penganalisa statis seperti Checkstyle, Findbugs, PMD, test coverage, dll).
  7. Menghasilkan laporan.

Jadi seperti yang Anda lihat, kompilasi hanyalah bagian (kecil) dari build (dan praktik terbaiknya adalah mengotomatiskan semua langkah dengan alat seperti Maven atau Ant dan menjalankan build secara terus menerus yang dikenal sebagai Continuous Integration ).

Pascal Thivent
sumber
3
Mengapa menyebutnya "Integrasi Berkelanjutan" daripada "Bangunan Berkelanjutan"?
Quazi Irfan
@Pascal, Re "jalankan build secara terus menerus" .. mengacu pada " build "?
Pacerier
4
@Pacerier "the build" mengacu pada semua langkah 1.-7 .; "terus menerus" tidak berarti Anda memulai pembangunan berikutnya segera setelah yang pertama selesai, tetapi hanya pada perubahan dalam proyek.
michelek
dan ketika menghasilkan sumber seperti yang Anda sebutkan di poin pertama (Sumber pembangkit (kadang-kadang).)
Deepak Gupta
1
@QuaziIrfan Karena Anda memverifikasi bahwa kode baru, atau yang diperbarui, terintegrasi dengan basis kode yang ada. Artinya, perubahan Anda terkompilasi, mematuhi standar dan persyaratan pengkodean tim, fungsionalitas dasarnya baik, dan tidak merusak build yang bagus saat ini. Dengan kata lain, pembaruan Anda terintegrasi dengan baik dengan basis kode yang ada. HTH
Rob Wells
43

Beberapa jawaban yang saya lihat di sini berada di luar konteks dan lebih masuk akal jika ini adalah pertanyaan C / C ++.

Versi pendek:

  • "Kompilasi" adalah mengubah file .java menjadi file .class
  • 'Membangun "adalah istilah umum yang mencakup kompilasi dan tugas lainnya.

"Membangun" adalah istilah umum yang menggambarkan keseluruhan proses yang mencakup kompilasi. Misalnya, proses build mungkin menyertakan alat yang menghasilkan kode Java atau file dokumentasi.

Seringkali akan ada fase tambahan, seperti "paket" yang mengambil semua file .class Anda dan menempatkannya ke dalam .jar, atau "clean" yang membersihkan file .class dan direktori sementara.

Darien
sumber
33

Kompilasi adalah tindakan mengubah kode sumber menjadi kode objek.

Menautkan adalah tindakan menggabungkan kode objek dengan pustaka menjadi eksekusi mentah.

Membangun adalah urutan yang terdiri dari kompilasi dan penautan , dengan kemungkinan tugas lain seperti pembuatan pemasang.

Banyak kompiler menangani langkah penautan secara otomatis setelah mengompilasi kode sumber.

Apa perbedaan antara kode kompilasi dan kode yang dapat dieksekusi?

Kaili
sumber
Beberapa tugas lain yang mungkin: meningkatkan (JDO), Javadoc-ing, pengemasan, dan penandatanganan. Selain itu, beberapa lingkungan termasuk menjalankan pengujian unit / regresi otomatis sebagai bagian dari "build".
Bert F
Biasanya, tidak ada langkah menghubungkan saat membangun proyek Java, dan tidak ada eksekusi mentah yang diproduksi. Sebaliknya, class yang dikompilasi akan dikemas bersama ke dalam file .jar sebagai bagian dari build. (Atau .war, atau .ear, tergantung pada lingkungan target Anda.)
markusk
1
apa yang "dapat dieksekusi mentah"?
ealeon
Kantong bit yang pada dasarnya tidak berguna tanpa tercampur dengan perpustakaan lain yang dibutuhkannya. Ini seperti kue coklat. Tanpa tepung dan telur, dll, kakao hanyalah kakao mentah.
Kaili
9

Dengan kata sederhana

Kompilasi menerjemahkan kode java (dapat dibaca manusia) menjadi bytecode, sehingga mesin Virtual memahaminya.

Bangunan menyatukan semua bagian yang dikompilasi dan membuat (membangun) yang dapat dieksekusi.

Tom
sumber
Apa yang Anda bicarakan adalah "Interpretasi" ... kompilasi mengubah kode yang dapat dibaca manusia menjadi kode mesin
mortsahl
@ Tom, Maksud Anda "dapat dieksekusi" atau " jar yang dapat dieksekusi"?
Pacerier
5
  • Build adalah versi program yang dikompilasi.
  • Kompilasi berarti, mengubah (program) menjadi kode mesin atau bentuk tingkat yang lebih rendah di mana program dapat dijalankan.

Di Java : Build is a Life cycle berisi urutan fase bernama.

Misalnya: maven memiliki tiga siklus hidup build, yang berikut ini adalah defaultsiklus hidup build.

◾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.
Premraj
sumber
4

Sebenarnya Anda melakukan hal yang sama. Ant adalah sistem build berdasarkan file konfigurasi XML yang dapat melakukan berbagai tugas yang berkaitan dengan kompilasi perangkat lunak. Mengompilasi kode java Anda hanyalah salah satu dari tugas-tugas itu. Ada banyak lainnya seperti menyalin file, mengkonfigurasi server, merakit zip dan toples, dan menyusun bahasa lain seperti C.

Anda tidak perlu Ant untuk mengompilasi perangkat lunak Anda. Anda dapat melakukannya secara manual seperti yang Anda lakukan di sekolah. Alternatif lain untuk Ant adalah produk yang disebut Maven. Baik Ant dan Maven melakukan hal yang sama, tetapi dengan cara yang sangat berbeda.

Cari Ant dan Maven untuk lebih jelasnya.

drekka
sumber
Anda juga dapat melihat apa yang sebenarnya dilakukan semut dengan melihat buildfile (kemungkinan besar disebut build.xml). Bahkan jika Anda tidak terbiasa dengan sintaks, Anda dapat melihat apa yang terjadi. <javac> berarti sedang mengompilasi beberapa kode Java. <java> berarti itu benar-benar menjalankan kode yang dikompilasi. Mungkin itu membuat direktori untuk memasukkan file .class, mengkompilasi kode, mungkin membuat beberapa Javadoc, dll.
MatrixFrog
1

Di Eclipse dan IntelliJ, proses build terdiri dari langkah-langkah berikut: membersihkan paket sebelumnya, memvalidasi, mengompilasi, menguji, mengemas,
mengintegrasikan, memverifikasi, menginstal, menyebarkan.

Sam
sumber
0

Kompilasi hanya mengubah kode sumber menjadi biner, membangun adalah mengompilasi dan menautkan file lain yang diperlukan ke dalam direktori build

patrick-fitzgerald
sumber