Available in: Salesforce Classic and Lightning Experience
|
Available in: Enterprise, Performance, Unlimited, Developer, and Database.com Editions
|
To define, edit, delete, set security, set version settings, show
dependencies, and run tests for Apex
classes: |
“Author Apex” |
To define, edit, delete, set version settings, and show
dependencies for Apex triggers: |
“Author Apex” |
Apex is a
strongly typed, object-oriented programming language that allows developers to execute
flow and transaction control statements on the Force.com platform server in
conjunction with calls to the Force.com API. Using
syntax that looks like Java and acts like database stored procedures, Apex enables developers to add
business logic to most system events, including button clicks, related record updates,
and Visualforce pages. Apex code can be initiated by Web
service requests and from triggers on objects.
You can add Apex to most system
events.
As a language, Apex is:
- Integrated
-
Apex provides built-in
support for common Force.com
platform idioms, including:
- Data manipulation language (DML) calls, such as INSERT, UPDATE, and DELETE, that include built-in DmlException handling
- Inline Salesforce Object
Query Language (SOQL) and Salesforce Object Search Language
(SOSL) queries that return lists of sObject records
- Looping that allows for bulk processing of multiple records at a time
- Locking syntax that prevents record update conflicts
- Custom public Force.com
API calls that can be
built from stored Apex methods
- Warnings and errors issued when a user tries to edit or delete a custom object or
field that is referenced by Apex
- Easy to use
-
Apex is based on
familiar Java idioms, such as variable and expression syntax, block and conditional
statement syntax, loop syntax, object and array notation, and so on. Where Apex introduces new
elements, it uses syntax and semantics that are easy to understand and encourage efficient
use of the Force.com platform.
Consequently, Apex
produces code that is both succinct and easy to write.
- Data focused
-
Apex is designed to
thread together multiple query and DML statements into a single unit of work on the Force.com platform server, much
as developers use database stored procedures to thread together multiple transaction
statements on a database server. Note that like other database stored procedures, Apex does not attempt to
provide general support for rendering elements in the user interface.
- Rigorous
-
Apex is a
strongly-typed language that uses direct references to schema objects such as object and
field names. It fails quickly at compile time if any references are invalid, and stores
all custom field, object, and class dependencies in metadata to ensure they are not
deleted while required by active Apex code.
- Hosted
-
Apex is interpreted,
executed, and controlled entirely by the Force.com platform.
- Multitenant aware
- Like the rest of the Force.com platform, Apex runs in
a multitenant environment. Consequently, the Apex runtime engine is
designed to guard closely against runaway code, preventing it from monopolizing shared
resources. Any code that violates limits fails with easy-to-understand error
messages.
- Automatically upgradeable
-
Apex never needs to be
rewritten when other parts of the Force.com platform are upgraded.
Because compiled code is stored as metadata in the platform, Apex is upgraded as part of
Salesforce releases.
- Easy to test
-
Apex provides built-in
support for unit test creation and execution, including test results that indicate how
much code is covered, and which parts of your code could be more efficient. Salesforce ensures that all custom
Apex code works as
expected by executing all unit tests prior to any platform upgrades.
- Versioned
- You can save your Apex
code against different versions of the Force.com
API. This enables you to
maintain behavior.
Apex is included in Performance Edition, Unlimited
Edition, Developer Edition, Enterprise Edition, and Database.com.