一、Java跨平台原理
由源文件(.java)--->字节码文件(.class)(二进制文件)-----> 解释(运行)---->Unix,Win,Linux等机器。
⬆
javac编译为
java代码的加载与执行;
1.一次编译,到处运行
2.编译器的作用:将源文件编译成class文件
3.虚拟机的作用:将字节码文件解释成对应平台机器码并执行。
4.java可以实现跨所有的平台?只有提供并且安装了相对应的虚拟机就可以跨该平台。
5.虚拟机和解释器的关系:解释器是虚拟机的一个重要的组成部分。
6.Java语言的执行要经过编译和解释两个阶段。
7.Java语言的跨平台性与JVM无关
如图所示,java跨平台 仅仅是因为每个操作系统都安装了相应的JVM,所以说,java语言一次编译到处运行,java语言是跨平台的,但jvm不是跨平台的
二、C语言跨平台原理
由源文件(.c)--->编译成相对应的机器码---->Unix,Win,Linux
1.多次编译,到处运行
2.C和Java哪个速度快?C语言是直接执行编码,Java是先将class文件解释成机器码再执行
三、Java的安全性
1.取消了指针
2.垃圾回收机制-------不需要程序员直接控制内存回收,避免了程序员忘记及时回收,导致内存泄漏,避免程序错误回收程序核心类库对1内存,导致系统崩溃。
3.异常处理机制-----try,catch,finally,throw,throws五个关键字。
4.强制类型转换:只有满足强制类型转换规则的情况下才能强制转成功。
5.保证了底层安全性:Java在字节码的传输过程中使用了公开密匙加密机制(PKC)
6.在运行环境提供了四级安全保障机制:字节码校验器---类装载器---运行时内存布局--文件访问限制。
四、Java三大版本
J2SE:数据库连接,接口定义,输入/输出,网络编程
J2EE:包含了J2SE中的类,还包括了servlet,JSP,XML,事务控制。
J2ME:包含了J2SE中部分类,用于消费电子产品的软件开发。---------呼机,智能卡,手机,PDA,机顶盒。
J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类
应用场合,API的覆盖范围各不相同
五、什么是JVM?什么是JDK?什么是JRE?
JVM------Java Virtual Machine。:java 虚拟机 执行class文件的
JVM是Java平台的基础,和实际的机器一样,它也有自己的指令集,并且在运行时操作不同的内存区域,它相当于是一个独立工作的机器,JVM的主要工作是解释自己的指令集(即字节码)到CPU的指令集或对应的系统调用,保护用户免被恶意程序骚扰。
JVM对上层的Java源文件是不关心的,它关注的只是由源文件生成的类文件(.class文件)。
JRE----java runtime environment.java的运行环境 , 包括Java类库和JVM
光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre.
JDK---java development kit. java开发包,开发者
包括JRE和java工具
JDK的安装目录:
bin: 最主要的是编译器(javac.exe)
include: java和JVM交互用的头文件
lib:类库
jre: java运行环境
JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。