История изменений
Исправление
stevejobs,
(текущая версия)
:
чем это отличается от инлайна?
гляди что можно сделать: берёшь асмовый код (или даже C++!) и пихаешь как строку.
поддержка IntelliJ IDEA дастся автоматически, она умеет распознавать строки, в которых внутри другие языки. Например, так всегда происходит с SQL и регэкспами.
если сохранишь этот текст в аннотацию (типа @Cpp(«yourcode»)), то можно будет обойтись базовыми штуками типа annotation processor. Апроцессоры отрабатывают на этапе компиляции, поэтому можно будет компилировать всё вместе - и джавакод, и всякий другой
но можно использовать Spring, и тогда хранить код можно будет где угодно, хоть в обычной строке внутри java-файла, хоть в отдельном cpp/asm файле (заюзав магию bean post processors и factory bean post processors), но это всё ещё будет статически
а можно заюзать Java Agents, и тогда можно устроить что-то типа полноценного динамического джита. Берём вызовы определённых методов и подменяем
но всё это даёт лютый оверхед, конечно. Поэтому самое ультимативное решение - это переходить на GraalVM, но не голую, придётся часть приватного апи расширить (сложно!)
Исходная версия
stevejobs,
:
чем это отличается от инлайна?
гляди что можно сделать: берёшь асмовый код (или даже C++!) и пихаешь как строку.
поддержка IntelliJ IDEA дастся автоматически, она умеет распознавать строки, в которых внутри другие языки. Например, так всегда происходит с SQL и регэкспами.
если сохранишь этот текст в аннотацию (типа @Cpp(«yourcode»)), то можно будет обойтись базовыми штуками типа annotation processor. Апроцессоры отрабатывают на этапе компиляции, поэтому можно будет компилировать всё вместе - и джавакод, и всякий другой
но можно использовать Spring, и тогда хранить код можно будет где угодно, хоть в обычной строке внутри java-файла, хоть в отдельном cpp/asm файле (заюзав магию bean post processors и factory bean post processors),