Ballerina reinvents cloud native middleware as a programming language
Ballerina 1.0, now generally available, provides 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,” said Ballerina’s Founder and Leader Dr. Sanjiva Weerawarana.
“The Ballerina programming language is facilitating a major evolutionary leap in the development of cloud native distributed applications that is tearing down the outdated barriers between app development and integration to enable greater agility, performance and resiliency. And it’s accelerating the ESBS path to extinction in the process,” Weerawarana added.
Ballerina for modern, cloud native programming
Ballerina is the first language based on the concept that modern application programming involves creating and consuming APIS. Modelled on the notion of sequence diagrams, Ballerina programmes 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 generalpurpose functionality expected of a modern programming language, but also introduces several unusual aspects that make it particularly suitable for programming and consuming APIS. These 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 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 centralised 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 language has been designed in conjunction with the Ballerina platform, which provides comprehensive 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 plug-ins for Visual Studio Code and Intellij Idea supporting both textual and graphical development and debugging of Ballerina programmes.
A framework for documentation and testing of Ballerina programmes.
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.
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.
Ballerina is a 100 percent open source project, and all parts of the project are developed openly at https://github.com/ ballerina-platform.
Early Users Cite Ballerina Advantages
“We were attracted by Ballerina’s cloud native features, such as automatic generation of Docker, Kubernetes and Helm artifacts, as well as its small footprint and faster boot times. It’s 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 Motorola Integration Architect and Senior Manager Sri Harsha Pulleti.
“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.
“With Ballerina, you can get sequence diagrams automatically. When things start to get complicated and you need to understand and socialise with the rest of your team what it is that you’re building, these diagrams become very helpful,” stated solo.io Field CTO Christian Posta.
Availability and Support
Ballerina 1.0 is available today. As a fully open source implementation released under the Apache License 2.0, it does not carry any licensing fees and can be freely downloaded here. Users can find support through it’s growing open source community on Ballerina’s Slack Channel, Google Group, or Github.
For organisations seeking to go beyond community support, commercial support is available from WSO2, the creator and lead sponsor of the Ballerina project. Provided under the WSO2 Platform license, this subscription includes security updates, performance enhancements, bug fixes, and 24/7 enterprise support. WSO2 also offers consulting services around Ballerina - including agility assessments, micro-service transformation planning, training, development and deployment - as well as cloud hosting services.
Sponsored and Developed by WSO2
WSO2 invested in the creation of Ballerina to address significant shortcomings that it saw in how middleware was evolving to play in the cloud native world. WSO2’S founder, Dr. Sanjiva Weerawarana, created the project in August 2016 and led its technical design in collaboration with James Clark, bringing in their decades of software development and enterprise integration experience.
“Few technologies have the potential to reshape an entire market. We believe Ballerina is one of those technologies and that WSO2 will fundamentally disrupt the integration market using Ballerina as the basis of its future,” said Vinny Smith, Executive Chairman of the WSO2 board and Founder of Toba Capital, WSO2’S majority stockholder.
“Based on this vision, we have invested more than 150 person years of effort in bringing the first production release to market. And, knowing that it takes time to get a language established, we are making a long-term commitment to advancing both Ballerina technology innovations and building the community around this ground-breaking software,” Smith said.