1.Java跨平台原理(字节码文件、虚拟机)
Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。
字节码文件不面向任何具体平台,只面向虚拟机。
Java虚拟机是可运行Java字节码文件的虚拟计算机。不同平台的虚拟机是不同的,但它们都提供了相同的接口。Java语言具有一次编译,到处运行的特点。就是说编译后的.class可以跨平台运行,前提是该平台具有相应的Java虚拟机。但是性能比C/C++低。Java的跨平台原理决定了其性能没有C/C++高
2.Java的安全性
-
Java用引用代替了指针。指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。
-
垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。
-
异常处理机制:Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。
-
强制类型转换:只有在满足强制转换规则的情况下才能强转成功。
-
底层的安全性:Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。在运行环境提供了四级安全性保障机制:字节码校验器-类装载器-运行时内存布局-文件访问限制
3.Java三大版本
Java2平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本:
Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。比如:数据库连接、接口定
义、输入/输出、网络编程
Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。比
如servlet、JSP、XML、事务控制
Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。比如:呼
机、智能卡、手机、PDA、机顶盒他们的范围是:J2SE包含于J2EE中,J2ME包含了J2SE的核心类,
但新添加了一些专有类应用场合,API的覆盖范围各不相同。
4.什么是JVM?什么是JDK?什么是JRE?
-
JVM:Java虚拟机(Java Virtual Machine)。是Java实现跨平台的最核心部分,所有java源程序先被编译成字节码文件,再由虚拟机解释成平台对应的机器语言。
-
JRE:java运行环境(java runtime environment)。光有JVM还不能让class文件执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。在JDK的安装目录里你可以找到jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。有这个.class文件和jre就可以运行程序了。
-
JDK:java开发工具包( java development kit)。在目录下面有六个文件夹、一个src类库源码压缩包、和其他几个声明文件。真正在运行java时起作用的是以下四个文件夹:bin、include、lib、jre。
JDK包含JRE,而JRE包含JVM
- bin : 最主要的是编译器(javac.exe)
- include : java和JVM交互用的头文件
- lib:类库jre:java运行环境