Рубрика «invokedynamic»

Блогеры и авторы, пытающиеся быть на передовой, уже немало писали про проект Amber в Java 10. В этих статьях обязательно упоминается вывод типов локальных переменных, улучшения enum и лямбд, иногда пишут про pattern matching и data-классы. Но при этом незаслуженно обходится стороной JEP 303: Intrinsics for the LDC and INVOKEDYNAMIC Instructions. Возможно, потому что мало кто понимает, к чему это вообще. Хотя любопытно, что именно об этой фиче ребята из NIX_Solutions фантазировали на Хабре год назад.

Широко известно, что в виртуальной машине Java, начиная с версии 7, есть интересная инструкция invokedynamic (она же indy). Про неё многие слышали, однако мало кто знает, что она делает на самом деле. Кто-то знает, что она используется при компиляции лямбда-выражений и ссылок на методы в Java 8. Некоторые слышали, что через неё реализована конкатенация строк в Java 9. Но хотя это полезные применения indy, изначальная цель всё же немного другая: делать динамический вызов, при котором вы можете вызывать разный код в одном и том же месте. Эта возможность не используется ни в лямбдах, ни в конкатенации строк: там поведение всегда генерируется при первом вызове и остаётся постоянным до конца работы программы (всегда используется ConstantCallSite). Давайте посмотрим, что можно сделать ещё.

Читать полностью »

Этот анонс посвящается тем, кто ныл всю зиму, что на JUG.ru давно не было хардкора.

В среду, 11 марта, в петербургском офисе компании Oracle состоится встреча JUG.ru c Владимиром Ивановым, инженером команды HotSpot JVM.

Тема встречи — инструкция invokedynamic и ее реализация в JDK/JVM.

Владимир Иванов, Oracle — Глубокое погружение в invokedynamic - 1

В Java 7 на уровне байткода появилась новая инструкция — invokedynamic. Инструкция с программируемым связыванием позволила динамическим языкам на Java платформе достичь новых высот производительности. JRuby активно использует invokedynamic начиная с Java 7, а в Java 8 появилась среда исполнения для JavaScript, полностью основанная на новом API.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js