एपेक्स एक मजबूत प्रकार की, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जिसे विशेष रूप से सेल्सफोर्स प्लेटफॉर्म के लिए डिज़ाइन किया गया है। यह डेवलपर्स को सेल्सफोर्स सर्वर पर फ्लो और लेनदेन नियंत्रण कथनों को निष्पादित करने की अनुमति देता है, साथ ही डेटाबेस के लिए एपीआई कॉल भी करता है। एपेक्स जावा जैसी सिंटैक्स से काफी प्रभावित है, जो कोड पुन: उपयोगिता और क्लाउड वातावरण में प्रभावी समस्या समाधान को बढ़ावा देता है। यह भाषा सेल्सफोर्स की क्लाउड सेवाओं के साथ निर्बाध रूप से एकीकृत करने के लिए तैयार की गई है, जिससे व्यावसायिक तर्क को सीधे सेल्सफोर्स पारिस्थितिकी तंत्र के भीतर लागू किया जा सके।
एपेक्स को 2007 में सेल्सफोर्स द्वारा उनके सेल्सफोर्स प्लेटफॉर्म के हिस्से के रूप में पेश किया गया था। इसका प्राथमिक लक्ष्य डेवलपर्स को कस्टम व्यावसायिक तर्क, स्वचालित कार्यप्रवाह और सेल्सफोर्स अवसंरचना के भीतर एकीकरण बनाने के लिए सशक्त बनाना था। डिज़ाइनरों का उद्देश्य एक ऐसी भाषा विकसित करना था जो न केवल जावा की सिंटैक्स को दर्शाती हो, बल्कि क्लाउड कंप्यूटिंग की अनूठी आवश्यकताओं को भी अपनाती हो।
एपेक्स जावा के साथ समानता रखता है, जिसमें समान ऑब्जेक्ट-ओरिएंटेड सिद्धांत और सिंटैक्स शामिल हैं। यह उपयोग में आसानी और डेवलपर्स की अनुकूलता के मामले में C# और पायथन जैसी भाषाओं के साथ भी तुलनीय है। यह भाषा सेल्सफोर्स द्वारा प्रदान किए गए रनटाइम सेवाओं से लाभान्वित होती है, जो संसाधन प्रबंधन और निष्पादन संदर्भ को संभालती है, जो C# और जावा जैसी प्रबंधित भाषाओं में सामान्य विशेषता है। सेल्सफोर्स पारिस्थितिकी तंत्र के साथ एकीकरण का अर्थ है कि एपेक्स अनुप्रयोग विभिन्न तृतीय-पक्ष सेवाओं के साथ एपीआई के माध्यम से बातचीत कर सकते हैं।
2023 तक, एपेक्स विकसित होता रहा है, जिसमें सेल्सफोर्स से नियमित अपडेट शामिल हैं जो भाषा की क्षमताओं और आधुनिक विकास प्रथाओं के साथ संरेखण को बढ़ाते हैं। वर्षों में नई सुविधाएँ पेश की गई हैं, जिनमें असिंक्रोनस प्रोसेसिंग, संग्रहों के माध्यम से उन्नत डेटा हेरफेर, और बेहतर डिबगिंग उपकरण शामिल हैं। यह सेल्सफोर्स पारिस्थितिकी तंत्र का एक अभिन्न हिस्सा है, जिसमें एक मजबूत डेवलपर समुदाय इसकी वृद्धि में योगदान कर रहा है।
एपेक्स एक मजबूत प्रकार की भाषा है, जिसका अर्थ है कि प्रत्येक चर का एक घोषित प्रकार होना चाहिए। उदाहरण के लिए:
String greeting = 'Hello, Salesforce!';
एपेक्स ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के सिद्धांतों का समर्थन करता है जैसे कि कक्षाएँ और विरासत। यहाँ एक सरल कक्षा परिभाषा का उदाहरण है:
public class Vehicle {
public String type;
public Vehicle(String type) {
this.type = type;
}
}
एपेक्स अपवादों को संभालने के लिए तंत्र प्रदान करता है, जो कोड की मजबूती को बढ़ाता है। अपवाद प्रबंधन का एक उदाहरण है:
try {
Integer result = 10 / 0;
} catch (DivisionByZeroException e) {
System.debug('Division by zero is not allowed: ' + e.getMessage());
}
एपेक्स सेल्सफोर्स ऑब्जेक्ट क्वेरी लैंग्वेज (SOQL) और सेल्सफोर्स ऑब्जेक्ट सर्च लैंग्वेज (SOSL) क्वेरी को निष्पादित कर सकता है ताकि सेल्सफोर्स ऑब्जेक्ट से डेटा प्राप्त किया जा सके। उदाहरण के लिए:
List<Account> accts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
एपेक्स ट्रिगर्स का समर्थन करता है, जिससे डेवलपर्स विशिष्ट डेटाबेस घटनाओं से पहले या बाद में कोड निष्पादित कर सकते हैं। खाता ऑब्जेक्ट पर ट्रिगर का उदाहरण:
trigger AccountTrigger on Account (before insert) {
for (Account acct : Trigger.new) {
acct.Name = 'New ' + acct.Name;
}
}
एपेक्स में असिंक्रोनस प्रोसेसिंग के लिए सुविधाएँ हैं, जो लंबे समय तक चलने वाले संचालन को पृष्ठभूमि में निष्पादित करने की अनुमति देती हैं, जिससे उपयोगकर्ता अनुभव में सुधार होता है। उदाहरण के लिए:
@future
public static void processAccount(Id accountId) {
// Perform long-running operation
}
एपेक्स संग्रहों (जैसे सूचियाँ, सेट और मानचित्र) का समर्थन करता है, जो डेटा हेरफेर को सरल बनाते हैं। सूची का उपयोग करने का उदाहरण:
List<String> names = new List<String>();
names.add('Alice');
names.add('Bob');
एपेक्स बड़े रिकॉर्ड वॉल्यूम को प्रभावी ढंग से संभालने के लिए बैच प्रक्रियाओं के निर्माण की अनुमति देता है। उदाहरण:
global class BatchExample implements Database.Batchable<SObject> {
global Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id FROM Account');
}
}
एपेक्स परीक्षण की आवश्यकता पर जोर देता है, जिसमें यूनिट परीक्षण लिखने के लिए अंतर्निहित समर्थन होता है। परीक्षण विधि का उदाहरण:
@isTest
private class AccountTest {
@isTest static void testAccountCreation() {
Account acct = new Account(Name='Test Account');
insert acct;
System.assertNotEquals(null, acct.Id);
}
}
एपेक्स में विशिष्ट व्यवहार को परिभाषित करने के लिए एनोटेशन शामिल हैं, जैसे @AuraEnabled
जो लाइटनिंग घटकों के लिए विधियों को उजागर करता है। उदाहरण:
@AuraEnabled
public static String getGreeting() {
return 'Hello from Apex!';
}
सेल्सफोर्स अपना विकास वातावरण प्रदान करता है, जिसे सेल्सफोर्स डेवलपर कंसोल कहा जाता है, जहाँ डेवलपर्स अपने एपेक्स कोड को लिख और परीक्षण कर सकते हैं। इसके अतिरिक्त, विजुअल स्टूडियो कोड के लिए सेल्सफोर्स एक्सटेंशन जैसे उपकरण एक अधिक मजबूत कोडिंग वातावरण प्रदान करते हैं जिसमें उन्नत सुविधाएँ होती हैं।
एपेक्स प्रोजेक्ट बनाने के लिए, डेवलपर्स आमतौर पर कक्षाएँ, ट्रिगर्स और अन्य घटक बनाने के लिए सेल्सफोर्स सेटअप इंटरफ़ेस का उपयोग करते हैं। तैनाती प्रक्रिया में पैकेज बनाना और संभवतः स्थानीय रूप से काम करते समय सेल्सफोर्स CLI का उपयोग करना शामिल है।
एपेक्स मुख्य रूप से सेल्सफोर्स पारिस्थितिकी तंत्र के भीतर व्यावसायिक तर्क को लागू करने, कार्यप्रवाह को स्वचालित करने और जटिल एकीकरणों का प्रबंधन करने के लिए उपयोग किया जाता है। अनुप्रयोगों में शामिल हैं:
एपेक्स की निकटतम तुलना जावा और C# के साथ की जा सकती है, मुख्य रूप से इसके ऑब्जेक्ट-ओरिएंटेड विशेषताओं और प्रबंधित रनटाइम वातावरण के कारण। C++ और पायथन की तुलना में, जो अधिक सामान्य उद्देश्य हो सकते हैं, एपेक्स विशेष रूप से क्लाउड-आधारित अनुप्रयोगों के लिए तैयार किया गया है, जिससे यह सेल्सफोर्स की क्लाउड सेवाओं के साथ बातचीत को बढ़ाता है।
जावास्क्रिप्ट की तुलना में, एपेक्स एक अधिक संरचित और प्रकार-सुरक्षित वातावरण प्रदान करता है, जो सर्वर-साइड तर्क के लिए उपयुक्त है, जबकि जावास्क्रिप्ट अक्सर क्लाइंट-साइड स्क्रिप्टिंग के लिए उपयोग किया जाता है। एपेक्स पायथन की तुलना में भी कम लचीला है लेकिन सेल्सफोर्स के विशिष्ट संदर्भ में डेटा प्रबंधन पर अधिक नियंत्रण प्रदान करता है।
डेवलपर्स जो एपेक्स से अन्य भाषाओं में या इसके विपरीत कोड का अनुवाद करने की कोशिश कर रहे हैं, उन्हें उन विशिष्ट सेल्सफोर्स सुविधाओं पर विचार करना चाहिए जिनके अन्य भाषाओं में सीधे समकक्ष नहीं होते हैं। वर्तमान में, एपेक्स के लिए विशेष रूप से कोई व्यापक रूप से मान्यता प्राप्त स्रोत से स्रोत अनुवाद उपकरण नहीं हैं। हालाँकि, डेवलपर्स एपीआई कॉल और वेब सेवाओं का लाभ उठाकर अन्य भाषाओं में लिखे गए कोड के साथ एकीकरण को सुविधाजनक बना सकते हैं।