java为什么不能直接操作硬件
java是:源代码-->字节码-->JVM-->操作系统->硬件(你少了一个)
java是不能直接控制硬件,java帮助开发者隐藏了硬件,软件的不同导致的兼容性问题,这也导致了开发者无法直接操作硬件。意思就是java寄生在操作系统上,做了一个虚拟机,所有装了java runtime的jvm都是一样的。这个jvm提供的API都是一样,硬件的不同不能在代码上产生改变,所以就是不能直接访问硬件咯。
Java编译后.class文件是二进制字节码,而不是系统能识别的机器码,所以直接运行.class文件,系统不能识别,而Java为了解决这个问题,采用一个中间转换过程,必须要把.class文件,转换成对应操作系统所能识别的机器码。
于是把这个转换的任务交给了JVM(java虚拟机),所以只要安装虚拟机的操作系统就能运行Java开发的程序,而不管你用的什么操作系统,因为转换工作是由虚拟机来帮你完成的。
举个例子:
假如:你(相当于Java程序)和美国人(一种操作系统)谈话,而你不懂英语,美国人不懂汉语,怎么办呢?你会想到找个翻译(Java虚拟机),把你说的话翻译成英语。
这个时候你又和一个德国人说,只要通用的翻译就可以了
所有的高级语言都是需要一个框架去支持它的运行,例如.NET,C++等,但是面向基础二进制的编程语言就不需要这个框架了,也就是可以直接操作硬件,例如C语言
JRE不允许你直接操作
高级语言都是不得的,可以的是汇编什么的比较低级的语言,不过效率都不高,涉及到存储,移动,计算的操作都比高级语言复杂,就一些MOV指令,ADD,SUB指令之类的的比较多
JAVA的指令,一般的CPU没有硬件支持,所以JAVA运行在JVM虚拟机之上,所有操作都是通过虚拟机完成
相关视频
安卓手机可以用java软件不?
安卓手机可以间接运行Java软件,但通常需要借助Java模拟器。以下是详细解答:自带Java引擎的安卓手机:部分安卓手机自带Java引擎,这意味着这些手机可以直接运行Java软件,无需额外安装其他工具。然而,这种情况并不普遍,大多数安卓手机并不具备这一功能。使用Java模拟器:对于大多数没有自带Java引擎的安卓手机,用户
JAVA有没有指针的?以前学C语言最难学的就是指针这一部分了
Java没有直接的指针概念。以下是详细解释:设计哲学差异:Java与C语言在设计上存在根本差异。C语言允许直接操作内存地址,而Java则更注重编程的便捷性和安全性,不直接支持C语言中的指针。内存管理:在Java中,内存管理和内存的分配与释放都由编译器和运行时系统自动处理。这种设计降低了程序出错的可能性,...
...为什么C语言可以编写51单片机程序,JAVA却不能编写?
Java需要运行在虚拟之机这个抽象层之上,无法在硬件上直接运行,而C语言编译后可以直接运行在硬件之上。单片机由于受到内存和性能的限制并不会安装虚拟机,所以无法运行Java。
JAVA程序可以不用在虚拟机上运行吗?有什么方法解决掉这个问题,有什么系统...
java语言跨平台的根本原因是java虚拟机的跨平台,java的运行必须的依靠JVM的支撑,如果java虚拟机都没有了,那么java源代码和编译后的class字节码文件就是不能识别运行的。java之所以能够一次编译,跨平台运行就是jvm的跨平台在起作用。至于你说的直接运行,你可以把它打包成exe程序不就ok了吗?有什么问题...