Articulo de referencia

Bailarina (lenguaje de programación)

{{cite web |url=https://ballerina.io/spec/lang/master/ |publisher=WSO2 |title=Ballerina Language Specification |access-date=2020-04-24 |archive-date=2020-08-11 |archive-url=http...

Ballerina es un lenguaje de programación de propósito general diseñado por WSO2 para software de aplicaciones de computación en la nube . [ 2 ] Es software libre y de código abierto publicado bajo la Licencia Apache 2.

El proyecto comenzó en 2015 de la mano de arquitectos de WSO2 como una alternativa basada en código a las herramientas de integración basadas en configuración, como la integración de aplicaciones empresariales (EAI), el bus de servicios empresariales (ESB) y los productos de flujo de trabajo. [ 5 ] [ 6 ]

Cuenta con diversas estructuras para el desarrollo nativo en la nube, incluyendo soporte para varios formatos y protocolos de datos, confiabilidad, transacciones distribuidas, interfaces de programación de aplicaciones ( API ) y flujos de eventos. [ 7 ] [ 8 ] [ 9 ]

Historia

Ballerina se anunció públicamente por primera vez en 2017 y la versión 1.0 se lanzó el 10 de septiembre de 2019. [ 10 ]

Diseño

Ballerina es un lenguaje de propósito general con una sintaxis familiar y una representación gráfica directa del código en forma de diagramas de secuencia. Cuenta con abstracciones fundamentales diseñadas para facilitar la programación de problemas de integración. [ 11 ] Ballerina fue diseñado por WSO2 para mejorar la productividad de los desarrolladores de aplicaciones que trabajan con computación distribuida . Es fácil de escribir y modificar, y resulta adecuado para programadores de aplicaciones. [ 12 ] [ 13 ] [ 14 ]

Los diseñadores, que proporcionaron productos de integración empresarial durante más de 10 años, utilizaron su conocimiento de la industria al diseñar el lenguaje, [ 15 ] [ 16 ] dice James Clark, director de WSO2 y fundador de Ballerina.

Ejemplos

Hola Mundo

El programa habitual de "Hola Mundo":

importar ballerina / io ;función pública principal () { io : println ( "Hola Mundo!" ); }

Para ejecutar el programa anterior, coloque el código fuente en un .balarchivo y proporcione la ruta de dicho archivo al bal runcomando.

$ bailarina corre hello_world.bal ¡Hola mundo!

La versión de servicio del programa "Hola Mundo":

importar bailarina / http ;servicio / saludar en nuevo http : Listener ( 9090 ) { función de recurso get . () devuelve cadena { return "¡Hola Mundo!" ; } }

Los servicios se ejecutan de la misma manera, con la diferencia de que no finalizan como los programas normales. Una vez que el servicio está en funcionamiento, se puede usar un cliente HTTP para invocarlo. Por ejemplo, el servicio anterior se puede invocar usando el siguiente comando cURL:

$ curl http://localhost:9090/greet ¡Hola mundo!

[ 17 ]

API REST

importar bailarina / http ;servicio en nuevo http : Listener ( 9090 ) { función de recurso post factorial ( @http : Payload string payload ) devuelve http : Ok | http : BadRequest { int | error num = int : fromString ( payload );if num is error { return < http : BadRequest >{ body : "Entero no válido: " + payload }; }if num < 0 { return < http : BadRequest >{ body : "El número entero debe ser >= 0" }; }entero resultado = 1 ;para cada entero i en 2 ... num { resultado *= i ; }return < http : Ok >{ body : result }; } }
$ curl http://localhost:9090/factorial -d 5 120

API GraphQL

importar ballerina / graphql ;servicio / acciones en nuevo graphql : Listener ( 4000 ) { resource function get quote () returns StockQuote { return { ticker : "EXPO" , price : 287.5 , open : 285 , prevClose : 285.5 , low : 276.25 , high : 297 }; } }tipo StockQuote registro { | cadena ticker ; flotante precio ; flotante apertura ; flotante cierre anterior ; flotante mínimo ; flotante máximo ; | };
$ curl -H "Content-type: application/json" -d '{"query": "{ quote { ticker, price } }" }' 'http://localhost:4000/stocks' {"data":{"quote":{"ticker":EXPO", "price":287.5}}}

Diagrama de secuencia

El diagrama de secuencia generado es una representación canónica del código fuente. Ambas representaciones pueden usarse indistintamente. La compatibilidad con diagramas se proporciona mediante el complemento Ballerina para VS Code. A continuación, se muestran algunos ejemplos de diagramas de secuencia generados, comparados con su código asociado.

Un programa de ejemplo para recuperar y procesar datos de COVID-19:

Un programa de ejemplo para crear un informe a partir de los datos de las solicitudes de extracción obtenidos de GitHub:

Compatibilidad con JSON

El lenguaje ofrece soporte para trabajar con valores JSON. El tipo integrado `json` se define como la siguiente unión:()|boolean|int|float|decimal|string|json[]|map<json>

importar ballerina / io ;public function main () returns error { // La sintaxis para los valores de objetos `json` es muy similar a la sintaxis de JSON json person = { name : "John Doe" , age : 25 };// Los valores `json` serializados se ajustan a la especificación JSON io : println ( person );// Se puede acceder a los campos del valor `json` de la siguiente manera: string name = check person . name ; int age = check person . age ; }

Código a la nube

Los artefactos de Docker y Kubernetes necesarios para desplegar el código en la nube se pueden generar al compilarlo. Los valores necesarios para estos artefactos se derivan del código. Además, también se pueden sobrescribir estos valores mediante el Cloud.tomlarchivo. Para habilitar la generación de los artefactos de la nube, los usuarios pueden usar la cloudopción de compilación en el Ballerina.tomlarchivo. Use dockerpara generar solo la imagen de Docker y el Dockerfile, y use k8spara generar también los artefactos de Kubernetes. Los archivos TOML de configuración de ejemplo mínimos se verían así:

Ballerina.tomlarchivo:

[paquete] distribución = "2201.0.0"[build-options] cloud = "k8s"

Cloud.tomlarchivo:

[container.image] repositorio = "bal_user" nombre = "greet" etiqueta = "v0.1.0"

Trabajadores

import ballerina / http ; import ballerina / lang . ' int ; import ballerina / io ;// Los trabajadores interactúan entre sí enviando y recibiendo mensajes. // Ballerina valida cada interacción del trabajador (envío y recepción) // para evitar interbloqueos. public function main () { @strand { thread : "any" } worker w1 { int w1val = checkpanic calculate ( "2*3" ); // Envía un mensaje de forma asíncrona al trabajador `w2`. w1val -> w2 ; // Recibe un mensaje del trabajador `w2`. int w2val = <- w2 ; io : println ( "[w1] Mensaje de w2: " , w2val ); // Envía mensajes de forma síncrona al trabajador `w3`. El trabajador `w1` esperará // hasta que el trabajador `w3` reciba el mensaje. w1val ->> w3 ; w2val -> w3 ; // Vacía todos los mensajes enviados de forma asíncrona al trabajador `w3`. El trabajador // se detendrá en este punto hasta que se envíen todos los mensajes o hasta que el trabajador `w3` // falle. checkpanic flush w3 ; }// Un trabajador puede tener un tipo de retorno explícito, o bien, si no se menciona un tipo de retorno, // es equivalente a devolver (). @strand { thread : "any" } trabajador w2 { int w2val = checkpanic calculate ( "17*5" ); // Recibe un mensaje del trabajador `w1`. int w1val = <- w1 ; io : println ( "[w2] Mensaje de w1: " , w1val ); // Envía un mensaje de forma asíncrona al trabajador `w1`. w1val + w2val -> w1 ; }trabajador w3 { int | error w1val = <- w1 ; int | error w2val = <- w1 ; io : println ( "[w3] Mensajes de w1: " , w1val , ", " , w2val ); }// Espera a que el trabajador `w1` termine. wait w1 ; }function calculate ( string expr ) returns int | error { http : Client httpClient = check new ( "https://api.mathjs.org" ); string response = check httpClient -> get ( string `/v4/?expr=${expr}` ); return check ' int : fromString ( response ); }

[ 18 ]

Referencias

  1. "Especificación del lenguaje Ballerina" . WSO2. Archivado del original el 11 de agosto de 2020. Consultado el 24 de abril de 2020 .
  2. 1 2 Colaboradores de código abierto (18 de junio de 2019). "Código fuente de Ballerina" . GitHub .
  3. "WSO2: Licencia" . github.com . WSO2 . 2017-03-08 . Consultado el 2018-03-01 .
  4. "Ballerina, un lenguaje de programación moderno centrado en la integración" (PDF) . pág. 15. 
  5. "Lenguaje de programación de microservicios Ballerina: Presentación de la última versión y "Ballerina Central"" . InfoQ . Consultado el 07-06-2018 .
  6. Earls, Alan (1 de marzo de 2019). "¿Cómo se compara Ballerina como lenguaje de programación nativo de la nube?" . Consultado el 23 de julio de 2019 .
  7. Doyle, Kerry. "10 de los mejores lenguajes de programación para aprender en 2020" . Consultado el 16 de septiembre de 2020 .
  8. Posta, Christian. "Evolución de la integración y los microservicios con Service Mesh y Ballerina" . YouTube . Consultado el 24 de julio de 2019 .
  9. Equipo de Techworld. "Los mejores lenguajes de programación que deberías probar" . Techworld . Consultado el 7 de junio de 2018 .
  10. "Ballerina reinventa el middleware nativo de la nube como un lenguaje de programación" . GlobeNewswire (Comunicado de prensa). 10 de septiembre de 2019. Consultado el 16 de septiembre de 2020 .
  11. Ratnayake, Dakshitha. "Ballerina Swan Lake: 10 Compelling Language Characteristics for Cloud Native Programming" . InfoQ . Consultado el 1 de marzo de 2022 .
  12. Jackson, Joab. "Ballerina: Un lenguaje de programación basado en API" . The New Stack . Consultado el 11 de junio de 2018 .
  13. Foremski, Tom (2019-03-01). "Tecnología y las artes: Celebrando Ballerina, un lenguaje informático de integración" . Recuperado el 2019-07-14 .
  14. Lawton, George (1 de noviembre de 2018). "El lenguaje de bailarina promete mejorar la integración de la aplicación" . Recuperado el 23 de julio de 2019 .
  15. Clark, James. "Lenguaje de programación Ballerina Parte 0 - Contexto" . Recuperado el 16 de septiembre de 2020 .
  16. Clark, James. "Lenguaje de programación Ballerina Parte 1 - Conceptos" . Recuperado el 16 de septiembre de 2020 .
  17. Equipo de Ballerina (16 de septiembre de 2020). "Hola, servicio mundial" . ballerina.io. Archivado del original el 16 de septiembre de 2020. Recuperado el 16 de septiembre de 2020 .
  18. Equipo de Ballerina (16 de septiembre de 2020). "Interacción del trabajador" . ballerina.io.

Lecturas adicionales

  • Sitio web oficial
  • Plataforma Ballerina en GitHub
Obtenido de " https://en.wikipedia.org/w/index.php?title=Ballerina_(programming_language)&oldid=1338821818 "