问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java为什么不能直接控制硬件?问题有点深,高手进。

发布网友 发布时间:2022-04-30 15:59

我来回答

5个回答

热心网友 时间:2022-06-26 22:48

java是:源代码-->字节码-->JVM-->操作系统->硬件(你少了一个)
java是不能直接控制硬件,java帮助开发者隐藏了硬件,软件的不同导致的兼容性问题,这也导致了开发者无法直接操作硬件。意思就是java寄生在操作系统上,做了一个虚拟机,所有装了java runtime的jvm都是一样的。这个jvm提供的API都是一样,硬件的不同不能在代码上产生改变,所以就是不能直接访问硬件咯。追问那用java可以调用,硬件的驱动吗?我想用java开启本子上的摄像头,应该怎么做呢?
还有一个问哈,在哪里能看到JDK 的源码呢?我想看一下它的socket是怎么实现的,非常感谢!

追答可以的。摄像头怎么搞:http://blog.csdn.net/wmyasw/article/details/6655952。
JDK源码sun的好像不开源.openjdk:http://openjdk.java.net/开源的。

热心网友 时间:2022-06-26 22:49

JVM 运行在操作系统之上,操作系统有直接控制系统的原语,所以 JVM 可以通过系统调用来控制硬件。其他编译型语言直接编译为对应平台的机器码,所以可以说是“直接”控制硬件,但是 Java 没有这种“直接”的效果,不过作为一个图灵完备的语言,它理论上可以做任何事。

热心网友 时间:2022-06-26 22:49

JVM是Java虚拟机的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。

汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件

对比一下你应该能 知道了吧追问从你的答案来看,你还是不懂。JVM和汇编,虽然很不相同(这点大家都知道,因为这明明就是两种东西,就像大象和苹果一样),但你可能没看明白我的问题,实际这个问题很深:JVM和汇编都可以控制硬件(这里不深究,单从效果来看),那么就说明JVM可以与硬件交互(实际JVM就是为了控制底层硬件而设计的,可以说java是跨平台的,但JVM绝不是跨平台的),那么因为java可以“控制”JVM,JVM可以与硬件交互,所以java可以与硬件交互。

热心网友 时间:2022-06-26 22:50

我是来回答源码的。如图所示,在你安装的java的路径下(jdk/下)有bin,有jre等目录,还有一个src.zip压缩文件,它就是java的源代码了。如果你英文不错,就会发现,API就是翻译的源代码中的注释!

热心网友 时间:2022-06-26 22:50

LJD2499649768回答的很好,你的追问台天真了。JVM是C写的,C是汇编写的。汇编可以使用硬件,c通过汇编间接的可以。同理JAVA 跑在JVM上,JVM是有能力控制和使用硬件的,那面理论上JAVA也是可以控制的硬件的。但是为什么不能呢?因为Java语言和JVM是人家开发的,人家没有给你实现控制硬件的功能!因为Java语言和JVM是人家开发的,人家没有给你实现控制硬件的功能!因为Java语言和JVM是人家开发的,人家没有给你实现控制硬件的功能!(我说了三遍) 你用Java是基于人家开发的东西来做东西,人家没给你这个功能,所以你再怎么折腾也不可能通过 JAVA-JVM-硬件这条线来控制硬件,这条路人家给你封死了! 可以通过Java 调用C 来间接的实现~
再多余说一点,为什么JAVA不给硬件权限? 因为JAVA是面对软件开发的语言,人家吧内存分配垃圾回收什么的统统给你写好了,这样让程序员只关注实现自己的业务需求就行,而不需再关注硬件方面的问题。突出了Java的优点:简便、兼容。 大大的简化了开发过程~ 这是Java的核心,人家没有必要开放硬件控制。。。
再补充一下,Java提供了JNI,可以去看一看,能在同一进程中调用其他语言(主要是C和C++),但是会失去一些Java的优点,如用来jni的程序不再通用,换平台后要重新编译。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
减罪的读音减罪的读音是什么 减的拼音? 减的反义词 5种开红色花朵的植物有哪些 怎么查衣服是什么牌子 ...一件连衣裙就要1080元 ,你怎么看?_百度知 ... ...的衣服比较难?这些时尚的淘宝店铺你知道吗?_百度知 ... 比尔布莱森被人们称为什么 三星空气净化器怎么样 ? 三星ax7000空气净化器 利用JAVA编程可以对系统硬件进行操作吗? JAVA开发有与硬件有关的吗 家里有孕妇可以用日本蟑螂小黑帽吗 java 做硬件方面有没有发展前景,感觉java做硬件很难,看见的使用例子也比较少。 威猛先生杀蟑螂原理 日本安速 蟑螂诱饵 捕捉 有用吗 宿舍里灭蟑螂有什么法宝 日本的红阿斯怎么样 以中秋节为主题的英语文章 关于中秋、国庆的英语短文 快点阅读怎么找回以前的账号? 有关中秋的英语短文 写一篇关于中秋的英语短文 求一篇有关中秋节的英语短文 快点看app为什么显示手机账号已绑定其它账一般定其他账号无法邦定? 中秋节英语小短文一篇 快点阅读怎样可以解绑微信,我想把快点里的钱提现到微信上,希望路过的大佬支个招,挺急的 关于中秋节的英语阅读翻译 快点阅读有两个账号怎么去掉其中一个账号? tuó luó( )玩具 看拼音写词语 快点阅读里怎么换喵牌快点阅读如何从现在的喵牌号换回以前的号 本人想学习java语言,以后从事java方面的编程开发,请问我是否要熟悉硬件方面的知识? 我过生日我未来儿媳妇发红包不收怎么回? 单片机可以用Java编程吗? 怎么查哪个行能办ETC 一个外国的电影,一部老的科幻电影,讲一个孩子梦见外星人进攻醒来发现是真的。 ubuntu怎么切换root用户 ubuntu中怎么切换到root用户? 我的手机是OPPOa57我忘记锁屏密码了,我刷机了一下,ColorOS模式,清除数据也需要锁屏密码 请问一下oppo A57怎么刷机啊?(锁屏密码忘记了,手机usb调试也打不开,recovery时也 oppoa57忘记锁屏图案怎么办进入清除数据模式后仍显示输入密码怎么办啊 优联,热水器怎样操作,视频? 带“管”字的成语有哪些? 热水器优联怎么调温度 所有带管的成语 含“管”的成语有哪些? 优联热水器不出热水的原因是什么? 带管字的成语有哪些 优联电热水器减压阀如何调解 带管的成语有哪些 关于管的成语有哪些