Java中有两种方法:Java方法和本地方法。
Java方法是由Java语言编写的,当Java编译器将Java源程序编译成字节码后,Java方法就被存储在了class文件中。
本地方法是由其它语言编写的,比如C、C++,一般是操作系统本来就有的,本地方法被编译成和中央处理器(CPU)相关的机器码(即二进制数据),机器码是电脑的CPU可直接解读的数据 。
本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的。
Java方法是与平台无关的,但是本地方法不是。
运行中的Java方法调用本地方法时,虚拟机装载包含这个本地方法的动态库的,并调用这个方法。
通过本地方法,Java程序可以直接访问底层操作系统的资源,如果你这样用,你的程序就变成平台相关了,因为本地方法的动态库是与平台相关的,此外使用本地方法还可能把程序变得和特定的Java平台实现相关。
一个本地方法接口——Java本地接口JNI——使得本地方法可以在特定主机系统的任何一个Java平台实现上运行。
Java给人们提供了选择的机会:
如果希望使用特定主机上的资源,它们又无法从Java API中访问,那么可以写一个平台相关的Java程序来调用本地方法。
如果希望保证程序的平台无关性,那么只能通过Java API来访问底层系统资源。