---
schema_version: "1"
id: 5303d61dba56341292890db5bce44bb0829fcaa7d8d8cffc0245b30964ea37a9
title: Learning Apex
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/apexcode/apex_intro_learning_apex.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_intro_learning_apex.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 8c6fc7607bb08110254862eefca8875976b5c213e052c28a0bbf766b04894dde
description: After you have your developer account, there are many resources available to you for learning about Apex
---
# Learning Apex

After you have your developer account, there are many resources available to you for learning about Apex

## Apex Trailhead Content

Beginning and intermediate programmers

Several Trailhead modules provide tutorials on learning Apex. Use these modules to learn the fundamentals of Apex and how you can use it on the Salesforce Platform. Use Apex to add custom business logic through triggers, unit tests, asynchronous Apex, REST Web services, and Lightning components.

- [Quick Start: Apex](https://trailhead.salesforce.com/projects/quickstart-apex "HTML (New Window)")
- [Apex Basics & Database](https://trailhead.salesforce.com/modules/apex_database "HTML (New Window)")
- [Apex Triggers](https://trailhead.salesforce.com/modules/apex_triggers "HTML (New Window)")
- [Apex Integration Services](https://trailhead.salesforce.com/modules/apex_integration_services "HTML (New Window)")
- [Apex Testing](https://trailhead.salesforce.com/modules/apex_testing "HTML (New Window)")
- [Asynchronous Apex](https://trailhead.salesforce.com/modules/asynchronous_apex "HTML (New Window)")

## Salesforce Developers Apex Developer Center

Beginning and advanced programmers

The [Apex Developer Center](https://developer.salesforce.com/developer-centers/apex "HTML (New Window)") has links to several resources including articles about the Apex programming language. These resources provide a quick introduction to Apex and include best practices for Apex development.

## Code Samples and SDKs

Beginning and advanced programmers

Open-source code samples and SDKs, reference code, and best practices can be found at [Code samples and SDKs](https://developer.salesforce.com/code-samples-and-sdks "HTML (New Window)"). A library of concise, meaningful examples of Apex code for common use cases, following best practices, can be found at [Apex-recipes](https://github.com/trailheadapps/apex-recipes).

## Training Courses

Training classes are also available from [Salesforce Trailhead Academy](https://trailheadacademy.salesforce.com/overview). Grow and validate your skills with [Salesforce Credentials](https://trailhead.salesforce.com/en/credentials/administratoroverview/).

## In This Guide (Apex Developer Guide)

Beginning programmers can look at the following:

- [Introducing Apex](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_intro.htm "Apex code is the first multitenant, on-demand programming language for developers interested in building the next generation of business applications. Apex revolutionizes the way developers create on-demand applications."), and in particular:
    - [Core Concepts](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_core_concepts.htm "Apex code typically contains many things that you're familiar with from other programming languages.")
    - [Quick Start Tutorial](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_HelloWorld.htm "This step-by-step tutorial shows how to create a simple Apex class and trigger, and how to deploy these components to a production organization.")
- [Classes, Objects, and Interfaces](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes.htm "Apex classes are modeled on their counterparts in Java. You’ll define, instantiate, and extend classes, and you’ll work with interfaces, Apex class versions, properties, and other related class concepts.")
- [Testing Apex](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_testing.htm "Apex provides a testing framework that allows you to write unit tests, run your tests, check test results, and have code coverage results.")
- [Execution Governors and Limits](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm "Because Apex runs in a multitenant environment, the Apex runtime engine strictly enforces limits so that runaway Apex code or processes don’t monopolize shared resources. If some Apex code exceeds a limit, the associated governor issues a runtime exception that can’t be handled.")

In addition, advanced programmers can look at:

- [Trigger and Bulk Request Best Practices](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_triggers_bestpract.htm#apex_triggers_bestpract)
- [Advanced Apex Programming Example](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_shopping_cart_example.htm)
- [Understanding Apex Describe Information](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dynamic_describe_objects_understanding.htm)
- [Asynchronous Execution (@future Annotation)](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_future.htm "Use the Future annotation to identify methods that run asynchronously. A future method runs when Salesforce has available resources.")
- [Batch Apex](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_batch.htm#apex_batch) and [Apex Scheduler](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_scheduler.htm "Use the Apex Scheduler to delay execution so that you can run Apex classes at a specified time. This is ideal for daily or weekly maintenance tasks using Batch Apex.")