Apex, Salesforce platformu için özel olarak tasarlanmış, güçlü bir şekilde tiplenmiş, nesne yönelimli bir programlama dilidir. Geliştiricilerin Salesforce sunucusunda akış ve işlem kontrol ifadelerini çalıştırmalarına olanak tanırken, veritabanına API çağrıları yapmalarını da sağlar. Apex, Java benzeri sözdiziminden büyük ölçüde etkilenmiştir ve bulut ortamında kod yeniden kullanılabilirliğini ve verimli problem çözmeyi teşvik eder. Dil, Salesforce'un bulut hizmetleriyle sorunsuz bir şekilde entegre olacak şekilde tasarlanmıştır ve iş mantığının doğrudan Salesforce ekosisteminde uygulanmasını sağlar.
Apex, 2007 yılında Salesforce tarafından Salesforce Platformu'nun bir parçası olarak tanıtılmıştır. Temel amacı, geliştiricilerin Salesforce altyapısı içinde özel iş mantığı, otomatik iş akışları ve entegrasyonlar oluşturmasını sağlamaktı. Tasarımcılar, yalnızca Java'nın sözdizimini yansıtan değil, aynı zamanda bulut bilişimin benzersiz gereksinimlerini de karşılayan bir dil geliştirmeyi hedeflediler.
Apex, benzer nesne yönelimli ilkeleri ve sözdizimini içeren Java ile benzerlik gösterir. Kullanım kolaylığı ve geliştiricilerin uyum sağlama yeteneği açısından C# ve Python gibi dillerle de karşılaştırılabilir. Dil, Salesforce tarafından sağlanan çalışma zamanı hizmetlerinden yararlanır; bu, kaynak yönetimi ve yürütme bağlamını ele alır ve bu özellik, C# ve Java gibi yönetilen dillerde yaygındır. Salesforce ekosistemiyle entegrasyon, Apex uygulamalarının çeşitli üçüncü taraf hizmetlerle API'ler aracılığıyla etkileşimde bulunmasını sağlar.
2023 itibarıyla, Apex gelişmeye devam etmekte olup, Salesforce'tan düzenli güncellemeler alarak dilin yeteneklerini ve modern geliştirme uygulamalarıyla uyumunu artırmaktadır. Zamanla, asenkron işleme, koleksiyonlar aracılığıyla gelişmiş veri manipülasyonu ve geliştirilmiş hata ayıklama araçları gibi yeni özellikler tanıtılmıştır. Apex, Salesforce ekosisteminin ayrılmaz bir parçasıdır ve büyümesine katkıda bulunan güçlü bir geliştirici topluluğuna sahiptir.
Apex, güçlü bir şekilde tiplenmiş bir dildir; bu, her değişkenin bir türünün belirtilmesi gerektiği anlamına gelir. Örneğin:
String greeting = 'Merhaba, Salesforce!';
Apex, sınıflar ve kalıtım gibi nesne yönelimli programlama kavramlarını destekler. İşte basit bir sınıf tanımına örnek:
public class Vehicle {
public String type;
public Vehicle(String type) {
this.type = type;
}
}
Apex, kodun sağlamlığını artıran istisna yönetimi mekanizmaları sağlar. İstisna yönetimine bir örnek:
try {
Integer result = 10 / 0;
} catch (DivisionByZeroException e) {
System.debug('Sıfıra bölme işlemi yapılamaz: ' + e.getMessage());
}
Apex, Salesforce nesne sorgu dili (SOQL) ve Salesforce nesne arama dili (SOSL) sorgularını çalıştırarak Salesforce nesnelerinden veri alabilir. Örneğin:
List<Account> accts = [SELECT Id, Name FROM Account WHERE Industry = 'Teknoloji'];
Apex, geliştiricilerin belirli veritabanı olaylarından önce veya sonra kod çalıştırmalarına olanak tanıyan tetikleyicileri destekler. Account nesnesi üzerindeki bir tetikleyici örneği:
trigger AccountTrigger on Account (before insert) {
for (Account acct : Trigger.new) {
acct.Name = 'Yeni ' + acct.Name;
}
}
Apex, uzun süreli işlemlerin arka planda çalıştırılmasına olanak tanıyan asenkron işleme özelliklerine sahiptir ve bu da kullanıcı deneyimini iyileştirir. Örneğin:
@future
public static void processAccount(Id accountId) {
// Uzun süreli işlem gerçekleştir
}
Apex, veri manipülasyonunu basitleştiren koleksiyonları (Listeler, Setler ve Haritalar gibi) destekler. Bir Liste kullanma örneği:
List<String> names = new List<String>();
names.add('Alice');
names.add('Bob');
Apex, büyük miktarda kayıtları verimli bir şekilde işleyebilen toplu işlemler oluşturulmasına olanak tanır. Örnek:
global class BatchExample implements Database.Batchable<SObject> {
global Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id FROM Account');
}
}
Apex, birim testleri yazmak için yerleşik destek ile test etme ihtiyacını vurgular. Bir test metodu örneği:
@isTest
private class AccountTest {
@isTest static void testAccountCreation() {
Account acct = new Account(Name='Test Hesabı');
insert acct;
System.assertNotEquals(null, acct.Id);
}
}
Apex, Lightning bileşenleri için yöntemleri açığa çıkarmak üzere @AuraEnabled
gibi belirli davranışları tanımlamak için anotasyonlar içerir. Örnek:
@AuraEnabled
public static String getGreeting() {
return 'Apex'ten merhaba!';
}
Salesforce, geliştiricilerin Apex kodlarını yazıp test edebilecekleri Salesforce Geliştirici Konsolu olarak bilinen kendi geliştirme ortamını sağlar. Ayrıca, Visual Studio Code için Salesforce Uzantıları gibi araçlar, gelişmiş özelliklerle daha sağlam bir kodlama ortamı sunar.
Apex projesi oluşturmak için geliştiriciler genellikle sınıflar, tetikleyiciler ve diğer bileşenleri oluşturmak üzere Salesforce Ayar arayüzünü kullanır. Dağıtım süreci, paketler oluşturmayı ve yerel çalışıyorsanız Salesforce CLI kullanmayı içerebilir.
Apex, esasen Salesforce ekosisteminde iş mantığını uygulamak, iş akışlarını otomatikleştirmek ve karmaşık entegrasyonları yönetmek için kullanılır. Uygulamalar şunları içerir:
Apex'in en yakın karşılaştırmaları, nesne yönelimli özellikleri ve yönetilen çalışma zamanı ortamı nedeniyle Java ve C# ile yapılabilir. C++ ve Python gibi daha genel amaçlı dillerin aksine, Apex açıkça bulut tabanlı uygulamalar için tasarlanmıştır ve Salesforce'un bulut hizmetleriyle etkileşimini artırır.
JavaScript ile karşılaştırıldığında, Apex daha yapılandırılmış ve tip güvenli bir ortam sunar; bu, sunucu tarafı mantığı için uygundur, oysa JavaScript genellikle istemci tarafı betimleme için kullanılır. Apex ayrıca Python'dan daha az esnek olsa da, Salesforce'un belirli bağlamında veri işleme üzerinde daha fazla kontrol sunar.
Apex'ten diğer dillere veya tam tersine kod çevirisi yapmak isteyen geliştiricilerin, diğer dillerde doğrudan eşdeğerleri olmayan belirli Salesforce özelliklerini dikkate almaları gerekir. Şu anda, Apex için özel olarak tanınmış bir kaynak-kaynağa çeviri aracı yoktur. Ancak, geliştiriciler, diğer dillerde yazılmış kodlarla entegrasyonu kolaylaştırmak için API çağrılarını ve web hizmetlerini kullanabilirler.