字节码可以编译吗
‘壹’ java编译后产生 字节码,还是 机器码能不能简单解释一下
java虚拟机是可运行java字节码的假象计算机 java的跨平台性也是相对与其他编程语言而言的
先介绍一下c语言的编译过程吧
先是C语言源程序也就是。c的文件
经过C编译程序编译后生成windows可执行文件exe文件
然后在windows中执行。。
再介绍java的编译过程
先是java源程序 扩展名为。java的文件
由java编译程序将java字节码文件 就是class文件
然后在java虚拟机中执行。。
‘贰’ 字节码指令的编译与执行
java编程开发是目前市场上使用范围非常广泛的一种编程开发语言。今天我们就一起来了解一下,在java编程中关于字节码的一些指令的编译与执行方法。
java文件编译后的class文件,java跨平台的中间层,JVM通过对字节码的解释执行(执行模式,还有JIT编译执行,下面讲解),屏蔽对操作系统的依赖。一个字节(8位)可以储存256中不同的指令,这样的指令就是字节码,java所有指令有200个左右,这些指令组成了字节码文件(.class)。
一、字节码的主要指令:
.class文件里面的十六进制文件,其中CAFEBABE是标志这个文件为java的编译后的文件,00000034代表版本号,01670700一个字节(8位)就是一个字节指令,由于数值指令太难看懂,我们可以用javap将指令翻译为助记指令。
1、加载或储存指令
在栈帧仿绝消中,宏哗通过指令操作数据在局部变量备知表与操作栈间传递。
ILOAD、ALOAD:将int、对象引用类型从局部变量表压入操作栈顶;
ISTORE、ASTORE:将int、对象引用类型从操作栈顶储存到局部变量表里;
ICONST、BIPUSH、SIPUSH、LDC:将常亮加载到操作栈顶。
2、运算指令
对操作栈上的值进行运算,并把结果写入操作栈顶,如IADD、IMUL。
3、类型转换指令
I2L、D2F
4、对象创建与访问指令
NEW
除了字节码指令外,南邵电脑培训认为还包括像LINENUMBER储存字节码与源码对应,方便调试定位;LOCALVARIABLE储存当前方法使用到的局部表量表。
二、java源码文件转化为字节码(.class)文件的过程
JAVA源文件---------->词法解析---------->语法解析---------->语义分析--------->生成字节码--------->字节码文件
词法分析:根据空格分割出单词、操作符等,形成token信息流;
语法分析:根据token流和java语法规范生成语法树;
语义分析:检查关键字、类型匹配是否正确;
‘叁’ 怎么用JDK把源文件编译成字节码文件(JAVA)
安装好JDK
右击我的电脑,选择高级选项卡,里面有个环境变量的按钮,点击进去开始配置环境变量
配置环境变量需要做一下几个步骤:
1.打开环境变量,可选择用户变量或者是系统变量中的path,如果用户变量中没有path,就直接选择系统变量的path,双击打开它,在最末端加上分号,在加上你的JDK安装的目录,然后再新建一个变量名叫classpath,其值为: .; (注意是一个点再加上一个分号)再加上Java的安装目录下jdk包下的lib包目录,如果要保险点就再加上Java安装目录下jre包下的lib包,然后点确定退出环境变量
重新启动cmd 敲Javac试试看!