Ballerina, the open-source project from WSO2, has released Ballerina 1.0, which provides cloud-native middleware as a programming language. Ballerina was designed and developed to address what WSO2 saw as major shortcomings in how middleware was evolving to take part in a cloud-native world. Its aim is to simplify how developers will build and deploy cloud-native distributed applications and services.
Ballerina claims to be the first language based on the concept that modern application programming involves creating and consuming APIs. As such it has been architected to serve as the core of a language-centric platform for network distributed applications and microservices. Ballerina aims to make the development of RESTful and gRPC APIs easier than with other languages because it has made services, endpoints, network protocols such as JSON and ProtoBuf, and simple annotations first-class parts of the language. It also works directly with Istio Service Mesh as well as Docker and Kubernetes to create cloud native apps.
Several aspects of the language that make it suitable for developing and consuming APIs include:
- Language constructs specifically for consuming and providing network services.
- Abstractions and syntax for concurrency and network interaction that closely correspond with sequence diagrams—enabling a bidirectional mapping for any Ballerina source code between its textual representation and its graphical representation as a sequence diagram.
- A flexible structural type system that allows for looser coupling than traditional statically typed languages—particularly useful when combining data from multiple, independently-designed systems.
The Ballerina language has been designed in conjunction with the Ballerina platform, which provides support for modern software engineering processes and tool chains. The Ballerina platform includes:
- A framework for package/module management, including dependency and version management
- Ballerina Central, a public web service for sharing modules amongst developers
- IDE tool plugins for Visual Studio Code and IntelliJ Idea supporting both textual and graphical development and debugging of Ballerina programs
- A framework for documentation and testing of Ballerina programs
- Built-in tooling for OpenAPI (Swagger) and Protocol Buffers v3/gRPC
- A comprehensive standard library with support for many network protocols, data sources and data formats to ease adoption of the language
Ballerina 1.0 is generally available today as a fully open-source implementation released under the Apache License 2.0. It can be freely downloaded here and all parts of the project are developed at https://github.com/ballerina-platform. Developers can find additional support through Ballerina’s Slack Channel, Google Group, or Github. Additionally, resources such as the Quick Tour and Ballerina by Examples can be found here.