Let’s learn Ballerina!

Ballerina is meant to be a quick start for anyone with prior programming experience. Let’s get you going on to happy dancing!

Get started


Download a Ballerina installer and install Ballerina on your machine.

Download Ballerina

Distributions are available for
Linux, OS X, and Windows.

For more information, see Installing Ballerina.


Set up your IDE: Download the VS Code or IntelliJ IDEA plugin from their marketplaces and install it.

For instructions, see VS Code or IntelliJ IDEA.


Take a Quick Tour using your IDE to run a simple hello world service and call a web API.


Learn about all the CLI commands you can use in Ballerina.

For more information, see the CLI Commands.

Learn the language and the libraries

Need to understand a particular feature? Check out an example about it!

Check out the API docs of the “batteries-included” standard library.

The Standard Library

Get an in-depth understanding of the language and its design.

Language Specification

How To’s

Structuring Ballerina Code

How to use Ballerina to fetch, build, create, version, search, and install Ballerina modules with repositories that are local and remote.

Documenting Ballerina Code

How to document your Ballerina programs and modules in order to generate API documentation.

Testing Ballerina Code

How to write testable Ballerina code using its built-in test framework, which provides a set of building blocks to help write tests.

Running and Deploying Ballerina Services

How to configure your runtime services and generate deployment artifacts for various targets including Docker and Kubernetes.

Publishing Modules on Ballerina Central

How to share your local modules with the Ballerina community using Ballerina Central.

Observing Ballerina Services

How to use logging, metrics, and tracing to observe Ballerina services.

Writing Secure Ballerina Code

How to write secure Ballerina services, while demonstrating different security features and controls available within Ballerina.

Ballerina Style Guide

How to maintain a standard coding style among the Ballerina community.

Extending Ballerina

How to add additional compile-time behavior using compiler extensions and annotations.

Generating Ballerina Code for Protocol Buffer Definitions

How to generate Ballerina connector and service code for your existing Protocol Buffer definition.

Developing Ballerina Services Using an OpenAPI Documentation

How to develop a restful API in Ballerina which is documented in an OpenAPI contract.

Keeping Ballerina Up to Date

How to keep your Ballerina installation up to date with the latest patch and minor releases.