Java语言的特点
Java是一种适用于分布式计算环境的跨平台面向对象编程语言。
具体来说,它具有以下特点:
简单、面向对象、分布式、解释性、可靠、安全、平台无关、可移植、高性能、多线程、动态等。
接下来重点讲Java语言的特点,如面向对象、平台无关、分布式、多线程、可靠、安全等。
1.面向对象的
面向对象实际上是现实世界模型的自然延伸。现实世界中的任何实体都可以看作是一个物体。对象通过消息相互交互。另外,现实世界中的任何实体都可以属于某一类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以进程为中心、算法驱动的,那么面向对象的编程语言就是以对象为中心、消息驱动的。用公式表示,程序化编程语言是:程序=算法+数据;面向对象的编程语言是:程序=对象+消息。
所有面向对象的编程语言都支持三个概念:封装、多态和继承,Java也不例外。现实世界中的物体都有属性和行为,它们被映射到计算机程序中。属性代表对象的数据,行为代表对象的方法(它们的作用是处理数据或者与外界交互)。所谓封装,就是用一个自治的框架把对象的数据和方法连接起来,形成一个整体。可以说,对象是支撑包装的手段,是包装的基本单位。Java语言有很强的封装性,因为Java没有全变量,没有主函数,Java中的成员大部分都是对象,只有简单的数字类型,字符类型,布尔类型除外。对于这些类型,Java也提供了相应的对象类型来与其他对象进行互操作。
多态性是多种表现形式,具体来说,可以用“一个外部接口,多个内部实现方法”来表示。例如,计算机中的堆栈可以存储各种格式的数据,包括整数、浮点或字符。无论存储哪种数据,栈的算法实现都是一样的。对于不同的数据类型,程序员不必手动选择,只需使用统一的接口名称,系统可以自动选择。Operatoroverload一直被认为是多态机制的优秀体现,但Java最终取消了它,因为它会让程序变得难以理解。
继承意味着一个对象直接使用另一个对象的属性和方法。其实我们遇到的很多实体都有传承的意义。例如,如果一辆汽车被视为一个实体,它可以被分为多个子实体,如卡车和公共汽车。这些子实体都具有汽车的特征,所以汽车是它们的“父亲”,这些子实体是它们的“孩子”。Java为用户提供了一系列的类。Java类具有层次结构,子类可以继承父类的属性和方法。与其他面向对象的编程语言不同,Java只支持单一继承。
2?平台独立性
Java是一种平台无关的语言,这意味着用Java编写的应用程序无需修改就可以运行在不同的软硬件平台上。平台无关性有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台独立性,表明用C或C++编写的应用程序不需要修改就可以运行在不同的平台上,只需要重新编译。
Java主要依靠Java虚拟机(JVM)来实现目标代码级别的平台独立性。JVM是一个抽象的机器,依附于具体的操作系统,有一套虚拟机指令,还有自己的栈,寄存器组等等。但是JVM通常是用软件而不是硬件实现的。(目前,SUN Systems已经设计并实现了一种Java芯片,主要用于网络计算机NC。
此外,Java芯片的出现将使Java更容易嵌入家用电器。)JVM是Java的平台无关基础。在JVM上,有一个Java解释器来解释Java编译器编译的程序。写完软件后,Java程序员通过Java编译器将Java源程序编译成JVM的字节码。任何装有Java解释器的机器都可以运行这个程序,不管这个字节码是在什么平台上生成的。此外,Java使用基于IEEE标准的数据类型。JVM保证了数据类型的一致性,也保证了Java的平台独立性。
Java的平台独立性具有深远的意义。首先,它使程序员梦寐以求的事情(开发软件一次运行在任何平台上)成为现实,这将大大加速和促进软件产品的发展。其次,Java的平台独立性迎合了“网络计算机”的思想。如果大量常用的应用软件(如文字处理软件等。)用Java重新编写并放在互联网服务器上,拥有NC的用户将不需要占用大量空间来安装软件,他们只需要一个。
Java解释器,每当需要使用某个应用软件时,只需下载软件的字节码,运行结果也可以传回服务器。目前,已经有几家公司开始使用这种新的计算模式来构建自己的企业信息系统。
3?分布的
分发包括数据分发和操作分发。数据分布是指数据可以分布在网络中不同的主机上,操作分布是指一个计算分布在不同的主机上进行处理。
Java支持WWW客户机/服务器计算模式,所以支持这两种发行版。对于前者,Java提供了一个名为URL的对象。使用这个对象,您可以像访问本地文件系统一样打开和访问具有相同URL地址的对象。对于后者,Java applet可以从服务器下载到客户端,即部分计算在客户端完成,提高了系统执行的效率。
Java提供了一套完整的网络类库,开发者可以利用这些类库来设计网络程序,从而方便地实现Java的分布式特性。
4?可靠性和安全性
Java本来是设计用于电子消费产品的,所以对可靠性要求很高。Java虽然起源于C++,但是它消除了C++的很多不可靠因素,可以防止很多编程错误。首先,Java是一种强类型语言,需要显式的方法声明,保证编译器能够发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,防止非法访问内存;再次,Java的自动细胞收集防止了内存丢失等动态内存分配带来的问题;第四,Java解释器运行时,可以发现数组和字符串的访问越界。最后,Java提供了异常处理机制,这样程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务,方便恢复。
因为Java主要用于网络应用开发,所以对安全性的要求更高。如果没有安全保障,用户从网络下载程序执行是非常危险的。Java通过自身的安全机制防止病毒程序的产生和下载程序到本地系统的威胁。当Java字节码进入解释器时,它必须首先被字节码检查器检查。然后,Java解释器将决定程序中类的内存布局。然后,类加载器负责将网络中的类加载到单独的内存区域,以避免应用程序之间的干扰和破坏。最后,客户端用户可以限制从网络加载的类,使其只能访问某些文件系统。
上述机制的结合使Java成为一种安全的编程语言。
5?多线程操作
线程是操作系统的新概念,也叫轻量级进程,是比传统进程更小的可以并发执行的单元。
C和C++采用单线程架构,Java提供多线程支持。
Java以两种方式支持多线程。一方面,Java环境本身是多线程的。几个系统线程负责无用单元回收、系统维护等必要的系统级操作;另一方面,Java语言内置了多线程控件,可以大大简化多线程应用的开发。Java提供了一个类线程,负责启动操作,终止线程,检查线程状态。Java线程也包括一组同步原语。这些原语负责线程的并发控制。利用Java的多线程编程接口,开发人员可以轻松编写支持多线程的应用程序,提高程序执行的效率。必须注意的是,Java的多线程支持在一定程度上受到运行时支持平台的限制。例如,如果操作系统本身不支持多线程,Java的多线程特性就可能无法表现出来。
二、Java小程序及应用
用Java,你可以写两种类型的程序:Applet(也叫JavaApplet)和JavaApplication。小程序是嵌入在HTML文档中的Java程序;Java应用程序是从命令行运行的程序。对于Java,Java小程序的大小和复杂程度没有限制。事实上,Java小程序在某些方面比Java应用程序更强大。但由于目前互联网传播速度有限,大部分小程序规模较小。小程序和应用的技术区别在于运行环境。
Java应用程序运行在最简单的环境中,它唯一的外部输入是命令行参数。另一方面,Java小程序需要来自Web浏览器的大量信息:它们需要知道什么时候启动,什么时候放在浏览器窗口中,在哪里激活,什么时候关闭。因为这两种不同的执行环境,小程序和应用的最低要求是不一样的。
因为WWW使得发布小程序非常方便,所以小程序更适合作为互联网上的应用。相反,非网络系统和内存小的系统比Java小程序更适合Java应用。此外,Java应用程序也易于使用互联网作为基础环境。其实一些优秀的Java应用也不过如此。