Методы в Java могут быть помечены native
, чтобы указать, что их реализация написана не в Java или в байт-коде, а скорее в чем-то зависящем от платформы. Например, операции ввода-вывода Java почти всегда реализуются как native
методы, так что они могут использовать преимущества базового оборудования или интерфейса ОС на компьютере.
Нет никакой гарантии того, что методы native
действительно реализованы. В реализации JVM от Sun (ныне Oracle) вы можете писать реализации для собственных методов, используя JNI для определения специально названных функций C, которые взаимодействуют с пользовательскими библиотеками для взаимодействия с кодом Java. Однако другая JVM могла бы реализовывать нативные методы совершенно по-другому. Фактически, сейчас я работаю над проектом по реализации JVM на JavaScript, и поэтому все нативные методы реализованы на JavaScript, а не на C.
Короче говоря, не существует "одного способа" реализации native
методов. Весь смысл в том, чтобы обеспечить максимальную гибкость реализации библиотек JVM и Java, поэтому чем меньше задано поведение, тем лучше.