java.lang.Object里的Native
今天在研究Object时看到了Native
本人是学软件的大二学生一枚,过够了普本的咸鱼大学生活。决定在沉迷打游戏无法自拔的时候悬崖勒马。
看过许多人在博客园上坚持自己,分享自己所学,,,很是敬佩!!!
在别人的博客上真的学到了许多,,,
我想唯有传扬他们的分享精神,才是对他们最大的感谢!!
回归正题java里的native
今天在看java.lang.Object时突然看见native,起初以为是一个类,后来意识到class里的方法registerNatives();后面跟了个“;”。在一个普通类里这显然不合理。那他又存在,那是为什么呢??
private static native void registerNatives();
static {
registerNatives();
}
我了解到了native是一个修饰符!!
来了,灵魂三问!native是什么,干了什么,还可以干什么!
native即Java Native Interface (Java本地接口)
凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,
称为Java Native Interface (Java本地接口)。
我惊了!java还有这玩意,不行赶紧查查
发现Java中,用native关键字修饰的函数表明该方法的实现并不是在Java中完成的,而是由C/C++去完成的,并被编译成了.dll,由Java去调用。这是在哪调用呢???显然是jvm调用共享库里的东东…
也就是java和C/C++联合开发程序咯。
native干了啥呢
native是告诉了java虚拟机(jvm)我后面的这个名字是外部已经有C/C++实现啦!你准备好调用就行啦!
native还能怎么干呢
既然有native,我们自己可不可以写一个C或C++然后生成.dll,把.dll放入共享库后让java调用嘞!!!
答案当然可以!
这个可以去其他地看看,我就不说了
最后
本渣才疏学浅,如果有路过的大佬看到我有错误的地方希望得到指正。感谢!!