当前位置:课程学习>>第一章 Java概述>>文本学习>>知识点一
1. Java语言的起源
Java语言的诞生极富戏剧性。它起源于美国的Sun Microsystem公司的GreenTeam小组,该小组成立于1990年12月,由Sun公司的高级专家Patrick Naughton、Mike Sheridan和James Gosling组成。小组的主要目标是开发一种分散式系统架构,使其能在电冰箱、电视机、PDA、手机等消费类电子产品的操作平台上运行。1992年9月3日,GreenTeam发表了一种名为Star Seven的产品,它类似于我们今天使用的PDA,它拥有着甚至比现在的PDA还强大得多的功能,如无线通信、彩色的5英寸LCD显示屏等。
GreenTeam小组一开始准备采用当时最为流行的C++语言进行开发,但发现C++太复杂,安全性也差,很多地方难以胜任,最后决定以C、C++为基础开发一种新的语言——Oak(橡树)语言,这就是Java的前身。他们期盼着产品能够像橡树(Oak)一样生机勃勃,能够在未来的市场上生根、发芽、茁壮成长。Oak的主要是用来编写Star Seven上的应用程序。其实我们今天使用的一些Java所提供的特性,早在Oak时就已经具备了。如安全性、面向对象技术、平台无关性、内存管理、多线程机制、异常处理等等。
由于当时在注册Oak的商标时,Oak这个名字已经被另外一家公司注册过了,因此只能更换名称。取名时受手中咖啡的提示,最终定名这种新的语言为Java。
2.Java语言的产生
由于GreenTeam小组开发的项目在参与交互式电视机项目的投标中失败了,于是Sun公司从市场经济的角度出发,决定取消这个小组的计划。恰巧此时,也就是1993年3月,Mark Ardreesen(马克 安德森——互联网浏览器之父)开发出的世界第一个浏览器Mosaic,以及1994年Netscape公司推出的Netscape浏览器,都启发了GreenTeam小组,他们发现可以利用Java语言开发出动态的Web页面,于是开始编制浏览器。Sun公司最早推出的WebRunner,就是后来的HotJava,它为公司带来了巨额利润,Sun也由此成为当时世界上最大的网络设备提供商。WebRunner的发明人James Gosling(詹姆斯 戈士林)被尊称为Java之父。
1995年5月23日,Sun公司正式发布了JDK(Java Development Kits)1.0 a2版本,它标志着Java的正式诞生。这里对Java本意做一下简单介绍:Java的原意是爪哇,印度尼西亚的一个岛屿名称,该岛以盛产咖啡而闻名于世。因此Java的标识便是Java Cup,一个装满热气腾腾咖啡的杯子。
3.Java语言的发展和应用
Java发展至今,Sun公司已陆续推出了多个版本,截止到2017年4月,Sun公司推出的最新版本为:Java SE 8.1(标准版)、Java EE7.2(企业版)、Java ME8.3(微型版)。在此之间对Java发展最有影响的两件大事是:
(1)1998年,Java1.2版本(Java 2平台)正式发布。经过三年的发展时间,Sun终于知道了Java适合干什么。根据官方的文档,Java 2是Sun意识到“one size doesn’t fit all”之后,才把最初的Java技术打包成三个版本,这也就是著名的J2ME、J2SE、J2EE。
(2)2004年9月30日,代号为“Tiger”,研发历时近三年的J2SE 5.0发布了正式版本,这是Java平台历来版本发布中改动面最大的一次。改进着重体现于语言特性上,这在很大程度上,简化了开发人员日常的编程任务,以往一些琐碎的手工劳动都以轻松自然,安全可靠的自动化实现取而代之。其中的注解功能,以及随之而来的声明式编程,还对构筑于J2SE 5.0之上的J2EE 6.0产生了巨大影响。现在,Java的应用已经非常广泛,其主要集中在Web服务器、关系数据库、大型计算机、手机、智能卡、移动计算、科研、娱乐等方面。
4.Java语言的特点
(1)Java语言是一种面向对象的程序设计语言
程序设计语言从类型上大体上可以分为两大类:面向过程的语言和面向对象的语言。
面向过程程序设计语言致力于用计算机能够理解的逻辑来描述需要解决的问题和解决问题的方法。其核心是实际要解决的问题,针对要解决的问题,选择适当的数据结构,编制相应的算法来解决,因此也可以说其核心是数据结构和算法,其中数据结构用来量化描述需要解决的问题,算法则是研究如何用更快捷、高效的方法来组织解决问题的具体过程。典型的语言有Basic、Fortran、C等。
而面向对象程序设计方法是一种全新的思维模式,它以客观实体为核心,使之抽象成类,用类中的方法来访问和处理类中的成员,从而解决实际问题。C++便是面向对象技术的推动者。Java使面向对象技术进一步得到了发展,它吸取了C++面向对象的概念,同时摒弃了C++中存在的缺点。
(2)Java语言采用解释执行方式
解释执行是对源程序的翻译与执行一次性完成,不需要整体编译链接,但需要一定的软件环境来做源程序的解释器;而编译执行则是通过工具软件将源程序翻译成可执行的目标代码(即.exe文件)。
编译执行的语言具有很强的指令依赖性,移植性较差,但执行效率高,常见的语言有Visual C++、C++、Delphi等;而解释执行的语言具有良好的动态特性和很强的可移植性,易调试,但执行效率低,占用空间较大,常见的语言有Java、Visual Basic、Power Builder等。
Java语言为了提高执行效率,在解释执行之前进行了一定的编译操作,把源码变成了Byte Code(字节码)的.class文件,这样在运行的时候就省去了语法和结构的分析工作,解释执行的则是Java的字节码文件。此外在执行中采用了Java HotSpot技术从而提高了Java虚拟机的执行性能。
除了上述两个典型的特点外,Java语言还具有以下重要的特点(并非全部):
平台无关性:正如Sun公司最初提出的目标Write once,Run everywhere(一次编写到处运行),Java源码可以不经任何修改就可以运行在不同的操作系统上。
分布性:Java内置了HTTP、FTP等TCP/IP协议类库,很容易通过这些类库来开发网络应用程序。
可靠性和安全性:Java抛除了C++中不常用而又容易出错的地方,如指针、结构,采用了自动垃圾收集等措施,保证了可靠性。此外Java程序的三级代码安全检查可以有效地防止非法代码的侵入、避免病毒的侵害,从而保证了安全性。
多线程:Java运行环境本身就是多线程的;Java内置了语言级多线程功能,可使用户程序并发执行;此外也提供同步机制保证多线程之间的正确共享。
(3)Java虚拟机
JVM是Java虚拟机(Java Virtual Machine)的缩写,它是通过软件方式来仿真模拟硬件各种功能的虚拟计算机,Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行,Java正是通过JVM实现了Java源程序的跨平台功能,图1.1就能很好的描述Java虚拟机的作用。
图1.1 Java虚拟机的作用
(4)垃圾收集
垃圾收集(GC:Garbage Collected)机制是指JVM用于释放那些不再使用的对象所占用的内存的一种自动内存资源回收机制。GC是一个后台系统级的线程,用来管理内存和执行收集操作。垃圾收集的目的在于清除不再使用的对象,GC通过确定对象是否被活动对象引用来确定是否收集该对象,采用的方法主要有引用计数和对象引用遍历。