第一讲序论1、程序设计语言2、Java历史及发展3、Java语言特点4、Java开发环境5、Java类库6、Java程序软件的基本组成部分是完成其功能的程序。程序设计语言(也被称为“编程语言”,ProgrammingLanguage)是人们编制程序所使用的语言。程序描述了计算机处理数据、解决问题的过程,这是程序的实质。但程序的描述形式却可以是多种多样的,可以用不同的方式表述——不同的程序设计语言。1、程序设计语言1、程序设计语言程序设计语言的种类:机器语言:机器指令,直接执行汇编语言:符号化,汇编器(Assembler)高级程序设计语言(编译型)高级程序设计语言(解释型)高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式”。程序中基本的动作单位被称为“语句”,不同的语句实现不同的功能。用高级语言书写的程序不可能直接地在计算机上执行,要在计算机上执行高级语言书写的程序,有两种基本方法:编译(Compilation)执行:这种方法是设法把高级语言程序(也称为“源程序”)转换成为机器语言的可以由计算机直接执行的程序,即转变为“可执行(Executable)程序”。“解释”(Interpretation)执行:这种方法是即时把源程序转换为机器可执行的指令。有时为了提高效率,也可以先编译成一种中间代码。1、程序设计语言——高级程序设计语言对于“编译执行”方式,人们实现了高级语言“编译器”(Compiler)完成这种转换工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。编译器对源程序的加工一般分为两个阶段:源程序首先被翻译成机器语言,这种翻译结果称为“目标码”(objectcode),目标码构成的程序片段称为目标模块。第二步,这些目标模块被与其他一些基本模块(由编译软件提供)连接在一起,最终形成“可执行程序”(executableprogram),这样的程序就可以在计算机上实际运行了。第一个加工步骤称为“编译”(compiling),第二个步骤称为“连接”(linking)。1、程序设计语言——高级程序设计语言1、程序设计语言——高级程序设计语言编译过程对于“解释执行”方式,人们实现了一种称为“解释器”(Interpreter)的软件来完成转换工作。解释器在工作方式上与编译器不同,它不对源程序进行翻译,而是直接对源程序的语句进行分析和解释,实现源程序所描述的功能。1、程序设计语言——高级程序设计语言解释过程1、程序设计语言——高级程序设计语言高级语言写出的程序是独立于任何具体的计算机的。但是“编译器”和“解释器”则是与机器相关的。同一种语言,对于不同的机器,需要不同的“编译器”和“解释器”。人们已经开发出了许多不同的高级程序设计语言,不同的语言有各自不同的规范,因此需要专门的“编译器”和“解释器”。FORTRAN(FORmularTRANslation)语言,HPF:IBM,1950Pascal语言:N.Wirth,1968,(Delphi,Borland)COBOL(COmmonBusinessOrientedLanguage)语言:美国国防部,1960C和C++语言:DennisRetchie,1972;BjarneStroustrup,1983,BellBasic(Beginner'sAll-purposeSymbolicInstructionCode)语言:美国国防部,1964Ada语言:军用程序设计语言,美国国防部,1983Java语言:1991年,SUNMicroSystem公司1、程序设计语言——高级程序设计语言2、Java历史及发展Java是一种解释型的、面向对象的编程语言。历史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。Oak—Java:互联网给Java带来新的生机1995年Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来)应用:Java是当今最流行的软件开发语言之一,Sun推出了Java2&J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。Java=“C++”-“复杂性和奇异性”+“安全性和可移植性”Java语言是一个完全面向对象的语言,并且对软件工程技术有很强的支持Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。3、Java语言特点——(1)面向对象严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字眼,最后的目标码都是一致的。Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。3、Java语言特点——(2)平台无关性源程序Java编译器SPARCpentiumPowerpc中间码PowerpcpentiumSPARC二进制源程序SPARCPowerpcpentiumPowerpcpentiumSPARC编译器二进制Java解释器编译型和解释型语言的工作模式类、类库装载(库)链接编译,没有绝对地址调入包含、继承所用到的所有类,内存分配确定,变成真正可执行的机器码Java源程序(.java文件)Java编译器JavaBytecode(.class文件)系统执行平台Bytecode解释器Bytecode载入器字节码校验器不存在伪造的指针不违反访问权限不非法访问对象不导致操作栈溢出Java的编译与执行JavainterpreterJust-in-timecompilerRuntimeSystemOperatingSystemHardware不同的操作系统有不同的虚拟机。它类似一个小巧而高效的CPU。Bytecode代码是与平台无关的是虚拟机的机器指令。Java字节代码运行的两种方式:Interpreter(解释方式)Just-in-time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行.Java虚拟机Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性:毁灭系统资源消耗系统资源挖掘系统或个人机密骚扰正常工作的进行3、Java语言特点——(3)安全问题Java源程序(.java文件)Java编译器JavaBytecode(.class文件)Bytecode载入器Bytecode解释器系统执行平台语言定义publicprotectedprivatefinal取消指针自动回收垃圾Bytecode检查限定对象的存取权限系统堆栈溢出参数类型一致程序执行系统的安全措施单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情。其它大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持)。Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。3、Java语言特点——(4)多线程(5)可移植性(6)分布性(7)高性能(相对于其他解释型语言)(8)健壮性3、Java语言特点——其他不再有全局变量不再有#include和#define等预处理功能不再有structure、union及typedef等不再有函数、不再有指针、不再有多重继承不再有goto语句不再有操作符重载(OperatiorOverloading)取消自动类型转换,要求强制转换自动进行内存管理3、Java语言特点——(9)与C及C++的区别4、Java开发环境JDKj2eesdk-1_4_01-windows.exej2sdk-1_4_2_04-nb-3_6-bin-windows.exej2sdk-1_4_2-doc.zip集成环境MyEclipseJbuilder(Borland)VisualJ++(Microsoft)WSAD…安装JDK后产生如下目录结构:\bin目录:Java开发工具,包括Java编译器、解释器等\demo目录:一些实例程序\lib目录:Java开发类库\jre目录:Java运行环境,包括Java虚拟机、运行类库等…4、Java开发环境C:\Jdkbinlibjavacjavaappletviewer用户类文件所在目录c:\java\examples\applications当前目录jredemo4、Java开发环境Java程序由各种类(class)组成你自己编写的类(Javaclasslibraries——JavaAPI)JDK——JavaDevelopmentKit(1.1~1.4)独立软件供应商、免费软件/共享软件几点提示使用类库可以提高软件重用/提高效率/提高移植性网络上有许多开放的Java源码资源5、Java类库JavaPackages(1)Languagejava.langClassesthatcontainthemaincoreoftheJavalanguage.Utilitiesjava.utilSupportforutilitydatastructures.I/Ojava.ioSupportforvarioustypesofinput/output.Textjava.textLocalizationsupportforhandlingtext,dates,numbers,andmessages.Mathjava.mathClassesforperformingarbitrary-precisionintegerandfloating-pointarithmetic.AWTjava.awtUserinterfacedesignandevent-handling.Swingjavax.swingClassesforcreatingall-Java,lightweightcomponentsthatbehavesimilarlyonallplatforms.JavaPackages(2)JavaxjavaxExtensionstotheJavalanguage.Appletjava.appletClassesforcreatingapplets.Beansjava.beansClassesfordevelopingJavaBeans.Reflectionjava.lang.reflectClassesusedtoobtainruntimeclassinformation.SQLjava.sqlSupportforaccessingandprocessingdataindatabases.RMIjava.rmiSupportfordistributedprogramming.Networkingjava.netClassesthatsupportdevelopmentofnetworkingapplications.Securityjava.securitySupportforcryptographicsecurityJava程序分两种:程序员编写main函数的应用(如图形桌面程序JavaApplicati