JAVA跨平台原理:
Java语言有一句非常著名而且经典的口号就是“write once,run anywhere”,就是:一次编写,到处运行。
其实跨平台原理可以总结为三个过程:
第一:
在类记事本或编辑器等平台书写java代码并保存文件,修改文件后缀,让文件后缀以(点java)文件保存,生成java源文件
第二:
Java源文件通过编译生成Java字节码文件
第三:
Java字节码文件通过对应操作系统下的虚拟机翻译转录,变成机器能识别并执行命令的语句,实现运行效果
JAVA是混合性语言,在虚拟机翻译转录过程中,一边翻译,一边解释。
注意的点是Java字节码文件不具备直接面对平台的能力,而是在虚拟机中进行翻译转录。
不同操作系统有着不同的虚拟机,比如Windows,Mac,Linux都有着各自对应的虚拟机
但是这些不同的虚拟机都提供了相同的接口来进行Java字节码文件的翻译转录工作。
编写一次java源文件过后想要在另外的操作系统运行只需要安装这个平台对应的虚拟机
所以Java语言通过一次编写,实现了不同平台都可以运行的特点。
JAVA的安全性
JAVA的安全性主要体现在两个方面,分别是:语言层次的安全性,和,底层实现的安全行
下面我将分别对这两个方面做说明
首先阐述语言层次的安全性:
- JAVA取消了强大而又危险的指针,因为指针可以随意指向内存区域,而这个被指向的内存地址可能正在被运行或者存储着重要数据,很容易造成内存溢出和数组越界
- JAVA的垃圾回收机制,不需要程序员手动控制内存的回收,由垃圾回收器在后台自动回收不再使用的内存。避免了手动回收但忘记回收导致内存泄漏,也避免了由于错误回收操作失误将核心类库回收,造成的程序崩溃。
- JAVA的异常处理机制。由五个主要的关键字组成,分别是
Try:监视代码块
Catch;捕获try监视的异常
Finally:异常区域最终执行的部分
Throw:故意手动抛出异常
Throws:声明在方法内出现并抛出的异常
通过异常处理机制,保障了程序的正常运行,也可以通过异常错误名称和出现错误的位置找到异常出现的代码,便于发现和修改编写时的错误
- 强制类型转换规则(数据兼容或者不兼容,数据的取值范围的大小)
数据类型转换分为两种:隐式转换(自动转换)和显示转换(强制类型转换)
小转大是自动转换,大转小是强制类型转换。只有数据类型满足相应的规则才能转换成功
底层实现的安全性体现在两点:
- java在字节码文件的传输过程中是通了PKC加密机制:一个公开作为加密密钥,另一个为用户专用,作为解密密钥。
- 在运行环境时的保障机制:
字节码校验器-类装载器-运行时内存布局-文件访问限制
这四种机制防止了病毒程序的产生和下载程序对本系统的威胁
字节码校验器:当类加载器将新加载的Java平台类的字节码传递给虚拟机时,这些字节码首先要接受校验器(verifier)的校验。校验器负责检查那些指令无法执行的明显有破坏性的操作。除了系统类外,所有的类都要被校验,不过,可以使用非正式的-noverify选项来钝化校验。)
类装载器:防止恶意代码去干涉善意的代码,保护了被信任的类库边界。将代码归入保护域,确定了代码可以进行哪些操作
文件访问限制:访问修饰符
JAVA三大版本
JAVASE ,JAVAEE, JAVAME
JAVASE包含java语言的核心类,代码常识语法规则,比如(数据库连接、接口定义、输入/输出、网络编程)
JAVAEE企业级应用开发,比如(EJB、servlet、JSP、XML、事务控制)
JAVAME包含JAVASE一部分类,轻量级版本,用于内嵌式电子产品功能开发(比如机顶盒,遥控器等)
JAVA的运行过程
编写:文本或编辑器编写java代码并以.java后缀保存
编译:使用命令javac将java源文件通过编译生成java字节码文件,字节码文件拓展名一般为.class
运行:使用命令java运行字节码文件,在虚拟机中翻译解释为机器识别的命令执行程序完成运行
JAVA开发环境的配置
- 安装JDK,找到JDK的路径并复制(直到bin文件夹前)
- 点击我的电脑,高级系统设置,设置环境变量
- 找到path,按键盘的home键输入英文的分号,将复制的JDK路径粘贴到英文分号后点击确定
什么是JVM?JDK?JRE?
- JVM全称java virtual machine JAVA虚拟机
- JRE 全称java runtime environment JAVA运行环境
- JDK 全称java development kit JAVA开发工具包
- JDK包含JRE包含JVM