1.1 简单性摘要用下面11个关键术语
- 简单性
- 面向对象
- 分布式
- 健壮性
- 安全性
- 体系结构中立
- 可移植性
- 解释性
- 高性能
- 多线程
- 动态性
无需深奥的专业培训就可以进行的编程系统,并且符合当今的标准惯例尽可能地接近C++,以便系统更易于理解 Java剔除了C++中许多很少用,难以理解,易混淆的特性(这些特性带来的麻烦远远多于其带来的好处)支持开发能够在小型机器上独立运行的软件(基本的解释器以及类支持大约仅为40KB) 再加上基础的标准类库和对线程的支持(基本上是一个自包含的微内核)大约需要增加175KB 由于不断的扩展,类库已经相当庞大现在有一个独立的具有较小类库的Java微型版(Java Micro Edition),这个版本适用于嵌入式设备
1.2 面向对象面向对象设计是一种程序设计技术 它将重点放在数据(即对象)和对象的接口上面向对象:始终关注的是所制作的椅子,第二位才是所使用的工具;非面向对象:首先考虑的是所用的工具在本质上,Java的面向对象能力与C++是一样的 旗鼓相当Java与C++的主要不同点在于多重继承,在Java中,取而代之的是更简单的接口概念Java提供了更丰富的运行时自省空间
1.3 分布式Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样
1.4 健壮性具有多方面的可靠性Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性Java编译器能够检测许多在其他语言中仅运行时才能够检测出来的问题
1.5 安全性适用于网络/分布式环境
可以构建防病毒,防篡改的系统
防范各种攻击:
- 运行时堆栈溢出。如蠕虫和病毒常用的攻击手段
- 破坏自己的进程空间之外的内存
- 未经授权读写文件
Java代码不论来自哪里,都不能脱离沙箱。不可信代码在一个沙箱中执行,在这里它不会影响主系统。Java安全模型很复杂, Java浏览器插件不信任远程代码,除非代码有数字签名而且用户同意执行这个代码
很容易地在任何机器上解释执行,可以动态地翻译成本地机器代码。
Java虚拟机优点:可以检测指令序列的行为,从而增强安全性
Java规范中没有 “以来具体实现” 的地方,基本数据类型的大小以及有关运算都做了明确的说明。
在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题,二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。int为永远的32位的整数,字符串是用标准的Unicode格式储存的,作为系统组成部分的类库,定义了可移植的接口。Java库很好地支持平台独立性处理文件,正则表达式,XML,日期和时间,数据库,网络连接,线程等,不仅程序是可移植的,Java API往往也比原生API质量更高
java虚拟机可以在任何安装了jre的环境中运行,Java解释器可以在任何移植了解释器的机器上执行Java字节码,链接是一个增量式且轻量级的过程(开发过程变得更加快捷,更加具有探索性)
1.9 高性能更加高效的性能
字节码可以(在运行时刻)动态地翻译成对应这个应用的特定CPU的机器码 即时编译器可以监控经常执行代码,并且优化这些代码以提高速度。更为复杂的优化是消除函数调用(即 “内联”) 知道哪些类已经加载 基于当前加载的类集,如果特定函数不会被覆盖,就可以使用内联 (必要时,还可以撤销优化)
多线程可以带来更好的交互响应和实时行为
并发性 摩尔定律 更多的处理器
第一个支持并发程序设计的主流语言
java提供接口,操作接口以便操作系统多个处理器
库中可以自由地添加新方法和实例变量(对客户端却没有任何影响)
可轻易找到运行时类型信息(十分简单)
非常重要的特性
引入主流程序设计语言中
2. Java applet与Internet注:
J++ Java 有几乎相同的编程语言以及虚拟机
C# Java 有很多相似之处,然而使用的却是完全不同的虚拟机
从Internet下载Java字节码,并在自己机器上运行(在网页上运行的Java程序成为applet)
动态: 利用鼠标进行旋转,调整焦距等操作
| 版本 | 年份 | 新语言特性 | 类与接口的数量 |
|---|---|---|---|
| 1.0 | 1996 | 语言本身 | 211 |
| 1.1 | 1997 | 内部类 | 477 |
| 1.2 | 1998 | strictfp修饰符 | 1524 |
| 1.3 | 2000 | 无 | 1840 |
| 1.4 | 2002 | 断言 | 2723 |
| 5.0 | 2004 | 泛型类、for each循环、可变原参数、自动装箱、元数据、枚举、静态导入 | 3279 |
| 6 | 2006 | 无 | 3793 |
| 7 | 2011 | 基于字符串的选择语句、菱形运算符、二进制字面量、异常处理增强 | 4024 |
| 8 | 2014 | lambda表达式、包含默认方法的接口、流和日期/时间库 | 4240 |
| 9 | 2017 | 模块、其他的语言和类库增强 | 6005 |
内容出自:Java核心技术:基础知识:www.hzbook.com



