stringtranslate.com

Bailarina (lenguaje de programación)

Ballerina es un lenguaje de programación de propósito general de código abierto diseñado por WSO2 para programadores de aplicaciones de la era de la nube . [2]

El proyecto fue iniciado en 2015 por arquitectos de WSO2 como una alternativa basada en código a las herramientas de integración basadas en configuración como EAI , ESB y productos de flujo de trabajo. [5] [6]

Tiene varias construcciones orientadas al desarrollo nativo de la nube, incluido soporte para varios formatos y protocolos de datos, confiabilidad, transacciones distribuidas, 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 junto con una representación gráfica directa del código en forma de diagramas de secuencia. Tiene 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 tienen que trabajar con computación distribuida . Es fácil de escribir y modificar y es 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 el director de WSO2 y fundador de Ballerina, James Clark.

Ejemplos

Hola Mundo

El programa habitual de Hola Mundo:

importar bailarina / 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 del archivo al bal runcomando.

$ ballerina  run  hello_world.bal ¡Hola mundo!

La versión de servicio del programa Hola Mundo:

importar bailarina/http;servicio /saludo en nuevo http:Listener(9090) { La función de recurso get () devuelve una cadena { devuelve "¡Hola mundo!"; }}

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

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

[17]

API REST

importar bailarina / http ; servicio en nuevo http : Listener ( 9090 ) { recurso función post factorial ( @http : Payload string payload ) devuelve http : Ok | http : BadRequest { int | error num = int : fromString ( payload );                  si num es un error { return < http : BadRequest >{ body : "Entero inválido: " + payload }; }           si num < 0 { return < http : BadRequest >{ body : "El entero debe ser >= 0" }; }         int resultado = 1 ;    foreach int i en 2 ... num { resultado *= i ; }            devolver < http : Ok >{ cuerpo : resultado }; } }   
$ curl  http://localhost:9090/factorial  -d 5 120 

API de GraphQL

importar bailarina / graphql ; servicio / acciones en el nuevo graphql : Listener ( 4000 ) { recurso función obtener cotización () devuelve StockQuote { return { ticker : "EXPO" , precio : 287.5 , apertura : 285 , cierre anterior : 285.5 , mínimo : 276.25 , máximo : 297 }; } }                            tipo registro de cotización de acciones { | cadena ticker ; precio flotante ; precio flotante de apertura ; precio flotante de cierre anterior ; precio flotante mínimo ; precio flotante máximo ; | };               
$ curl  -H "Tipo de contenido: aplicación/json" -d '{"consulta": "{ cotización { ticker, precio } }" }' 'http://localhost:4000/stocks' {"datos":{"cotización":{"ticker": "EXPO", "precio": 287,5}}}     

Diagrama de secuencia

El diagrama de secuencia generado es una representación canónica del código fuente. Las dos representaciones se pueden utilizar indistintamente. El soporte para diagramas se proporciona a través del complemento Ballerina VS Code. A continuación, se muestran un par de diagramas de secuencia generados, comparados con su código asociado.

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

Un programa de muestra para crear un informe a partir de datos de solicitudes de extracción recuperados de GitHub:

Compatibilidad con JSON

El lenguaje ofrece compatibilidad 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 bailarina / io ; función pública main () devuelve error { // La sintaxis para los valores del objeto `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 ; }          

Del código a la nube

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

Ballerina.tomlarchivo:

[paquete] distribución = "2201.0.0"  [opciones de compilación] nube = "k8s"

Cloud.tomlarchivo:

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

Trabajadores

importar bailarina / http ; importar bailarina / lang . ' int ; importar bailarina / 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 bloqueos. public function main () { @strand { thread : "any" } worker w1 { int w1val = checkpanic calculate ( "2*3" ); // Envía un mensaje asincrónicamente al trabajador `w2`. w1val -> w2 ; // Recibe un mensaje del trabajador `w2`. int w2val = <- w2 ; io : println ( "[w1] Mensaje de w2: " , w2val ); // Envía mensajes sincrónicamente al trabajador `w3`. El trabajador `w1` esperará // hasta que el trabajador `w3` reciba el mensaje. w1val ->> w3 ; w2val -> w3 ; // Limpia todos los mensajes enviados asincrónicamente 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" } worker 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 asincrónica 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. esperar w1 ; }  función calcular ( cadena expr ) devuelve int | error { http : Cliente httpClient = check new ( "https://api.mathjs.org" ); cadena respuesta = check httpClient -> get ( cadena `/v4/?expr=${expr}` ); devolver check ' int : fromString ( respuesta ); }                    

[18]

Referencias

  1. ^ "Especificación del lenguaje Ballerina". WSO2. Archivado desde el original el 2020-08-11 . Consultado el 2020-04-24 .
  2. ^ ab 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) : 15. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  5. ^ "Lenguaje de programación de microservicios Ballerina: presentación de la última versión y "Ballerina Central"". InfoQ . Consultado el 7 de junio de 2018 .
  6. ^ Earls, Alan (1 de marzo de 2019). "¿Cómo se compara Ballerina con un 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. ^ Personal 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 lenguaje de programación". GlobeNewswire (nota de prensa). 10 de septiembre de 2019. Consultado el 16 de septiembre de 2020 .
  11. ^ Ratnayake, Dakshitha. "Ballerina Swan Lake: 10 características del lenguaje atractivas para la programación nativa de la nube". InfoQ . Consultado el 1 de marzo de 2022 .
  12. ^ Jackson, Joab. "Ballerina: un lenguaje de programación API-First". The New Stack . Consultado el 11 de junio de 2018 .
  13. ^ Foremski, Tom (1 de marzo de 2019). «Tecnología y artes: Celebrando a Ballerina, un lenguaje informático de integración» . Consultado el 14 de julio de 2019 .
  14. ^ Lawton, George (1 de noviembre de 2018). «El lenguaje de Ballerina promete mejorar la integración de aplicaciones» . Consultado el 23 de julio de 2019 .
  15. ^ Clark, James. "Lenguaje de programación Ballerina, parte 0: contexto" . Consultado el 16 de septiembre de 2020 .
  16. ^ Clark, James. "Lenguaje de programación Ballerina, parte 1: conceptos" . Consultado el 16 de septiembre de 2020 .
  17. ^ Ballerina Team (16 de septiembre de 2020). «Hola mundo». ballerina.io. Archivado desde el original el 16 de septiembre de 2020. Consultado el 16 de septiembre de 2020 .
  18. ^ Equipo de Ballerina (16 de septiembre de 2020). «Interacción entre trabajadores». ballerina.io.

Lectura adicional

Enlaces externos