一个简单程序的构建大小

Rud*_*olf 3 ballerina

我不明白为什么一个非常简单的编译程序的大小约为 8Mb。这不包括我假设的 JVM?

这是一个简单的芭蕾舞女演员程序

import ballerina/io;

type Score [string, int, int];

public type Person object {
    int age = 0;

    public function allowedToDrink() returns boolean {
        return self.age > 17;
    }

};


public function main() {

    io:println("Hello, World");
    Score result = ["a", 10, 10];



}
Run Code Online (Sandbox Code Playgroud)

这是 316 字节。当我编译这个程序时,生成的 jar 大约是 8Mb。

我的问题是?

  1. 如果我添加新模块,我可以期待什么?规模会急剧增长吗?
  2. 这个罐子包括什么?它是否包括所有标准模块?

顺便说一句,我确实喜欢集成语言的想法。让我们希望更多的人愿意拿起芭蕾舞女演员。时不时地学习一门新语言总是一个好主意,尤其是具有新颖性的语言。

Dha*_*aya 5

生成的 jar 是如此之大,因为它打包了所有需要独立运行 Ballerina 程序的依赖项作为 jar。它不打包 JVM 或我们可以在 JVM 中找到的任何代码。它确实打包了您的程序所依赖的标准库模块及其依赖项。

  1. 添加新模块时,它不会大幅增长。我期待增加千字节(10kb 到 100kb)

  2. Ballerina 运行时库(这占用了大部分空间)+ 标准库。

注意:编辑了答案以反映@Sameera 的更正。

  • 我想在这里澄清一些事情。Ballerina编译器不会将所有标准库模块打包到可执行jar中。它仅打包您导入的标准库模块及其传递依赖项。 (2认同)