Размер сборки простой программы - PullRequest
3 голосов
/ 29 февраля 2020

Я не понимаю, почему размер очень простой скомпилированной программы составляет около 8 МБ. Это не включает JVM, я полагаю?

Вот простая программа Ballerina

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];



}

, которая составляет 316 байтов. Когда я компилирую эту программу, размер получаемой банки составляет около 8 МБ.

У меня есть вопросы?

  1. Чего мне ожидать, если я добавлю новые модули? Будет ли размер резко расти?
  2. Что входит в эту банку? Включает ли он все стандартные модули?

Кстати, мне нравится идея языка интеграции. Будем надеяться, что все больше людей захотят забрать балерину. Всегда полезно выучить новый язык время от времени, особенно языки с новинками.

1 Ответ

5 голосов
/ 02 марта 2020

Сгенерированный jar настолько велик, потому что он упаковывает все зависимости, которые необходимы для запуска этой программы Ballerina, как jar. Он не упаковывает JVM или какой-либо код, который мы можем найти в JVM. Он упаковывает стандартные библиотечные модули, от которых зависит ваша программа, и их зависимости.

  1. При добавлении новых модулей оно не будет резко расти. Я ожидаю добавления килобайт (от 10 до 100 КБ)

  2. Библиотеки времени выполнения Ballerina (это занимает большую часть пространства) + стандартные библиотеки.

Примечание. Отредактировал ответ, чтобы отразить исправление @ Sameera.

...