SlideShare a Scribd company logo
Cloud-Native Middleware as a Programming Language
Anupama Pathirage
June 2022
Source : https://snarky.ca/the-key-challenges-in-designing-a-programming-language/
Source : IBM cloud native development report
In this session
Why we need a new programming language?
What is Ballerina?
Key features of Ballerina
Demo - Develop a REST service using Ballerina
Open source contributions to Ballerina
Application development process
● Write code to integrate many systems
● Test and document the code
● Build and package into Docker
● Write deployment descriptors
● API management and security
● Scaling and performance
● Observe the usages and analytics
● Adjust and redeploy
Why we need a new programming language?
○ Better network abstractions
○ Better support for data representation
○ Network aware type system
○ 1st Class support for a wide spectrum of network protocols
○ Ability to handle concurrency easily
○ Cloud friendliness
○ Visual representations for the full picture
○ Should be a complete platform, not just a language
What is Ballerina?
○ Started in 2016 by WSO2.
○ A general-purpose programming language.
○ Specializes in solving integration & cloud-based problems by providing the
right level of language abstractions and tools.
○ Open-source project and driven by the community.
What is Ballerina?
○ Data-Oriented
○ Language has objects, the development methods are not completely OOP-based.
○ Both objects and functions are first class concepts, giving developers the ability to choose
the best option based on their requirements.
○ Primary focus is on represent, describe, communicate pure data.
○ Compiled
○ Flexibly typed
○ Concurrent
○ Ballerina is NOT a JVM language. It has two implementations.
○ jBallerina - written in java to run on top of JVM. This is the first implementation to prove
the language.
○ nBallerina - Compiled using LLVM, directly to the platform architecture.
Ballerina Provides Network Abstractions
○ Provides abstractions for both network
services and network clients.
○ For clients - Client objects with remote
methods to represent outbound network
messages
○ For services - Service objects
○ A remote method on a service object
represents a network-callable method.
○ A resource method, which enables a
more data-oriented view of services.
○ Incoming network messages are
dispatched to service objects by using
objects implementing the
language-defined Listener type.
Ballerina has Network-Aware Data & Type System
● Ballerina’s type system is specifically focused
on aiding the development of networked and
distributed applications.
● Plain Data
○ Messages exchanged by network
protocols are represented by plain
data
○ This is called anydata in Ballerina
○ Can be directly serialized to and from
JSON in a simple, natural way.
● Ballerina has a structural type system
○ Type compatibility is identified by
considering the structure of the value
rather than just relying on the name of
the type.
Code to Cloud with Ballerina
● Ballerina provides a unique developer
experience to move from code to cloud.
● The Ballerina compiler can be extended to
read the source code and generate artifacts
to deploy your code into different clouds.
● These artifacts can be Dockerfiles, Docker
images, Kubernetes YAML files, or serverless
functions.
● Building the source with
○ bal build --cloud=k8s Generate the
Kubernetes YAML files and Docker image
○ bal build --cloud=docker
Generate the Docker image and Dockerfile
Ballerina is Concurrent, Reliable & Maintainable
● With more and more applications needing to
support network interaction, concurrency
becomes important for handling scale.
○ Asynchronous function calls - calls a function
asynchronously and the function runs on a
separate logical thread
○ Workers - Represents a single strand of a
function invocation.
○ A strand is a logical thread of control assigned
to every worker, which is multitasked
cooperatively instead of preemptively.
● Ballerina runtime has built-in support for
interacting with a transaction manager.
○ language provides syntax for delimiting
transactions.
Ballerina Provides Sequence Diagram
Ballerina is a Platform
Ballerina has:
- "The language" - This is the core and it's the part that's defined in the
language specification.
- "Platform" - The language has been designed in conjunction with key
components of the surrounding ecosystem
The platform includes:
● a standard library
● a centralized module repository, and the tooling needed to support that
● a documentation system (based on Markdown)
● a testing framework
● extensions/plug-ins for popular IDEs (notably Visual Studio Code).
All batteries included
Auth
Cache
Crypto
Log
io
time
Demo
Search for Books and Movie Data
Contributing to Ballerina
Ballerina has:
○ https://ballerina-platform.slack.com/
○ - - https://groups.google.com/g/ballerina-dev
○ https://github.com/ballerina-platform/
Thank You

More Related Content

PDF
[DeveloperWeek Cloud - 2022]Programming language Designed for Cloud Native Ap...
PDF
[Open Source Summit 2019] Microservices with Ballerina
PDF
[WSO2Con EU 2017] Keynote: Ballerina Plans and Futures
PDF
[Java Colombo Meetup] The better java for Java microservices developers
PDF
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
PDF
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
PDF
Ballerina: A Cloud Native Programming Language
PDF
Ballerina- A programming language for the networked world
[DeveloperWeek Cloud - 2022]Programming language Designed for Cloud Native Ap...
[Open Source Summit 2019] Microservices with Ballerina
[WSO2Con EU 2017] Keynote: Ballerina Plans and Futures
[Java Colombo Meetup] The better java for Java microservices developers
[WSO2 Integration Summit San Francisco 2019] Ballerina - Cloud Native Middlew...
Ballerina cloud native middleware as a programming language | Yenlo - WSO2 In...
Ballerina: A Cloud Native Programming Language
Ballerina- A programming language for the networked world

Similar to [Women in Tech Global Conference - 2022]Cloud-Native Middleware as a Programming Language (20)

PDF
Ballerina- A programming language for the networked world
PDF
Ballerina Tutorial @ SummerSOC 2019
PPTX
2018 12-kube con-ballerinacon
PDF
[WSO2Con EU 2017] Introduction to Ballerina
PDF
[WSO2 Integration Summit Bern 2019] Ballerina — Cloud-native Middleware as a ...
PDF
Ballerina: Cloud Native Programming Language
PDF
Ballerina is not Java (or Go or ..)
PPTX
2018 07-ballerina-ballerina con
PDF
[WSO2 Integration Summit New York 2019] Ballerina - Cloud Native Middleware a...
PDF
Ballerina - Cloud Native Programming Language
PDF
[ApacheCon NA 2019] Re-inventing Middleware in a Programming Language
PDF
[WSO2 Integration Summit London 2019] Ballerina — Cloud-native Middleware as ...
PDF
Integration Microservices
PDF
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
PDF
[DevOps Pro Europe 2020] From Code to Cloud
PDF
Ballerina: Cloud Native Programming Language
PPTX
API and Microservices Meetup - To Code or Low Code?
PDF
[WSO2 Summit Sydney 2019] Ballerina - Cloud Native Programming Language
PDF
Ballerina Serverless with Kubeless
PDF
Ballerina Serverless with Kubeless
Ballerina- A programming language for the networked world
Ballerina Tutorial @ SummerSOC 2019
2018 12-kube con-ballerinacon
[WSO2Con EU 2017] Introduction to Ballerina
[WSO2 Integration Summit Bern 2019] Ballerina — Cloud-native Middleware as a ...
Ballerina: Cloud Native Programming Language
Ballerina is not Java (or Go or ..)
2018 07-ballerina-ballerina con
[WSO2 Integration Summit New York 2019] Ballerina - Cloud Native Middleware a...
Ballerina - Cloud Native Programming Language
[ApacheCon NA 2019] Re-inventing Middleware in a Programming Language
[WSO2 Integration Summit London 2019] Ballerina — Cloud-native Middleware as ...
Integration Microservices
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
[DevOps Pro Europe 2020] From Code to Cloud
Ballerina: Cloud Native Programming Language
API and Microservices Meetup - To Code or Low Code?
[WSO2 Summit Sydney 2019] Ballerina - Cloud Native Programming Language
Ballerina Serverless with Kubeless
Ballerina Serverless with Kubeless
Ad

Recently uploaded (20)

PDF
22EC502-MICROCONTROLLER AND INTERFACING-8051 MICROCONTROLLER.pdf
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PPTX
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
PDF
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
PPTX
AUTOMOTIVE ENGINE MANAGEMENT (MECHATRONICS).pptx
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PDF
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
PPTX
Module 8- Technological and Communication Skills.pptx
PPTX
introduction to high performance computing
PPTX
Nature of X-rays, X- Ray Equipment, Fluoroscopy
PDF
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
PPTX
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
PDF
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
PDF
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PPTX
Fundamentals of Mechanical Engineering.pptx
PDF
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
PDF
distributed database system" (DDBS) is often used to refer to both the distri...
PPTX
Safety Seminar civil to be ensured for safe working.
PDF
Abrasive, erosive and cavitation wear.pdf
22EC502-MICROCONTROLLER AND INTERFACING-8051 MICROCONTROLLER.pdf
Fundamentals of safety and accident prevention -final (1).pptx
6ME3A-Unit-II-Sensors and Actuators_Handouts.pptx
Accra-Kumasi Expressway - Prefeasibility Report Volume 1 of 7.11.2018.pdf
AUTOMOTIVE ENGINE MANAGEMENT (MECHATRONICS).pptx
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
SMART SIGNAL TIMING FOR URBAN INTERSECTIONS USING REAL-TIME VEHICLE DETECTI...
Module 8- Technological and Communication Skills.pptx
introduction to high performance computing
Nature of X-rays, X- Ray Equipment, Fluoroscopy
Influence of Green Infrastructure on Residents’ Endorsement of the New Ecolog...
Graph Data Structures with Types, Traversals, Connectivity, and Real-Life App...
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
III.4.1.2_The_Space_Environment.p pdffdf
Fundamentals of Mechanical Engineering.pptx
Human-AI Collaboration: Balancing Agentic AI and Autonomy in Hybrid Systems
distributed database system" (DDBS) is often used to refer to both the distri...
Safety Seminar civil to be ensured for safe working.
Abrasive, erosive and cavitation wear.pdf
Ad

[Women in Tech Global Conference - 2022]Cloud-Native Middleware as a Programming Language

  • 1. Cloud-Native Middleware as a Programming Language Anupama Pathirage June 2022
  • 3. Source : IBM cloud native development report
  • 4. In this session Why we need a new programming language? What is Ballerina? Key features of Ballerina Demo - Develop a REST service using Ballerina Open source contributions to Ballerina
  • 5. Application development process ● Write code to integrate many systems ● Test and document the code ● Build and package into Docker ● Write deployment descriptors ● API management and security ● Scaling and performance ● Observe the usages and analytics ● Adjust and redeploy
  • 6. Why we need a new programming language? ○ Better network abstractions ○ Better support for data representation ○ Network aware type system ○ 1st Class support for a wide spectrum of network protocols ○ Ability to handle concurrency easily ○ Cloud friendliness ○ Visual representations for the full picture ○ Should be a complete platform, not just a language
  • 7. What is Ballerina? ○ Started in 2016 by WSO2. ○ A general-purpose programming language. ○ Specializes in solving integration & cloud-based problems by providing the right level of language abstractions and tools. ○ Open-source project and driven by the community.
  • 8. What is Ballerina? ○ Data-Oriented ○ Language has objects, the development methods are not completely OOP-based. ○ Both objects and functions are first class concepts, giving developers the ability to choose the best option based on their requirements. ○ Primary focus is on represent, describe, communicate pure data. ○ Compiled ○ Flexibly typed ○ Concurrent ○ Ballerina is NOT a JVM language. It has two implementations. ○ jBallerina - written in java to run on top of JVM. This is the first implementation to prove the language. ○ nBallerina - Compiled using LLVM, directly to the platform architecture.
  • 9. Ballerina Provides Network Abstractions ○ Provides abstractions for both network services and network clients. ○ For clients - Client objects with remote methods to represent outbound network messages ○ For services - Service objects ○ A remote method on a service object represents a network-callable method. ○ A resource method, which enables a more data-oriented view of services. ○ Incoming network messages are dispatched to service objects by using objects implementing the language-defined Listener type.
  • 10. Ballerina has Network-Aware Data & Type System ● Ballerina’s type system is specifically focused on aiding the development of networked and distributed applications. ● Plain Data ○ Messages exchanged by network protocols are represented by plain data ○ This is called anydata in Ballerina ○ Can be directly serialized to and from JSON in a simple, natural way. ● Ballerina has a structural type system ○ Type compatibility is identified by considering the structure of the value rather than just relying on the name of the type.
  • 11. Code to Cloud with Ballerina ● Ballerina provides a unique developer experience to move from code to cloud. ● The Ballerina compiler can be extended to read the source code and generate artifacts to deploy your code into different clouds. ● These artifacts can be Dockerfiles, Docker images, Kubernetes YAML files, or serverless functions. ● Building the source with ○ bal build --cloud=k8s Generate the Kubernetes YAML files and Docker image ○ bal build --cloud=docker Generate the Docker image and Dockerfile
  • 12. Ballerina is Concurrent, Reliable & Maintainable ● With more and more applications needing to support network interaction, concurrency becomes important for handling scale. ○ Asynchronous function calls - calls a function asynchronously and the function runs on a separate logical thread ○ Workers - Represents a single strand of a function invocation. ○ A strand is a logical thread of control assigned to every worker, which is multitasked cooperatively instead of preemptively. ● Ballerina runtime has built-in support for interacting with a transaction manager. ○ language provides syntax for delimiting transactions.
  • 14. Ballerina is a Platform Ballerina has: - "The language" - This is the core and it's the part that's defined in the language specification. - "Platform" - The language has been designed in conjunction with key components of the surrounding ecosystem The platform includes: ● a standard library ● a centralized module repository, and the tooling needed to support that ● a documentation system (based on Markdown) ● a testing framework ● extensions/plug-ins for popular IDEs (notably Visual Studio Code).
  • 16. Demo
  • 17. Search for Books and Movie Data
  • 18. Contributing to Ballerina Ballerina has: ○ https://ballerina-platform.slack.com/ ○ - - https://groups.google.com/g/ballerina-dev ○ https://github.com/ballerina-platform/