跳转到主要内容
Chinese, Simplified

Ballerina是今年9月10日发布的最新的编程语言1.0版本。世界上有一千多种编程语言。你为什么需要另一种编程语言?旨在简化称为集成的特定编程领域的芭蕾舞语言。您可能是开发不同类型web服务并打算互连这些服务的开发人员。那么芭蕾舞语言可能会成为你的下一个编程伙伴。

这篇文章旨在向您介绍Ballerina,它是一种灵活、强大、漂亮的编程语言,可以帮助您实现任何类型的集成需求。您可以从芭蕾舞团官方网站下载安装芭蕾舞女。

它看起来像什么?

当我说这是一种编程语言时,您首先想到的是它的外观。芭蕾舞语言语法是基于Java、Go和JavaScript等编程语言形成的。Ballerina是一种静态类型语言。Ballerina有nil, boolean, int, float, decimal和string作为基本的数据类型。例如,如果需要定义整数,语法应该如下所示。

int total = 99;

与其他语言一样,Ballerina也有main方法,这是主要的程序入口点。可以编写一个简单的“hello world”,如下所示。

import ballerina/io;

public function main() {

    io:println("Hello, World!");

}

除了常规的原语数据类型外,Ballerina还提供了各种非原语数据类型,如数组、元组、映射、表、联合等。用括号"()"表示nil

变量的另一种特殊类型是“anydata”数据类型。这个类型是一个联合()|布尔|int|浮点|十进制|字符串|(anydata|error)[]|map |0 xml |1表数据类型。任何数据变量都可以用在纯值的地方。

因为Ballerina是专门为构建在网络上操作的应用而设计的,所以它本身就支持JSON和XML。在JavaScript中可以轻松地定义JSON变量,如下所示。

json user = {
         fname: "Peter",
         lname: "Stallone",
         "age": age,
         address: {
             line: "20 Palm Grove",
             city: "Colombo 03",
             country: "Sri Lanka"
         }
    };
io:println(user.address.country);

同样,您也可以定义XML对象并与之交互。

xml x1 = xml `<book>The Lost World</book>`;
io:println(x1);

Ballerina提供了用于实现不同类型功能的内置库。在《芭蕾舞女》中,这叫做模块。模块的工作方式与Java包相同。您可以将内置模块或自己的模块导入应用程序。Ballerina有内置的日志、数学、编码、字符串、缓存、时间、文件处理和更多模块。

流控制的语法与其他语言相同。它提供对语法“if else”、“while”和“foreach”的支持。Foreach语法提供了对数组和映射的迭代支持。如果您正在寻找验证null的有效方法,那么Ballerina将使用to Elvis操作符来验证指定的变量是否为null。语法会是'表达式?: expressionIfNil,下面是一个验证变量x是否为空的示例。

string elvisOutput = x ?: "value is nil";

使用Ballerina进行面向对象编程

Ballerina确实为面向对象编程提供了帮助。Ballerina OOP语法似乎更接近Python OOP语法。下面是一个使用构造函数定义对象的示例。

type Person object {
    public int age;
    public string firstName;
    public string lastName;

    function __init(int age, string firstName, string lastName) {
        self.age = age;
        self.firstName = firstName;
        self.lastName = lastName;
    }

    function getFullName() returns string {
        return self.firstName + " " + self.lastName;
    }

    function checkAndModifyAge(int condition, int a);
};

function Person.checkAndModifyAge(int condition, int a) {

    if (self.age < condition) {
        self.age = a;
    }
}

实例化对象是简单而直接的,如“Person p1 = new(5, " John ", " Doe ");”。对象可以通过点(" . ")操作符访问,这和其他语言是一样的。

p1.getFullName()

芭蕾舞女为封装提供帮助。在这里,您可以在具有适当访问级别的对象中定义变量。Ballerina支持以下访问修饰符。

  • public -随处可见
  • private -只在同一对象中可见
  • 没有修饰符-只在同一个包中可见。

您还可以使用Ballerina的抽象概念。抽象是一种强大的面向对象概念,在大型模块化软件的设计中至关重要。您可以在ballerina中定义和重用抽象对象。通过使用abstract关键字,可以将对象转换为抽象对象。示例抽象对象如下所示。

type Person abstract object {
    public int age;
    public string firstName;
    public string lastName;

    function getFullName() returns string;

    function checkAndModifyAge(int condition, int a);
};

您可以重用“Person”对象,如下所示重用Person对象中的变量和方法。

type Employee abstract object {

    *Person;   
    public float salary;

    function __init(int age, string firstName, string lastName) {
        self.age = age;
        self.firstName = firstName;
        self.lastName = lastName;
    }
    function getSalary() returns float;
};

OOP还有一个称为多态性的剩余概念,用于完成Ballerina语言中的OOP概念。多态也可以在Ballerina语言中实现,如下面的代码段所示。在这里,person对象可以有许多类型,因为它是一个抽象类。

Person p = new Employee(5, "John", "Doe");

融入芭蕾舞女语言

正如我在前面的介绍中提到的,Ballerina是专门为解决集成问题而设计的。我们生活在一个有数千台web服务器在运行并相互交互的世界里。早期的开发人员在连接这些服务时遇到了问题。企业集成总线作为集成问题的解决方案应运而生。ESB模型提供了一种优雅的方式来互连不同类型的服务。这些ESB产品的共同问题是难以配置和灵活性较差。

与ESB相比,Ballerina更加用户友好,因此开发人员可以通过编码来设计系统。Ballerina提供了内置库来解决各种集成问题。

集成的一般要求是在不同的协议之间读取、转发和转换消息。Ballerina为HTTP, HTTPS, HTTP2, Websockets, GRPC, TCP, UDP等传输提供内置的帮助。

Ballerina既可以作为客户机,也可以作为服务器。向另一个端点发送请求很简单,因为它只需要三行代码。通过根据需要设置请求头,可以轻松调用REST API后端。因为Ballerina本身就支持JSON,所以您可以直接在软件中操作JSON内容,而不需要从第三方导入模块。

import ballerina/http;

http:Client clientEndpoint = new("https://postman-echo.com");
public function main() {
    var response = clientEndpoint->get("/get?test=123");
}

另一方面,您可以使用ballerina语言创建HTTP服务器。您可以使用内置的安全特性来保护您的HTTPS链接。

import ballerina/http;
import ballerina/log;
http:ServiceEndpointConfiguration helloWorldEPConfig = {
    secureSocket: {
        keyStore: {
            path: "${ballerina.home}/bre/security/ballerinaKeystore.p12",
            password: "ballerina"
        }
    }
};

listener http:Listener helloWorldEP = new(9095, config = helloWorldEPConfig);

@http:ServiceConfig {
    basePath: "/hello"
}
service helloWorld on helloWorldEP {
    @http:ResourceConfig {
        methods: ["GET"],
        path: "/"
    }
    resource function sayHello(http:Caller caller, http:Request req) {
        var result = caller->respond("Hello World!");
        if (result is error) {
            log:printError("Error in responding ", err = result);
        }
    }
}

Ballerina还通过HTTP接口提供流支持。构建基于GRPC和web socket的服务器就像构建HTTP服务器一样简单直接。

就可靠的消息传递而言,消息代理是集成最重要的方面之一。如果需要可靠地发送消息,可以使用Message Broker和Ballerina Integrator。Ballerina为著名的消息代理(如ActiveMQ、RabbitMQ和NATS)提供了帮助。您只需使用几行芭蕾舞演员代码就可以生成和接收消息,这使它成为处理所有集成需求的最佳语言。

结论

在本文中,我试图解释Ballerina作为通用编程语言和用于集成的专用编程语言的功能。还有很多特性,如线程、流、安全性和对微服务的本机支持,我在这里没有讨论。我将在另一篇文章中向您详细阐明这些特性。

原文:https://hackernoon.com/first-glimpse-of-ballerina-language-language-of-integration-q31x31jv

本文:http://jiagoushi.pro/node/1359

讨论:请加入知识星球【快速和低代码开发】或者小号【it_training】或者QQ群【11107767】

Tags
 
Article
知识星球
 
微信公众号
 
视频号