Apex is Salesforce's proprietary, strongly-typed, object-oriented programming language that runs on the Lightning Platform. Syntactically it looks like Java — classes, interfaces, generics-style collections, exceptions — but it differs in several important ways:
- Hosted, not compiled to JVM. Apex code runs only inside Salesforce's multi-tenant infrastructure. You cannot run Apex outside Salesforce.
- Governor Limits enforced at runtime — Apex's defining constraint. Every transaction has hard caps on SOQL queries, DML, CPU time, heap size.
- Tightly integrated with the database — SOQL/SOSL queries and DML are first-class language constructs (
List<Account> accs = [SELECT Id FROM Account];). - Built-in transaction context — every Apex execution is one transaction; rollbacks are automatic on uncaught exceptions.
- Versioned per API — every class declares its API version, ensuring backward compatibility across Salesforce releases.
- Test coverage requirement — production deploys require 75% Apex test coverage.
Use Apex when declarative tools (Flow, validation rules) can't express the logic, or when bulk performance demands code over flow.
