JAVA教程 第一讲 Java语言概述
2008-01-05 18:52:57 来源:WEB开发网1.1 java语言的发展史
1.1.1java语言在互联网时代获得巨大成功
大家想一想,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运行吗?显然是不可以的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到另外的计算机硬件上执行的,至少要做移植工作。要想让程序能够在不同的计算机上能够运行,就要求程序设计语言是能够跨越各种软件和硬件平台的,而java满足了这一需求。
1995年,美国Sun Microsystems公司正式向IT业界推出了java语言,该语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点,当时以web为主要形式的互联网正在迅猛发展,java语言的出现迅速引起所有程序员和软件公司的极大关注,程序员们纷纷尝试用java语言编写网络应用程序,并利用网络把程序发布到世界各地进行运行。包括IBM、Oracle、微软、Netscape、Apple、SGI等大公司纷纷与Sun Microsystems公司签订合同,授权使用java平台技术。微软公司总裁比尔盖茨先生在经过研究后认为"java语言是长时间以来最卓越的程序设计语言"。目前,java语言已经成为最流行的网络编程语言,截止到2001年中,全世界大约有310万java程序员,许多大学纷纷开设java课程,java正逐步成为世界上程序员最多的编程语言。
在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统,而PC机的硬件是INTEL体系,操作系统是windows或者是linux,因此相应的编程语言基本上只是适用于单机系统,例如COBOL、FORTRAN、C、C++等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,java就是在这种需求下应运而生的。正是因为java语言符合了互联网时代的发展要求,才使它获得了巨大的成功。
1.1.2 java语言的产生
任何事物的产生既有必然的原因也有偶然的因素,java语言的出现也验证了这一点。1991年,美国Sun Microsystems公司的某个研究小组为了能够在消费电子产品上开发应用程序,积极寻找合适的编程语言。消费电子产品种类繁多,包括PDA、机顶盒、手机等等,即使是同一类消费电子产品所采用的处理芯片和操作系统也不相同,也存在着跨平台的问题。当时最流行的编程语言是C和C++语言,Sun公司的研究人员就考虑是否可以采用C++语言来编写消费电子产品的应用程序,但是研究表明,对于消费电子产品而言C++语言过于复杂和庞大,并不适用,安全性也并不令人满足。于是,Bill Joy先生领导的研究小组就着手设计和开发出一种语言,称之为Oak。该语言采用了许多C语言的语法,提高了安全性,并且是面向对象的语言,但是Oak语言在商业上并未获得成功。时间转到了1995年,互联网在世界上蓬勃发展,Sun公司发现Oak语言所具有的跨平台、面向对象、安全性高等特点非常符合互联网的需要,于是改进了该语言的设计,要达到如下几个目标:
◇ 创建一种面向对象的程序设计语言,而不是面向过程的语言;
◇ 提供一个解释执行的程序运行环境,是程序代码独立于平台;
◇ 吸收C和C++的优点,使程序员轻易把握;
◇ 去掉C和C++中影响程序健壮性的部分,使程序更安全,例如指针、内存申请和释放;
◇ 实现多线程,使得程序能够同时执行多个任务;
◇ 提供动态下载程序代码的机制;
◇ 提供代码校验机制以保证安全性;
最终,Sun公司给该语言取名为java语言,造就了一代成功的编程语。
1.2 java的工作原理
1.2.1 java虚拟机(1)
java虚拟机是软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行保存在.class文件中的字节码。java虚拟机的"机器码"保存在.class文件中,有时也可以称之为字节码文件。java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件),java程序的编译和执行过程 ——如图所示——
1.2.1 java虚拟机(2)
但是,java虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。如下图所示,目前在SPARC结构、X86结构、MipS和PPC等嵌入式处理芯片上、在UNIX、Linux、windows和部分实时操作系统上都有java虚拟机的实现。 ——如图所示——
1.2.2 无用内存自动回收机制
在程序的执行过程中,部分内存在使用过后就处于废弃状态,假如不及时进行无用内存的回收,就会导致内存泄漏,进而导致系统崩溃。在C++语言中是由程序员进行内存回收的,程序员需要在编写程序的时候把不再使用的对象内存释放掉;但是这种人为的治理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。而在java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。
1.2.3 代码安全性检查机制
安全和方便总是相对矛盾的。java编程语言的出现使得客户端机器可以方便的从网络上下载java程序到本机上运行,但是如何保证该java程序不携带病毒或者不怀有其它险恶目的呢?假如java语言不能保证执行的安全性,那么它就不可能存活到今天。虽然有时候少数程序员会抱怨说applet连文件系统也不能访问,但是正是各种安全措施的实行才确保了java语言的生存
字节码的执行需要经过三个步骤,首先由类装载器(class loader)负责把类文件(.class文件)加载到java虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如applet程序中写本机文件系统的操作;假如字节码校验器检验通过,由java解释器负责把该类文件解释成为机器码进行执行。java虚拟机采用的是"沙箱"运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不答应程序访问该内存空间外的内存,假如是applet程序,还不答应访问客户端机器的文件系统。
1.2.4 Java语言的特点(1)
1. 简单、面向对象和为人所熟悉
java的简单首先体现在精简的系统上,力图用最小的系统实现足够多的功能;对硬件的要求不高,在小型的计算机上便可以良好的运行。和所有的新一代的程序设计语言一样,java也采用了面向对象技术并更加彻底,所有的java程序和applet程序均是对象,封装性实现了模块化和信息隐藏,继续性实现了代码的复用,用户可以建立自己的类库。而且java采用的是相对简单的面向对象技术,去掉了运算符重载、多继续的复杂概念,而采用了单一继续、类强制转换、多线程、引用(非指针)等方式。无用内存自动回收机制也使得程序员不必费心治理内存,是程序设计更加简单,同时大大减少了出错的可能。java语言采用了C语言中的大部分语法,熟悉C语言的程序员会发现java语言在语法上与C语言极其相似。
2. 鲁棒并且安全
java语言在编译及运行程序时,都要进行严格的检查。作为一种强制类型语言,java在编译和连接时都进行大量的类型检查,防止不匹配问题的发生。假如引用一个非法类型、或执行一个非法类型操作,java将在解释时指出该错误。在java程序中不能采用地址计算的方法通过指针访问内存单元,大大减少了错误发生的可能性;而且java的数组并非用指针实现,这样就可以在检查中避免数组越界的发生。无用内存自动回收机制也增加了java的鲁棒性。
作为网络语言,java必须提供足够的安全保障,并且要防止病毒的侵袭。java在运行应用程序时,严格检查其访问数据的权限,比如不答应网络上的应用程序修改本地的数据。下载到用户计算机中的字节代码在其被执行前要经过一个核实工具,一旦字节代码被核实,便由java解释器来执行,该解释器通过阻止对内存的直接访问来进一步提高java的安全性。同时java极高的鲁棒性也增强了java的安全性。
3. 结构中立并且可以移植
网络上布满了各种不同类型的机器和操作系统,为使java程序能在网络的任何地方运行,java编译器编译生成了与体系结构无关的字节码结构文件格式。任何种类的计算机,只有在其处理器和操作系统上有java运行时环境,字节码文件就可以在该计算机上运行。即使是在单一系统的计算机上,结构中立也有非常大的作用。随着处理器结构的不断发展变化,程序员不得不编写各种版本的程序以在不同的处理器上运行,这使得开发出能够在所有平台上工作的软件集合是不可能的。而使用java将使同一版本的应用程序可以运行在所有的平台上。
体系结构的中立也使得java系统具有可移植性。java运行时系统可以移植到不同的处理器和操作系统上,java的编译器是由java语言实现的,解释器是由java语言和标准C语言实现的,因此可以较为方便的进行移植工作。
赞助商链接