This slide deck explores the reasoning behind creating Ballerina - the new programming language - the current state of it, how it'll affect WSO2 product and its future roadmap.
2. • Why are we doing Ballerina?
• What is the state of Ballerina?
• How will it affect the WSO2 products?
• What should you do to prepare for it?
What will you leave with?
Hopefully, answers to these questions:
5. • 286k SaaS services to use
– The new shared library
• Everything you make is useful to someone else
– Serve, or be forgotten
• Need for agility
– Recompose, recompose, recompose
Networked interactions are everywhere
6. • Too hot ‘n heavy for the future
– Microservices, serverless, containers
• Too restrictive with DSL approach and hacks
galore
Why not use ESBs?
7. • Too hot ‘n heavy for the future
– Microservices, serverless, containers
• Too restrictive with DSL approach and hacks
galore
• (In the future; today just keep buying the ESB!)
Why not use ESBs?
8. • Writing, managing and deploying code is now
rapid with awesome SDLC tools
• DSLs and ESBs don’t love CICD processes
Code is Great Again!
“Configuration over code” is over
9. • Type system mismatches - no understanding
of json, xml, sql
• Generally poor at handling asynchronous
programming
• Writing network resilient programs is very
hard with frameworks galore
Why not Java/NodeJS/Python/*?
12. • An event-driven, parallel programming language for
networked applications
• Textual and graphical syntaxes with sequence
diagram metaphor
• Powerful type system, connectivity and resiliency
• Designed for modern development practices
The Ballerina Programming Language
13. Ballerina has been influenced & inspired by C,
C++, Java, Go, Kotlin, Dart, NodeJS, Javascript,
Maven, NPM, Tomcat, Hysterix and a variety of
other awesome programming languages,
technologies & tools.
Thank you; we strive to do you proud.
Standing on the shoulders of giants!
14. • V0.95 released on Monday
• Many things are stable
• Some things are not stable
• Performance is getting better, but not there
yet
• Editing experience is getting better, but not
there yet
Work in progress
16. • Connectors
– Failover, load balancing, circuit breaking,
caching, timeout, ..
• Transactions
– XA for DB/JMS type
– Microtransaction model for B-to-B usecases
• Security
– Taint checking, authn, authzn
Resiliency
17. • Most languages are sequential first, parallel
second
• Ballerina is parallel always ultimately natural
– Sequence diagrams are inherently parallel
• Funky semantics for parallel workers of
functions
• Async is not right yet; will make it better
Parallelism
18. • Server and client connectors as you’d expect
• Powerful I/O library for non-blocking I/O for
any kind of channel of bytes, chars or records
• Caching, logging, math, ...
Standard library
19. • IDE support - Composer, Idea, VSCode, ..
• Unit testing framework
• Documentation framework
• Versioned module and dependency framework
• Docker integration
Support for programming lifecycle
20. • Compile to Ballerina byte codes .balo
• Statically linked to executable .balx
• BVM interpreter for bytecodes
– Written in Java
Execution model
21. • Ballerina has ZERO Java semantics
• We’re writing most of the tools in Java
– Because its an ok language to do so ;-)
– “native” is currently bound to Java, but internal
• Planning to compile from .balx to native binary
– Looking at LLVM
– Or Graal
– Or ?? (Help wanted!)
Ballerina/Java: Friends without benefits!
22. • Download it, try it, give it a whirl
• Join the community
– https://groups.google.com/forum/#!forum/baller
ina-dev
We want your help!
24. • Is awesome
– API composition
– Fantastic multi-environments via labels
– Microgateways, offline gateways
– Bunch of other cool things
• Oh, and it uses Ballerina in the gateway
API Manager v3
25. • Gateway will be programmed using Ballerina
• Much more flexible and easy to use than
current gateway
– Graphical composer will be part of it
API Manager v3 Gateway
26. • Will replace ESB and DSS with Ballerina
• Significant change from a programming model
sense
• Migration tool will deal with a lot of the pain
Enterprise Integrator 7
28. • NO!
• APIMv3 and EI7 will support serverless,
container and good ‘ol server modes
• If you want to go all micro, we’re there for you
– (And the only one!)
Do I have to go microservices?
29. NO! There will be many more minor releases of
EI6 as we continue to enhance its functionality.
It will be supported as long as you need it to be.
OMG is ESB/EI6 gone?
33. • Avoid writing ESB class mediators as much as
possible
– Migration tool can’t convert those
• Don’t hack around with properties and magic
ESB, DSS, EI 6 users
34. • Don’t do too much hacking in the gateway
mediation sequences
– In particular, no Java code
• Use checkin-in/check-out for environments
APIM users
35. Play nice, stay within boundaries and don’t go
crazy then you’ll be ok!
Summary
37. • Ballerina current supports main programs and
services
• Thinking about long running processes
• Thinking about events & streams
APIs, events and streams
38. • Ballerina makes it easier to write smart(er)
endpoints
– Type system, resiliency, parallelism
Smart endpoints and dumb pipes
39. • Only about once in a decade and takes a
decade or more
– Fortran, Cobol, C, C++, Java, C#, Javascript,
Python, Go
• Combination of fast boot, low memory,
non-blocking, network integration, micro all,
serverless opens door for Ballerina to win
Creating a winning language is very hard.