1. java中什么是能够在计算机CPU上执行的二进制代码
java中的JVM是能够在计算机CPU上执行的二进制代码。
java的执行过程
Java代码需要经过编译和解释两个步骤,才在能在平台上运行。首先java语言的编译器,帮java代码编译成class的字节码,之后通过java虚拟机(JVM)来解释执行。
java代码的编译
java代码是如何编译的?
首先编译的解释:把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。编译的具体过程,可以看看《编译原理》相关的书籍。
其实java的编译过程,和通常c/c++还是不同的。
java编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。
Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址,这样就有效地保证了java的可移植性和安全性。
c/c++的编译,当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而生成的。因此在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。
java虚拟机(JVM)
简单的可以这样理解它的功能:就是将java编译之后的字节码,解释成cpu能够执行的二进制代码。
JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM的主要工作是解释自己的指令集(即字节码)并映射到本地的CPU的指令集或OS的系统调用。Java语言是跨平台运行的,其实就是不同的操作系统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(class file)。类文件的组成包括JVM指令集,符号表以及一些补助信息。
java虚拟机工作的原理,可以自己找一下网上的资料。大家还需要思考的问题,jvm的内存、jvm的垃圾回收(GC)、Android的朋友还要区分(Dalvik 和标准 Java 虚拟机JVM)的区别。
总结:
java代码编译之后,可以直接运行在Windows或者其它装有JVM虚拟机的系统下。而C或C++直接编译成与机器和操作系统相关的代码。所以C语言编译的程序没有跨平台性,就算没有使用到操作系统相关的API,在不同的系统下也必须重新编译才能运行。
2. 用javac命令编译成功后生成的文件叫
二进制文件。
Javac命令编译后生成的文件可以在Java虚拟机中运行
编译后生成的文件为二进制文件
编译后生成文件的后缀名为.class。
JVM(java虚拟机)可以将java文件编译为机器语言,是通过字节码的形式进行的存储,此字节码文件的扩展名就是class文件,此扩展类型文件可以被虚拟机所识别和进行执行。
3. java编译器把java程序编译成虚拟机可以识别的二进制代码,称为什么
由java编译器把源文件编译成虚拟机可以识别的二进制代码称为字节码。
而字节码是由java解释器去解释执行的。
4. jdk,jre,jvm三者间有何关系
JVM:Java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
JRE:Java运行环境,光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。
JDK:Java开发工具包
JDK是JAVA程序开发时用的开发工具包,其内部也有Java运行环境JRE。JRE是Java程序运行时需要的运行环境,就是说如果你光是运行Java程序而不是去搞开发的话,只安装JRE就能运行已经存在的Java程序了。JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。
5. Java能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行
很少用java,不熟悉,但觉得应该不行吧,java是解释性语言,即使有一次编译的机制,但也是即时编译的。要是像你说的这样,那也不可能跨平台运行了
6. java为什么可以跨平台执行
java是跨平台的,就是生成的.class文件拿到任何系统平台都能运行,其实是建立在虚拟机上的,也就是jvm,你装jkd的时候就带了。
所有的java程序都是在虚拟机也就是jvm是运行的,而且jvm的版本也不同,有windows版本的还有linux版本的,正是因为有了不同的jvm才使得java可以跨平台。简单的说就是因为jvm的不跨平台才导致了java的跨平台,其实是一个过度。不象c语言他没有jvm,通过操作系统内核来编译,windows的操作系统编写的c,拿到linxu下就用不了。
打个比方,就象大家所知道的看电影有一种文件叫rmvb格式的,它拿到哪个平台都能运行,那是因为有realplayer,暴风等播放器的原因。不同的播放器有windows版 和linux版一个道理。
7. 1.一个Java源程序编译后会生成一种扩展名为 的字节码文件。
填写:.class。
解释:java文件通过jvm虚拟机编译后会生成二进制码,显示的文件格式就是“.class”.
之后通过 “java 文件名”的形式运行即可。
8. Java语言是怎样跨平台性运行的呢
Java之所以能跨平台,是因为java虚拟机能跨平台。
因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。
因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。
java代码不是直接运行在CPU上,而是运行在java虚机(简称JVM)上的。
java是先把java文件编译成二进制字节码的class文件,jvm就解释执行class文件。
就是因为java是运行在jvm上的,所以它的代码就能不经修改,就能在不同平台的jvm上运行(在UNIX用UNIX的jvm,在linux上用linux的jvm,在windows上用windows的jvm)
假如用windows移植到UNIX,只需把java文件是UNIX的jvm上编译成class文件,然后用jvm运行就可以了.
9. 在java编程中用什么命令来编译java源文件 可以将源文件编译成字节码文件,求答案 。
答案如下:
1 、javac 选 A
2、 int 选 D int 为关键字
3、 4 选 B
4、 15 选C
5 、界面类型 选D
6 、age[0] 选B
7、 class 选A
8 、java B
9、 abstract 选B
10 、false 选D
1、 错,区分大小写
2、 对
3 、错,可以有多个
4 、错 ,private 不可以被继承 public可以继承
5、 错,private 不能继承
6 、错,java中可以重载函数