В чём разница между intrinsic и native методами в Java?

Рейтинг: 3Ответов: 2Опубликовано: 08.04.2023

Объясните, пожалуйста, в чём разница между intrinsic и native методами Java?

Ответы

▲ 3Принят

intrinsic - это известные компилятору низкоуровневые функции, которые он позволяет эффективно выполнять и агрессивно оптимизировать вызывающий код. Обычно это конкретные операции, для которых (JIT) компилятор может сразу вставлять соотв. инструкции, не тратя времени на обычные вызовы.

native - это функции с С интерфейсом, реализованные в сторонних библиотеках (обычно на низкоуровневых языках типа С/С++ или ассемблере), с которыми java рантайм может взаимодействовать посредством JNI. Их вызов очень накладный, что должно компенсироваться эффективной реализацией.

▲ 3

Реализация native методов не известна для Java, это полностью «черный ящик» это создает дополнительные расходы памяти-времени при вызове такой функции и главное не позволяет оптимизировать код так, как это возможно для intrinsic (где реализация известна и Java код может быть заменен оптимизированными инструкциями в зависимости от многих факторов - платформы, процессора и прочего)