Ballerina es una plataforma y un lenguaje de programación de uso general de código abierto diseñado por WSO2 para programadores de aplicaciones de la era de la nube . Es fácil de escribir y modificar y es adecuado para programadores de aplicaciones . [5] [6] [7]
![]() | |
Diseñada por | Sanjiva Weerawarana , James Clark , Sameera Jayasoma, Hasitha Aravinda, Srinath Perera, Frank Leymann y WSO2 [1] |
---|---|
Desarrollador | WSO2 |
Apareció por primera vez | 2017 |
Disciplina de mecanografía | Estructural , fuerte , estático , inferido |
Lenguaje de implementación | Java, Ballerina, TypeScript [2] |
SO | Multiplataforma |
Licencia | Licencia de Apache 2.0 [3] |
Sitio web | bailarina |
Influenciado por | |
Java , Javascript , Go , Rust , C #[4] |
Es un proyecto de código abierto [2] 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. [8] [9]
Tiene varias construcciones orientadas al desarrollo nativo de la nube, incluido el soporte para formatos y protocolos de datos modernos, confiabilidad, transacciones distribuidas, API y flujos de eventos. [10] [11] [12]
Historia
Ballerina fue diseñada por WSO2 para mejorar la productividad de los desarrolladores de aplicaciones que tienen que trabajar con sistemas nativos de la nube distribuidos . Los diseñadores, que proporcionaron productos empresariales en el espacio de integración durante más de 10 años, utilizaron su conocimiento de la industria al diseñar el lenguaje. [13] [14] Ballerina se anunció públicamente por primera vez en 2017 y la versión 1.0 se lanzó el 10 de septiembre de 2019. [15]
Diseño
Algunos conceptos clave en Ballerina incluyen:
- La red en el lenguaje: Ballerina introduce nuevas abstracciones fundamentales de los objetos del cliente, los servicios, las funciones de los recursos y los oyentes para incorporar la red en el lenguaje. [dieciséis]
- Diagramas de secuencia para la programación: en Ballerina, cada programa tiene un diagrama de secuencia correspondiente que ilustra las interacciones distribuidas y concurrentes automáticamente. [17]
- Escritura estructural, abierta por defecto: Ballerina tiene un sistema de tipo estructural de tipificación estática que está diseñado para ser compatible con los esquemas de datos de red. [18]
- Pasar del código a la nube: Ballerina pone todo el proceso de ejecución del programa en manos del desarrollador con metadatos extensibles que se compilan en programas ejecutables para todas las principales plataformas en la nube. [19]
- Observabilidad automatizada: Ballerina incorpora funciones de observabilidad automática en el lenguaje mismo que ayuda a realizar un seguimiento de las métricas, los registros y el seguimiento. [20]
Ejemplos de
Servicio Hola Mundo
import ballerina / http;hola servicio en el nuevo http: Listener (9090) { función de recurso sayHello (http: llamador, http: Request req) devuelve un error? { comprobar llamador-> responder ("¡Hola, mundo!"); }}
Para iniciar el servicio, navegue hasta el directorio que contiene el archivo `.bal` y ejecute el comando` ballerina run` a continuación.
$ ballerina run hello_world.bal [ballerina / http] inició el escucha HTTP / WS 0.0.0.0:9090curl http: // localhost: 9090 / hello / sayHello Hello, World!
[21]
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 (enviar y recibir)// para evitar interbloqueos.función pública main () { trabajador w1 { int w1val = checkpanic calcular ("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 sincrónicamente 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` // falla. checkpanic flush w3; } // Un trabajador puede tener un tipo de retorno explícito, o de lo contrario, si no se menciona un tipo de retorno, // es equivalente a return (). trabajador w2 { int w2val = checkpanic calcular ("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 { En t
[22]
Bloqueo unario de gRPC
import ballerina / grpc;importar bailarina / tronco;service HelloWorld en el nuevo grpc: Listener (9090) { función de recurso hola (grpc: llamador, nombre de cadena, grpc: Encabezados encabezados) { log: printInfo ("El servidor recibió un saludo de" + nombre); mensaje de cadena = "Hola" + nombre; // Lee encabezados personalizados en el mensaje de solicitud. string reqHeader = headers.get ("client_header_key")?: "ninguno"; log: printInfo ("El servidor recibió el valor del encabezado:" + reqHeader); // Escribe encabezados personalizados en el mensaje de respuesta. grpc: Encabezados resHeader = new; resHeader.setEntry ("server_header_key", "Valor del encabezado de respuesta"); // Envía un mensaje de respuesta con encabezados. grpc: ¿Error? err = llamador-> enviar (mensaje, resHeader); if (err is grpc: Error) { log: printError ("Error del conector:" + err.message ()); } // Envía una notificación de "completado" a la persona que llama. grpc: ¿Error? resultado = llamador-> completo (); if (el resultado es grpc: Error) { log: printError ("Error al enviar la notificación completada a la persona que llama", err = resultado); } }}
[23]
Referencias
- ^ "Especificación de idioma de bailarina" . WSO2.
- ^ a b Colaboradores de código abierto (18 de junio de 2019). "Código fuente de bailarina" . GitHub .
- ^ "WSO2 / LICENCIA" . github.com . WSO2 . 2017-03-08 . Consultado el 1 de marzo de 2018 .
- ^ "Ballerina, un lenguaje de programación moderno centrado en la integración" (PDF) : 15. Cite journal requiere
|journal=
( ayuda ) - ^ Jackson, Joab. "Ballerina: un lenguaje de programación API-First" . La nueva pila . Consultado el 11 de junio de 2018 .
- ^ 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 .
- ^ Lawton, George (1 de noviembre de 2018). "El lenguaje de bailarina promete mejorar la integración de la aplicación" . Consultado el 23 de julio de 2019 .
- ^ "Lenguaje de programación de microservicios de Ballerina: Presentación de la última versión y" Ballerina Central " " . InfoQ . Consultado el 7 de junio de 2018 .
- ^ 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 .
- ^ Doyle, Kerry. "10 de los mejores lenguajes de programación para aprender en 2020" . Consultado el 16 de septiembre de 2020 .
- ^ Posta, Christian. "Evolución de la Integración y Microservicios con Service Mesh y Ballerina" . Consultado el 24 de julio de 2019 .
- ^ personal, Techworld. "Los mejores lenguajes de programación que debes probar" . Techworld . Consultado el 7 de junio de 2018 .
- ^ Clark, James. "Lenguaje de programación de bailarina, parte 0 - contexto" . Consultado el 16 de septiembre de 2020 .
- ^ Clark, James. "Lenguaje de programación de bailarina, parte 1 - Conceptos" . Consultado el 16 de septiembre de 2020 .
- ^ "Bailarina reinventa Nube-Nativo Middleware como un lenguaje de programación " " . GlobeNewswire . Obtenido 09/16/2020 .
- ^ Warusawithana, Lakmal. "Repensar la programación: la red en el lenguaje" . Consultado el 16 de septiembre de 2020 .
- ^ Fernando, Anjana. "Repensar la programación: hacer que los diagramas de secuencia se enfríen de nuevo" . Consultado el 16 de septiembre de 2020 .
- ^ Fernando, Anjana. "Repensar la programación: sistema de tipos de redes" . Consultado el 16 de septiembre de 2020 .
- ^ Warusawithana, Lakmal. "Repensar la programación: del código a la nube" . Consultado el 16 de septiembre de 2020 .
- ^ Fernando, Anjana. "Repensar la programación: Observabilidad automatizada" . Consultado el 16 de septiembre de 2020 .
- ^ Ballerina Team (16 de septiembre de 2020). "Hola servicio mundial" . bailarina.io.
- ^ Ballerina Team (16 de septiembre de 2020). "Interacción del trabajador" . bailarina.io.
- ^ Ballerina Team (16 de septiembre de 2020). "Bloqueo unario de gRPC" . bailarina.io.
Otras lecturas
- Fernando, Anjana, Warusawithana, Lakmal (2020) Programación de bailarinas principiantes , Apress (parte de Springer Nature)
enlaces externos
- https://ballerina.io
- https://github.com/ballerina-platform/ballerina-lang Repositorio de Github.