Baletka (programovací jazyk) - Ballerina (programming language)
Navrhl | Sanjiva Weerawarana, James Clark Sameera Jayasoma, Hasitha Aravinda, Srinath Perera, Frank Leymann a WSO2[1] |
---|---|
Vývojář | WSO2 |
Poprvé se objevil | 2017 |
Psací disciplína | Strukturální, silný, statický, odvozeno |
Jazyk implementace | Java, Ballerina, TypeScript [2] |
OS | Cross-platform |
Licence | Licence Apache 2.0[3] |
webová stránka | balerína |
Ovlivněno | |
Jáva, Javascript, Jít, Rez, C#[4] |
Balerína je otevřený zdroj univerzální programovací jazyk a platformu navrhl WSO2 pro cloudovou éru programátoři. Snadno se píše a upravuje a je vhodný pro aplikaci programátoři.[5][6][7]
Je to otevřený zdroj projekt [2] byla zahájena v roce 2015 architekty z WSO2 jako alternativa založená na kódu k integračním nástrojům založeným na konfiguraci, jako je EAI, ESB a produkty pracovního toku.[8][9]
Má různé konstrukce zaměřené na vývoj v cloudu, včetně podpory moderních datových formátů a protokolů, spolehlivosti, distribuovaných transakcí, API a proudy událostí.[10][11][12]
Dějiny
Ballerina byla navržena WSO2, aby zlepšila produktivitu vývojářů aplikací, se kterými musí pracovat distribuované cloudové nativní systémy. Návrháři, kteří poskytovali podnikové produkty v integrace více než 10 let využili při navrhování jazyka své znalosti oboru.[13][14] Balerína byla poprvé veřejně oznámena v roce 2017 a verze 1.0 byla vydána 10. září 2019.[15]
Design
Některé klíčové pojmy v Ballerině zahrnují:
- Síť v jazyce - Ballerina zavádí základní, nové abstrakce klientských objektů, služeb, funkcí zdrojů a posluchačů, které přinášejí síť do jazyka. [16]
- Sekvenční diagramy pro programování - V Ballerině má každý program odpovídající sekvenční diagram, který automaticky ilustruje distribuované a souběžné interakce. [17]
- Strukturální psaní ve výchozím nastavení - Ballerina má staticky napsaný systém strukturního typu, který je navržen tak, aby vyhovoval schématu síťových dat. [18]
- Přesun z kódu do cloudu - Ballerina přináší vývojářům celý proces provádění programu s rozšiřitelnými metadaty, která se kompilují do spustitelných programů pro všechny hlavní cloudové platformy. [19]
- Automatická pozorovatelnost - Ballerina zahrnuje funkce automatického pozorování do samotného jazyka, což pomáhá sledovat metriky, protokoly a trasování. [20]
Příklady
Hello World Service
import ballerina / http; service hello on new http: Listener (9090) {resource function sayHello (http: Caller caller, http: Request req) returns error? {check caller-> respond ("Hello, World!"); }}
Chcete-li spustit službu, přejděte do adresáře, který obsahuje soubor`.bal`, a proveďte níže uvedený příkaz `balerina run`.
$ baletka běh hello_world.bal[ballerina / http] zahájil posluchače HTTP / WS 0.0.0.0:9090curl http: // localhost: 9090 / ahoj / sayAhojAhoj světe!
Pracovníci
import ballerina / http; import ballerina / lang.'int; import ballerina / io; // Pracovníci mezi sebou komunikují prostřednictvím odesílání a přijímání zpráv. // Balerína ověřuje každou interakci mezi pracovníky (odesílání a příjem) // aby se zabránilo zablokování funkce main () {pracovník w1 {int w1val = checkpanic vypočítat ("2 * 3"); // Odešle zprávu asynchronně pracovníkovi `w2`. w1val -> w2; // Přijme zprávu od pracovníka `w2`. int w2val = <- w2; io: println ("[w1] Zpráva z w2:", w2val); // Synchronně odesílá zprávy pracovníkovi `w3`. Pracovník `w1` počká //, dokud pracovník` w3` zprávu nedostane. w1val - >> w3; w2val -> w3; // Vyprázdní všechny zprávy odeslané asynchronně pracovníkovi `w3`. Pracovník // se v tomto okamžiku zastaví, dokud nebudou odeslány všechny zprávy nebo dokud pracovník `w3` // selže. checkpanic flush w3; } // Pracovník může mít explicitní návratový typ, jinak, pokud návratový typ není uveden, // je ekvivalentní return (). pracovník w2 {int w2val = checkpanic vypočítat ("17 * 5"); // Přijme zprávu od pracovníka `w1`. int w1val = <- w1; io: println ("[w2] Zpráva z w1:", w1val); // Odešle zprávu asynchronně pracovníkovi `w1`. w1val + w2val -> w1; } pracovník w3 {int
Unární blokování gRPC
import balerína / grpc; import balerína / log; služba HelloWorld na novém grpc: Listener (9090) {funkce zdroje ahoj (grpc: volající volající, název řetězce, grpc: hlavičky hlaviček) {log: printInfo ("Server přijal hello od" + název); string message = "Hello" + jméno; // Přečte vlastní záhlaví ve zprávě požadavku. string reqHeader = headers.get ("client_header_key")?: "none"; log: printInfo ("Server obdržel hodnotu záhlaví:" + reqHeader); // Zapíše vlastní záhlaví do zprávy odpovědi. grpc: Záhlaví resHeader = nové; resHeader.setEntry ("server_header_key", "hodnota hlavičky odpovědi"); // Odešle odpověď s hlavičkami. grpc: Chyba? err = volající-> odeslat (zpráva, resHeader); if (err is grpc: Error) {log: printError ("Chyba z konektoru:" + err.message ()); } // Odešle volajícímu oznámení o dokončení. grpc: Chyba? result = caller-> complete (); if (výsledek je grpc: Chyba) {log: printError ("Chyba při odesílání vyplněného oznámení volajícímu", err = výsledek); }}}
Reference
- ^ "Specifikace jazyka baleríny". WSO2.
- ^ A b Přispěvatelé s otevřeným zdrojovým kódem (18. června 2019). „Zdrojový kód baleríny“. GitHub.
- ^ „WSO2 / LICENCE“. github.com. WSO2. 2017-03-08. Citováno 2018-03-01.
- ^ „Baletka, moderní programovací jazyk zaměřený na integraci“ (PDF): 15. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Jackson, Joab. „Ballerina: API-First Programming Language“. The New Stack. Citováno 2018-06-11.
- ^ Foremski, Tom (01.03.2019). „Technology and the Arts: Celebrating Ballerina, a computer language of integration“. Citováno 2019-07-14.
- ^ Lawton, George (01.11.2018). „Jazyk baleríny slibuje zlepšení integrace aplikací“. Citováno 2019-07-23.
- ^ „Programovací jazyk Ballerina Microservices: Představujeme nejnovější verzi a“ Ballerina Central"". InfoQ. Citováno 2018-06-07.
- ^ Earls, Alan (01.03.2019). „Jak se Ballerina nahromadí jako cloudový nativní programovací jazyk?“. Citováno 2019-07-23.
- ^ Doyle, Kerry. „10 nejlepších programovacích jazyků pro studium v roce 2020“. Citováno 2020-09-16.
- ^ Posta, Christian. „Vývoj integrace a mikroslužeb se Service Mesh a Ballerina“. Citováno 2019-07-24.
- ^ zaměstnanci, Techworld. „Nejlepší programovací jazyky, které byste měli vyzkoušet“. Techworld. Citováno 2018-06-07.
- ^ Clark, James. „Programovací jazyk Ballerina, část 0 - kontext“. Citováno 2020-09-16.
- ^ Clark, James. „Programovací jazyk baletky - 1. část - koncepty“. Citováno 2020-09-16.
- ^ „Ballerina znovu objevuje cloudový nativní middleware jako programovací jazyk"". GlobeNewswire. Citováno 2020-09-16.
- ^ Warusawithana, Lakmal. „Přehodnocení programování: síť v jazyce“. Citováno 2020-09-16.
- ^ Fernando, Anjana. „Přehodnocení programování: opětovné ochlazení sekvenčních diagramů“. Citováno 2020-09-16.
- ^ Fernando, Anjana. „Přehodnocení programování: Typ systému známý pro síť“. Citováno 2020-09-16.
- ^ Warusawithana, Lakmal. „Přehodnocení programování: od kódu po cloud“. Citováno 2020-09-16.
- ^ Fernando, Anjana. „Přehodnocení programování: automatická pozorovatelnost“. Citováno 2020-09-16.
- ^ Tým Ballerina (16. září 2020). „Služba Hello world“. ballerina.io.
- ^ Tým Ballerina (16. září 2020). „Interakce pracovníka“. ballerina.io.
- ^ Tým Ballerina (16. září 2020). „unární blokování gRPC“. ballerina.io.
Další čtení
- Fernando, Anjana, Warusawithana, Lakmal (2020) Zahájení programování baletky, Apress (součást Springer Nature)