अक्का (टूलकिट)

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

जावा (प्रोग्रामिंग लैंग्वेज) और स्काला (प्रोग्रामिंग लैंग्वेज) दोनों के लिए लैंग्वेज बाइंडिंग उपस्थित हैं। अक्का स्काला में लिखा गया है, और स्काला 2.10 के अनुसार, स्काला स्टैंडर्ड लाइब्रेरी में एक्टर्स को अक्का के पक्ष में डेप्रिकेट किया गया है।

इतिहास
फिलिप हॉलर द्वारा लिखित एक एक्टर इम्प्लीमेंटेशन, स्काला 2.1.7 के भाग के रूप में जुलाई 2006 में ड्राईवेन किया गया था। 2008 तक स्काला काम्प्लेक्स सर्वर अनुप्रयोगों में उपयोग के लिए अट्रक्टिंग अटेंशन कर रहा था, लेकिन कॉन्करेन्सी अभी भी सामान्यतः थ्रेड बनाकर प्राप्त की जाती थी, जो मेमोरी साझा करती थी और लॉक का उपयोग करके आवश्यक होने पर सिंक्रनाइज़ होती थी। उस दृष्टिकोण की कठिनाइयों से अवगत और अत्यधिक कॉन्करेन्सी, घटना-ड्राईवेन अनुप्रयोगों को लिखने के लिए एर्लांग प्रोग्रामिंग लैंग्वेज के लाइब्रेरी सपोर्ट से प्रेरित होकर, स्वीडिश प्रोग्रामर जोनास बोनर ने स्काला और जावा में समान क्षमताओं को लाने के लिए अक्का बनाया था, बोनर ने 2009 के प्रारंभिक में अक्का पर काम करना प्रारंभ किया था। और उसी वर्ष जून में इसके लिए अपना दृष्टिकोण लिखा, पहली पब्लिक रिलीज़ अक्का 0.5 थी, जिसकी घोषणा जनवरी 2010 में की गई थी। अक्का अब प्ले फ्रेमवर्क और स्काला प्रोग्रामिंग लैंग्वेज के साथ लाइटबैंड प्लेटफॉर्म का भाग है।

सितंबर 2022 में, लाइटबैंड ने घोषणा की कि अक्का अपने लाइसेंस को फ्री सॉफ्टवेयर लाइसेंस, अपाचे लाइसेंस 2.0 से एक प्रोप्रीएटरी सॉफ्टवेयर सोर्स-उपलब्ध लाइसेंस में परिवर्तित कर देता है। जिसे बिज़नेस सोर्स लाइसेंस (बीएसएल) के रूप में जाना जाता है। बीएसएल के अनुसार कोई भी नवीनतम कोड तीन साल के पश्चात अपाचे लाइसेंस के अनुसार उपलब्ध हो जाता है।

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

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

परियोजना संरचना
विक्टर क्लैंग सितंबर 2011 में अक्का परियोजना के लिए तकनीकी प्रमुख बन गए, जब दिसंबर 2012 में विक्टर लाइटबैंड में इंजीनियरिंग के निदेशक बने, तो रोलैंड कुह्न अक्का के लिए तकनीकी प्रमुख बन गए, विकास का मुख्य भाग लाइटबैंड में नियोजित एक कोर टीम द्वारा किया जाता है, जो एक सक्रिय समुदाय द्वारा समर्थित है। वर्तमान जोर क्लस्टर (अभिकलन) सपोर्ट बढ़ाने पर है।

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

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

बाहरी संबंध

 * Official website for Akka