public native int hashCode() впервые увидел вот такое слово native? Java Native Interface (JNI) — стандартный механизм для запуска кода, под управлением виртуальной машины Java (JVM), который написан на языках С/С++ или Ассемблера, и скомпонован в виде динамических библиотек, позволяет не использовать статическое связывание. Это даёт возможность вызова функции С/С++ из программы на Java, и наоборот.
Как это понять что C язык "находится" в Java?
Весьма старая инфа, однако, объясняет довольно понятно:
Если в процессе реализации Jаvа-проекта возникает необходимость в применении существующего кода, написанного на другом языке программирования, или использовании низкоуровневых функций для непосредственного обращения к компьютерной аппаратуре, существует возможность прибегнуть к так называемым методам native, которые могут быть вызваны из среды приложения Java, но создаются на одном из "родственных" (native) языков – как правило, С или С++. Nаtivе-методы объявляются посредством модификатора native. Тело метода реализуется на другом языке и поэтому в объявлении заменяется символом точки с запятой. Ниже в качестве примера приведено объявление метода, который обращается к операционной системе за информацией об идентификационном номере процессора хост-компьютера.
public native int getCPUID();
Единственное отличие методов native состоит в том, что они реализуются на другом языке программирования. В остальном они подобны обычным методам, т.е. могут быть переопределены, перегружены и снабжены любыми модификаторами – final, static, synchronized, public, protected или private (кроме abstract и strictfp).
При обращении к методам native свойства переносимости и безопасности, присущие коду Java, будут утрачены. Практически невозможно использовать методы native в Jаvа-коде, который предназначен для загрузки из Internet или выполнения на удаленных компьютерах сети (примером являются аплеты). Не исключено, что работать с вашим кодом придется системе совершенно другой архитектуры, но если даже это и не так, система может просто запретить выполнение кода, не вызывающего доверия.
Методы native реализуются с помощью библиотек API, предлагаемых разработчиками виртуальных машин Java для тех или иных платформ. Одна из стандартных библиотек API, предназначенных для программистов, использующих язык С, носит название JNI – от Java Native Iпterface. Существуют библиотеки и для других языков.
Продвижение своими сайтами как стратегия роста и независимости