Być może, będąc Java Developerem, zastanawiałeś się czym jest Salesforce. Jak wiele różni te dwa języki? Czy jesteś w stanie przenieść posiadaną wiedzę do zupełnie nieznanej Ci technologii? Czy Salesforce jest tym, w czym będziesz mógł spełniać się zawodowo? Na te i inne pytania postaram się odpowiedzieć w dzisiejszym poście.
Czym jest Apex?
Apex, czyli język programowania, którym posługujemy się tworząc aplikacje na platformie Salesforce, różni się pod wieloma względami od Javy. Dostajemy tutaj gotowe rozwiązanie CRM, w którym tylko ulepszamy istniejący już system poprzez konfigurację lub dopisywanie kodu. Java natomiast jest dla ludzi kochających programowanie i tworzenie własnego oprogramowania od zera.
Pracując w technologii Salesforce korzystamy z wielu gotowych narzędzi takich jak Apex oraz Lightning Web Components (czasami również ze starszych Visualforce Pages). Zdarza się nam również pracować bezpośrednio z klientami, zbierając wymagania oraz pomagając im lepiej zrozumieć czym jest technologia Salesforce.
Czym różni się programowanie w Apex od Java?
Java Developer skupia się głównie na programowaniu aplikacji javowych i webowych. Jest odpowiedzialny za tworzenie czytelnego, zgodnego ze standardami kodu, odpowiednim jego przetestowaniu i wdrożeniu u klienta. Salesforce Developer robi dokładnie te same rzeczy. W czym więc jest różnica?
Salesforce jest językiem podobnym do Javy, jednak posiadającym pewne uproszczenia. Tak samo jak Java, Apex jest językiem mocno typizowanym, co oznacza, że kod musi zostać skompilowany, a każda zmienna musi być powiązana z odpowiednim typem. Pętle i iteratory również są do siebie bardzo podobne.
Jednak aplikacja apexowa ma dużo bardziej ograniczony zakres od aplikacji javowej. Z wykorzystaniem Javy jesteśmy w stanie zbudować praktycznie każdą aplikację, natomiast Apex jest stworzony do budowania aplikacji typowo biznesowych, zarządzających rekordami i ich przetwarzaniem.
Paczkowanie i deployment w Salesforce
Paczkowanie i deployment aplikacji różni się znacząco. Java Developer musi skompilować napisany kod, stworzyć paczkę deploymentową (zazwyczaj poprzez środowisko programistyczne), a następnie z wykorzystaniem odpowiednich narzędzi (np. Jenkins), przenieść zmiany na inne środowiska. Salesforce posiada wbudowane mechanizmy pozwalające na szybkie i proste przenoszenie zmian na środowiska testowe i produkcyjne. Nie jest konieczne korzystanie z IDE (np. w przypadku korzystania z Changeset). Mamy oczywiście możliwość skorzystania z tych samych narzędzi, co w przypadku Javy (Jenkins, Copado czy Bamboo), jednak nie jest to konieczne.
SOQL a SQL
Salesforce posiada swój własny język zapytań do bazy zwany SOQL. Nie wspiera on wielu funkcji znajdujących się w SQL, jednak jego możliwości są w większości przypadków wystarczające do spełnienia wymagań biznesowych. Główną różnicą między tymi językami jest brak możliwości korzystania z SELECT * — w SOQL funkcja ta została zastąpiona funkcją SELECT FIELDS(), gdzie parametrem mogą być wszystkie pola (ALL), tylko pola customowe (CUSTOM) lub tylko pola standardowe (STANDARD). Istnieje również możliwość indywidualnego doboru wartości, które chcemy pobrać z danego obiektu. SOQL jest wykorzystywany wtedy, gdy wiemy, które informacje z bazy będą nam potrzebne. Jeżeli tego nie wiemy lub chcemy pobrać dane z innych źródeł, przydatny będzie SOSL.
Doprecyzujmy – czym różni się Apex od Java?
Głównymi elementami, odróżniającymi Apex od Java, są następujące cechy:
- Klasy wewnętrzne i Interfejsy mogą być zadeklarowane tylko na pierwszym poziomie klasy zewnętrznej,
- Metody i zmienne statyczne mogą być zadeklarowane tylko w klasie top-level, nigdy w klasie wewnętrznej,
- Klasa wewnętrzna zachowuje się tak samo jak statyczna klasa Javowa, ale nie wymaga deklarowania jej jako static,
- Modyfikator dostępu private jest domyślny,
- Modyfikator dostępu public pozwala na dostęp w całym kodzie Apexowym, jak i aplikacji oraz przestrzeni nazw,
- Modyfikator global pozwala na dostęp z każdego miejsca. Wykorzystywany jest np. podczas korzystania z integracji SOAP API lub przez inny kod apexowy.
Apex wspiera tylko trzy rodzaje kolekcji. Są to: Mapa, Lista oraz Set. Kolekcje w Apexie nie muszą mieć konkretnej implementacji interfejsu w odróżnieniu od Javy. Natomiast Java wspiera dodatkowo takie struktury jak Stack i Queue oraz rozróżnia macierze (Arrays) i Listy.
Podsumowując, Java posiada swoje wady i zalety, tak samo jak Apex. Te dwie technologie różnią się na wielu płaszczyznach, jednak każda ma zastosowanie w swojej dziedzinie. Apex wydaje się młodszym kuzynem Javy, który musi się jeszcze wiele nauczyć, aby życie programistów stało się łatwiejsze.