java和c/c++编程过程,跨平台原理

发布时间:2020-11-12编辑:dyy阅读(595)

C语言和Java两者语言编译过程

c语言的编程过程:blob.png    blob.png

C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译

blob.png

Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的,字节码文件不面向任何具体平台,只面向虚拟机而Java虚拟机是可运行Java字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口

Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有相应的Java虚拟机。但是性能比C/C++要低,因为C/C++是可以将源文件直接执行编码,但是Java必须将源文件编译成class文件后再将class文件解释成机器码在执行

blob.png

Java三大版本(javase,javaee,javame)

Javase包含那些构成Java语言核心的类:数据库连接、接口定义、输入/输出、网络编程

Javaee包含Javase中的类还包含用于开发企业级应用的类:servlet、JSP、XML、事务控制

Javame包含Javase中的一部分类用于消费电子产品之类:呼机、智能卡、手机、PDA、机顶盒

三者的区别:2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类应用场合,相互连接

jvm 、jdk、jre三者关系

jvm:Java虚拟机,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行;可以通过抽象操作系统和CPU结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方法、主机硬件、主机操作系统无关,对于jvm而言,源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)

jre:光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre

jdk:java开发工具包,里面有四个文件夹:bin、include、lib、jre

bin:最主要的是编译器(javac.exe)                   

include:java和JVM交互用的头文件

lib:类库     

jre:java运行环境 

这里的bin、lib文件夹和jre里的bin、lib是不同的,JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能

三者关系:JDK包含JRE,而JRE包含JVM

标签

评论