LINUX.ORG.RU

История изменений

Исправление 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),