Content deleted Content added
m Grammar |
|||
(36 intermediate revisions by 27 users not shown) | |||
Line 1:
{{Short description|Programming language}}
{{Infobox programming language
| name = Ballerina
| logo =
| designer = [[Sanjiva Weerawarana]], [[James Clark (programmer)|James Clark]], Sameera Jayasoma, Hasitha Aravinda, Srinath Perera, [[Frank Leymann]] and [[WSO2]]<ref>{{cite web |url=https://ballerina.io/spec/lang/master/ |publisher=WSO2 |title=Ballerina Language Specification |access-date=2020-04-24 |archive-date=2020-08-11 |archive-url=https://web.archive.org/web/20200811095205/https://ballerina.io/spec/lang/master/ |url-status=dead}}</ref>▼
▲| logo_alt = Ballerina Language
▲| designer = [[Sanjiva Weerawarana]], [[James Clark (programmer)|James Clark]], Sameera Jayasoma, Hasitha Aravinda, Srinath Perera, [[Frank Leymann]] and [[WSO2]]<ref>{{cite web|url=https://ballerina.io/spec/ |publisher=WSO2 |title=Ballerina Language Specification}}</ref>
| developer = [[WSO2]]
| released = {{Start date and age|2019|09|10}}
| typing = [[structural typing|Structural]], [[strong typing|strong]], [[static typing|static]], [[type inference|inferred]]▼
| latest release version = 2201.12.3 (Swan Lake Update 12)
| influenced_by = [[Java (programming language)|Java]], [[Javascript (programming language)|Javascript]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]], [[C Sharp (programming language)|C#<ref>{{cite journal |title=Ballerina, A modern programming language focused on integration |pages=15 |url=https://opensource.ellak.gr/wp-content/uploads/sites/5/2018/06/2018-06-Ballerina-GFOSS.pdf}}</ref>]]▼
| latest release date = {{Start date and age|2025|04|10}}
| programming language =Java, Ballerina, TypeScript <ref name="sourcecode" />▼
▲| typing = [[
| platform = ▼
▲|
▲| programming language = [[Java (programming language)|Java]], Ballerina, [[TypeScript
| license = [[Apache License]] 2.0<ref name="license">{{cite web▼
▲| platform = [[x86-64]]
| url = https://github.com/ballerina-platform/ballerina-lang/blob/master/LICENSE▼
| operating system = [[Cross-platform software|Cross-platform]]: [[Microsoft Windows|Windows]], [[Linux]], [[macOS]]
| title = WSO2 / LICENSE▼
▲| license = [[Apache License|Apache]] 2.0<ref name="license">{{cite web
| date = 2017-03-08 | access-date = 2018-03-01▼
| website = github.com | publisher = [[WSO2]]▼
}}</ref>
| website = {{URL|
}}
'''Ballerina''' is a general-purpose [[programming language]] designed by [[WSO2]] for cloud-era application [[programmers]].<ref name="sourcecode">{{cite web |url=https://github.com/ballerina-platform/ballerina-lang |title=Ballerina source code |author=((Open Source Contributors)) |date=18 June 2019 |publisher=[[GitHub]]}}</ref> It is [[free and open-source software]] released under [[Apache License]] 2.
'''Ballerina''' is an [[Open-source model|open source]] general-purpose [[programming language]] and platform designed by [[WSO2]] for cloud-era application [[programmers]]. It is easy to write and modify and is suitable for application [[programmer]]s.<ref>{{Cite news|url=https://thenewstack.io/ballerina-an-api-first-programming-language/|title=Ballerina: An API-First Programming Language|last=Jackson|first=Joab|work=The New Stack|access-date=2018-06-11|language=en-US}}</ref><ref>{{Cite news|url=https://www.zdnet.com/article/ballerina-a-language-of-integration-of-technology-and-the-arts/|title=Technology and the Arts: Celebrating Ballerina, a computer language of integration|first=Tom|last=Foremski|date=2019-03-01|access-date=2019-07-14}}</ref><ref>{{Cite news|url=https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Ballerina-language-promises-to-improve-app-integration|title=Ballerina language promises to improve app integration|first=George|last=Lawton|date=2018-11-01|access-date=2019-07-23}}</ref>▼
It has various constructs geared toward cloud-native development including support for
== History ==
Ballerina was first publicly announced in 2017 and version 1.0 was released on September 10, 2019.<ref>{{Cite press release|url=https://www.globenewswire.com/news-release/2019/09/10/1913510/0/en/Ballerina-Reinvents-Cloud-Native-Middleware-as-a-Programming-Language-Puts-ESB-on-the-Path-to-Extinction.html|title=Ballerina Reinvents Cloud-Native Middleware as a Programming Language|website=GlobeNewswire|date=10 September 2019 |access-date=2020-09-16}}</ref>
Ballerina was designed by WSO2 to improve productivity for application developers that have to work with [[Distributed computing|distributed cloud-native systems]]. The designers, who provided enterprise products in the [[Enterprise integration|integration]] space for over 10 years, used their knowledge of the industry when designing the language.<ref>{{Cite news|url=https://blog.jclark.com/2019/09/ballerina-programming-language-part-0.html|title=Ballerina Programming Language Part 0 - Context|last=Clark|first=James|access-date=2020-09-16|language=en-GB}}</ref><ref>{{Cite news|url=https://blog.jclark.com/2019/09/ballerina-programming-language-part-1.html|title=Ballerina Programming Language Part 1 - Concepts|last=Clark|first=James|access-date=2020-09-16|language=en-GB}}</ref> Ballerina was first publicly announced in 2017 and version 1.0 was released on September 10, 2019.<ref>{{Cite web|url=https://www.globenewswire.com/news-release/2019/09/10/1913510/0/en/Ballerina-Reinvents-Cloud-Native-Middleware-as-a-Programming-Language-Puts-ESB-on-the-Path-to-Extinction.html|title=Ballerina Reinvents Cloud-Native Middleware as a Programming Language|website=GlobeNewswire|access-date=2020-09-16}}</ref>▼
== Design ==
▲
▲
== Examples ==
Line 44 ⟶ 40:
=== Hello World ===
The regular Hello World program:
<syntaxhighlight lang="typescript">
import ballerina/io;
Line 60 ⟶ 56:
The service version of the Hello World program:
<syntaxhighlight lang="typescript">
import ballerina/http;
Line 77 ⟶ 73:
</syntaxhighlight>
<ref name="example1">{{cite web |url=https://ballerina.io/learn/by-example/hello-world-service.html |title=
=== REST API ===
<syntaxhighlight lang="d">
import ballerina/http;
Line 112 ⟶ 108:
=== GraphQL API ===
<syntaxhighlight lang="typescript">
import ballerina/graphql;
Line 143 ⟶ 139:
</syntaxhighlight>
===
The generated [[sequence diagram]] is a canonical representation of the source code. The two representations can be used interchangeably. The diagram support is provided through the Ballerina VS Code plugin. The following are a couple of such generated sequence diagrams, compared with its associated code.
The language provides support for working with JSON values. The builtin type `json` is defined as the following union: ()|boolean|int|float|decimal|string|json[]|map<json>▼
A sample program for retrieving and processing COVID-19 data:
<syntaxhighlight>▼
[[File:Working-with-data-code+diagram.png]]
A sample program for creating a report out of pull request data retrieved from GitHub:
[[File:Consuming-services-code+diagram.png]]
=== JSON support ===
▲The language provides support for working with JSON values. The builtin type `json` is defined as the following union: <code>()|boolean|int|float|decimal|string|json[]|map<json></code>
<syntaxhighlight lang="typescript">
import ballerina/io;
Line 160 ⟶ 167:
int age = check person.age;
}
▲</syntaxhighlight>
=== Code to cloud ===
Docker and Kubernetes artifacts required for deploying the code to the cloud can be generated when building the code. Values required for these artifacts are derived from the code. Additionally, one can override these values as well using the <code>Cloud.toml</code> file. To enable generation of the cloud artifacts, the users can use the <code>cloud</code> build option in the <code>Ballerina.toml</code> file. Use <code>docker</code> to generate just the Docker image and the Dockerfile and use <code>k8s</code> to generate Kubernetes artifacts as well. Minimal sample config [[TOML]] files would look something like the following:
<code>Ballerina.toml</code> file:
<syntaxhighlight lang="toml">
[package]
distribution = "2201.0.0"
[build-options]
cloud="k8s"
</syntaxhighlight>
<code>Cloud.toml</code> file:
<syntaxhighlight lang="toml">
[container.image]
repository="bal_user"
name="greet"
tag="v0.1.0"
</syntaxhighlight>
=== Workers ===
<syntaxhighlight lang="d">
import ballerina/http;
import ballerina/lang.'int;
Line 227 ⟶ 254:
== External links ==
* {{Official website|ballerina.io}}
* {{GitHub|ballerina-platform}}
{{Programming languages}}
Line 241 ⟶ 268:
[[Category:Free software projects]]
[[Category:Cross-platform free software]]
<!-- Hidden categories below -->
[[Category:Articles with example code]]
|