Cosa è il linguaggio Ballerina

Cosa è il linguaggio Ballerina

Cosa è il linguaggio Ballerina

Prima di addentrarci nei dettagli tecnici di Ballerina, è utile avere una panoramica dei punti chiave trattati in questo articolo. Ballerina è un linguaggio open source ideato da WSO2 nel 2016 e rilasciato ufficialmente in Swan Lake 2201 nel febbraio 2022, progettato specificamente per semplificare l’integrazione tra sistemi distribuiti e cloud-native . La sua sintassi C-style, unita a una tipizzazione statica e alla capacità di generare automaticamente diagrammi di sequenza, aiuta gli sviluppatori a descrivere flussi di messaggi con meno codice boilerplate . Ballerina include nativamente connettori per protocolli di rete (HTTP, gRPC, Kafka, SMTP, FTP, ecc.) e formati dati (JSON, XML, CSV, TSV), implementando pattern di integrazione aziendale quali Router, Splitter e Aggregator. La toolchain comprende il CLI bal, la Shell REPL, generatori di codice da OpenAPI/AsyncAPI e strumenti per test, debug, analisi statica (bal scan) e documentazione (bal doc) . Infine, grazie al motore “Code to Cloud”, Ballerina consente di produrre artefatti Docker e Kubernetes in modo trasparente dal codice sorgente .

Origini e scopo

WSO2, azienda nota per le sue soluzioni middleware e di integrazione, ha lanciato il progetto Ballerina nel 2016 con l’obiettivo di colmare il “divario di integrazione” tra tool drag-and-drop e linguaggi generici che non comprendono i pattern di rete . Dopo anni di sviluppo e versioni beta (nota come “Swan Lake”), la release 2201.0.0 è stata pubblicata nel febbraio 2022, inaugurando una fase di maturità enterprise . La motivazione principale è offrire un unico linguaggio dove le primitive di rete (listener, client, message flow) siano first-class citizen, riducendo complessità e time-to-market per microservizi e pipeline di integrazione.

Caratteristiche fondamentali – Cosa è il linguaggio Ballerina

Sintassi e tipizzazione

Ballerina adotta una sintassi simile a C/Java, con blocchi {} e punti e virgola, ma introduce service e resource per dichiarare endpoint di rete. Il sistema di tipi è forte, statico ma inferito: supporta tipi primitivi (int, float, boolean, string), sequenze (string, xml), raccolte (array, tuple), record, mappe e un tipo universale json . Il linguaggio assicura la sicurezza della memoria e dei tipi a compile-time, evitando errori runtime comuni in scenari di integrazione .

Concorrenza e diagrammi di sequenza

La keyword worker (o recente strand) permette di definire unità di esecuzione concorrenti a basso costo, ideali per “fire-and-forget” o orchestrazioni parallele . Ad ogni build o run, Ballerina può esportare automaticamente diagrammi di sequenza in formato SVG o HTTP Archive, rendendo trasparente il flusso dei messaggi tra servizi e worker.

Installazione e CLI – Cosa è il linguaggio Ballerina

Installazione

Su Linux/macOS, si può utilizzare Homebrew:

brew install ballerina

oppure scaricare l’archivio ZIP/TAR dal sito ufficiale e decomprimerlo in /usr/local/ballerina . Windows dispone di un installer MSI dedicato.

Il comando bal

La CLI principale è bal, che gestisce progetti, build, test, run, pack e interazione con Ballerina Central:

$ bal version         # mostra la versione corrente
$ bal new my_project  # crea un nuovo package con struttura minima
$ cd my_project
$ bal build           # compila il progetto

Con bal tool pull|use|list si installano e switchano tra diverse distribuzioni (The Ballerina programming language).

Ballerina Shell

Con bal shell si accede a un REPL per digitare snippet di codice e verificarne subito il risultato, utile per esperimenti rapidi e debug esplorativo.

Esempi di integrazione – Cosa è il linguaggio Ballerina

Hello World HTTP

import ballerina/http;

service /hello on new http:Listener(9090) {
    resource function get ping() returns string {
        return "Hello, Ballerina!";
    }
}

In poche righe si definisce un listener HTTP, un service e una resource che risponde a GET /hello/ping .

Connettori pre-built

Ballerina include client e listener per Kafka, gRPC, GraphQL, WebSocket, FTP/SFTP, SMTP/POP3, JDBC, JMS e molti altri protocolli . Ad esempio, per leggere messaggi da un topic Kafka:

import ballerina/kafka;

listener kafka:Listener consumer = new ({
    topic: "orders",
    groupId: "order-service",
    bootstrapServers: "localhost:9092"
});

service on consumer {
    remote function onMessage(kafka:ConsumerRecord[] records) {
        // Elaborazione dei record
    }
}

Enterprise Integration Patterns – Cosa è il linguaggio Ballerina

Ballerina rende nativi pattern come Message Router, Content-Based Router, Splitter, Aggregator e Message Store descritti da Hohpe & Woolf. Ogni pattern è disponibile come snippet di progetto, seguito da best practice e esempi reali.

Formati di dati supportati

  • JSON: tipo nativo json, binding diretto a record e mappe .
  • XML: tipo nativo xml con XPath integrato .
  • CSV/TSV: parsing e streaming con binding a tipi record .
  • Protobuf, Avro: supporto via moduli esterni in Ballerina Central.

Protocolli di rete

Batteries-included per:

  • HTTP/HTTPS (incl. HTTP/2, HTTP Trace)
  • gRPC e GraphQL
  • Kafka, JMS, RabbitMQ
  • FTP/SFTP, SMTP/POP3, IMAP4
  • WebSocket, TCP, UDP
  • JDBC per database relazionali

Organizzazione del codice e dipendenze

Il codice risiede in un package (directory con Ballerina.toml) contenente uno o più moduli (sottocartelle con .bal e directory tests) . Le dipendenze esterne si dichiarano in Ballerina.toml (sezione [dependency]), simile a Maven/Gradle. Le risorse statiche e i file di configurazione vanno in resources/.

Tool di integrazione automatici

Ballerina offre generatori per trasformare specifiche in codice:

  • OpenAPI: bal openapi
  • AsyncAPI, gRPC, GraphQL, WSDL/XSD, EDI, Health (FHIR/HL7)
  • Bindgen: genera binding per classi Java
  • bal persist: per persistere dati su MySQL, PostgreSQL, Redis, Google Sheets in uniforme DSL

Test, debug e documentazione

  • Test: bal test esegue unit e integrazione, con report in console .
  • Debug: VS Code extension supporta program, test e remote debugging via CodeLens e launch.json .
  • Documentazione: con bal doc si genera API reference in HTML da commenti in Ballerina Flavored Markdown (BFM).

Configurazione dei servizi e deployment

Attraverso il build option --cloud=k8s|docker, Ballerina genera artefatti Docker e manifesti Kubernetes (Code to Cloud) senza script aggiuntivi . Il file opzionale Cloud.toml permette di personalizzare repository, tag e risorse .

Conclusioni – Cosa è il linguaggio Ballerina

Ballerina si distingue come linguaggio “Integration as Code”, unendo primitives di rete, formati dati e toolchain integrata per accelerare lo sviluppo di microservizi e pipeline di integrazione. La sua sintassi C-style, i diagrammi di sequenza automatici e il supporto completo a protocolli e formati lo rendono ideale per sviluppatori che operano in contesti cloud-native e distribuiti.

(fonte)

Innovaformazione, scuola informatica specialistica segue costantemente il mercato IT ed affianca le aziende nella formazione continua dei team di sviluppatori e DevOps. Trovate l’elenco corsi rivolti alle aziende sul nostro sito al seguente LINK.

Per altri articoli di settore consigliamo invece di navigare sul nostro blog QUI.

INFO: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)

Ti potrebbe interessare

Articoli correlati