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

“Ballerina”可能成为集成的编程语言相关推荐

  1. Ballerina语言有望改善应用程序集成

    Ballerina语言是编程领域的新手. 它有望简化企业应用程序的集成开发 . 它支持多种原语,旨在减轻Java开发人员通过JSON, REST和XML接口针对API进行编码时通常面临的许多负担. 还 ...

  2. Ballerina重塑了云原生编程

    云原生编程本质上涉及使用远程端点:微服务,无服务器,API,WebSocket,软件即服务(SaaS)应用程序等. Ballerina是一种云原生,通用,并发,事务性,静态和强类型的编程语言,具有文本 ...

  3. Ballerina 1.0版增加了Java互操作性并以JVM为目标

    因为Ballerina1.0登上舞台,您才可以开始练习您的喷气帆船比赛. 经过3年的工作,1.0版于2019年9月9日发布. Ballerina是一种开源编程语言和平台,专注于云时代的应用程序. 在介 ...

  4. ballerina 学习 三十二 编写安全的程序

    ballerina编译器已经集成了部分安全检测,在编译时可以帮助我们生成错误提示,同时ballerina 标准库 已经对于常见漏洞高发的地方做了很好的处理,当我们编写了有安全隐患的代码,编译器就已经提 ...

  5. 2022有哪些不容错过的后端技术趋势

    本文来源:腾讯技术工程(id:Tencent_TEG) 前言 最近几年注定是不平凡的时间,虽疫情肆虐,但我国互联网产业展现出巨大韧性,不仅为精准有效防控疫情发挥了关键作用,还在数字基建.数字经济等方面 ...

  6. 2021 有哪些不容错过的后端技术趋势

    前言 2020 年注定是不平凡的一年,虽疫情肆虐,但我国互联网产业展现出巨大韧性,不仅为精准有效防控疫情发挥了关键作用,还在数字基建.数字经济等方面取得了显著进展,成为我国应对新挑战.建设新经济的重要 ...

  7. 五款最优秀的java微服务框架

    微服务被广泛用于创建多功能的应用程序,通过组合每个功能部分并将它们逐层放在一个单元中.许多人可能没有意识到微服务是一组小型服务中制作单个应用程序的方法,每个服务都独立运行(进程). 换句话说,微服务更 ...

  8. 一篇文章概括——2021 不容错过的后端技术趋势(强烈推荐)

    前言 2020 年注定是不平凡的一年,虽疫情肆虐,但我国互联网产业展现出巨大韧性,不仅为精准有效防控疫情发挥了关键作用,还在数字基建.数字经济等方面取得了显著进展,成为我国应对新挑战.建设新经济的重要 ...

  9. 一文盘点三大顶级Python库(附代码)

    来源:开源最前线 本文约1500字,建议阅读5分钟. 本文为你分享最受数据科学青睐的3个顶级的Python库. Python在许多方面有着强大的吸引力 - 例如效率.代码可读性和速度方面,也正因为如此 ...

最新文章

  1. layui 表格内容写temple函数_layui表格-template模板的三种用法
  2. python壁纸程序代码_python设置windows桌面壁纸的实现代码
  3. Python-可视化Evoked数据
  4. python工具-文件及文件夹移动及处理
  5. 软件体系结构的风格(转载)
  6. FPGA重要设计思想
  7. mysql切换用户sql语句,MySQL用户管理及SQL语句详解
  8. UVA12207 LA4493 That is Your Queue【双端队列】
  9. 华为鸿蒙os2.0更新,鸿蒙OS2.0更新了吗?更新方法、更新包大小、使用体验等都来了...
  10. mnist数据集下载地址
  11. Linux命令之显示日期时间date
  12. android MD风格组件(BottomNavigationView,配合lottie使用) (三)
  13. 尚学堂怎么样?给你讲讲我的亲身经历
  14. Caffe:图像数据转换成ldb(leveldb/lmdb)文件
  15. 全国各地区PPP项目数+投资额(2016-2021)
  16. (八)理解迭代思维(80)
  17. Java最简单的实现脏话屏蔽
  18. 为我赵灵儿点赞,express-node-mysql-react全家桶
  19. 腾讯QQ2006正式 狂人DIY版 Ver20070120
  20. 几种常见的传统汽车总线传输通信技术

热门文章

  1. 如何在Apache-Maven官网下载到自己想要的版本
  2. Java基础语法学会了,JavaScript瞄一眼就行,瞅第二眼我看不起你!
  3. 如何了解舆情传播的平台及路径?
  4. ENQUEUE_MIGRATED
  5. java double输出 lf_为什么double类型输入(scanf)用%lf,输出(printf)用%f?
  6. vue导入excel进度条_vue中使用excel导入导出
  7. truncate table很慢之enq: RO - fast object reuse和local write wait等待分析
  8. M1 Mac上更好的 Golang 使用方案
  9. Django设置中国时区问题
  10. 一文搞懂K-means聚类算法