Java的安全性和可移植性

 
 
Java的这两个特性,关键在于Java编译器的输出并不是可执行的代码,而是字节码 bytecode. 
 
  字节码是一套设计用来在Java运行时系统下执行的高度优化的指令集,该Java运行时系统称为Java虚拟机 JVM. 在其标准形式下,JVM就是一个字节码解释器。 出于对性能的考虑,许多现代语言都被设计为编译型,而不是解释型。
 
  将一个Java程序翻译成字节码,有助于它更容易地在一个大范围的环境运行程序。在一个给定的系统中,只要系统运行包存在,任何Java程序都可以在该系统上运行。因此,对字节码进行解释是编写真正可移植性程序的最容易的方法。
 
  对Java程序进行解释也有助于它的安全性。因为每个Java程序的运行都在Java虚拟机的控制系啊,Java虚拟机可以包含这个程序并且能组织它在系统之外产生副作用。Java语言的某些限制增强了它的安全性。
 
  尽管Java被设计为解释执行的程序,但是技术上Java并不妨碍动态将字节码编译为本机代码。Java虚拟机的一部分JIT(Just In Time),能根据需要、一部分一部分地将字节码实时编译为可执行代码。它不能讲整个Java程序一次性全部编译为可执行的代码,因为Java要执行各种检查,而这些检查只有在运行时才执行。因此JIT只编译它运行时需要的代码。
 
  Java的字节码经过仔细设计,因为很容易便能使用JIT编译技术奖字节码直接转换成高性能的本机代码。Java运行时系统在提供这个特性的同时仍具有平台独立性。
 

转载于:https://www.cnblogs.com/mywy/p/5049956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 什么是Java程序设计语言 1 1.1 Java语言诞生背景 1 1.2 Java语言的特点 1 1.2.1 可移植性(universality) 1 1.2.2 安全性(security) 1 1.2.3 Java Virtual Machine(JVM) 2 1.2.4 面向对象的程序设计语言 2 1.2.5 线程(thread) 2 1.2.6 垃圾回收机制(garbage collection) 2 1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard Edition 1.5.0 3 1.3.2 安装开发文档及最终完成 5 1.3.3 Java开发工具 6 1.4 Java程序开发过程 7 1.5 运行第一个Java程序 7 1.6 巩固练习 8 第2章 理解对象与类 9 2.1 什么是对象 9 2.2 什么是类 9 2.3 HelloJava示例的分析 11 2.4 巩固练习 12 第3章 Java语言的基本语法 13 3.1 代码编写规则 13 3.2 注释 13 3.3 标识符 14 3.4 变量和常量 15 3.5 数据类型 16 3.5.1 基本数据类型 16 3.5.2 对象类型 21 3.6 类型转换 21 3.6.1 自动类型转换 22 3.6.2 强制类型转换 24 3.6.3 String型对象与基本数据类型间的运算 25 3.7 运算符 25 3.7.1 逻辑非(!) 26 3.7.2 位非运算符(~) 26 3.7.3 符号运算符(+、-) 27 3.7.4 增减运算符(++、--) 27 3.7.5 算术运算符(+、-、*、/) 29 3.7.6 位移(shift)运算符(、、) 29 3.7.7 关系运算符(、、=、=、==、!=) 31 3.7.8 快速逻辑与(&&)和快速逻辑或(||) 32 3.7.9 位运算符:位与(&)、位或(|)、位异或(^) 34 3.7.10 三目运算符(?:) 35 3.7.11 赋值运算符 36 3.7.12 对象运算符(instanceof) 37 3.8 巩固练习 37 第4章 程序流程控制语句 39 4.1 if语句 39 4.1.1 if语句格式1 39 4.1.2 if语句格式2 40 4.1.3 if语句格式3 41 4.2 switch语句 44 4.3 for语句 46 4.3.1 break语句 49 4.3.2 continue语句 49 4.3.3 多重for循环语句 50 4.3.4 多重for循环语句中的break与continue 52 4.4 while语句 55 4.5 do-while语句 57 4.6 巩固练习 57 第5章 类与对象 59 5.1 类的定义与对象的创建 59 5.2 引用赋值 61 5.3 成员方法 62 5.3.1 void返回类型 64 5.3.2 无参方法 65 5.3.3 多参方法 65 5.4 局部变量和成员变量 67 5.5 this引用 68 5.6 静态变量与静态方法 70 5.7 成员与静态方法的关系 71 5.8 包与导入 72 5.9 访问控制符 74 5.10 重载 77 5.11 构造函数 79 5.12 类的初始化 83 5.12.1 静态块 84 5.12.2 实例块 84 5.13 巩固练习 85 第6章 数组 86 6.1 基本数据类型数组 86 6.2 一维数组的初始化 88 6.3 对象数组 88 6.4 二维数组 91 6.5 三维数组 95 6.6 巩固练习 97 第7章 对象与方法 99 7.1 对象的创建与销毁 99 7.2 值传递调用 102 7.3 引用传递调用 103 7.4 获取命令行参数 105 7.5 返回对象引用 106 7.6 返回新对象 107 7.7 自引用 108 7.8 递归调用 111 7.9 巩固练习 114 第8章 继承 117 8.1 继承的概念 117 8.2 子类对象的创建 118 8.3 this与super 119 8.4 继承中的访问控制符 123 8.5 覆盖 124 8.6 多态 126 8.7 引用的范围 127 8.8 引用变量的类型转换 128 8.9 Object类 129 8.10 “==”与equals() 130 8.11 Object型引用变量 132 8.12 类的层级图 134 8.13 巩固练习 135 第9章 抽象类与接口 136 9.1 抽象类 136 9.2 final关键字 138 9.3 接口 139 9.4 Cloneable 接口 143 9.5 Enumeration接口 144 9.6 巩固练习 145

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值