Java的优越性(与c++比较)好学(相对)目前市场需求量大可移植性好安全性高多线程纯的面向对象语言Java与.net相比开源社区开发工具免费(Eclipse)信息与计算科学专业的学生推荐书籍:Java2核心技术(第七版)ThinkinginJava第一章Java程序设计概述1.1机器语言、汇编语言和高级语言1.2Java语言概述1.3Java平台和主要应用方向1.4Java的垃圾回收与代码安全检查机制1.5典型的Java开发环境1.6Java编程示例1.7反编译工具的介绍1.8JavaJDK6新功能介绍1.1机器语言、汇编语言和高级语言计算机程序设计语言的种类非常多,总的可以分成机器语言,汇编语言,高级语言三大类。机器语言是计算机唯一能接受和执行的语言,与硬件紧密相连。机器语言由二进制码组成,每个二进制码是一条指令。一条指令通常由两个部分组成:操作码+操作数。操作码规定了计算机要执行的基本操作;操作数规定了操作对象或操作对象的地址。汇编语言(AssemblyLanguage)是面向机器的程序设计语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。汇编语言中,用助记符代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。机器语言和汇编语言都是面向机器的,高级语言是面向用户的。由于汇编语言依赖于硬件体系,且助记符量大难记,于是人们又发明了更加易用的所谓高级语言。高级语言中的语法和结构更类似普通英文,且由于远离对硬件的直接操作,使得一般人经过学习之后都可以编程。用高级语言编写的程序叫做高级语言源程序,必须翻译成机器语言目标程序才能被计算机执行。高级语言的翻译有两种方式:编译方式和解释方式。编译方式:先由编译程序把高级语言源程序翻译成目标程序,执行时运行目标程序。现在大多数的编程语言都是编译型的,例如VisualC++、VisualFoxpro、Delphi等。解释方式:在运行高级语言源程序时,由解释程序对源程序边翻译边执行。经典的Basic语言就是以解释方式运行的。1.2Java概述Java语言的产生Java语言的发展Java虚拟机及Java的跨平台原理Java语言的关键特点Java语言的产生Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言.1990年Sun公司成立了由JamesGosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。他们的精心专研和努力促成了Java语言的诞生。Java语言是一门很优秀的语言,具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为健壮的编程语言.Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误。目前,随着网络的迅速发展,Java语言的优势越显明显,Java已经成为网络时代一门非常重要的语言。Java语言的发展微软公司总裁比尔.盖茨先生认为,“Java语言是长时间以来最卓越的程序设计语言”。Java语言已经成为目前最流行的网络编程语言到2005年,我国对Java技术人员的需求量将高达20万余人,许多大学纷纷开设Java课程,Java正逐步成为世界上程序员最多的编程语言。Java虚拟机及Java的跨平台原理Java虚拟机(JavaVirtualMachine)简称JVM,Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。Java语言的关键特点简单性平台无关性面向对象性安全性分布式多线程动态性1.3Java平台和主要应用方向某种意义上来说,Java不仅是编程语言,还是一个开发平台。Java技术给程序员提供了许多工具编译器、解释器、文档生成器和文件打包工具等同时Java还是一个程序发布平台。两种主要的“发布环境”首先是Java运行时环境(javaruntimeenvironment,简称JRE)包含了完整的类文件包;其次,许多主要的浏览器都提供了Java解释器和运行时环境。Java技术的平台架构包括以下三个方面J2SE(Java2StandardEdition):标准版主要目的是为台式机和工作站提供一个开发和运行的平台。包括标准的Java2SDK、工具、运行时环境和API,用Java程序设计语言编写、部署和运行Applet和应用程序的开发人员,是桌面开发和低端商务应用的解决方案。J2EE(Java2EnterpriseEdition):企业版主要目的是为企业计算提供一个应用服务器的运行和开发平台。J2EE本身是一个开放的标准,任何软件厂商都可以推出自己的符合J2EE标准的产品,通过基于标准化模块组件和一整套的相关服务能够自动处理应用程序行为的许多细节,从而大大简化了多层企业应用程序的构造和部署。IBM、Oracle、BEA、HP等29家已经推出了自己的产品,其中尤以BEA公司的WebLogic产品和IBM公司的WebSphare最为著名。J2ME(Java2MicroEdition):小型版主要是面向消费电子产品,为消费电子产品提供一个Java的运行平台,使得Java程序能够在手机、机顶盒、PDA等产品上运行包含高度优化的Java运行时环境,致力于电子消费产品和嵌入式设备的解决方案。1.4Java的垃圾回收与代码安全检查机制在Java程序的执行过程中,部分内存在使用过后就处于废弃状态,如果不及时进行无用内存的回收,内存会越占越多,导致内存泄漏,进而导致系统崩溃。在C++语言中是由程序员人为进行内存回收的,程序员需要在编写程序的时候把不再使用的对象内存释放掉;但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收,同时也增加了程序员的工作量。在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。字节码的执行需要经过三个步骤1)首先由类装载器(classloader)负责把类文件(.class文件)加载到Java虚拟机中,在此过程需要检验该类文件是否符合类文件规范;2)其次字节码校验器(bytecodeverifier)检查该类文件的代码中是否存在着某些非法操作,例如Applet程序中写本机文件系统的操作;3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。Java虚拟机采用的是“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存,如果是Applet程序,还不允许访问客户端机器的文件系统。Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供:Null指针检测、数组边界检测、异常出口、Bytecode校验。1.5典型的Java开发环境Sun公司为全世界使用Java进行开发的人员提供了一套免费的开发工具集,取名为JDK(JavaDevelopersKits),它不仅是Java的开发平台,也是Java的运行平台。学习Java必须从J2SE开始目前Sun公司已发布了SDK的1.5测试版本(beta版),可以登录到Sun公司的网站:,免费下载SDK1.5(例如:jdk-1_5_0-beta2-windows-i586.exe)下载、安装和了解JDK1)下载安装JDK的第一步是下载安装文件,这里要下载的是Sun公司的J2SE5.0DevelopmentKits,下载的网址是:2)安装JDK下载后的JDK安装文件名称是jdk-1_5_0_06-windows-i586-p.exe,双击这个文件可以开始程序的安装。开始的第一步是同意使用条款,接着则开始安装JDK。(3)了解JDK默认情况下,JDK与公用JRE各安装至C:\ProgramFiles\Java\jdk1.5.0_06\及C:\ProgramFiles\Java\jre1.5.0_06\。公用JRE主要是为开发好的Java程序提供执行的平台。其实JDK本身也有自己的JRE,这个JRE位于JDK安装目录的jre目录下。以上面的安装为例,就是在C:\ProgramFiles\Java\jdk1.5.0_06\jre中,JDK本身所附的JRE主要是开发Java程序时做测试之用。与公用JRE的主要差别在于JDK本身所附的JRE比公用JRE多了个server的VM(VirtualMachine)执行选项。JDK的安装目录下有如下内容:bin目录:提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。demo目录:一些使用Java编写好的范例程序。jre目录:JDK自己附带的JRE。lib目录:工具程序实际上会使用的Java工具类(例如,javac工具程序实际上会去使用tools.jar中的com/sun/tools/javac/Main类)。src.zip:Java提供的API类的源代码压缩文件。如果需要查看API的某些功能是如何实现的,可以查看这个文件中的源代码内容。JDK安装目录下的bin目录非常重要。因为编写完Java程序之后,无论是编译或执行程序,都会使用到bin目录下所提供的工具程序。系统环境ClassPath值的设置SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库,这些类库被包含在jre\lib目录下的压缩文件rt.jar中系统环境变量Path值的设置SDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的bin文件夹中,为了能在任何目录中使用编译器和解释器,应在系统特性中设置Path。对于Windows2000、Windows2003、WindowsXP,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”对话框,再单击该对话框中的高级选项,然后点击按钮“环境变量”,添加如下的系统环境变量测试环境变量写一个简单的Java程序,测试一下环境设置是否正确【例1-1】一个简单的Java程序。publicclassHelloWorld{publicstaticvoidmain(Stringargv[]){System.out.println(你好!我的第一个Java程序!);}}注意:1.Java的源文件必须以扩展名.java结束;2.Java主文件名与类名称必须一致,区分大小写;3.Java程序的类名称是指class关键词后的名称。就这个例子而言,也就是HelloWorld,该名称必须与HelloWorld.java的主文件名(HelloWorld)一致。4.注意每个字母的大小写,Java程序中会区分字母的大小写,System与system对Java程序来说是不一样的名称。C:\cdjava_work\1接着使用javac工具程序来编译.java文件,命令