बिल्डिंग बनाम संकलन (जावा)


138

यह सोचकर कि इसका उत्तर बहुत स्पष्ट है, लेकिन यहाँ यह है:

जब मैं स्कूल के लिए एक छोटे से प्रोजेक्ट पर काम कर रहा हूं (जावा में) मैं इसे संकलित करता हूं ।

मेरे कॉप पर हम अपनी परियोजना के निर्माण के लिए चींटी का उपयोग कर रहे हैं ।

मुझे लगता है कि संकलन इमारत का एक सबसेट है। क्या ये सही है? निर्माण और संकलन में क्या अंतर है?

सम्बंधित:
संकलन और निर्माण में क्या अंतर है?

जवाबों:


229

"बिल्ड" एक ऐसी प्रक्रिया है जो आपके सॉफ़्टवेयर के "वितरण योग्य" बनाने के लिए आवश्यक सभी चरणों को शामिल करती है। जावा दुनिया में, इसमें आमतौर पर शामिल हैं:

  1. स्रोत उत्पन्न करना (कभी-कभी)।
  2. संकलन के सूत्र।
  3. परीक्षण स्रोतों का संकलन।
  4. निष्पादन परीक्षण (इकाई परीक्षण, एकीकरण परीक्षण आदि)।
  5. पैकेजिंग (जार में, युद्ध, ejb- जार, कान)।
  6. स्वास्थ्य परीक्षण (चेकस्टाइल, फाइंडबग्स, पीएमडी, परीक्षण कवरेज, आदि जैसे स्थैतिक विश्लेषक)।
  7. रिपोर्ट तैयार करना।

तो जैसा कि आप देख सकते हैं, निर्माण का केवल एक छोटा (छोटा) हिस्सा है (और सबसे अच्छा अभ्यास मावेन या चींटी जैसे उपकरणों के साथ सभी चरणों को पूरी तरह से स्वचालित करना है और निर्माण को लगातार चलाना है जिसे सतत एकीकरण के रूप में जाना जाता है )।


2
इसे "कंटीन्यूअस बिल्डिंग" के बजाय "कंटीन्यूअस इंटीग्रेशन" क्यों कहते हैं?
क़ाज़ी इरफ़ान

@ पास्कल, रे "लगातार निर्माण चलाएं" .. " निर्माण " को संदर्भित करता है?
पचेरियर

4
@Pacerier "बिल्ड" सभी चरणों को संदर्भित करता है 1.-7 ।; "निरंतर" का मतलब यह नहीं है कि आप पहले एक खत्म होने के तुरंत बाद अगले निर्माण शुरू करें लेकिन केवल परियोजना में परिवर्तन पर।
माइकल 13

और जब आप 1 बिंदु (जनरेटिंग सोर्स (कभी-कभी)) का उल्लेख करते हुए स्रोत उत्पन्न करते हैं।
दीपक गुप्ता

42

मेरे द्वारा देखे गए कुछ उत्तर यहां के संदर्भ से बाहर हैं और यदि C / C ++ प्रश्न हैं तो अधिक समझ में आता है।

लघु संस्करण:

  • "संकलन" .java फ़ाइलों को .class फ़ाइलों में बदल रहा है
  • 'बिल्डिंग' एक सामान्य शब्द है जिसमें संकलन और अन्य कार्य शामिल हैं।

"बिल्डिंग" एक सामान्य शब्द है जिसमें समग्र प्रक्रिया का वर्णन किया गया है जिसमें संकलन शामिल है। उदाहरण के लिए, निर्माण प्रक्रिया में ऐसे उपकरण शामिल हो सकते हैं जो जावा कोड या प्रलेखन फाइलें उत्पन्न करते हैं।

अक्सर अतिरिक्त चरण होंगे, जैसे "पैकेज" जो आपकी सभी .class फ़ाइलों को लेता है और उन्हें .jar, या "क्लीन" में डालता है जो .class फ़ाइलों और अस्थायी निर्देशिकाओं को साफ करता है।


32

संकलन कोड स्रोत कोड को ऑब्जेक्ट कोड में बदलने का कार्य है।

लिंकिंग एक कच्चे निष्पादन योग्य में पुस्तकालयों के साथ ऑब्जेक्ट कोड के संयोजन का कार्य है।

भवन संकलित और जोड़ने से बना अनुक्रम है , संभवतः अन्य कार्यों जैसे कि इंस्टॉलर निर्माण के साथ।

कई संकलक स्रोत कोड को संकलित करने के बाद स्वचालित रूप से लिंकिंग चरण को संभालते हैं ।

संकलन कोड और निष्पादन योग्य कोड के बीच अंतर क्या है?


कुछ अन्य संभावित कार्य: बढ़ाने (JDO), Javadoc-ing, पैकेजिंग और हस्ताक्षर। इसके अलावा, कुछ वातावरण जिसमें "यूनिट" के भाग के रूप में स्वचालित इकाई / प्रतिगमन परीक्षण चलाना शामिल है।
बर्ट एफ

सामान्य तौर पर, जावा प्रोजेक्ट्स का निर्माण करते समय कोई लिंकिंग चरण नहीं होता है, और कोई कच्चा निष्पादन योग्य नहीं होता है। बल्कि, संकलित कक्षाओं को निर्माण के हिस्से के रूप में एक .jar फ़ाइल में पैक किया जाता है। (अपने लक्ष्य के वातावरण के आधार पर (अनवर, या .ear)।
मार्कसक

1
"कच्चे निष्पादन योग्य" क्या हैं?
ईगल

बिट्स का बैग जो मूल रूप से बेकार है, वह अन्य पुस्तकालयों की आवश्यकता के साथ मिश्रित होने के बिना खुद ही है। यह चॉकलेट केक की तरह है। आटा और अंडे आदि के बिना, कोको सिर्फ कच्चा कोको है।
कैली

9

सरल शब्दों में

संकलन जावा कोड (मानव पठनीय) को बाइटकोड में अनुवादित करता है, इसलिए वर्चुअल मशीन इसे समझती है।

भवन सभी संकलित भागों को एक साथ रखता है और एक निष्पादन योग्य बनाता है (बनाता है)।


आप "इंटरप्रिटेशन" के बारे में बात कर रहे हैं ... संकलन मानव पठनीय कोड को मशीन कोड में बदल रहा है
mortsahl

@, आपको "निष्पादन योग्य" या " जार निष्पादन योग्य" से मतलब है ?
पचेरियर

4

असल में तुम वही काम कर रहे हो। चींटी बिल्ड सिस्टम है जो एक्सएमएल कॉन्फ़िगरेशन फाइलों पर आधारित है, जो कंपाइलिंग सॉफ्टवेयर से संबंधित कई प्रकार के कार्य कर सकता है। अपने जावा कोड को संकलित करना उन कार्यों में से एक है। कई अन्य हैं जैसे कि फ़ाइलों की प्रतिलिपि बनाना, सर्वरों को कॉन्फ़िगर करना, ज़िप और जार को इकट्ठा करना और सी जैसी अन्य भाषाओं को संकलित करना।

अपने सॉफ़्टवेयर को संकलित करने के लिए आपको चींटी की आवश्यकता नहीं है। आप इसे मैन्युअल रूप से कर सकते हैं जैसा कि आप स्कूल में कर रहे हैं। चींटी का एक अन्य विकल्प मावेन नामक एक उत्पाद है। चींटी और मावेन दोनों एक ही काम करते हैं, लेकिन बिल्कुल अलग तरीके से।

अधिक जानकारी के लिए लुकअप एंट और मावेन


आप यह भी देख सकते हैं कि वास्तव में बिल्डफाइल (सबसे अधिक संभावना बिल्ड.xml) को देखकर चींटी क्या कर रही है। यहां तक ​​कि अगर आप वाक्य रचना से परिचित नहीं हैं, तो आप देख सकते हैं कि क्या चल रहा है। <javac> का अर्थ है कि यह कुछ जावा कोड संकलित कर रहा है। <जावा> इसका मतलब है कि यह वास्तव में संकलित कोड चल रहा है। संभवतः यह .class फ़ाइलों को डालने के लिए निर्देशिका बना रहा है, कोड को संकलित कर रहा है, शायद कुछ Javadoc, आदि बना रहा है
MatrixFrog

4
  • बिल्ड एक प्रोग्राम का संकलित संस्करण है।
  • संकलन का मतलब है, (एक प्रोग्राम) को मशीन-कोड या निचले-स्तर के रूप में परिवर्तित करना जिसमें प्रोग्राम निष्पादित किया जा सकता है।

जावा में : बिल्ड एक जीवन चक्र है जिसमें नामित चरणों का अनुक्रम है।

उदाहरण के लिए: मावेन के तीन जीवन चक्र हैं, निम्नलिखित में से एक 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.

1

एक्लिप्स और इंटेलीजे में, निर्माण प्रक्रिया में निम्नलिखित चरण होते हैं: पिछले पैकेजों की सफाई, सत्यापन, संकलन, परीक्षण, पैकेज,
एकीकरण, सत्यापन, स्थापित करना, तैनात करना।


0

संकलन केवल स्रोत कोड को बाइनरी में परिवर्तित कर रहा है, भवन निर्माण निर्देशिका में आवश्यक किसी भी अन्य फाइल को संकलित और लिंक कर रहा है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.