Java语言
在90年代初,Sun公司的开发人员设计出Java,目的是为消费电子产品编写内置的系统软件。为了克服C++的局限性,开发小组决定改变语言,而不是改变编写软件的方法。最初的Java主要汲取了C++语的内容,同时也汲取了其他诸如Objective C和Smalltalk语言这样的面向对象的程序设计语言的优点。同互联网相关的特性是后来才加入的,时间约在1993年左右。
在1995年,Java正式登堂亮相。当时,Netscape公司宣布Navigator 2.0将可以运行嵌入在网页中的Java程序。这个技术使得HTML 的编写人员可以创建交互式文档,该文档可以用支持 Java的网络浏览器观看。程序员可以编写称为“applets”的Java程序,并可用Java编译器来编译applets。编译后的代码,也称字节码,通过HTML文档中的URL进行调用之后,由浏览器中内置的字节码解释器执行。理论上,编译器和解释器的这种非同寻常的结合,使得Java既有编译语言的速度快的特点,又有解释性语言的可移植性强的优点。因为字节码同机器无关。同时Java也增强了系统的安全性,因为解释器可以在执行每个字节码之前进行验证。
作为一种程序设计语言,Java同C++非常类似。Java 是完全的面向对象语言,除了诸如int和float这样的原始类型生成的变量,其余都是对象,包括字符串和数组在内。对象在类中构成一个模型,其中包含数据(属性)和函数(方法),每个对象可以实现它自己的特性和行为。同C++一样,类既可以凭空创建,也可以从现有的类中派生。派生出来的类继承了它祖先的方法和属性。
Java中用new 操作符创建对象,这同C++中的new操作符类似。下列语句从一个名为Window的类中创建一个对象,然后调用对象的show方法:
Window myWindow; myWindow = new Window (); myWindow.show ();
这小段程序代码表明了Java和C++之间的重大区别。在C++中,语句
Window myWindow;
创建了Window的一个实例。该语句创建了一个名为myWindow的变量,其中存放的是Window对象的一个引用。MyWindow变量一开始内容不确定,一旦语句
myWindow = new Window ();
执行后,就创建了一个对象,该对象把其引用拷贝到myWindow中。注意两种语言对关键字new的用法上的区别。在C++中, new返回的是对象的指针;在Java中,new返回的是对象的引用。在Java中不存在指针的概念,所以你在Java中不会遇到这样的语句:
myWindow->show ();
不采用指针,可以防止程序访问不属于它的领域的内存区域。同时,也免除了C和C++中一些常见的程序设计错误。(要想了解Java 和C++之间的其他一些区别,请阅读本文的另外一节“Java和 C++: 同父异母的兄弟?”)
面向对象的程序语言的重要组成部分是一个包含预先设计好的代码的类库。在Java中,类库称为“包”, Java为程序员提供了一系列称为Java API包的标准类。名字诸如java.util和java.awt的包可以通过关键字import引入到程序中。语句
import java.awt.*;
把java.awt 包中的所有类引入到程序中,这类似于C++语言中如下语句的作用:
#include <awt.h>
java.awt就是个API包,它包含了诸如窗口,菜单,对话框和其他用户接口对象的类。包“awt”这个名字表示“Abstract Window Toolkit”(抽象窗口工具),另外一个名为java.lang 的API 包,它包含了字符串类,线程类和其他基本对象类型,它将自动引入到每个Java程序中