5 ms·
Show HN: Ballerina – Cloud Native Programming Language
- TekMol 8y agoAs a language nerd, I had to take a look. But I really can't figure out what this is about. "Ballerina makes it easy to create resilient services that integrate and orchestrate transactions across distributed endpoints." Is it real or a joke? It sounds like a markov chain generator was fed with tech mumbo jumbo and then generated this? If it's real - what is the no nonsense description? And who is behind it?
- sanjiva 8y agoI'm the lead designer of Ballerina. Its a real language :-). Please check the spec out here: https://ballerina.io/res/Ballerina-Language-Specification-WD-2015-05-01.pdf https://ballerina.io/res/Ballerina-Language-Specification-WD.... Feedback welcome!
- TekMol 8y agoThanks!
- sanjiva 8y agoOh and I didn't answer the question of who's behind it - this is being lead by WSO2, of which I'm the chief architect.
- fiatjaf 8y agoNo, you're just trying to be a jerk. It's difficult to explain what a service does in a single sentence, but this one makes perfect sense, albeit generical.
- TylerJewell 8y agoBallerina is a compiled, type safe, and concurrent programming language to make it easy to write integration services, which are typically the glue between connecting different endpoints with distributed transactions, reliable messaging, mediation, transformation, and orchestration. These are all capabilities that are usually built into integration products around a language, though these concepts are baked into the syntax and the language design. The platform portion contains additional runtimes components for enabling this functionality including an API gateway, a message broker, a transaction coordinator, and a bridge for brokering transactions to services that are written in other languages. There are roughly 100 committers. It's a lot of people that were involved in Apache Synapse and WSO2 ESB.
- gigatexal 8y agoThis looks really interesting. Is it production ready? What companies, if any, are using this in production?
- TylerJewell 8y agoWe are using it in production at WSO2 now - we have gateways and web site APIs running it. We just made a 0.970.0 release last week which contains significant alterations. The language and runtime have been in iterative design and test for a couple years. We are just now putting live ballerina.io so that we can start working within the community to gain adoption. A number of WSO2 customers are working with it in development and pre-production, but we asked them to not consider production deployments until the rework was done. We hope to hit a 1.0 milestone by the end of the year where we will guarantee backwards compatibility. We do find the runtime to be extremely stable with throughput numbers about 5x higher than equivalent ESBs, and we are running long term stability tests that are doing well. We'll publish all of these results soon, too.
- fiatjaf 8y agoI want a "programming language" (or better, a platform) that would natively integrate different services, like Google Drive, Dropbox, Slack, Trello, GitHub, Dropbox and so on like they were all in the same machine.
- ycrnet 8y agoYou are in luck, ballerina is a platform carefully designed to address most of the integration problems we face. You can have a look at ballerina central where connectors are available which are needed to integrate with third party apps like, Git twitter etc. https://central.ballerina.io/ https://central.ballerina.io/. Also take a look at some guides available at https://ballerina.io/learn/by-guide/ https://ballerina.io/learn/by-guide/
- fiatjaf 8y agoWhoa, I wasn't expecting for that. I'll surely check it out.
- TylerJewell 8y agoYeah, the way it works in Ballerina is that an endpoint is a keyword that can create an object that represented a networked location. This could be one of three things - either the caller that invoked your service, the service you author which is listening as an endpoint, or a service you want to invoke. For the services that you want to invoke, you can create endpoint objects of different types. The objects during initialization use connectors to establish the communication. It's like doing a constructor call in an OOP. You can import different packages the way you would with any language and shared packages are available on central. Once you have one of those endpoint objects, you can do type safe invocations against it. So you might create a Twitter connection creating a "tweeter" object. That connector then has functions which can be invoked, "tweeter -> tweet (params);". This returns a data structure that is strongly typed and mapped to the payload expected in return from the service. It's also pretty simple to write your own packages which have your own connectors. The push / pull dynamics of packages with central are similar to Elk or DockerHub, but applied to code modules.