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

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


Ответы (2 шт):

Автор решения: user453575457

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

→ Ссылка
Автор решения: user7860670

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

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

→ Ссылка