
java为什么不能直接控制硬件?问题有点深,高手进。
有一个很普遍的认识:java不能直接控制硬件什么什么的.............这是真的吗,还是人云亦云。我们知道c是:源代码-->汇编-->硬件;java是:源代码--...
有一个很普遍的认识:java不能直接控制硬件什么什么的.............这是真的吗,还是人云亦云。
我们知道c是:源代码-->汇编-->硬件;java是:源代码-->字节码-->JVM-->硬件。
这不都一样,只是java多了一层而已,如果你说是因为JVM存在,使得java不能直接控制硬件的话,请详细解释,非常感谢!
解释一下我的问题:JVM和汇编,虽然很不相同(这点大家都知道,因为这明明就是两种东西,就像大象和苹果一样),从效果来看JVM和汇编都可以控制硬件(这里不深究),那么就说明JVM可以与硬件交互(实际JVM就是为了控制底层硬件而设计的,可以说java是跨平台的,但JVM绝不是跨平台的),那么因为java可以“控制”JVM,JVM可以与硬件交互,所以java可以与硬件交互,所以java可以开发类似“驱动”的,这种东西。 展开
我们知道c是:源代码-->汇编-->硬件;java是:源代码-->字节码-->JVM-->硬件。
这不都一样,只是java多了一层而已,如果你说是因为JVM存在,使得java不能直接控制硬件的话,请详细解释,非常感谢!
解释一下我的问题:JVM和汇编,虽然很不相同(这点大家都知道,因为这明明就是两种东西,就像大象和苹果一样),从效果来看JVM和汇编都可以控制硬件(这里不深究),那么就说明JVM可以与硬件交互(实际JVM就是为了控制底层硬件而设计的,可以说java是跨平台的,但JVM绝不是跨平台的),那么因为java可以“控制”JVM,JVM可以与硬件交互,所以java可以与硬件交互,所以java可以开发类似“驱动”的,这种东西。 展开
5个回答
展开全部
追问
那用java可以调用,硬件的驱动吗?我想用java开启本子上的摄像头,应该怎么做呢?
还有一个问哈,在哪里能看到JDK 的源码呢?我想看一下它的socket是怎么实现的,非常感谢!
追答
可以的。摄像头怎么搞:http://blog.csdn.net/wmyasw/article/details/6655952。
JDK源码sun的好像不开源.openjdk:http://openjdk.java.net/开源的。
展开全部
JVM 运行在操作系统之上,操作系统有直接控制系统的原语,所以 JVM 可以通过系统调用来控制硬件。其他编译型语言直接编译为对应平台的机器码,所以可以说是“直接”控制硬件,但是 Java 没有这种“直接”的效果,不过作为一个图灵完备的语言,它理论上可以做任何事。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JVM是Java虚拟机的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似。
汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件
对比一下你应该能 知道了吧
汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件
对比一下你应该能 知道了吧
追问
从你的答案来看,你还是不懂。JVM和汇编,虽然很不相同(这点大家都知道,因为这明明就是两种东西,就像大象和苹果一样),但你可能没看明白我的问题,实际这个问题很深:JVM和汇编都可以控制硬件(这里不深究,单从效果来看),那么就说明JVM可以与硬件交互(实际JVM就是为了控制底层硬件而设计的,可以说java是跨平台的,但JVM绝不是跨平台的),那么因为java可以“控制”JVM,JVM可以与硬件交互,所以java可以与硬件交互。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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的程序不再通用,换平台后要重新编译。
再多余说一点,为什么JAVA不给硬件权限? 因为JAVA是面对软件开发的语言,人家吧内存分配垃圾回收什么的统统给你写好了,这样让程序员只关注实现自己的业务需求就行,而不需再关注硬件方面的问题。突出了Java的优点:简便、兼容。 大大的简化了开发过程~ 这是Java的核心,人家没有必要开放硬件控制。。。
再补充一下,Java提供了JNI,可以去看一看,能在同一进程中调用其他语言(主要是C和C++),但是会失去一些Java的优点,如用来jni的程序不再通用,换平台后要重新编译。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询