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

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

जावा (प्रोग्रामिंग लैंग्वेज) और स्काला (प्रोग्रामिंग लैंग्वेज) दोनों के लिए लैंग्वेज बाइंडिंग उपस्थित हैं। अक्का स्काला में लिखा गया है, और स्काला 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