Was zum Teufel ist dieser ganze Apex-Kram?

In kurzen, nerdigen Worten: Apex ist eine stark typisierte, objektorientierte Programmiersprache. Es handelt sich um eine proprietäre Sprache der Lightning Platform, die in der mandantenfähigen Cloud-Plattform gespeichert und ausgeführt wird.

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

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

Wenn Sie wirklich an Details interessiert sind – nun, die sind zwar nur Salesforce-intern, aber Sie können in diesem Patent ein paar nette Details ausgraben: Patent US20110264861: Methoden und Systeme zur Nutzung 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 nicht X, Y und Z machen kann – warum sollte ich meine Zeit damit verschwenden, über eine seltsame Sprache zu lesen!

Sie können es auf einer hohen Ebene als eine vereinfachte Version von Java betrachten.

Aber brauchen Sie wirklich ArrayList, LinkedList, Stack, Vector, TreeSet, LinkedHashSet, HashSet, HashMap, TreeMap und viele 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 TUN. Und ja, Sie können Dependency Injections verwenden, wenn Sie wollen.

Nach Angaben von Salesforce: Apex ist ausschließlich für die Erstellung von Geschäftsanwendungen zur Verwaltung von Daten und Prozessen im größeren Kontext des Apex Lightning Platform Frameworks gedacht. Aber im Rahmen von Geschäftsanwendungen, Apex Code bietet einen einzigartig leistungsstarken und produktiven Ansatz für die Erstellung von Funktionalität und Logik, der es Entwicklern ermöglicht, sich nur auf die für ihre Anwendung spezifischen Elemente zu konzentrieren und den Rest des „Klempnerhandwerks“ dem Framework der Plattform überlassen.

Eine ziemlich starke Behauptung! Ist das nicht einfach nur Marketing? NEIN!

Aber bitte, wenn Sie wirklich 95 % Ihrer Zeit mit der Konfiguration von Servern, Datenbanken, Microservices, Schnittstellen, Gateways, Load Balancern, Backup und Deployment verbringen wollen… ach ja, und 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 Kontakttabelle (1) holen, die eine Postanschrift in Polen haben, aber bitte die Kontotabelle (2) verbinden und nur die Kontakte unter Konten auswählen, die „soft“ im Namen haben. Iterieren Sie über die Liste, nehmen Sie Änderungen vor (3) und geben Sie die Aktualisierung dann einfach in die Datenbank zurück (4). Wie viel Arbeit müssen Sie in einer anderen Sprache erledigen? Prüfen Sie dies!
  • Versioniert können Sie 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 erst entwickelt haben! Und Sie haben 3 große Releases pro Jahr. Jede Version = neue Funktionen.
  • Einfach zu bedienen – die Syntax ähnelt der von Java, die Apex-Methoden sind gut dokumentiert und es gibt eine sehr starke Community rund um Apex.
  • Streng – Apex ist stark typisiert und kompiliert. Es schlägt bei der Kompilierung schnell fehl, 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 vom aktiven 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 bei einer Operation ein Fehler auftritt, wird die gesamte Transaktion zurückgesetzt und es werden keine Daten in der Datenbank gespeichert – automatisch!
  • Packable – Sie können Ihren Code packen und ihn auf AppExchange verkaufen! Oder nehmen Sie einfach ein paar fertige Komponenten und verwenden Sie sie in Ihrer Instanz weiter.

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

Mit einem Wort – das gesamte Backend! Und was ist das Backend für Salesforce?

Anonyme Blöcke:

Sie können anonyme Blöcke verwenden , die spontan kompiliert und ausgeführt und nirgendwo gespeichert werden.

Möchten Sie eine schnelle Datenkorrektur vornehmen? Kein Problem! Ein paar E-Mails verschicken? Nur zu!

Auslöser:

Ja, dieselbe Sprache! Mit Apex-Triggern können Sie benutzerdefinierte Aktionen vor oder nach Änderungen an Salesforce-Datensätzen durchführen, z. B. Einfügungen, Aktualisierungen oder Löschungen.

Controller in MVC-Mustern:

Ja, wieder. Dieselbe Sprache. Apex.

REST-Webdienste und SOAP-Webdienste:

Warum eigentlich nicht? Geben Sie die gewünschten Daten nach den von Ihnen gewünschten Regeln mit OAuth2.0 oder einer vollständig benutzerdefinierten Authentifizierung frei. In ein paar Zeilen Code! Hier haben wir einen „Account“-Endpunkt, bei dem Sie die Id per URI übergeben und einige zusätzliche Details dazu erhalten.

E-Mail-Bearbeitung:

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

Ereignisgesteuerte Entwicklung:

Ja! Ja! Ja! Sie haben einen Ereignisbus auf Unternehmensebene, 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 von vollständig verwalteten Kubernetes, Unterstützung für offene Programmiersprachen und gängige Hochleistungsdatenspeicher. Evergreen unterstützt Technologien und Architekturmuster wie:

  • Funktionen-als-Service (Node.js, Java und Apex)
  • Microservices
  • Verwaltete Datenspeicher (Postgres, Apache Kafka und Redis)

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

Ich habe gehört, dass die Entwickler es hassen!

Apex erzwingt gute Programmierpraktiken durch 2 zentrale Designmerkmale:

  • testgestützte Bereitstellung
  • Gouverneursgrenzen

Also ja, wenn Sie nicht gerne testen und optimalen Code schreiben, werden Sie es nicht mögen, tut mir leid!

Testen!

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

Und – Sie können den Code nicht in die Produktion geben, wenn mindestens 75% des Codes nicht unitgetestet sind! HASS!!!

Grenzen des Regierens!

Schreiben Sie gerne Datenbankabfragen in einer for-Schleife? Sie werden bestraft werden!

Möchten Sie 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!

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

Aber hey, Sie können einfach anfangen, guten Code zu schreiben! Da Apex in einer mandantenfähigen Umgebung ausgeführt wird, setzt die Apex-Laufzeit-Engine strikt Grenzen durch, damit ausufernder Apex-Code oder -Prozesse die gemeinsamen Ressourcen nicht monopolisieren. Wenn ein Apex-Code das Limit überschreitet, gibt der zugehörige Gouverneur eine Laufzeitausnahme aus, die nicht behandelt werden kann.

Gibt es dort Stellen für diese ganze Apex?

Nun, ich kenne eine ganze Reihe von Leuten, die in Java programmiert haben und dann in die Salesforce-Welt gewechselt sind. Ich kann mich nicht erinnern, dass jemand von Salesforce zu Java gewechselt ist. Hmm…

Geld? Interessanter Job? Verschiedene Aufgaben? Verschiedene Bewerbungen? Keine Ahnung, was der Grund ist!

Normalerweise sagen wir, dass wir jemanden haben, den wir Salesforce Developer nennen. Eine solche Person arbeitet hauptsächlich mit dem Backend – ja, mit Apex. Aber die meisten Entwickler sind eher „Ninjas“ – wir haben eine Menge Frontend in Salesforce in Form von Lightning Web Components (modernes Web Component Framework), Lightning Components (etwas älter, Aura Framework-basiert) oder Visualforce Pages (MVC-Muster). Wenn Sie mit Salesforce arbeiten, erweitern Sie Ihr Wissen nicht nur über Apex (eine starke objektorientierte Backend-Programmiersprache), sondern auch über JavaScript, HTML5, CSS3 und moderne Webtechnologien.

Mehr als 150 000 Unternehmen aus allen Branchen nutzen Salesforce. Sie haben von Adidas, AWS, T-Mobile, Philips, Toyota, ABB, Spotify, EA, Activision, GE, KLM, Nielsen, PWC, Pandora, Shazam, Unilever gehört – allesamt ziemliche Nischenunternehmen, nicht wahr?

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

Salesforce hat eine kostenlose Entwickler-Edition!

Es gibt auch eine Trailhead-Plattform https://trailhead.salesforce.com/, auf der Sie vom Anfänger bis zum Architekten kostenlos lernen können! Diese Lernplattform ist stark spielerisch aufgebaut und enthält Themen aus dem echten Leben, die in leicht verdauliche 15-20-minütige Abschnitte unterteilt sind.

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

Also – sind Sie bereit, Ihren Weg zu gehen?

Willkommen in der Salesforce-Welt!

Möchten Sie mehr über Apex oder die Arbeit eines Salesforce-Entwicklers bei Cloudity erfahren? Kontaktieren Sie uns!

Wir empfehlen Ihnen auch, uns auf LinkedIn zu folgen.

Artikel von Jakub Kalke

More ressources

What it unlocked

Join 350+ fast moving companies who fired their CRM chaos and built smarter systems with Cloudity.