Как стать автором
Обновить
6
0
Владислав Воячек @voyachek

Разработчик Java

Отправить сообщение
Вот с «домиком» тут интересная штука. Разработчики SubstrateVM утверждают, что ничего лишнего туда не попадает, следствие этого — необходимость указывать случаи рефлекшена и включаемые ресурсы. То есть сборщик просматривает весь граф выполнения (из-за этого долгая сборка) и включает туда только тот код который может выполниться из программы, ничего лишнего. Сборка программы которая печатает «привет мир» занимает 30 секунд и весит 2.5 МБ. То есть какого-либо обязательного «домика» в десятки мегабайтов, как электрон, она не таскает. Да, программа с подключением двух фреймворков и JDBC драйвера уже весит 70МБ и сборка занимает пять минут, это и на маленькую утилиту она уже не тянет.
Существование такой возможности, как standalone приложения, открывает некоторые горизонты, куда ява особо и не ходила: инструменты такого класса как докер, утилиты с мгновенным запуском, то есть туда где обычно писались программы на C/C++, или на Go. Можно конечно выучить эти языки, а можно и остаться на знакомом. Ведь не заставишь же пользователя небольшой утилиты устанавливать ради нее какую то яву машину, выяснять совместимость ява машин разных версий и запускаемой утилиты. Да, есть вариант распространять яву машину с утилитой, это уже не простой бинарник будет, а набор файлов, какой то скрипт запуска и JIT все равно потребуется, и при запуске маленькой программы все равно есть ощутимые задержки, пусть даже потом она отработает мгновенно.
Какую-то серьезную проверку я пока не делал. Скорее всего это будет тема следующей статьи. По ощущениям, памяти в бинарнике тратится меньше, хотя бы за счет того что метаданные классов по умолчанию не попадают в бинарник и класс-спейс не занят ими. По процессору думаю будет почти также — если конечно «прогреть» jar, чтобы время на JIT не тратилось. Хотя по пресс-релизам Graal проводит более серьезные оптимизации чем традиционный JIT.
Я вижу себе это так: расширение области применения языка Java. Действительно, там где сейчас Java сильна, особо нет смысла делать ее бинарной. А вот чтобы раздвинуть границы этой области — возможность создавать бинарники — сильный аргумент. Вот есть Golang, он так умеет с самого начала, и на нем написаны замечательные программы: Consul, Docker в которых отсутствие требования установки какой то виртуальной машины скорее плюс чем минус.

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность