Was zum Teufel ist dieser ganze Apex-Kram?

Kurz gesagt, eine stark typisierte, objektorientierte Programmiersprache. Bei Apex handelt sich um eine proprietäre Sprache der Lightning-Plattform, die in der Multimandanten-Cloud-Plattform gespeichert und ausgeführt wird.

 

Ich habe gehört, dass dies eine Art von Java ist.

Syntaktisch gesehen, ja, Apex ist ähnlich wie Java. Wenn Sie in Java programmieren können, sind Sie wirklich nahe dran, ein Apex-Entwickler zu werden! Aber nein, es ist nicht Java. Es ist wie Java kompiliert, es hat eine Java Virtual Machine im Hintergrund -irgendwo-, aber es ist keine vollwertige VM, sondern nur ein Teil davon.

Wenn Sie wirklich an Details interessiert sind – nun, sie sind nur Salesforce-intern – aber Sie können in diesem Patent einige nette Details herausfinden: Patent US20110264861: Methoden und Systeme für die Verwendung von Bytecode in einer On-Demand-Service-Umgebung einschließlich der Bereitstellung von mandantenfähigen Laufzeitumgebungen und -systemen. 

 

Ich habe gehört, dass ich in Apex kein X, Y und Z machen kann – warum sollte ich überhaupt meine Zeit damit verschwenden, über irgendeine fremde Sprache zu lesen?

Sie können sie auf hohem Niveau als eine vereinfachte Version von Java behandeln. 

Aber hey, brauchen Sie wirklich ArrayList, LinkedList, Stack, Vector, TreeSet, LinkedHashSet, HashSet, HashMap, TreeMap und vieles mehr, nur um einige Datensätze zu speichern? 

In Apex gibt es List, Set und Map. Einfach zu wählen, einfach zu benutzen!

 

Dies ist eine Sprache, um die Arbeit zu erledigen. Und ja, Sie können Dependency Injections machen, wenn Sie wollen.

Laut Salesforce: Apex dient ausschließlich der Erstellung von Geschäftsanwendungen zur Verwaltung von Daten und Prozessen im größeren Kontext des Apex Lightning Platform-Frameworks. Aber im Rahmen von Geschäftsanwendungen bietet Apex Code einen einzigartig leistungsstarken und produktiven Ansatz zur Erstellung von Funktionalität und Logik, so dass sich Entwickler nur auf die für ihre Anwendung spezifischen Elemente konzentrieren können, während der Rest des „Loten“ dem Framework der Plattform überlassen bleibt. 

Ziemlich starker Anspruch! Ist das nicht nur ein bisschen Marketing? NEIN!

Aber bitte, wenn Sie wirklich 95% Ihrer Zeit mit der Konfiguration von Servern, Datenbanken, Micro Services, Schnittstellen, Gateways, Lastverteilern, Datensicherung und Bereitstellung verbringen wollen… ohh und ja, Sicherheit und Redundanz – wählen Sie eine andere Sprache und eine andere Plattform.

 

Apex ist:

  • Integriert mit der Datenbank – Sie können Inline-Abfragen und -Schleifen durchführen, z. B. Id und Name aus der Kontakt-Tabelle (1) holen, die eine Postanschrift in Polen hat, aber bitte treten Sie der Konto-Tabelle (2) bei und wählen Sie unter Konten nur die Kontakte aus, die im Namen „weich“ geworden sind. Iterieren Sie über die Liste, führen Sie Änderungen ein (3) und schieben Sie dann die Aktualisierung einfach zurück in die Datenbank (4). Wie viel Arbeit müssen Sie in einer anderen Sprache erledigen? Sehen Sie sich das an!

Apex

  • Versioniert, Sie können mehrere Klassen haben, die sich gegenseitig aufrufen, und alle diese Klassen können in ihrer eigenen Version laufen – ja, dieses 10 Jahre alte Apex kann mit den glänzenden, brandneuen Funktionen zusammenarbeiten, die Sie gerade gebaut haben! Und Sie haben 3 große Releases pro Jahr. Jede Version = neue Funktionen.
  • Einfach zu benutzen – die Syntax ist ähnlich wie in Java, die Apex-Methoden sind gut dokumentiert und es gibt eine sehr starke Community rund um Apex.
  • Rigoros – Apex ist stark typisiert und kompiliert. Es versagt schnell während der Kompilierung, wenn irgendwelche Referenzen ungültig sind. Es speichert alle benutzerdefinierten Feld-, Objekt- und Klassenabhängigkeiten in Metadaten, um sicherzustellen, dass sie nicht gelöscht werden, solange sie von aktivem Apex-Code benötigt werden. Also – niemand wird eine Spalte in der Datenbank löschen, wenn Sie sie verwenden!
  • Transaktional – Alle DML-Operationen in einer Transaktion werden entweder erfolgreich abgeschlossen, oder wenn in einer Operation ein Fehler auftritt, wird die gesamte Transaktion rückgängig gemacht und es werden keine Daten in die Datenbank übertragen – automatisch!
  • Komprimierbar – Sie können Ihren Code komprimieren und ihn über AppExchange verkaufen! Oder nehmen Sie einfach einige fertige Komponenten und verwenden Sie sie in Ihrer Instanz wieder.

 

Wenn es wirklich sein muss, wo kann ich es verwenden?

Kurz gesagt, im ganzen Backend! Und was ist ein Backend für Salesforce?

 

Anonyme Blöcke:

Sie können anonyme Blöcke verwenden, die on-the-fly kompiliert und ausgeführt werden und nirgendwo gespeichert sind.

Möchten Sie eine schnelle Datenkorrektur durchführen? Kein Problem! Sie möchten E-Mails versenden? Nur zu!

 

Trigger:

Ja, die gleiche Sprache! Mithilfe von Apex-Triggern können Sie vor oder nach Änderungen an Salesforce-Datensätzen benutzerdefinierte Aktionen ausführen, z. B. Einfügen, Aktualisierungen oder Löschen. 

 

Steuerungen in MVC-Mustern:

Ja, noch einmal. Dieselbe Sprache. Apex.

 

REST-Webdienste und SOAP-Webdienste:

Warum nicht? Stellen Sie die gewünschten Daten mit OAuth2.0 oder vollständig benutzerdefinierter Authentifizierung nach den von Ihnen gewünschten Regeln bereit. In wenigen Codezeilen! Hier haben wir einen „Account“-Endpunkt, bei dem Sie Id über eine URI übergeben und einige zusätzliche Details darüber erhalten.

Apex

 

E-Mail-Verarbeitung:

Sie können eine E-Mail-Adresse in Salesforce verfügbar machen und jede beliebige benutzerdefinierte E-Mail-Verarbeitung durchführen. Z. B. wenn Sie eine E-Mail erhalten und kein Kontakt mit dieser E-Mail verbunden ist, können Sie einen Kontakt erstellen.

Ereignisgesteuerte Entwicklung:

Ja! Ja! Ja! Sie haben einen Enterprise-Level Event Bus, den Sie einfach in Ihrem Code verwenden können! Hat jemand „Kafka“ gesagt?

Kubernetes-basierte serverlose Umgebung

Salesforce Evergreen bietet serverlose Funktionen auf der Grundlage vollständig verwalteter Kubernetes, Unterstützung für offene Programmiersprachen und häufig verwendete Hochleistungsdatenspeicher. Evergreen unterstützt Technologien und Architekturmuster wie

  • Function-as-a-Service (Node.js, Java und Apex)
  • Micro Services
  • Verwaltete Datenspeicher (Postgres, Apache Kafka und Redis).

 

Ja, all die schönen glänzenden Dinge auf dieser hässlichen Salesforce-Plattform! Vielleicht am Ende gar nicht so schlecht?

Ich habe gehört, dass Entwickler es hassen!

Apex erzwingt gute Programmierpraktiken durch 2 Kerndesignmerkmale:

  • Test-enforced Deployment
  • Governor Limits.

Also ja, wenn Sie es nicht mögen, optimalen Code zu schreiben und zu testen, wird Apex Ihnen nicht gefallen, sorry! 

Testen!

Es ist einfach zu testen, Apex verfügt über integrierte Unterstützung für die Erstellung und Ausführung von Unit-Tests. Sie wissen genau, welche Zeile abgedeckt wird und welche zusätzliche Aufmerksamkeit erfordert. Sie können externe Dienste simulieren, so dass auch REST API- und SOAP API-Integrationen gut abgedeckt werden können.

Und – Sie können den Code einfach nicht in die Produktion geben, wenn nicht mindestens 75% des Codes Unit-Tests unterzogen werden! Das ist es, wofür man Apex hassen kann!!!

Plattform-Begrenzungen!

Sie möchten Datenbankabfragen in for-Schleifen schreiben? Dafür werden Sie bestraft!

Sie möchten die gesamte Datenbanktabelle abfragen, wenn Sie nur 2 Felder in 4 Datensätzen aus einer Tabelle mit 10 Millionen Datensätzen und 500 Spalten benötigen? Sie werden bestraft werden!

Sie verwenden gerne O(n^4)-Algorithmen? Ja, Sie werden bestraft!

Aber hey, Sie können auch einfach anfangen, guten Code zu schreiben! Da Apex in einer mandantenfähigen Umgebung läuft, setzt die Apex-Laufzeit-Engine strikte Grenzen, so dass unkontrollierter Apex-Code oder -Prozesse keine gemeinsam genutzten Ressourcen monopolisieren. Wenn ein Apex-Code Limits überschreitet, liefert der zugehörige Governor eine Runtime Exception, die nicht behandelt werden kann, und die ganze Transaktion wird rückgängig gemacht.

Gibt es überhaupt Jobs im Apex-Umfeld?

Nun, ich kenne eine ganze Reihe von Leuten, die in Java programmiert haben und in die Salesforce-Welt eingestiegen sind. Ich kann mich nicht erinnern, dass jemand Salesforce für Java verlassen hat. Hmm… 

Geld? Interessante Arbeit? Verschiedenartige Aufgaben? Verschiedenste Einsatzmöglichkeiten? Keine Ahnung, was der Grund dafür ist! 

Normalerweise sagen wir, dass wir einen Salesforce-Entwickler haben. Salesforce Developer arbeitet hauptsächlich mit dem Backend – ja, Apex – zusammen. Aber die meisten Entwickler sind eher wie „Ninjas“, die auch viel mit den Frontends in Salesforce zu tun haben, in Form von Lightning Web Components (modernes Webkomponenten-Framework), Lightning Components (etwas älter, auf dem Aura-Framework basierend) oder Visualforce Pages (MVC-Pattern). Wenn Sie mit Salesforce arbeiten, erweitern Sie nicht nur Ihr Wissen über Apex (eine objektorientierte Programmiersprache mit Schwerpunkt auf dem Backend), sondern auch über JavaScript, HTML5, CSS3 und moderne Web-Technologien. 

Mehr als 150.000 Unternehmen aus allen Branchen verwenden Salesforce. Haben Sie schon von Adidas, AWS, T-Mobile, Philips, Toyota, ABB, Spotify, EA, Activision, GE, KLM, Nielsen, PWC, Pandora, Shazam, Unilever gehört – das sind alles Nischenunternehmen, nicht wahr? 

OK, kann ich es also irgendwo lernen, ohne viel Geld zu bezahlen?

Salesforce hat eine Entwickler-Edition, die kostenlos zu verwenden ist!

https://developer.salesforce.com/signup

Es gibt auch eine Trailhead-Plattform https://trailhead.salesforce.com/, auf der Sie als Anfänger bis hin zum Architekten kostenlos lernen können! Diese Lernplattform ist stark mit Themen aus dem wirklichen Leben gespickt, in 15-20 Min. Teile zerstückelt und gut konsumierbar.

Und googeln Sie einfach – es gibt eine Menge qualitativ hochwertiger Materialien, die Ihnen zur Verfügung stehen!

Also – sind Sie bereit, Ihren ersten Schritt zu machen? 

Willkommen in der Welt von Salesforce!

Möchten Sie mehr über Apex oder die Arbeit als Salesforce Developer bei Cloudity erfahren? Dann kontaktieren Sie uns!
Wir laden Sie auch ein, uns auf LinkedIn zu folgen.
Artikel von Jakub Kalke