Java语言来自于Sun公司的一个由James Gosling负责,名字叫Green的项目小组。这个小组最初的目标是能够在诸如电视机顶盒、烤面包机、PDA这样数字控制的电子消费产品上开发应用程序。然而消费电子产品种类繁多,即使是同一类消费电子产品所采用的处理芯片和操作系统也不相同,也存在着跨平台的问题。当时最流行的编程语言是C和C++语言,开发人员就考虑是否可以采用C++语言来编写消费电子产品的应用程序,但是研究结果表明,对于消费电子产品而言C++语言过于复杂和庞大,并不适用,安全性也并不令人满意。于是该小组就力图设计一种独立于硬件平台的计算机语言来解决这个问题,最终设计出了一种以C++为基础,融合了C和C++等传统语言优点的一套面向对象的程序设计语言,并起名为Oak(Java语言的前身,据传是以Gosling窗外的一颗橡树为名)。但是Oak语言在商业应用上并未获得成功,直到1995年,互联网在世界上蓬勃发展,Sun公司发现Oak语言所具有的跨平台、面向对象、安全性高等特点非常符合互联网的需要,于是决定改进Oak语言的设计将其应用于WWW开发中,并正式注册命名为Java。Sun公司用Java开发了一个Web浏览器(Hot Java),通过这个完全用Java语言设计的浏览器在互联网上展示了Java的风采,Sun公司又决定让程序开发者免费使用Java,这才真正地将Java推向了全世界。
Java的名字来历也有一段趣闻,据传在申请注册商标时,由于Oak(橡树)这个商标已经有人使用了,所以Sun公司必须重新为这个语言起一个名字。有一天,项目组几位成员在咖啡馆中边喝咖啡边讨论新名称的问题,其中一人突然发现他们喝的是一种Java(爪呱)咖啡,于是灵机一动就提议叫Java,马上得到了其他人的赞同,于是Java就成为了这个语言的新名字。这也就是为什么我们经常会在与Java相关的各种文档中看到一杯冒着热气的咖啡杯的原因了。
1995年当时以web为主要形式的互联网正在迅猛发展,Java语言的出现以其安全、跨平台、面向对象、简单、适用于网络等显著特点迅速引起所有程序员和软件公司的极大关注。程序员们纷纷尝试用Java语言编写网络应用程序,并利用网络把程序发布到世界各地。包括IBM、Oracle、微软、Netscape、Apple、SGI等IT业界大公司纷纷与Sun公司签订合同,要求被授权使用Java平台技术。微软公司总裁比尔盖茨先生也曾经过研究后认为“Java语言是长时间以来最卓越的程序设计语言之一”。
到目前为止,Java语言已经成为最流行的网络编程语言,全球大约有400多万软件开发商,上千万的程序员在Java平台上开发软件,全世界的每个主要行业领域都在使用Java,任何使用编程技术的设备、计算机和网络都在大范围地应用Java。许多大学也纷纷开设Java课程,Java语言正逐步成为世界上程序员最多的编程语言。
Java语言的特点主要表现在以下几个方面:
1.简单
Java语言来源于C++,其大部分语法结构都与C++相似,因此一般熟悉C++语言的编程人员学习起来非常容易。同时Java所具有的自动内存管理机制也大大简化了Java程序设计开发。与C++相比,Java去掉了很多容易混淆和较少使用的特性,增加了内存空间自动垃圾收集功能,使开发工作变得简单而可靠。
2.平台无关性
Java运行于虚拟机(JVM)上,实现了不同平台之间的Java接口,因此Java开发的程序可以运行于不同的系统平台。Java虚拟机建立在硬件和操作系统之上,用于实现Java字节码(Byte Code)的解释和执行等功能,为不同系统平台提供统一的Java接口。Java字节码是一种近似于机器码的中间码,不受计算机硬件设备和操作平台种类的限制,只要计算机中有Java运行的环境,Java字节码就可以在其上运行,这也正是Java最为突出的特征:一次编译,随处运行。配合严格规定的数据类型和类结构标准,使Java编写的程序具有非常良好的可移植性。
3.面向对象
Java是一种面向对象的程序语言,吸收了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁和便于维护性。用Java语言设计程序时,以面向对象的方式来思考,程序员只需要把主要精力用在类和接口的设计及应用上即可,而不是专注于程序流程上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。与C++不同的是在Java中,类的继承关系是非多重的,一个子类只有一个父类。
4.安全性
Java的设计目的是提供一个用于网络/分布式的计算环境。因此,Java语言特别强调安全性。
从内存管理的角度看,一方面Java不允许用户利用程序强制对内存进行存取操作,即对程序员来说内存分配时透明的,这种机制使内存出错的几率大大减小。另一方面,Java编译器也没有对内存分配的决定权,而是通过系统所在的软硬件平台来决定。同时JVM在解释Java字节码的同时会对每段代码进行安全检测,对所有不合法的数据和无权限的存取操作加以阻隔,所以对于不合法的字节码是无法被解释和执行的。
5.解释执行
Java与C++最大的不同点在于Java是一种半编译半解释型的语言。用Java编写的程序文件都先被编译成字节码,再通过JVM解释成为机器码,而不像C++编写的程序一经编译即成为机器码。
Java源程序被编译后所形成的字节码被设计成接近真正的汇编语言机器码,因此解释器在解释字节码时速度会相当快。虽然执行速度还是比不上一次性编译,但以牺牲较小的执行速度换取出色的移植性和稳定性显然是值得的。
Java的解释器可以直接在任何已经移植解释器的计算机上解释和执行Java字节码。但需要注意的是,在高版本环境下编译的Java字节码到低版本解释器环境下运行有时可能会产生问题。
6.多线程
Java的多线程(Multithreading)机制保证程序可以并行运行。多线程让程序同时拥有数个线程来运行不同的工作,比如当一个线程处理计算工作时,另一个线程可同时处理输出操作,而不需要采用全局的事件循环机制。使用Java开发出来的多线程程序比传统的单一线程程序所占用的CPU资源少。
7.动态
Java的设计使其适应于不断发展的环境。在类库中可以自由地加入各种新的类和方法以适应新的环境要求,且不会影响用户程序的执行。
Java语言目前在服务器端确立了强大的战略优势,同时由于其独有的特性,在嵌入式系统方面的应用前景被非常看好,未来的发展方向肯定更是与互联网的发展需求紧密地联系在一起。
目前Java已作为一门综合性技术在众多领域得到快速的发展和应用。使用Java开发的主要领域有:
l Web页面动态设计,网站管理和交互操作等基于Internet的系统管理功能模块的设计。
l 嵌入式系统的开发和应用。
l 交互式、可视化图形软件的开发。
l 分布式计算系统的开发应用。
l 电子商务系统的开发与应用。
l 多媒体系统的设计与实现。
当前Java技术的架构包括以下三个方面:
l J2SE(Java 2 Standard Edition):标准版,包括标准的Java 2 SDK、工具、运行时环境和API,用于那些Java程序设计语言编写、部署和运行Applet和应用程序的开发人员,是桌面开发和低端商务应用的解决方案
l J2EE(Java 2 Enterprise Edition):企业版,通过基于标准化模块组件和一整套的相关服务能够自动处理应用程序行为的许多细节,从而大大简化了多层企业应用程序的构造和部署,是以企业为环境而开发应用程序的解决方案。
l J2ME(Java 2 Micro Edition):小型版,包含高度优化的Java运行时环境,是致力于电子消费产品和嵌入式设备的解决方案。
1.1 区分程序、算法、程序设计语言的概念。
1.2 简述计算机语言的主要分类。
1.3 有哪几种类型的程序设计语言?
1.4 简述程序设计语言发展的过程及面向对象的程序设计思想。
1.5 什么是类?什么是对象?类与对象有何关系?
1.6 简述Java语言的特点。
1.7 高级程序设计语言与低级程序设计语言有什么区别?
1.8 Java语言有何优点?目前Java开发架构包括哪几方面?