Ballerina cloud native programming language launches
|Richard Harris in Open Source Friday, September 13, 2019|
The Ballerina open source project team has launched the 1.0 release of the Ballerina programming language for network distributed applications, which enables developers to build integrations directly into their apps and microservices.
The growth of digital services, mobile apps, and connected devices are creating an explosion of endpoints, from APIs to events, data streams, microservices, serverless apps, and other digital assets. Developers today need a more modern and agile approach to connect to these endpoints than a traditional centralized enterprise service bus (ESB) can offer. Ballerina 1.0, now generally available, delivers on this by providing cloud native middleware as a programming language for the first time. As a result, the new language from Ballerina, the open-source project created and sponsored by WSO2, radically simplifies how developers will build and deploy cloud-native distributed applications and services.
"Modern applications are effectively integrations of services, data, transactions, and processes from a vast array of resources to deliver innovative, new services. But ESBs and other traditional integration approaches have failed to keep pace. The Ballerina programming language is facilitating a major evolutionary leap in the development of cloud-native distributed applications that are tearing down the outdated barriers between app development and integration to enable greater agility, performance, and resiliency. And it's accelerating the ESB's path to extinction in the process." said Dr. Sanjiva Weerawarana, founder and leader of the Ballerina Project.
Ballerina 1.0, which is available under the Apache License, is being announced in conjunction with ApacheCon North America 2019. Ballerina, an ApacheCon Gold Sponsor, will offer technical sessions and demos of the new Ballerina release at the event. WSO2 CTO Paul Fremantle will also hold a session on Tuesday, September 10 at 2:30 p.m., "Ballerina - Re-inventing Middleware in a Programming Language." ApacheCon North America 2019 is being held September 9-12, 2019 at the Flamingo in Las Vegas, Nevada.
Ballerina programming language for Modern, Cloud Native Programming
Ballerina is the first language based on the concept that modern application programming involves creating and consuming APIs. Modeled on the notion of sequence diagrams, Ballerina programs are self-documenting and fit cleanly into the patterns of microservices and cloud-native development. Creating RESTful and gRPC APIs is concise, simple and clear. Early users report that developing APIs in Ballerina is more effective than other languages because the syntax is designed around services; endpoints; network types, such as JSON and ProtoBuf; and simple annotations automatically create deployments for Kubernetes, Docker, and Istio.
The Ballerina language has been architected to serve as the core of a language-centric platform for cloud-native applications and microservices. It has all the general-purpose functionality expected of a modern programming language but also introduces several unusual aspects that make it particularly suitable for programming and consuming APIs.
- 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 structural type system that is more flexible and allows for looser coupling than traditional statically typed languages—particularly useful when combining data from multiple, independently-designed systems
Tackling the Cloud Native Shortcomings of ESBs
Existing ESBs have significant shortcomings in meeting the needs of modern app development and integration, including promoting the bottleneck of centralized development, poor fit with agile development, and underpowered configuration languages that result in a poor reputation with developers. Unlike ESBs and business process workflow tools, Ballerina is designed to fit into a modern development lifecycle—working properly with continuous integration and continuous delivery (CI/CD) tools, such as Jenkins, Travis and Codefresh; observability tools, such as Prometheus, Zipkin, and Honeycomb; and cloud orchestration systems like Kubernetes. And unlike an ESB configuration language, Ballerina is a full programming language, so developers don't run out of headroom when solving complex problems.
The Ballerina cloud native language has been designed in conjunction with the Ballerina platform, which provides comprehensive support for modern software engineering processes and toolchains. 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 the adoption of the language
Version 1.0 of Ballerina adds several new features over earlier pre-production releases, including:
- Support for a stable language specification: 2019R3
- A new Ballerina compiler that targets the Java Virtual Machine (JVM)
- Java interoperability, which allows users to call Java code from Ballerina
- A major redesign of Ballerina developer tools
Ballerina 1.0 also includes experimental features that add constructs for other middleware functionality, such as event stream processing and distributed transactions. Workflow and reliable messaging capabilities are also in the pipeline.
Early Users Cite Ballerina Advantages
"We were attracted by Ballerina's cloud-native features, such as the automatic generation of Docker, Kubernetes and Helm artifacts, as well as its small footprint and faster boot times. It also capable of running as Lambda function (serverless) in AWS. Together, these capabilities have enabled us to easily run microservices in containers at scale and integrate with CI/CD tools with less effort," stated Sri Harsha Pulleti, integration architect and senior manager, Motorola.
"Ballerina will enable fast, quality, 12-factor ready deployments out of the box. The strong annotation set is a great 'batteries included' approach that will have Devs and Ops collaborating from the start of development," said Jim Kittle, an application architect at a leading university in the United States. Read about the implementation here.
"[With Ballerina] you can get sequence diagrams automatically. When things start to get complicated and you need to understand and socialize with the rest of your team what it is that you're building, these diagrams become very helpful," stated Christian Posta, field CTO, solo.io.
Read more: https://ballerina.io