Skip to content

Vad är hela Apex-grejen för något?

I korta töntiga ord är Apex ett starkt typat, objektorienterad programmeringsspråk. Det är ett proprietär språk för Lightning Platform som sparas och körs i den multi-tenants molnplattformen.

Jag hörde att det här är typ som Java

I allmänhet, ja, Apex liknar Java. Om man kan programmera i Java är man verkligen nära att vara Apex-utvecklare! Men nej, det här är inte Java. Det är sammanställt som Java, det har en Java Virtual Machine i bakgrunden – någonstans – men det är inte en fullfjädrad virtuell dator, bara vissa delar av den.

Om man är verkligen intresserad av mer detaljer som är bara tillgängliga för Salesforce, kan man gräva ut några fina detaljer i detta paten härt: Patent US20110264861: Metoder och system för att använda bytecode i en on-demand-service miljö inklusive multi-tenant tillhandahållande av runtime-miljöer och system.

Jag hörde att i Apex kan jag inte göra X, Y och Z – varför skulle jag ens slösa bort min tid på att läsa om något konstigt språk!

Man kan behandla det på hög nivå som en förenklad version av Java.

Men hallå, behöver man verkligen ArrayList, LinkedList, Stack, Vector, TreeSet, LinkedHashSet, HashSet, HashMap, TreeMap och många fler bara för att lagra några poster?

I Apex finns det List, Set och Map. Lätt att välja och lätt att använda!

Detta är ett språk för att UTFÖRA arbete. Och ja, man kan göra Dependency Injections om man vill.

Enligt Salesforce: Apex är uteslutande för att kunna bygga affärsapplikationer för att hantera data och processer inom Apex Lightning Platforms ramar. Men inom ramen för affärsapplikationer ger Apex Code ett unikt, kraftfullt och produktivt method för att skapa funktionalitet och logik, så att utvecklare kan fokusera bara på de element som är specifika för deras applikation medan de lämnar resten av ”VVS” till plattformens ramverk.

Ganska starkt påstående! Är det inte bara någon marknadsföring grej? NEJ!

Men om man verkligen vill spendera 95% av sin tid på att konfigurera servrar, databaser, mikrotjänster, gränssnitt, gateways, load balancers, backup och distribution .. och just det, säkerhet och redundans – så ska man välja ett annat språk och en annan plattform.

Apex är:

  • Integrerad med databasen – man kan göra integrerade frågor och slingor, t.ex. hämta ID och namn från kontakt tabellen (1) som fick postadress i Polen, men gå med i kontotabell (2) och välj bara kontakterna under konton som fick ”mjuk” i namnet. Iterera över listan, introducera ändringar (3) och tryck bara tillbaka uppdateringen i databasen (4). Hur mycket arbete behöver man göra på ett annat språk? Kontrollera detta!

  • Versioned, man kan ha flera klasser som ringer varandra och alla dessa klasser kan köras i sin egen version – alltså, den här 10 år gamla Apex kan samarbeta med de glänsande helt nya funktionerna som man har just byggt! Och så finns det tre stora release per år. Varje release = nya funktioner.
  • Lätt att använda – syntaxen liknar Java, Apex-metoder är väl dokumenterade och det finns en mycket stark gemenskap runt dem.
  • Rigorös – Apex är starkt skrivet och sammanställt. Det misslyckas snabbt vid kompileringen om några referenser är ogiltiga. Den lagrar alla anpassade fält-, objekt- och klassberoenden i metadata för att säkerställa att de inte raderas medan det krävs av aktiv Apex-kod. Så – ingen kommer att radera en kolumn i databasen om man använder den!
  • Transaktionellt – Alla DML-operationer i en transaktion slutfördes antingen framgångsrikt eller, om ett fel inträffar i en operation, rullas hela transaktionen tillbaka och ingen data förbinds till databasen – automatiskt!
  • Förpackningsbar  – man kan packa en kod och sälja den på AppExchange! Eller så kan man ta bara några färdiga komponenter och återanvända dem i sin egen instans.

Om jag verkligen måste, var kan jag använda det?

Med ett ord – hela backend! Och vad är backend för Salesforce?

Anonyma blok:

Man kan använda anonyma block som är kompilerade och utförda i farten och inte lagrade någonstans.

Vill man göra en snabb datakorrigering? Inga problem! Vill man skicka några email? Varsågod!

Utlösare (triggers):

Ja, det är samma språk! Med Apex-utlösare kan du utföra anpassade åtgärder före eller efter ändringar i Salesforce-poster, till exempel insättningar, uppdateringar eller raderingar.

Kontroller i MVC-mönster:

Ja, igen. Samma språk. Apex.

REST Web Services och SOAP Web Services:

Varför inte? Exponera de data man vill ha, på de regler man vill ha med OAuth2.0 eller helt anpassad autentisering. I några rader kod! Här fick vi en ”Konto” slutpunkt där man skickar Id via URI och får lite extra information om det.

Email behandling:

Man kan exponera en email i Salesforce och anpassa den. Till exempel: Om man får ett email och det finns ingen kontakt kopplad till det mailet kan man skapa en.

Händelsedriven utveckling:

Ja! Ja! Ja! Man har en evenemangsbuss på företagsnivå som man kan använda i sin kod! Har någon sagt ”Kafka”?

Kubernetes-baserad serverfri miljö

Salesforce Evergreen tar in serverlösa funktioner baserade på fullt hanterade Kubernetes, stöd för öppna programmeringsspråk och vanliga högpresterande datalagrar. Evergreen stöder tekniker och arkitektoniska mönster som:

  • Funktioner-som-en-Tjänst (Node.js, Java, and Apex)
  • Mikrotjänster
  • Hantering av datalager  (Postgres, Apache Kafka, och Redis)

Ja, alla de fina, glänsande funktioner på den fula Salesforce-plattformen! Kanske inte så illa till slut?

Jag hörde att utvecklare hatar det!

Apex upprätthåller bra programmeringsmetoder med två kärnfunktioner:

  • testdriven distribution
  • ledande gränser

Så om du inte gillar att testa och skriva kod kommer du inte att tycka om det, tyvärr.

Testning!

Det är enkelt att testa. Apex fick inbyggt stöd för skapande och utförande av enhetstest så att man vet exakt vilken linje som täcks och vilken behöver lite extra uppmärksamhet. Man kan håna externa tjänster så att REST API och SOAP API-integrationer kan täckas väl.

Dessutom, går det inte att bara trycka koden i produktionen om minst 75% av koden blev inte  enhetstestad. Väldigt irriterande!!!

Ledande gränser!

Vill man skriva databasfrågor för loop? Ja, då kommer man bli straffad!

Vill man kolla inom hela databastabellen om man bara behöver 2 fält i 4 poster av 10 miljoner posttabeller med 500 kolumner? Ja, då kommer man bli straffad!

Vill man använda O (n ^ 4) algoritmer? Ja, då blir man bli straffad!

Men å andra sidan så kan man helt enkelt börja skriva bra kod! Eftersom Apex körs i en multitenant-miljö tvingar Apex-körningsmotorn med sina strikta gränser så att runaway Apex-kod eller processer inte monopoliserar delade resurser. Om någon Apex-kod överskrider gränsen utfärdar tillhörande ledande begränsningar ett runtime-undantag som inte kan hanteras.

Finns det några arbetstillfällen för hela Apex?

Tja, jag känner en hel del människor som har programmerat i Java och gick in i Salesforce-världen. Jag känner däremot ingen som lämnade Salesforce till Java. Hmm…

Pengar? Intressant jobb? Olika uppdrag? Olika applikationer? Ingen aning om vad orsaken är!

Vanligtvis säger vi att vi har någon som heter Salesforce Developer. En sådan person arbetar främst med backend – dvs Apex. Men de flesta utvecklarna är mer som ”ninjor” – vi har mycket frontend i Salesforce i form av Lightning Web Components (modern Web Component framework), Lightning Components (lite äldre, Aura rambaserad) eller Visualforce Sidor (MVC-mönster). När man arbetar med Salesforce utökar man sin kunskap inte bara om Apex (ett starkt objektorienterat programmeringsspråk för backend) utan också om JavaScript, HTML5, CSS3 och modern webbteknik.

Mer än 150 000 företag, i alla branscher, använder Salesforce. Hört om Adidas, AWS, T-Mobile, Philips, Toyota, ABB, Spotify, EA, Activision, GE, KLM, Nielsen, PWC, Pandora, Shazam, Unilever – alla är ganska nischföretag, eller hur?

Var kan jag lära mig all detta utan att betala mycket pengar?

Salesforce har en utvecklarversion som är gratis att använda!

Det finns också en Trailhead-plattform där man kan lära sig från nybörjarenivå till arkitektnivån gratis! Denna inlärningsplattform baserar på verkliga ämnen och är delad i lätt smältbara 15-20 min etapper.

Man kan alltid googla efter det – där ute finns det många högkvalitativa material tillgängliga till hands!

Så – är du redo att börja använda Trailhead-platform? 

Välkommen till Salesforce-världen!

Vill du lära dig mer om Apex eller vara Salesforce-utvecklare på Cloudity? Kontakta oss!

Om du vill lära känna oss bättre så kan du följa oss på LinkedIn.

Artikel av Jakub Kalke

Lämna en kommentar

LinkedIn
Facebook