Ballerina (programming language): Difference between revisions

Content deleted Content added
m General fixes and manual cleanup, typo(s) fixed: Github → GitHub
Line 5:
| logo_alt = Ballerina Language
| released = 2017
| designer = [[Sanjiva Weerawarana]], [[James_Clark_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]]
| typing = [[structural typing|Structural]], [[strong typing|strong]], [[static typing|static]], [[type inference|inferred]]
| influenced_by = [[Java (programming language)|Java]], [[Javascript (programming language)|Javascript]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]], [[C_Sharp_C Sharp (programming_languageprogramming 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>]]
| programming language =Java, Ballerina, TypeScript <ref name="sourcecode" />
| platform =
Line 24:
It is an [[Open-source model|open source]] project <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> started in 2015 by architects from [[WSO2]] as a code-based alternative to the configuration-based integration tools such as [[Enterprise application integration|EAI]], [[Enterprise service bus|ESB]], and workflow products.<ref>{{Cite web|url=https://www.infoq.com/articles/ballerina-microservices-language-part-1|title=Ballerina Microservices Programming Language: Introducing the Latest Release and "Ballerina Central"|website=InfoQ|access-date=2018-06-07}}</ref><ref>{{Cite news|url=https://searchmicroservices.techtarget.com/tip/How-does-Ballerina-stack-up-as-a-cloud-native-programming-language|title=How does Ballerina stack up as a cloud-native programming language?|first=Alan|last=Earls|date=2019-03-01|access-date=2019-07-23}}</ref>
 
It has various constructs geared toward cloud-native development including support for modern data formats and protocols, reliability, distributed transactions, [[Application programming interface|APIs]], and event streams.<ref>{{Cite news|url=https://searchapparchitecture.techtarget.com/tip/10-of-the-best-programming-languages-to-learn-in-2020|title=10 of the best programming languages to learn in 2020|last=Doyle|first=Kerry|access-date=2020-09-16|language=en-GB}}</ref><ref>{{cite web|url=https://www.youtube.com/watch?v=rRrJKM0BAAo|title=Evolution of Integration and Microservices with Service Mesh and Ballerina|last=Posta|first=Christian|access-date=2019-07-24|language=en-GB}}</ref><ref>{{Cite news|url=https://www.techworld.com/picture-gallery/careers/up-coming-programming-languages-for-developers-get-grips-with-3621455/|title=Top programming languages you should try|lastauthor=Techworld staff|first=Techworld|work=Techworld|access-date=2018-06-07|language=en-GB}}</ref>
 
== History ==
 
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 ==
Line 34:
Some key concepts in Ballerina include:
 
* The network in the language - Ballerina introduces fundamental, new abstractions of client objects, services, resource functions, and listeners to bring networking into the language. <ref>{{Cite news|url=https://hackernoon.com/rethinking-programming-the-network-in-the-language-kn3z3y55|title=Rethinking Programming: The Network in the Language|last=Warusawithana|first=Lakmal|access-date=2020-09-16|language=en-GB}}</ref>
* [[Sequence diagram|Sequence diagrams]]s for programming - In Ballerina, every program has a corresponding sequence diagram that illustrates distributed and concurrent interactions automatically. <ref>{{Cite news|url=https://hackernoon.com/rethinking-programming-making-sequence-diagrams-cool-again-6z1p3yv9|title=Rethinking Programming: Making Sequence Diagrams Cool Again|last=Fernando|first=Anjana|access-date=2020-09-16|language=en-GB}}</ref>
* Structural, open-by-default typing - Ballerina has a statically-typed, structural type system that is designed to be network data schema friendly. <ref>{{Cite news|url=https://hackernoon.com/rethinking-programming-network-aware-type-system-8o7x3yh6|title=Rethinking Programming: Network Aware Type System|last=Fernando|first=Anjana|access-date=2020-09-16|language=en-GB}}</ref>
* Moving from code to cloud - Ballerina brings the entire program execution process to the hands of the developer with extensible metadata that gets compiled to runnable programs for all major cloud platforms. <ref>{{Cite news|url=https://hackernoon.com/rethinking-programming-from-code-to-cloud-fy273yer|title=Rethinking Programming: From Code to Cloud|last=Warusawithana|first=Lakmal|access-date=2020-09-16|language=en-GB}}</ref>
* Automated observability - Ballerina incorporates automatic observability features into the language itself that helps keep track of metrics, logs and tracing. <ref>{{Cite news|url=https://hackernoon.com/rethinking-programming-automated-observability-dn14p3yxb|title=Rethinking Programming: Automated Observability|last=Fernando|first=Anjana|access-date=2020-09-16|language=en-GB}}</ref>
 
== Examples ==
Line 164:
 
== Further reading ==
* Fernando, Anjana, Warusawithana, Lakmal (2020) ''[https://www.apress.com/gp/book/9781484251386 Beginning Ballerina Programming]'', [[Springer_NatureSpringer Nature|Apress (part of Springer Nature)]]
 
== External links ==
 
* https://ballerina.io
* https://github.com/ballerina-platform/ballerina-lang GithubGitHub repository.
{{Programming languages}}