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】
- 登录 发表评论
- 38 次浏览
最新内容
- 11 hours 59 minutes ago
- 12 hours ago
- 3 days 13 hours ago
- 4 days ago
- 5 days 13 hours ago
- 6 days 7 hours ago
- 6 days 7 hours ago
- 6 days 7 hours ago
- 6 days 7 hours ago
- 6 days 7 hours ago