版权声明:本文为博主ExcelMann的原创文章,未经博主允许不得转载。
第1章 Java程序设计概述
作者:ExcelMann,转载需注明。
一、Java“白皮书”的关键术语
- 简单性
首先,Java是C++语法的一个“纯净”版本,没有头文件以及指针运算等。其次,简单的另一方面是小。Java的目标之一是支持能够在小型机器上独立运行的软件。现在有一个独立的具有较小类库的Java微型版本(Java Micro Edition),适用于嵌入式设备。 - 面向对象
首先,面向对象设计是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。 - 分布式
Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。能够通过URL打开和访问网络上的对象,其便捷程度就像是访问本地文件一样。 - 健壮性
Java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题。 - 安全性
一开始,Java就设计成能够防范各种攻击,其中包括:
1.运行时堆栈溢出,这是蠕虫和病毒常用的攻击手段;
2.破坏自己的进程空间之外的内存;
3.未经授权读写文件;
不过在遭遇多次高调攻击之后,浏览器开发商和Oracle开始越来越谨慎。Java浏览器插件不再信任远程代码,除非代码有数字签名而且用户同意执行这个代码。
- 体系结构中立
Java编译器会生成与特定的计算机体系结构无关的字节码指令,精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以动态地转换成本地机器代码。
即时编译:虚拟机有一个选项,可以将执行最频繁的字节码序列转换成机器码,这一过程称为即时编译.
本地代码,是计算机编程(代码),编译用来运行一个特殊的处理器(如英特尔x86级的处理器)和它的特殊指令集。比如,在x86级CPU的电脑上的本地代码就是x86指令集组成的代码。
在JVM中,无论是解释器解释执行,还是即时编译器编译成本地代码后执行本地代码,最后都是转换成了本地代码(适合当前计算机运行的指令集),交给CPU执行的。解释器可以立马启动和执行,省去编译的时间,立即执行,但是解释器每次执行都要解释转换为本地代码很耗时。即时编译的时间算作程序运行的时间,所以第一次编译时很耗时,程序启动慢,但是编译后可以存储在本地,以后直接调用该本地代码,执行速度快。
- 可移植性
在Java规范中,没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算的行为都有明确的说明。 - 解释型
Java解释器可以在任何移植了解释器的机器上直接执行Java字节码。 - 高性能
字节码可以(在运行时)动态地转换成对应运行这个应用的特定CPU的机器码。 - 多线程
如今,因为摩尔定律即将走到尽头,大家不再追求更快的处理器,而是着眼于获得更多的处理器,而且要让它们一直保持工作。 - 动态性
Java能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何的影响。
二、Java语言的演进
版本 | 新语言特性 |
---|---|
1.0 (1996) | 语言本身 |
1.1 (1997) | 内部类 |
1.2 (1998) | strictfp修饰符 |
1.3 (2000) | 无 |
1.4 (2002) | 断言 |
5.0 (2004) | 泛型类、"for each"循环、可变元参数、自动装箱、元数据、枚举、静态导入 |
6 (2006) | 无 |
7 (2011) | 基于字符串的选择语句、菱形运算符、二进制字面量、异常处理增强 |
8 (2014) | lambda表达式、包含默认方法的接口、流和日期/时间库 |
9 (2017) | 模块、其他的语言和类库增强 |