Это немного спорный вопрос на самом деле.Собственные интерфейсы Java - это языковая функция, позволяющая определить вызов функции в Java, который будет передан коду, не являющемуся Java, в частности, встроенному в платформу.Если вы посмотрите на FileOutputStream.java в src.zip вашего SDK, вы увидите код, подобный следующему:
/**
* Opens a file, with the specified name, for writing.
* @param name name of file to be opened
*/
private native void open(String name) throws FileNotFoundException;
/**
* Opens a file, with the specified name, for appending.
* @param name name of file to be opened
*/
private native void openAppend(String name) throws FileNotFoundException;
/**
* Writes the specified byte to this file output stream. Implements
* the <code>write</code> method of <code>OutputStream</code>.
*
* @param b the byte to be written.
* @exception IOException if an I/O error occurs.
*/
public native void write(int b) throws IOException;
Так что я бы сказал, если вопрос - использует ли библиотека классовТо же самое я делаю для доступа к внешним вызовам библиотек системного уровня. Думаю, ответ будет положительным.
Однако виртуальная машина Java, которая интерпретирует байт-код Java и применяет эти правила, определенно является нативным кодом - я подозреваю, чторади именования (в разных «нативных» системах используются совершенно разные API), в отличие от нативных вызовов, направленных напрямую в библиотеки, эти вызовы воспринимаются виртуальной машиной и обрабатываются виртуальной машиной.