Ballerina 1.0 es un lenguaje de programación que se caracteriza por ser de código abierto y que ha sido desarrollado por la empresa WSO2 durante 3 años de trabajo. Sus destinatarios son los desarrolladores, que pueden emplearla para escribir software de manera útil y rápida en una era definida por la existencia de la nube. La compañía de open source WSO2 comenzó a desarrollar la idea de obtener el mejor Bus de Servicio Empresarial (ESB) del mercado alrededor de 2009, y en 2016 ya comenzó a desarrollar un lenguaje de programación completo. En febrero de 2017 llegó el preestreno de Ballerina, y en este momento ya se trata de una solución apreciada por los profesionales del sector.
¿Qué es Ballerina 1.0?
Ballerina 1.0 es el primer lenguaje basado en el concepto de que la programación moderna de aplicaciones implica la creación y el uso de APIs. Este lenguaje de código abierto contribuye a una simplificación completa de la manera en la que los desarrolladores construyen e implementan aplicaciones y servicios distribuidos nativos en la nube.
La plataforma Ballerina responde al incremento de los servicios digitales, las aplicaciones móviles y los dispositivos conectados, que están dando lugar a un acusado incremento de endpoints. Dentro de este apartado se incluyen APIs, microservicios, procesos, flujos de datos, aplicaciones sin servidor y otros recursos y activos digitales. Frente a ello, los desarrolladores requieren hoy de herramientas y enfoques más actualizados. En concreto, los servicios ESB tienen dificultades para dar respuesta al modo en el que los programadores ponen en marcha e implementarán aplicaciones y servicios distribuidos nativos de la nube. El hecho de que Ballerina 1.0 sea un programa de código abierto hace mucho más sencilla y eficiente su labor, ya que se trata de un middleware nativo de la nube como lenguaje de programación.
Ballerina 1.0 supone un gran paso hacia adelante en el ámbito del desarrollo de aplicaciones distribuidas nativas en la nube, puesto que deja atrás las tradicionales fronteras que existen entre el desarrollo de aplicaciones y la integración. Con ella se obtiene un rendimiento superior, más rapidez y mejor adaptabilidad. De manera indirecta está, además, marcando el final de la utilización de la ESB para llevar a cabo todos estos procesos de desarrollo.
¿Cuáles son las características de Ballerina 1.0 y en qué se diferencia de la versión anterior?
Ballerina 1.0 reinventa el middleware nativo de la nube. Se trata del primer lenguaje basado en el concepto de que la programación moderna de aplicaciones implica la creación y el consumo de APIs. Uno de sus principales fundamentos es la noción de diagramas de secuencia, que encajan de manera exacta con con los patrones de microservicios y con el desarrollo nativo de la nube. La creación de APIs RESTful y gRPC es concisa, simple y clara. El desarrollo de APIs en Ballerina por parte de los programadores es más efectivo que en otros lenguajes porque la sintaxis está diseñada en torno a servicios, puntos finales, tipos de red, como JSON y ProtoBuf, y las anotaciones simples crean automáticamente despliegues para Kubernetes, Docker e Istio.
Ballerina 1.0 incorpora algunos cambios relevantes en esta última versión. Uno de ellos es la mejora el lenguaje que utiliza, lo que incluye modificaciones en la sintaxis y la semántica. Cuenta con nuevas características, implementa algunos módulos en biblioteca estándar o rediseña las herramientas para desarrolladores.
Lenguaje con funciones asociadas a tipos básicos
Respecto al lenguaje, una de las novedades es que introduce un conjunto de módulos que contienen funciones asociadas a los tipos básicos. De manera conjunta, estos módulos se denominan biblioteca lang, y cada tipo básico cuenta con un módulo de biblioteca lang que le corresponde. Además, también existe el módulo de valor lang.value, que contiene funciones comunes para todos los tipos.
Tiempo de ejecución
En cuanto al tiempo de ejecución, esta versión presenta una nueva implementación, jBallerina, que está dirigida a la JVM. El compilador jBallerina produce un archivo JAR ejecutable para un programa de Ballerina transformando directamente las fuentes de Ballerina en código bytecode Java. Con jBallerina, la anterior implementación de tiempo de ejecución de Ballerina (BVM) será desaprobada y eliminada. jBallerina viene con mejoras significativas de rendimiento sobre la BVM.
Cambios en la biblioteca estándar
Respecto a los cambios en la biblioteca estándar, este lenguaje de programación permite ahora:
- Renovar el conector NATS para que sea compatible tanto con NATS como con los servidores de streaming.
- Introducir los errores estándar de la biblioteca por módulos como reemplazo del error incorporado. Por ejemplo, los tipos de error HTTP de Ballerina incluyen http:ClientError, http:ListenerError, http:ClientAuthError, etc.
- Introducir la capacidad de contratar proveedores y manejadores personalizados para la autenticación de entrada/salida.
- Introducir la autenticación de entrada OAuth2.
- Introducir módulos propios para diferentes mecanismos de autenticación (JWT, LDAP, OAuth2 etc.).
- Introducir soporte de conocimiento previo al cliente HTTP/2.
- Añadir soporte de control de flujo al cliente y servidor HTTP/2.
- Introducir el soporte de transformación XSLT.
- Los módulos de cliente de la base de datos ballerina/h2 y ballerina/mysql y el módulo ballerina/sql han sido descontinuados. El módulo ballerinax/java.jdbc client puede ser utilizado para interactuar con bases de datos relacionales.
- Introducir soporte para mensajería con Kafka.
- Los módulos RabbitMQ, JMS, Artemis, WebSub y LDAP están disponibles a través de Ballerina Central.
- Las APIs para realizar operaciones del sistema de archivos, como crear archivos, crear directorios, mover directorios, renombrar archivos, recuperar metadatos de archivos, copiar archivos, etc., están ahora disponibles a través del módulo de bailarinas/archivos.
- La mayoría de las APIs del módulo de balerina/codificación fueron eliminadas ya que ahora son soportadas a través de la librería lang.
- Se introdujeron tres nuevos módulos de utilidades para manipular los tipos de cadenas, json y xml incorporados.