【读书笔记罢了,大量摘抄原文】
目录
第一章 Java程序设计概述
1.1 java程序设计平台
1.2 java"白皮书"的关键术语
- 简单性
人们希望构建一个无需深奥的专业训练就可以进行编程的系统,并且要符合标准惯例。
在设计java的时候尽可能接近C++是为了系统能够更易于理解。
Java剔除了C++中许多很少使用、难以理解、易混淆的特性。
- 面向对象
- 分布性
- java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。java应用程序能够通过URL打开和访问网络上的对象,其便捷成都就好像访问本地文件一样。
- 健壮性
- Java采用的指针模型可以消除重写内存和损坏数据的可能性。
- java编译器能够检测许多在其他语言中仅在运行时才能检测出来的问题。
- 安全性
-
- 体系结构中立
- 体系结构中立 --- Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。
- 编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有java运行时的系统,这些编译后的代码可以在许多处理器上运行。
- 精心设计是字节码不仅可以很容易地在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。
- java虚拟机:
- 解释虚拟机指令肯定会比全速运行机器指令慢很多,然而虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程被称为即时编译。
- java虚拟机还有一些其他的优点、它可以检测指令序列的行为,从而增强其安全性。
- 可移植性
- 在java中数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。
- 二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰。字符串是用标准的Unicode格式存储 的。
- 作为系统组成部分的类库,定义看可移植的接口。例如,有一个抽象的window类,并给出了在Unix、Windows和Machtosh环境下的不同实现。
- 除了与用户界面有关的部分外,所有其他的java库都能很好地支持平台独立性。你可以处理文件、正则表达式、XML、日期和时间、数据库、网络连接、线程等,而不用担心底层操作系统。
- 不仅程序是可移植的,Java API往往也比原生API质量更高。
- 解释型
- Java解释器可以在任何移植了解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程,所以开发过程变得更加快捷,更加具有探索性。
- 高性能
- 字节码可以(在运行时刻)动态地翻译成对应运行这个应用的特定的CPU的机器码。
- 现在即时编译器已经非常出色,以至于成为了传统编译器的竞争对手。在某些情况下,甚至超越了传统编译器,原因是他们含有更多可用的信息。例如,即时编译器可以监控经常执行哪些代码,并优化这些代码以提高速度。更为复杂的优化是消除函数调用(即“内联”)。即时编译器知道哪些类已经加载。基于当前加载的类集,如果特定的函数不会被覆盖,就可以使用内联。必要时撤销优化。
- 多线程
- 多线程可以带来更好的交互响应和实时行为。
- java是第一和支持并发程序设计的主流语言。
- 动态性
- java与C/C++比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何的影响。在java中找出运行时类型信息十分简单
第一章提到的 java与C++ 的区别
- java没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类
- C++可以实现多重继承而java的类不能多重继承,但是java的类可以同时实现多个接口。
- 与C++相比,java提供了更丰富的运行时的自省功能。
- Java采用的指针模型可以消除重写内存和损坏数据的可能性。
- Java中的int永远为32位的整数。在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商制定的其他大小。唯一的限制只是int类型的大小不能低于short int 并且不能高于long int。
- java与C/C++比更加具有动态性。它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端却没有任何的影响。在java中找出运行时类型信息十分简单。
1.3 java applet 与 Internet
用户从Internet下载java字节码,并在自己是机器上运行。在网页上运行的java程序称为applet。要使用applet,需要启用java的web浏览器执行字节码。不需要安装任何软件。任何时候只要访问包含applet的网页都会得到程序的最新版本。最重要的是,要感谢虚拟机的安全性,它让我们不必再担心来自恶意代码的攻击。
1.4 java的发展史
1.5 关于java的常见误解
1.java是HTML的扩展?
java是一种程序设计语言;HTML是一种描述网页结构的方式。除了用在网页上放置java applet的HTML扩展之外,两者没有任何共同之处。
2. 使用XML,所以不需要Java?
java是一种程序设计语言;XML是一种描述数据的方式。可以使用任何一种程序设计语言处理XML数据,而java API对XML处理提供了很好的支持。此外,许多重要的第三方XML工具采用java编写。
3. java是一种非常容易学习的程序设计语言?
4. java将成为适用于所有平台的通用性编程语言?
从理论上讲,这是完全可以实现的。但实际上,某些领域其他语言有更出色的表现,
5. java只不过是另外一种程序设计语言?
java是一种很好的程序设计语言,很多程序设计人员喜欢java 胜过C、C++或C#。有上百种好的程序设计语言没有广泛地流行,而带有明显缺点的语言,如:C++、Visual Basic却大行其道。
这是为什么呢?程序设计语言的成功更多取决于其支撑系统的能力,而不是优美的语法。人们主要关注:1)是否提供了易于实现某些功能的易用、便捷和标准的库?2)是否有开发工具提供商能建立强大的编程和调试环境?3)语言和工具集是否能够与其他计算基础架构整合在一起?
java的成功源于其类库能够让人们轻松地完成原本有一定难度的事情。例如:联网高。但这些并不是java成功的全部原因。