芭蕾舞女演员是今年9月10日发布的最新编程语言1.0版本。 有超过一千种编程语言。 为什么需要另一种编程语言? 芭蕾舞女演员语言旨在简化称为集成的特定编程领域。 您可能是一名开发各种Web服务并打算将这些服务互连的开发人员。 然后,芭蕾舞女演员语言可能是您的下一个编程伴侣。
这篇文章旨在向您介绍Ballerina,这是一种灵活,功能强大且美观的编程语言,可帮助您实现各种集成需求。 您可以从Ballerinalang官方网站下载并安装Ballerina。
它是什么样子的?
当我说这是一种编程语言时,首先想到的是外观。 芭蕾舞女演员的语言语法是基于Java,Go和JavaScript等编程语言而形成的。 芭蕾舞女演员是一种静态类型的语言。 芭蕾舞女演员有nil,boolean,int,float,decimal和string作为基本数据类型。 例如,如果您需要定义一个整数,则语法如下。
整数总计= 99;
与其他语言一样,芭蕾舞女演员具有main方法,这是主要程序入口点。 您可以编写一个简单的“ hello world”,如下所示。
import ballerina/io;
public function main () {
io:println( "Hello, World!" );
}
除了常规的原始数据类型之外,芭蕾舞女演员还提供了各种非原始数据类型,例如数组,元组,地图,表,联合等。芭蕾舞女演员将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);
芭蕾舞女演员提供了内置库来实现各种功能。 在芭蕾舞女演员中,这称为模块。 模块的工作方式与Java包相同。 您可以将内置模块或自己的模块导入应用程序。 芭蕾舞女演员具有内置的日志记录,数学,编码,字符串,缓存,时间,文件处理以及许多其他模块。
语法的流控制与其他语言相同。 它支持语法“ if else”,“ while”和“ foreach”。 Foreach语法提供对数组和映射的迭代支持。 如果您正在寻找一种验证空值的有吸引力的方法,那么Ballerina将把Elvis运算符提供给Elvis运算符,以验证指定的变量是否为空。 语法为“ expression?:expressionIfNil”,下面是一个示例,用于验证变量x是否为null。
string elvisOutput = x ?: "value is nil" ;
芭蕾舞女演员的面向对象编程
芭蕾舞女演员确实为面向对象的编程提供了帮助。 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()
芭蕾舞女演员正在为封装提供帮助。 在这里,您可以使用适当的访问级别在对象内定义变量。 芭蕾舞女演员支持以下访问修饰符。
公共-随处可见
私人的-仅在同一对象内可见
无修饰符-仅在同一包装中可见。
您也可以在芭蕾舞女演员中使用抽象概念。 抽象是强大的OOP概念,在大型模块化软件的设计中至关重要。 您可以在芭蕾舞女演员中定义和重用抽象对象。 您可以使用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概念,以用芭蕾舞女演员的语言来完成OOP概念。 多态性也可以在Ballerina语言中实现,如下所示。 在这里,一个人员对象可以有多种类型,因为它是一个抽象类。
Person p = new Employee( 5 , "John" , "Doe" );
与芭蕾舞女演员语言整合
正如我在简介中前面提到的那样,芭蕾舞女演员是专门为解决集成问题而设计的。 我们生活在地球上成千上万的Web服务器正在运行并彼此交互的地球上。 早期的开发人员在将这些服务相互连接时遇到问题。 企业集成总线作为一种解决集成问题的方法而出现。 ESB模型提供了一种优雅的方式来将各种不同的服务彼此互连。 这些ESB产品的常见问题是配置困难且灵活性较低。
与ESB相比,芭蕾舞女演员更加用户友好,因此开发人员可以通过编码来设计系统。 芭蕾舞女演员提供内置库来解决各种集成问题。
集成的一般要求是在不同协议之间读取,转发和转换消息。 芭蕾舞女演员为HTTP,HTTPS,HTTP2,Websockets,GRPC,TCP,UDP等传输提供内置帮助。
芭蕾舞女演员可以同时充当客户端和服务器。 将请求发送到另一个端点很简单,因为它只需要三行代码。 您可以根据需要设置请求标头,从而轻松调用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);
}
}
}
芭蕾舞女演员还支持通过HTTP接口进行流式传输。 构建GRPC和基于Web套接字的服务器就像构建HTTP服务器一样简单明了。
当涉及可靠消息传递时,消息代理是集成的最重要方面之一。 如果您需要可靠地发送消息,则可以将Message Broker和Ballerina Integrator一起使用。 芭蕾舞女演员为ActiveMQ,RabbitMQ和NATS等著名消息代理提供帮助。 您可以仅使用几行Ballerina代码生成和接收消息,这使它成为与所有集成需求结合使用的最佳语言。
结论
在本文中,我试图解释Ballerina作为通用编程语言以及用于集成的专用编程语言的功能。 还有很多功能,例如线程,流,安全性以及对微服务的本机支持,这些我在这里没有解决。 我将在另一篇文章中向您详细说明这些功能。
您可以从他们的 官方网站 了解更多有关Ballerina语言的信息 。 在这里,您可以找到每种用例的示例实现。 您可以在 Twitter 上 关注我, 以了解有关技术知识的更多信息。 转到芭蕾舞女演员 下载 页面,然后立即尝试。 顾名思义,它是灵活,强大和美观的。
From: https://hackernoon.com/first-glimpse-of-ballerina-language-language-of-integration-q31x31jv