Derleme ve Derleme (Java)


138

Bunun cevabının oldukça açık olduğunu düşünmek ama işte gidiyor:

Okul için küçük bir proje (java) üzerinde çalışırken derliyorum .

Kümesimde projemizi oluşturmak için karınca kullanıyoruz .

Derlemenin binanın bir alt kümesi olduğunu düşünüyorum. Bu doğru mu? Building and compiling arasındaki fark nedir?

İlgili:
Derleme ve oluşturma arasındaki fark nedir?

Yanıtlar:


229

"Derleme", yazılımınızın bir "çıktısı" oluşturmak için gereken tüm adımları kapsayan bir süreçtir. Java dünyasında bu genellikle şunları içerir:

  1. Kaynaklar üretme (bazen).
  2. Derleme kaynakları.
  3. Test kaynaklarını derleme.
  4. Testlerin yapılması (birim testleri, entegrasyon testleri vb.).
  5. Ambalaj (kavanoz, savaş, ejb-kavanoz, kulak içine).
  6. Çalışan sağlık kontrolleri (Checkstyle, Findbugs, PMD, test kapsamı, vb. Gibi statik analizörler).
  7. Rapor oluşturma.

Gördüğünüz gibi, derleme yapının sadece (küçük) bir parçasıdır (ve en iyi uygulama Maven veya Ant gibi araçlarla tüm adımları tam olarak otomatikleştirmek ve yapıyı Sürekli Entegrasyon olarak bilinen sürekli çalıştırmaktır ).


2
Neden "Sürekli Yapı" yerine "Sürekli Entegrasyon" diyoruz?
Quazi Irfan

@Pascal, Re "sürekli inşa çalıştırmak" .. " inşa " anlamına gelir?
Pacerier

4
@Pacerier "yapı", tüm 1.-7 adımlarını ifade eder .; "sürekli", ilk derleme bittikten hemen sonra bir sonraki derlemeye başladığınız anlamına gelmez, yalnızca projedeki değişikliklerle.
michelek

ve 1. noktada bahsettiğiniz gibi kaynaklar ürettiğinde (Kaynaklar üretme (bazen).)
Deepak Gupta

42

Burada gördüğüm cevapların bazıları bağlam dışı ve bu bir C / C ++ sorusu olsaydı daha anlamlı.

Kısa versiyon:

  • "Derleme" .java dosyalarını .class dosyalarına dönüştürüyor
  • 'Bina', derleme ve diğer görevleri içeren genel bir terimdir.

"Bina" genel bir terimdir ve derlemeyi içeren genel süreci tanımlar . Örneğin, oluşturma işlemi Java kodu veya belge dosyaları üreten araçlar içerebilir.

Genellikle, .class dosyalarınızın tümünü alıp bir .jar dosyasına koyan "paket" veya .class dosyalarını ve geçici dizinleri temizleyen "temiz" gibi ek aşamalar olacaktır.


32

Derleme kaynak kodunu nesne koduna dönüştürme eylemidir.

Bağlama , nesne kodunu kütüphanelerle bir ham yürütülebilir dosyada birleştirme eylemidir.

Yapı , yükleyici oluşturma gibi diğer görevlerle derleme ve bağlantı oluşturma işlemlerinden oluşan dizidir .

Birçok derleyici, kaynak kodu derledikten sonra bağlantı adımını otomatik olarak işler.

Derleme kodu ile yürütülebilir kod arasındaki fark nedir?


Diğer bazı olası görevler: geliştirme (JDO), Javadoc-ing, paketleme ve imzalama. Ayrıca, bir "derlemenin" bir parçası olarak otomatik birim / regresyon testlerini çalıştırmak da dahil olmak üzere bazı ortamlar.
Bert F

Normalde, Java projeleri oluştururken bağlantı adımı yoktur ve ham yürütülebilir dosya üretilmez. Bunun yerine, derlenen sınıflar yapının bir parçası olarak bir .jar dosyasına birlikte paketlenir. (Veya hedef ortamınıza bağlı olarak .war veya
.ear

1
"ham çalıştırılabilir" nedir?
ealeon

İhtiyaç duyduğu diğer kütüphanelerle karıştırılmadan kendi başına yararsız olan bit torbası. Çikolatalı kek gibi. Un ve yumurta vb. Olmadan, kakao sadece çiğ kakao.
Kaili

9

Basit bir deyişle

Derleme, java kodunu (okunabilir) bayt koduna çevirir, böylece Sanal makine bunu anlar.

Building, derlenen tüm parçaları bir araya getirir ve yürütülebilir bir dosya oluşturur (derler).


Bahsettiğiniz şey "Yorum" ... derleme insan tarafından okunabilir kodu makine koduna dönüştürüyor
mortsahl

@Tom, "yürütülebilir" veya " jar yürütülebilir" mi demek istediniz ?
Pacerier

4

Aslında aynı şeyi yapıyorsunuz. Ant, derleme yazılımı ile ilgili çok çeşitli görevleri yapabilen XML yapılandırma dosyalarına dayanan bir sistemdir. Java kodunuzu derlemek bu görevlerden sadece biridir. Dosyaların kopyalanması, sunucuların yapılandırılması, fermuarların ve kavanozların birleştirilmesi ve C gibi diğer dillerin derlenmesi gibi daha pek çok şey vardır.

Yazılımınızı derlemek için Ant'e ihtiyacınız yoktur. Okulda yaptığınız gibi manuel olarak da yapabilirsiniz. Ant'in diğer bir alternatifi Maven adlı bir üründür. Hem Karınca hem de Maven aynı şeyi yapar, ancak oldukça farklı şekillerde.

Arama Ant ve Maven'i fazla ayrıntı için.


Ayrıca buildfile (büyük olasılıkla build.xml olarak da bilinir) bakarak karıncaların gerçekte ne yaptığını görebilirsiniz. Sözdizimine aşina olmasanız bile, neler olup bittiğini görebilirsiniz. <javac> bazı Java kodlarını derlediği anlamına gelir. <java> aslında derlenmiş kodu çalıştırdığı anlamına gelir. Muhtemelen .class dosyalarını koymak için bir dizin oluşturmak, kod derlemek, belki bazı Javadoc, vb. Oluşturmak
MatrixFrog

4
  • Derleme , bir programın derlenmiş sürümüdür.
  • Derleme , programın çalıştırılabileceği bir makine koduna veya daha düşük seviyeli bir forma dönüştürmek anlamına gelir.

Java : Build bir yaşam döngüsü adlandırılmış fazlar dizisi içerir.

örneğin: maaven üç yapı yaşam döngüsüne sahiptir, bir sonraki defaultyapı yaşam döngüsüdür.

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.

1

Eclipse ve IntelliJ'de derleme işlemi aşağıdaki adımlardan oluşur: önceki paketleri temizleme, doğrulama, derleme, test etme, paketleme,
entegrasyon, doğrulama, yükleme, dağıtma.


0

Derleme sadece kaynak kodunu ikiliye dönüştürüyor, bina derleme ve gerekli diğer dosyaları derleme dizinine bağlıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.