29. März 2023
Die Programmiersprache von Salesforce heißt Apex und ist außerhalb des Salesforce Universums kaum bekannt. Gerade für junge Entwickler*innen, die über Salesforce im Rahmen ihrer Karriereplanung stolpern, stellt sich oft die Frage: Was ist Salesforce Apex?
Um das zu beantworten, müssen wir allerdings einen Punkt früher ansetzen. Es gibt zwei Arten von Programmiersprachen: Allzwecksprachen und domänenspezifische Sprachen. Diese direkt zu vergleichen, ist fast so sinnvoll wie die Gegenüberstellung von Wassermelonen & Äpfeln: so gut wie gar nicht. Andererseits bleibt jedoch die Frage bestehen, wie ohne einen Vergleich der Sprachen entschieden werden kann, welcher man sich im Laufe seiner Karriere widmen möchte.
Wagen wir also den Vergleichen zwischen dem Weg als Salesforce-Entwickler*in mit anderen, auf dem Markt existierenden Technologien. Zu diesem Zweck schauen wir eine zentrale Fertigkeit genau an: das Programmieren in verschieden Programmiersprachen mit der Referenzsprache Apex.
Es ist einfach sich vorzustellen, das Salesforce Development bestehe nur aus der Funktion des Schreibens von Apex-Codes. Das ist allerdings noch nicht alles. Neben Apex besitzt Salesforce Visualforce, LWC, Aura und SOQL/SOSL. Ganz zu schweigen von all den No-Code-Tools, die Salesforce darüber hinaus zur Verfügung stellt.
Wenn junge Entwickler*innen aus anderen Programmierbereichen kommen, haben sie bereits eine Vorstellung von all diesen Technologien. Die Strategie von Salesforce war es nicht, etwas völlig Neues zu erfinden, sondern von bestehenden Ansätzen in der Programmierung zu profitieren. Beginnen wir mit der meistgenutzten Technologie auf der Salesforce Plattform – Apex.
Apex ist eine Kernsprache von Salesforce. Offiziell handelt es sich um „eine stark typisierte, objektorientierte, domänenspezifische Backend-Programmiersprache“. Für Entwickler*innen macht das Sinn, für Anfänger*innen oder Nicht-Entwickler*innen gestaltet es sich schwieriger. Vergleichen wir also die einzelnen Aspekte von Apex mit den beliebtesten Programmiersprachen auf dem Markt.
Wie die meisten modernen Sprachen folgt auch Apex einem objektorientierten Modell. Das bedeutet, dass in Apex hauptsächlich mit Objekten gearbeitet wird. Genauso wie in Java, C# oder JavaScript. Für Salesforce gestaltet sich das am sinnvollsten, da Salesforce CRM-Systeme sowie Lösungen für CRM-Systeme anbietet und viel mit verschiedenen Objekten arbeitet.
Dabei kann jeder Kunde im CRM als Objekt betrachtet werden. Im Grunde passiert genau das – jeder Datensatz in Salesforce wird als Objektinstanz in Apex dargestellt.
Die meisten Nutzer*innen sind sich einig, dass die Syntax von Apex sehr einfach im Vergleich zu Java ist. Das ist in der Tat der Fall, jedoch stellt Apex eine ganz andere Programmiersprache dar. Vergleichbar ist die Differenzierung untereinander wie die von C# zu Kotlin Java. Beide ähneln sich, stellen aber trotzdem unterschiedliche Sprachen dar.
Der Hauptunterschied ist die Einfachheit von Apex. Wenn es in Java 10 Möglichkeiten gibt, das gleiche Ergebnis zu erzielen, gibt es in Apex oft nur eine Möglichkeit, dies zu tun. Apex verfügt nicht über Streams, Lambdas oder andere fortgeschrittene Java-Funktionen. Das bedeutet nicht, dass Apex weniger leistungsfähig ist als Java. Ganz und gar nicht! Die wahre Stärke von Apex liegt darin, wie tief es in die Salesforce-Plattform integriert ist. Im Umkehrschluss könnte man ebenso sagen: Apex ist nichts ohne Salesforce. Tatsächlich kann Apex nicht außerhalb von Salesforce ausgeführt werden. Dies hat einige Auswirkungen auf die Art und Weise, wie mit Apex entwickelt wird, da es nicht lokal auf dem eigenen PC ausgeführt wird, sondern stattdessen an den Server von Salesforce gesendet werden muss.
Was ist also das Besondere an Apex? Eindeutig die Geschwindigkeit, mit der eine nützliche Funktion für Unternehmen entwickelt werden kann. Wenn Apex in dieser Hinsicht mit anderen Sprachen verglichen wird, ist Apex ein sicherer Sieger. Die Funktionsweise von Apex wird an einem konkreten Beispiel deutlich:
Nehmen wir an, eine Marke möchte einem Kunden zwei Tage nachdem er Ihre Dienstleistung gekauft hat eine E-Mail schicken. In Apex dauert die durchschnittliche Implementierungszeit für diesen Use Case etwa 15 Minuten. In Java hingegen würde es wesentlich länger dauern, um das gleiche Ergebnis zu erzielen. Das liegt daran, dass in Apex alle Daten bereits zur Verfügung stehen. Keine Datenbankaufrufe, keine zusätzlichen Frameworks – nur der Fokus auf den tatsächlich zu programmierenden Geschäftsvorgang.
Die Geschwindigkeit der Implementierung hängt von vielen Faktoren ab, aber im Allgemeinen kann derselbe Geschäftsprozess mit Salesforce schneller implementiert werden als auf anderen Plattformen. Das ist natürlich eine z.T. subjektiv gefärbte Einschätzung. Viele Nutzer*innen sind sich jedoch einig, dass das Erlernen von Apex simpler ist als das von Java, da es weniger Syntax gibt.
So oder so: Es gibt viele Thematiken, die nur in Salesforce und Apex vorkommen, sodass eine Menge an Input gelernt werden muss. Um Apex zu verstehen, ist es von Vorteil Salesforce bereits zu kennen. Das bedeutet, dass man sich vor der Nutzung von Apex zunächst mit Salesforce beschäftigen sollte.
Dennoch ist Apex nicht das Einzige, mit dem als Salesforce-Entwickler*in gearbeitet wird! Werfen wir einen Blick auf einige andere Technologien.
Wenn ein Unternehmen einen Geschäftsprozess startet, beginnt der Prozess oft im Kopf der Endnutzer*innen, die in erster Linie in klassischen Benutzeroberflächen denken. Da Apex eine reine Backend-Sprache ist, wird für den gesamten Guss also ebenso eine Front-End-Sprache benötigt: Visualforce ist eine von ihnen.
Wenn der Umgang mit Java vertraut ist, ist Visualforce im Grunde vergleichbar zu JavaServer Faces (JSF). Es stellt eine Kombination aus HTML, CSS und einer Templating-Sprache dar. Visualforce ist eine der ältesten Technologien auf der Salesforce-Plattform und wird nur noch sehr begrenzt eingesetzt. Trotzdem wird es gelegentlich noch immer verwendet, um beispielsweise attraktive PDF-Dokumente zu erzeugen.
Außerdem kann Visualforce Apex im Backend verwenden, um die Daten in das Front-End zu übertragen. Eine mögliche Architektur sähe wie folgt aus:
Eines der Probleme bei der Front-End-Entwicklung ist, dass diese sich schnell verändert. Im Laufe der Zeit hat Salesforce erkannt, dass der Architekturansatz, der für Visualforce entwickelt wurde, nicht zukunftsfähig ist. Aus diesem Grund hat Salesforce ein neues Framework namens Aura entwickelt. Es hat eine modernere Architektur und erlaubt es, attraktivere Anwendungen als Visualforce zu entwickeln.
Viele Jahre nach der Einführung von Aura, hat die Front-End-Entwicklung einen weiteren großen Sprung gemacht: die reaktive Entwicklung. Infolgedessen musste Salesforce auch andere Technologien erforschen. So kam Salesforce zu einem der modernsten Frameworks, die es bisher gibt: LWC (Lightning Web Components).
LWC ist React sehr ähnlich und stellt eine grundlegende Veränderung in der Front-End-Entwicklung der letzten zehn Jahre dar. Mit diesem Framework lassen sich sehr flexible, modern anmutende Anwendungen erstellen, die sich nicht von anderen Websites im Internet unterscheiden lassen. Im Gegensatz zu React, kann bei LWC nur Apex als Backendsprache genutzt werden.
Salesforce kann als eine große Datenbank mit vielen Datensätzen betrachtet werden. Auch wenn Salesforce Apex als Backend nutzt, braucht es SOQL, um auf Daten zuzugreifen. SOQL (Salesforce Object Query Language) ist wie eine einfache Version des bekannten SQL, jedoch für die Nutzung in Salesforce zugeschnitten.
Der durchschnittliche Tag eines*r Salesforce-Entwicklers*in sieht in etwa so aus: viel Arbeit im Backend, etwas Arbeit im Front-End und viel Arbeit mit Geschäftsprozessen. Das heißt, dass für erfolgreiche erste Schritte zu einer Karriere als Salesforce Developer eine erste Grundannäherung an Salesforce stattgefunden haben sollte. Vor allem aber müssen die Programmiersprachen und Technologien, die im Backend genutzt werden, beherrscht werden. Und wie bei jeder guten Fachkraft wird das Profil durch zusätzliche Kompetenzen abgerundet. Nicht zuletzt das präzise Verständnis von Geschäftsmodellen und den Rollenprofilen von Endnutzer*innen ist entscheidend, um eine konsequent positive Erfahrung für die Nutzenden im Unternehmen selbst als auch für dessen Kunden zu gewährleisten.
Digital.Now Podcast
Igor berichtet in der neuen Episode des Digital.Now Podcasts, wie er nach seinem Bachelor in Informatik zu Salesforce gefunden hat. Und was aus Sicht eines Entwicklers das Besondere an dieser…
Nichts verpassen.
Blogartikel abonnieren.