Ballerina与其他编程语言有何不同?

40

Ballerina 是一种通用的、并发的、强类型的编程语言,具有文本和图形语法,可实现更好的集成。

  1. Ballerina 是否是解释性语言?
  2. Ballerina 不是解释性语言。

  3. 如何构建 Ballerina 程序?我们需要设置 Ballerina Home 或其他系统变量吗?
  4. 可以使用 Ballerina 编译器构建程序。不需要设置 Ballerina Home 或其他系统变量。

  5. Ballerina 如何支持依赖管理?是否有推荐的构建工具?
  6. Ballerina 支持 Maven 和 Gradle 等构建工具,并且使用 Ballerina Central 进行依赖管理。

  7. Ballerina 适合做哪些任务?只适合做特定任务,如各种系统集成吗?
  8. Ballerina 适用于各种任务,特别擅长处理分布式系统和微服务,以及数据集成和 API 集成等领域。

  9. 在哪里可以找到语言规范,并且 Ballerina 支持哪些类型?
  10. 可以在 Ballerina 官方网站上找到语言规范。Ballerina 支持许多常见的类型,例如整数、浮点数、布尔值、字符串、数组等。

4个回答

29
  1. Ballerina是一种解释型语言吗?

Ballerina是一种编译型编程语言。它会编译成一个平台中立的二进制形式,然后由Ballerina运行时解释执行。

  1. 如何构建Ballerina程序?我们需要设置Ballerina Home或其他系统变量吗?

在Ballerina中不存在系统变量概念。您可以从https://ballerina.io/downloads/下载并安装操作系统特定的安装程序。

运行Ballerina程序

使用ballerina run命令来编译和运行Ballerina程序。

$ ballerina run hello.bal
Hello, World!

使用ballerina build命令生成带扩展名为"balx"的静态链接可执行二进制文件。然后使用ballerina run命令运行程序。

$ ballerina build hello.bal
$ ls 
hello.bal hello.balx
$ ballerina run hello.balx
Hello, World!
一个Ballerina程序通常由多个Ballerina包组成。一个包是源文件的集合,它定义了一个命名空间和该命名空间中所有源文件中的符号。如果您想引用另一个包中定义的符号,您需要首先导入该包,然后才能使用包名称引用该符号。
当您想要执行或构建Ballerina程序时,Ballerina将使用您的程序目录、内置存储库(Ballerina发行版包含所有核心库包以及一些第三方连接器包)或Ballerina存储库目录解析所有导入的包。Ballerina存储库是可在您的计算机上使用的本地存储库。
我们将来会开发工具来管理Ballerina存储库。

芭蕾舞者是否支持响应式编程? - Nafaz M N M

15

Ballerina是一种解释性语言吗?

Ballerina是被编译后再解释执行的。

如何构建Ballerina程序?我们需要设置Ballerina Home或其他系统变量吗?

你可以使用你喜欢的文本编辑器或一些IDE(目前Ballerina支持vim、IDEA、Sublime Text 3、VCS和Atom)来编写Ballerina程序。当你有源bal文件时,你可以将其打包为一个归档文件(库、服务或主程序),或者直接运行单个bal文件。 例如:ballerina run main <path to bal path>(或者你可以给出归档文件的路径), 或者ballerina run service <path to archive (or you can give the path to archive .bsz)>

你不需要设置Ballerina home,它会被Ballerina自动设置。但你需要设置JAVA_HOME。

Ballerina如何支持依赖管理?有没有推荐的构建工具?

这与Go语言非常相似,请参考文档以获得更多信息。

推荐使用Ballerina进行哪些任务?它只适合于诸如各种系统集成之类的特定任务吗?

如果你的程序包含大约80%或更多的集成场景,那么Ballerina将是一个非常好的尝试对象。但如果集成部分相当少(<20%),那么你可以考虑其他东西。如果部分差异很大,则可以根据你的用例进行决策。

我在哪里可以找到语言规范,Ballerina支持哪些类型?

请参阅GitHubBallerinalang获取更多信息。


2
应该使用ballerina run main <package_path>命令运行。 - Suhan Dharmasuriya
2
未来会有正式的“Ballerina参考”吗? - Jan
4
它基于Java吗? - Asif Patel
4
Ballerina语言是用Java编写的,但它是一个全新的编程语言,从头开始构建。它受到现代编程语言(如Go)和广泛接受的编程语言(Java、Python、C)的启发。 - Chanaka udaya
2
Ballerina语言规范的最新版本可在https://github.com/sanjiva/ballerina/tree/master/docs/specification上找到。 - srinath_perera
显示剩余2条评论

11

没错,这正是我们的目的——Ballerina 将具备良好的理解力,了解如何编写预期性能良好、可靠和具有弹性以及安全工作的分布式交互。

我们没有考虑过事件流用于支持Hystrix仪表板的连接器,但我们会考虑的!


10

一流的服务和actor的表现非常出色,使其成为集成的最佳选择。但从开发者的角度来看——这些只是抽象概念,在任何现代语言中都可以轻松地以可重用的方式实现。因此,乍一看似乎并不是很重要。但如果你仔细看一下,ballerina 不仅提供了这些抽象 OOTB,而且还负责像 HTTP 连接池、流式传输等性能方面的事情,使得开发者无需关注这些问题。值得注意的是,Spring 例如在 RestTemplate 中没有提供连接池,并且大多数开发者直到应用程序性能变得非常糟糕时才会担心这个问题。

Ballerina 应该提供OOTB或强制执行所有集成的最佳实践,就像所宣传的那样,我希望能够添加更多的最佳实践,特别是断路器。如果我们能够获得连接器的事件流,那么使用 Netflix 的 hystrix 仪表板进行监视就会更加方便。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接