Size: a a a

2018 October 06

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
Oleg Shelajev
Ну так если случается java -jar ... И вперёд?
это сложно для пользователя, и надо код переписывать специально
источник

OS

Oleg Shelajev in graalvm_ru
В смысле переписывать? Все что запускается на обычной jdk, запускается на GraalVM
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
на native image не запускается. На aot не запускается.
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
я про код, который одинаково хорошо работает, под чем бы ты его не запустил
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
> у так если случается java -jar ... И вперёд?

по этой логике можно было бы спросить: а зачем нам write once run anywhere? А зачем нам стандарты с множественной реализацией? Ну сделали мы OpenJDK, заточили его для работы только под Linux и достаточно ))))
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
представь, что вначале ты просто писал приложение, и тебе было наплевать, сколько оно запускается. А потом тебе захотелось, чтобы оно запускалось быстро. И дальше у тебя tradeoff: можно променять производительность GC на скорость запуска
источник

OS

Oleg Shelajev in graalvm_ru
Ага, или просто улучшить скорость запуска, не?
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
или наоборот. Ты делал нативные приложения, чтобы запускались быстро. А потом понял, что бинарники - это стремно, потому что их нужно компилировать 3 раза подо все платформы. Взял и перетащил этот код на обычную джаву в JIT режиме, и все, не надо больше ничего компилировать
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
Oleg Shelajev
Ага, или просто улучшить скорость запуска, не?
если код запускается во всех режимах одновременно, ты можешь изменять приоритеты просто изменяя среду запуска. Ничего не переписывая и не меняя. Это же круто, не?
источник

OS

Oleg Shelajev in graalvm_ru
В общем и целом это конечно звучит хорошо, но зачем в ahead of time compiled приложении dynamic classsloading я все равно не понимаю
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
потому что у тебя вагон легаси кода, в котором используется динамический класслоадинг
источник

OS

Oleg Shelajev in graalvm_ru
Так, я плохо объясняю, я понимаю как это применить, как эти полезно и все такое
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
если для переноса с JDK 6 на JDK 11 надо поправить пару названий пакетов - это одно, это легко и просто чинится. Если же нужно менять код по смыслу - то все, приплыли
источник

OS

Oleg Shelajev in graalvm_ru
А принципиально физический смысл явления не понимаю
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
поэтому в Excelsior JET имеется JIT компилятор, несмотря на то что оно AOT-fist.
источник

e

eshch in graalvm_ru
олег правильно говорит. кроме легаси хочется чтоб оно просто все работало во всех режимах и ты не задумываешься, просто выбираешь какой хочешь
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
ты компилируешь джетом что-то замшелое, и оно просто компилируется. Без изменения кода, без ничего. Берет и работает. Но да, в тех местах где требуется класслоадинг - там будет деградация перфоманса в рантайме, потому что включится джит.
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
eshch
олег правильно говорит. кроме легаси хочется чтоб оно просто все работало во всех режимах и ты не задумываешься, просто выбираешь какой хочешь
только вот это всего лишь мечта =)
источник

e

eshch in graalvm_ru
а уж зачем везде нагородили класс лоадинг, это другой вопрос. кому-то принципиально грузить в рантайме классы. может придумали супер кастомизированную архитектуру, где без перепусков все гоняют. хотя с современными тенденциями в сторону облаков, это все ненужное и если надо тебе кастомизацию кода, то сделай в пайплайн запуска компиляцию. кстати, можно прекомпилировать классы для динамической загрузки.
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in graalvm_ru
Насколько помню, например, с помощью Джета можно сконпелировать и запустить Eclipse. В AOT-режиме. Оно запускается сильно быстрее. Но оно временами будет запускать потом JIT, когда надо. А вот с помощью GraalVM Compiled запустить Eclipse нельзя принципиально. Вот и весь физический смысл вопроса.
источник