社区
Java SE
帖子详情
一个问题,比较底层,关于JDK与JVM的关系
bloodrate
2008-01-31 04:47:40
今天我突然想弄明白硬件设备上的文件是怎么读取的,然后顺着JDK的SRC查看InputStream的源文件,查到最后一部发现许多native函数没有实现,我料想这些函数就是JDK与JVM的通讯接口,JVM在系统里是JVM.DLL,我猜想JVM是C写成的,那么NATIVE函数就是JNI技术?不是传说中JNI技术影响跨平台性的么?怎么基类函数都是用JNI调用底层资源?到底NATIVE和JVM是怎么一种调用关系?
...全文
329
12
打赏
收藏
一个问题,比较底层,关于JDK与JVM的关系
今天我突然想弄明白硬件设备上的文件是怎么读取的,然后顺着JDK的SRC查看InputStream的源文件,查到最后一部发现许多native函数没有实现,我料想这些函数就是JDK与JVM的通讯接口,JVM在系统里是JVM.DLL,我猜想JVM是C写成的,那么NATIVE函数就是JNI技术?不是传说中JNI技术影响跨平台性的么?怎么基类函数都是用JNI调用底层资源?到底NATIVE和JVM是怎么一种调用关系?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
diamond_fish
2008-02-01
打赏
举报
回复
就是这样啊,跨平台是因为jdk把操作系统相关的东西都封装了。native的实现不同操作系统不同
bloodrate
2008-02-01
打赏
举报
回复
这么说的话,如果我想做一个写入文件的操作,在我的代码里写一堆native,完全可以不调用JDK中的FileOutputStream就能实现。
anglela
2008-02-01
打赏
举报
回复
JAVA技术交流与学习:45633778
技术交流,共同进步!!
codeartisan
2008-02-01
打赏
举报
回复
不同平台的jvm都不一样,具体实现当然不一样。反正java程序是运行在jvm上的,只要调用的接口一样就行了。
老紫竹
2008-02-01
打赏
举报
回复
你自己写的native代码,比如用C,可以访问任何你能访问的资源,包括JVM不能访问的。
所以,如果你提供了各个平台的native代码的话,同样你的java程序也是跨平台的啦。
bloodrate
2008-02-01
打赏
举报
回复
奥是这样啊,那实际上JVM把native的函数复写了,而操作系统不认识native,实际上程序里写native也是JVM级别代码而不是直接去调用windows api,其实也不会影响跨平台性吧,只不过是直接访问了虚拟机而已
老紫竹
2008-02-01
打赏
举报
回复
JNI 是java调用native的接口,java的代码当然是跨平台了,但是那个native可就不是跨平台啦。
你可以用c/delphi/c++/等其它语言来书写。
dracularking
2008-02-01
打赏
举报
回复
我的理解是因为JDK里的方法有通用的JVM来支持 而扩展后的native就没有了
自己写native等于是在JVM层面修改代码
老紫竹
2008-02-01
打赏
举报
回复
因为JDK调用的native都在JVM里面啊!!! 哈哈!!!
所以SUN针对每一个操作系统都提供了对应的JVM.也就提供了对应native的实现。
我们只要安装了JVM就可以了!
所以,你也可以这么做。
bloodrate
2008-02-01
打赏
举报
回复
如果自己写native据说就破坏了跨平台性了,但是JDK也是普通的JAVA程序JDK里也是直接写native,为什么调用JDK里的方法就不破坏跨平台性?
dracularking
2008-02-01
打赏
举报
回复
可以想象成要连接口径大小不一的水管
用一端接口相同(接Java代码) 一端口径大小不一以能配合不同口径的转接器(各种平台JVM)
老紫竹
2008-02-01
打赏
举报
回复
我的代码里写一堆native
可以,当然每个操作系统的native都不一样,你得每一种可能用到的操作系统都写一个才行。
这也就是为什么JVM要区分操作系统的原因。
JDK
源码(sun包)
总结,
JDK
1.5版本的"sun"包源码为我们提供了
一个
深入了解Java平台内部机制的窗口,有助于提升我们的编程技巧和
问题
解决能力。然而,应当谨慎对待并适当地利用这些内部实现,以免引发不必要的
问题
。通过研究源码,...
jdk
1.8.0源码 src.zip
《深入解析
JDK
1.8.0源码——src.zip中的编程智慧》
JDK
1.8.0作为Java开发的重要版本,其源码是开发者深入理解Java语言、框架和库...总的来说,
JDK
1.8.0的src.zip是一份宝贵的资源,值得每
一个
Java开发者深入研究。
JDK
、JRE、
JVM
之间的
关系
JDK
、JRE、
JVM
之间的
关系
简述java中
JDK
、JRE和
JVM
的之间的
关系
以下简述一下本人对
JDK
、JRE和
JVM
的之间的
关系
: 概念
JDK
(Java Development Kit)简单理解就是Java开发工具包,是java的核心所在;JRE(Java Runtime Enviroment)是Java的运行环境,
JVM
( java virtual machine)也...
JDK
JRE
JVM
之间的
关系
java开发工具包java运行环境java虚拟机
JDK
全称Java Develement Kit (Java开发工具包),顾名思义就是开发Java所需的工具的集合,打开
jdk
的安装路径, 可以看到
jdk
文件夹里面包含了bin、jre、lib等文件夹(如下图1所...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章