Сорри, забыл поздороваться. Всем привет! @akogun@vladimirsitnikv@shelajevoleg@mitiaalexandrov Дано: Приложенька, которая на старте использует инструментирующий javaagent. (для упрощения, будем считать что это какой-нибудь aspectj) Хочется: Скомпилировать приложеньку в native image (GraalVM) так, чтобы при компиляции использовался не оригинальный байткод, а тот, который получается после инструментирования агентом.
Единственное, что нагуглил, это какие-то намёки что этого можно добиться с помощью Truffle. Но как именно, пока не очень понятно, надо детально разбираться. Может есть где-то статья хорошая по этому кейсу? Как не искал, не могу найти. Но я уверен, что я не один, кому этого хочется 🙂
Внимание конкурс! Собираем вопросы к Владимиру по теме его будущего доклада, автор лучшего получит бесплатный билет на JPoint, итоги подведем через неделю, вопросы пишите в этот чат.
надо сделать финальный байткод и скормить его в native image
Не, ну это я понимаю 😂 Вопрос как именно его сделать? Если в обычной жизни я не вижу его в физическом представлении, так как он живёт только внутри JVM, запущенной с JavaAgent’ом.
А есть тут спецы по котлину? Кто-нибудь знает как котлин компилятору скормить jdkшный модуль(java9+) ? В джаве это делается через —add-module, а вот в котлине...
Я aspectj как пример для понимания задачи указал. На его месте можно представить любой агент, который умеет инструментировать. Или есть какой-то универсальный механизм compile time weaving для любого агента?
Я aspectj как пример для понимания задачи указал. На его месте можно представить любой агент, который умеет инструментировать. Или есть какой-то универсальный механизм compile time weaving для любого агента?
Универсальный вряд ли. Но, если байткоды на лету не генерируются, то compile time это то, что нужно