“Ballerina”可能成为集成的编程语言

Ballerina是今年9月10日发布的最新编程语言1.0版本。 有超过一千种编程语言。 为什么需要另一种编程语言? Ballerina语言旨在简化称为集成的特定编程领域。 您可能是开发各种Web服务并打算将这些服务互连的开发人员。 然后,Ballerina语言可能是您的下一个编程伴侣。

这篇文章旨在向您介绍Ballerina,这是一种灵活,功能强大且美观的编程语言,可帮助您实现各种集成需求。 您可以从Ballerinalang官方网站下载并安装Ballerina。

它是什么样子的?

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

整数总计= 99;

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

import ballerina/io;
public function main ()  {
    io:println( "Hello, World!" );
}

除了常规的原始数据类型之外,Ballerina还提供了各种非原始数据类型,例如数组,元组,地图,表,联合等。Ballerina将nil表示为括号“()”

变量的另一种特殊类型是“ anydata”数据类型。 此类型是()| boolean | int | float | decimal | string |(anydata | error)[] | map <anydata | error> | xml | table数据类型的并集。 anydata变量可以在期望纯值的地方使用。

由于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提供了用于实现各种功能的内置库。 在Ballerina中,这称为模块。 模块的工作方式与Java包相同。 您可以将内置模块或自己的模块导入应用程序。 Ballerina具有内置的日志记录,数学,编码,字符串,缓存,时间,文件处理以及许多其他模块。

语法的流控制与其他语言相同。 它支持语法“ if else”,“ while”和“ foreach”。 Foreach语法提供了对数组和映射的迭代支持。 如果您正在寻找一种验证空值的有吸引力的方法,那么Ballerina将把Elvis运算符提供给Elvis运算符,以验证指定的变量是否为空。 语法将为“表达式?:expressionIfNil”,下面是一个示例,用于验证变量x是否为null。

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”);”。 可以使用dot(“。”)运算符访问对象,该运算符与其他语言相同。

p1.getFullName()

Ballerina正在为封装提供帮助。 在这里,您可以使用适当的访问级别在对象内定义变量。 Ballerina支持以下访问修饰符。

公共-随处可见

私人的-仅在同一对象内可见

无修饰符-仅在同一包装中可见。

您也可以在Ballerina中使用抽象概念。 抽象是强大的OOP概念,在大型模块化软件的设计中必不可少。 您可以在Ballerina中定义和重用抽象对象。 您可以使用abstract关键字将对象转换为抽象对象。 示例抽象对象如下。

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

    function getFullName () returns string ;

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

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

type Employeeabstract 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 p =new Employee( 5 , "John" , "Doe" );

与Ballerina语言整合

正如我在简介中前面提到的那样,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" );
}

另一方面,您可以使用芭蕾舞演员语言创建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套接字的服务器就像构建HTTP服务器一样简单明了。

当涉及可靠消息传递时,消息代理是集成的最重要方面之一。 如果您需要可靠地发送消息,则可以将Message Broker与Ballerina Integrator一起使用。 Ballerina为ActiveMQ,RabbitMQ和NATS等著名消息代理提供帮助。 您可以仅使用几行Ballerina代码来生成消息和接收消息,这些代码使其成为与所有集成要求一起使用的最佳语言。

结论

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

您可以从他们的 官方网站 了解更多有关Ballerina语言的信息 在这里,您可以找到每种用例的示例实现。 您可以在 Twitter 关注我, 以了解有关技术知识的更多信息。 转到Ballerina 下载 页面,然后立即尝试。 顾名思义,它灵活,强大,美观。

翻译自: https://hackernoon.com/first-glimpse-of-ballerina-language-language-of-integration-q31x31jv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值