एसबीटी (सॉफ्टवेयर)

एसबीटी (मूल रूप से सरल बिल्ड टूल, आजकल प्रायः स्काला बिल्ड टूल के लिए माना जाता है या इसे अपने उचित नाम के रूप में उपयोग किया जाता है) ओपन-सोर्स सॉफ्टवेयर है जो स्पष्ट रूप से स्काला (प्रोग्रामिंग लैंग्वेज) और जावा (प्रोग्रामिंग लैंग्वेज) प्रोजेक्ट के लिए बनाया गया है। अतः इसका उद्देश्य बिल्ड, कम्पाइलिंग, परीक्षण स्वचालन और पैकेजिंग अनुप्रयोगों, लाइब्रेरी और संरचना की प्रक्रिया को सुव्यवस्थित करना है। एसबीटी अत्यधिक अनुकूलनीय है, जो डेवलपर्स को अपने प्रोजेक्ट की विशिष्ट आवश्यकताओं के अनुसार बिल्ड प्रक्रिया को अनुकूलित करने की अनुमति देता है।

अतः एसबीटी स्काला प्रोजेक्ट के बिल्ड और प्रबंधन की प्रक्रिया को सरल और कुशल बनाने के लिए सुविधाओं की विस्तृत श्रृंखला प्रदान करता है। इस प्रकार से कुछ प्रमुख विशेषताओं में सम्मिलित हैं:


 * निर्भरता प्रबंधन: प्रोजेक्ट निर्भरता को स्वचालित रूप से डाउनलोड करने और संभालने की अपनी क्षमता के माध्यम से, एसबीटी बाह्य लाइब्रेरी और संरचना के उपयोग की सुविधा प्रदान करता है।
 * वृद्धिशील संकलन: एसबीटी कोड के मात्र उन भागों को पुन: संकलित कर सकता है जो बदल गए हैं, जिसके परिणामस्वरूप विकास चक्र के समय महत्वपूर्ण समय की बचत होती है।
 * अनुकूलन योग्य बिल्ड प्रक्रिया: एसबीटी अत्यधिक अनुकूलन योग्य है, जो डेवलपर्स को कस्टम बिल्ड सेटिंग्स को परिभाषित करने और अपनी प्रोजेक्ट की अद्वितीय आवश्यकताओं के साथ संरेखित करने के लिए बिल्ड प्रक्रिया को कॉन्फ़िगर करने की अनुमति देता है।
 * प्लग-इन (कंप्यूटिंग) पारिस्थितिकी तंत्र: एसबीटी प्लगइन पारिस्थितिकी तंत्र का अनुरोध करता है जो इसकी कार्यक्षमता को बढ़ाता है, जिसमें कोड गुणवत्ता जांच, परिनियोजन स्वचालन और परीक्षण कवरेज रिपोर्ट जैसी अतिरिक्त सुविधाएं सम्मिलित होती हैं। अतः नवीन प्लगइन्स के विकास और एकीकरण को पूर्ण रूप से समर्थित और प्रोत्साहित किया जाता है।
 * निरंतर एकीकरण: एसबीटी के साथ, जब भी कोई स्रोत फ़ाइल बदली जाती है, तो डेवलपर्स प्रणाली को स्वचालित रूप से पुन: संकलित करने और परीक्षणों को पुन: चलाने के लिए समूहित कर सकते हैं।
 * बहु-प्रोजेक्ट बिल्ड: कई स्काला प्रोजेक्ट पर कार्य करने वाले डेवलपर्स के लिए, एसबीटी उन्हें ही बिल्ड के भीतर प्रबंधित करने के लिए सहायक सुविधाएँ प्रदान करता है।
 * रीड-इवल-प्रिंट लूप: एसबीटी अन्योन्य क्रिया शेल से सुसज्जित है, जो डेवलपर्स को विकास प्रक्रिया के समय कार्यों और आदेशों को निष्पादित करने के लिए सुविधाजनक तरीका प्रदान करता है।
 * समानांतर कार्य निष्पादन: एसबीटी समानांतर में कार्यों को निष्पादित कर सकता है, जिससे बड़ी प्रोजेक्ट के बिल्ड समय में तीव्रता आती है।
 * आईडीई के साथ एकीकरण: विकास अनुभव को अनुकूलित करने के लिए, एसबीटी लोकप्रिय एकीकृत विकास वातावरण (आईडीई) जैसे इंटेलिज आइडिया और विजुअल स्टूडियो कोड के साथ सरलता से एकीकृत होता है।

इस प्रकार से एसबीटी स्काला समुदाय में वास्तविक मानक उपकरण है, जिसका उपयोग, उदाहरण के लिए, स्वयं स्काला 2 और स्काला 3 कंपाइलर, प्ले फ्रेमवर्क और लोकप्रिय शतरंज सर्वर, लाइकेस द्वारा किया जाता है। अतः एसबीटी प्रोजेक्ट बूटस्ट्रैप्ड है - यह स्वयं को बनाने के लिए एसबीटी का उपयोग करता है और डॉगफूडिंग को एक धनात्मक विशेषता मानता है।

इतिहास
एसबीटी को मूल रूप से 2008 में मार्क हर्राह द्वारा ओपन-सोर्स प्रोजेक्ट के रूप में जारी किया गया था। इन वर्षों में, यह कई रिलीज़ों के माध्यम से महत्वपूर्ण रूप से विकसित हुआ है, जिनमें से प्रत्येक में नवीन सुविधाएँ, बग फिक्स और संवर्द्धन सम्मिलित हैं। इस प्रकार से यहां महत्वपूर्ण रिलीज़ों के साथ-साथ उनके द्वारा प्रस्तुत किए गए प्रमुख परिवर्तनों और नवाचारों का अवलोकन दिया गया है:
 * 1) एसबीटी 0.3.2 (2008): यह एसबीटी की प्रथम आधिकारिक रिलीज़ थी। अतः इसने परियोजना परिभाषा, निर्भरता प्रबंधन और संकलन जैसी प्राथमिक विशेषताएं प्रस्तुत कीं थी।
 * 2) एसबीटी 0.7 (2009): स्काला प्रोजेक्ट के बिल्ड और प्रबंधन के लिए मूलभूत संरचना को स्थापित किया गया था। मुख्य विशेषताओं में वृद्धिशील संकलन, निर्भरता प्रबंधन और प्रत्यक्ष कार्य निष्पादन सम्मिलित हैं।
 * 3) एसबीटी 0.10 (2011): बिल्ड डेफिनिशन सिंटैक्स में महत्वपूर्ण बदलाव प्रस्तुत किया गया था, जिससे यह अधिक अभिव्यंजक और नम्य बन गया। निष्पादन, निर्भरता प्रबंधन और कॉन्फ़िगरेशन में भी वृद्धि हुई थी।
 * 4) एसबीटी 0.12 (2012): बहु-मॉड्यूल प्रोजेक्ट के लिए स्पष्ट समर्थन, कस्टम कॉन्फ़िगरेशन को परिभाषित करने की क्षमता और सरलीकृत प्लगइन विकास।
 * 5) एसबीटी 0.13 (2013): प्रयोज्यता और निष्पादन पर ध्यान केंद्रित। इस संस्करण में प्रोजेक्ट बनाने और प्रबंधित करने के लिए एक वेब-आधारित टूल एक्टिवेटर प्रस्तुत किया गया। अन्य विशेषताओं में वृद्धिशील मैक्रो संकलन, बिल्ड परिभाषा त्रुटियों की स्पष्ट हैंडलिंग और विभिन्न निष्पादन अनुकूलन सम्मिलित हैं। 0.13 अगले चार वर्षों तक मुख्य एसबीटी संस्करण बना रहा था।
 * 6) एसबीटी 1.0 (2017): निष्पादन और स्थिरता पर ध्यान केंद्रित करते हुए एसबीटी कोडबेस में पर्याप्त बदलाव किए गए, परन्तु यथासंभव प्राचीन संस्करणों के साथ संगतता बनाए रखने का भी प्रयास किया गया। इस प्रकार से नवीन सुविधाओं में कार्यों और सेटिंग्स को परिभाषित करने के लिए एकीकृत स्लैश सिंटैक्स, स्पष्ट निर्भरता प्रबंधन और बिल्ड परिभाषाओं के लिए उपयोग किए जाने वाले लैंग्वेज संस्करण के रूप में स्काला 2.12 सम्मिलित हैं। इसके अतिरिक्त, नवीन जिंक 1.0 वृद्धिशील कंपाइलर पर स्विच करने से वृद्धिशील संकलन निष्पादन में और वृद्धि हुई।
 * 7) एसबीटी 1.1 (2018): इस रिलीज ने एसबीटी सर्वर जारी किया, जिससे आईडीई और अन्य टूल लैंग्वेज सर्वर प्रोटोकॉल (एलएसपी) के माध्यम से एसबीटी के साथ परस्पर क्रिया कर सके। इसने स्काला.जेएस और स्काला नेटिव के लिए अनुप्रस्थ-बिल्डिंग समर्थन भी जोड़ा और विभिन्न कार्यों के निष्पादन में सुधार किया।
 * 8) एसबीटी 1.3 (2019): इस संस्करण ने कौरसियर को डिफ़ॉल्ट निर्भरता प्रबंधक के रूप में अपनाकर निर्भरता हल को तीव्र करके उपयोगकर्ता अनुभव में उल्लेखनीय रूप से सुधार किया। आगे के संवर्द्धन में बिल्ड कैशिंग तंत्र में सुधार और जेडीके 11 के लिए समर्थन सम्मिलित है।
 * 9) एसबीटी 1.5 (2021): स्काला 3 के लिए समर्थन जोड़ा गया था। बीएसपी (बिल्ड सर्वर प्रोटोकॉल) समर्थन में भी संवर्द्धन किया गया, जिससे आईडीई के साथ स्पष्ट एकीकरण संभव हो सका।
 * 10) एसबीटी 1.8 (2022): यह रिलीज़ कौरसियर में अपडेट लेकर आई और आइवी समर्थन में सुधार हुआ।
 * 11) एसबीटी 1.9 (2023): नवीन प्रोजेक्ट बनाने में सहायता के लिए कौरसियर में अधिक अपडेट और टेक्स्ट-आधारित मेनू।

फ़ाइल बिल्ड
इस प्रकार से एक एसबीटी बिल्ड को  का उपयोग करके परिभाषित किया जा सकता है, नीचे  बिल्ड परिभाषा का एक उदाहरण दिया गया है:

उदाहरण उपयोग
प्रत्येक बिल्ड कमांड के लिए एसबीटी लागू किया जा सकता है, या यदि कोई कमांड नहीं दिया गया है तो यह अन्योन्य क्रिया मोड में प्रवेश कर सकता है। इस प्रकार से वर्तमान बिल्ड के बिल्ड उत्पादों को स्पष्ट करने के लिए:

एक ही श्रेणी पर एकाधिक कमांड का उपयोग किया जा सकता है। इस प्रकार से फू नामक एकल परीक्षण चलाने और फिर निर्यातित जार प्रकाशित करने के लिए:

विस्तारशीलता और एकीकरण
अतः एसबीटी की कार्यक्षमता को प्लगइन संरचना के माध्यम से बढ़ाया जा सकता है। समुदाय-योगदान वाले प्लगइन्स हस्ताक्षर, पैकेजिंग, प्रकाशन और कलाकृतियों को जारी करने, ब्लॉग और डेटाबेस जैसी अन्य सेवाओं से जुड़ने या अन्य प्रौद्योगिकियों के साथ एकीकृत करने जैसे क्षेत्रों को आच्छादित करते हैं।

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

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

यह भी देखें

 * बिल्ड ऑटोमेशन सॉफ़्टवेयर की सूची