黑马程序员——JAVA学习笔记一(JAVA概述)

  1996年Java第一次发布就引起了人们极大地兴趣,Java的确是一种优秀的程序设计语言,具有许多非常优秀的语言特性,当然Java并不是一种语言,Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植以及自动垃圾回收等服务的执行环境。Java这种功能齐全的出色语言,具有高质量的执行环境以及庞大的库。正是因为它集多种优势于一身,所以对广大的程序设计人员有着不可抗拒的吸引力。
JAVA具有以下特性:
(1)简单性
  Java剔除了C++中许多很少使用、难以理解、易混淆的特性。Java语法是C++ 语法的一个纯净版本。这里没有头文件、指针运算、结构、联合、操作符重载、虚基类等。然而设计者也没有试图清除C++中所有不适当的特性。Java的另一个方面是小,Java的能在小型机器上独立运行,基本的解释器以及类支持大约仅为40KB;再加上基础的标准类库和对线程的支持大约需要增加175KB,在当时,这是一个了不起的成就,现在有一个独立较小类库的Java微型版(Java Micro Edition)用于嵌入式设备。
(2)面向对象
  面向对象(Object Oriented Pragramming)是一种程序设计技术,它将重点放在数据和对象的接口上。用木匠打一个比方,一个“面向对象”的木匠始终关注的是所制作的椅子,第二位才是所使用的工具;一个“非面向对象”的木匠首先考虑的是所用的工具。本质上,Java的面向对象能力和c++是一样的。Java和C++的主要不同点在于多继承,在Java中,取而代之的是简单的接口概念,以及Java的元类模型。
(3)网络技能
  Java有一个扩展的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序就能够通过URL打开和访问网络上的对象,其便捷程度就像访问本地文件一样。人们已经看到Java的网络能力强大且易于使用。
(4)健壮性
  Java的设计目标之一在于使得Java编写的程序具有多方面的可靠性。Java投入了大量的的精力进行早期的问题检测、后期动态的(运行时)检测,消除了有出错的倾向.......Java和C++的最大不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性。没有指针的语言中,许多数据结构很难实现。Java具有双方的优势,他不需要指针构造数组和字符串。如果必要的话,他也能够具有指针的能力,如链表。Java是绝对安全的,其原因是永远不会存取一个“坏的”指针,造成内存分配的错误,也不必防范内存泄露。
(5)安全性
  Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大的精力。使用Java可以构建防病毒、防篡改的系统。在任何情况下,蒙骗Java的安全机制都是十分困难的。一开始,Java就设计成能够防范各种攻击,其中包括:
  运行时堆栈溢出,蠕虫等病毒常用的攻击手段。
  在自己的处理空间之外破坏内存。
  未经授权读写文件。
  许多的安全机制相继加入Java中,从Java1.1开始就有了数字签名(Digitally Signed Class)机制,通过数字签名类,可以确定类的作者,如果信任这个类的作者,这个类就可以在你的机器上拥有更多的权限。
(6)体系结构中立
  编译器生成一个体系结构中立的目标文件格式,这是一种编译后的代码,只要有Java运行环时系统,就可以在许多处理器上运行。当然解释字节码肯定会比全速运行机器指令慢很多。然后虚拟机有一个选项,可以使用最频繁的字节码序列翻译成机器码,这一过程被称为即时编译(Just-in-time compiling)。虚拟机还有其它的优点,它可以检测指令序列的行为,以增强其安全性。有些程序还可以快速地生成字节码,并动态地增强所运行程序的处理能力。
(7)可移植性
  与C和C++不同,Java规范中没有“依赖具体实现”的地方。起本数据类型的大小以及有关算法都做了明确的说明。比如,Java中int类型为32位,而在C或C++中可能为16 或32。在Java中,数据类型具有固定的大小,这消除了代码移植时让人头疼的主要问题。字符串都是用标准的Unicode存储。
(8)解释性
  Java解释器可以再任何移植了解释器的机器上执行Java字节码。增量式链接有优势,但给开发过程带来的好处显然言过其实了。事实上,早期的Java开发工具的速度相当慢。现在,使用即时编译器翻译成机器码。
(9)高性能
  字节码可以(在运行时)快速的翻译成运行这个应用程序的特定CPU的机器码。现在的即时编译器已经非常出色,以至于成了传统编译器的竞争对手。在某些情况下,甚至超越了传统编译器,其原因是它们含有更多的可用信息。
(10)多线程
  多线程可以带来更好的交互响应和实时行为。只要操作系统支持,Java中的多线程就可以利用多个处理器。在低层,主流平台的线程实现机制各不相同,在不同的机器上,只是调用多线程的代码完全相同。
(11)动态性
  从各种角度看,Java比C++更具有动态性。它能适应不断地发展环境。库中可以*的添加新方法和实例变量,而对客户端却没有任何影响。当需要将某些代码添加到正在运行的程序中时,动态性将是一个非常重要的特性。
黑马程序员——JAVA学习笔记一(JAVA概述)