1、高级语言程序设计,学时:24(理论)+20(上机) 教材:Java语言程序设计(第二版) 郎波,清华大学出版社 教师:程岚岚 办公室:12-208,Java技术的重要性当今Internet应用开发的核心与主流技术 Java语言的优良特性面向对象、 可移植性、 强壮型 安全性 Java技术对各个层次的分布式应用提供了全面的系统的方法和技术,2,3,2012年编程语言排行榜,2013年编程语言排行榜,4,2014年编程语言排行榜,5,6,主要编程语言历年市场份额,7,支撑Internet计算的庞大技术体系,单纯的程序设计语言,8,参考书,Java教程(第四版),(美)Sharon Zakhour等
2、,人民邮电出版社 疯狂Java讲义,李刚,电子工业出版社 Thinking in Java,(美)Bruce Eckle,机械工业出版社,9,课程内容,Java语言面向对象特征 面向对象程序设计概念 类与对象、继承和多态,10,课程内容,Java语言特色机制 Java语言基础 抽象类、接口、包、访问控制、内部类 异常处理 输入输出 AWT、Swing及其事件处理 线程 JDBC JSP与Servlet,第一章 绪论,1.1 Java的起源与发展 1.1.1Java的发展历史 1.1.2 Java技术体系 1.2 什么是Java技术 Java语言 Java平台 Java的特征 1.3 Java语
3、法机制概述 1.4 Java的运行系统与JVM 1.5 Java程序开发,11,12,1.1.1 Java的发展历史,1991年,Sun成立了由James Gosling领导的Green小组,研究与开发面向家电市场的软件产品。 James Gosling着手设计一种新的语言,以C+语言为基础进行新语言的设计,从而创建了新的程序设计语言Oak 1992年8月,Oak与一种称为GreenOS的操作系统、用户接口模块、硬件模块一起集成为一种类似个人数字助理PDA的设备Star Seven。 1995年1月,James Gosling和Patrick Naughton完成了Oak的新版本和第一个基于O
4、ak的应用程序 Web Runner。Oak从此更名为Java。,13,Java的发展历史,1996年,Sun发布Java开发工具包JDK1.0。 1997年2月,发布JDK1.1 1998年12月,发布Java2平台和JDK1.2. 1999年6月,Sun重新定义了Java技术的架构,将Java2平台分为三个版本:J2SE、J2EE、J2ME。 2010年1月,Oracle收购Sun。 Java技术已经渗透到Internet应用开发的很多方面,成为Internet应用发展的重要支撑技术,并具有强大的生命力。,14,1.1.2 Java技术体系,Java Platform Standard E
5、ditionJava SE Java Platform Enterprise EditionJava EE Java Platform Micro EditionJava ME,15,16,Java 2 Platform,Java SE,JDK&JRE 提供了编写和运行Java Application 和Java Applet的编译器、开发工具、运行环境与Java API。(Ref.P.6 图1-1) Java 开发工具 Java 部署技术 用户界面工具集 集成API Java基本库 Java虚拟机,17,Java EE,定义了基于组件的多层企业级应用的开发标准,面向企业级和高端服务器的Int
6、ernet应用开发 Ref. p.7 图1-2 基于Java SE 包括EJB、 Servlet、JSP等,18,19,Java EE,开发企业级和服务器端的应用。J2SEEnterprice JavaBeans(EJB) Java Servlets API Java Server Pages(JSP). JPAStruts Spring Hibernate,Java ME,针对消费类的电子设备如手机、数字机顶盒、汽车导航系统等。 嵌入式计算的一组技术和规范 在JavaSE基础上,结合这类设备计算资源的限制,对Java SE进行了语言精简,并对运行环境进行了高度优化,20,21,J2EE Ap
7、plication Model,1.2 什么是Java技术,Java语言 用Java语言编写的程序既要经过编译又要进行解释。,22,MyProgram.java,编译器 (compiler),解释器 (interpreter),MyProgram.class,MyProg ram,23,“编写一次,到处运行”,1.2.2 Java平台,平台:支持应用程序运行的硬件或软件环境 Java平台: 完全由软件构成并运行在其他硬件平台之上, 支持Java程序的运行。 使Java程序与底层平台隔离,24,25,Java虚拟机(JVM),意义: 是Java平台的基础 与各种基于硬件的平台相连 提供了Java
8、程序运行的必要环境 功能 将字节码转换为本机代码 类的装载 符号引用的消解,26,1.2.3 Java的特征,Sun在Java白皮书中指出,Java是一种“简单、面向对象、分布式、解释型、健壮、安全、体系结构中立、可移植、高性能和动态”的编程语言,27,简单性,语法和语义都比较单纯,容易学习和使用 对C+进行成功改造 去掉指针,取消多重继承和运算符重载 设立自动内存回收 提供大量功能丰富的可重用类库简化了编程工作量,28,面向对象,Java 是最纯洁的面向对象语言,对面向对象方法学的支持也最全面: Java对象有模块化性质和信息隐藏能力, 满足面向对象的封装要求; 支持继承; 通过抽象类与接口
9、支持多态,29,分布式,数据分布支持:通过Java的URL类可以访问网上的各类信息资源,访问方式完全类似于本地文件系统; 操作分布支持:通过在3W页面中的小应用程序(Applet)将计算从服务器分布至客户机,避免网络拥挤,提高系统效率。,30,半编译,半解释,31,优点: 兼具编译执行的效率优势和解释执行的灵活性;提高了应用程序的可移植性:源程序、中间代码,可移植性,“一次编程,到处运行”可移植性源于两方面:Java的半编译、半解释的特征Java采用标准的独立于硬件平台的数据类型,32,安全性(1),在语言和运行环境中引入了多级安全措施: 1、 Java的内存分配和引用模型对于程序员透明,完全
10、由底层的运行系统控制; 内存布局与C、 C+不同,不是由编译器决定,而是运行系统根据所在的硬件平台的特性决定;取消了C、C+的指针,Java编译器通过符号指针来引用内存,由Java运行系统在运行时将符号指针具体解释为实际的内存地址。,33,安全性(2),2、字节码验证。 运行系统引入字节码验证器,其中包含简单的规则验证程序,以确保遵循下列规则: 不存在伪造的指针;未违反访问权限;严格遵循对象访问规范来访问对象;合适的参数调用方法;没有栈溢出,34,多线程,Java在语言级嵌入对并发的支持功能,具体机制就是多线程,线程是比进程更小、更经济的并发执行单位,不拥有单独的内存空间。 Java中线程的同
11、步采用C.A.R.Hoare的临界区保护规则。Java线程执行中被映射到实际的操作系统线程。,35,动态性,Java程序的基本组成单元类是运行时动态装载 的。 Java可以动态地维护应用系统及其支持类之间的一致性。,36,高性能,Java编译生成的字节码与机器代码十分接近。 提供即时编译等措施,将要执行的字节码一次编译为机器代码,再全速运行,提高了Java应用的运行速度,37,38,1.3 Java的语法机制概述,C+ as a model + better robustness support+ portability + securityThe result is: Much of C+s
12、 power and syntaxBut, simpler and platform neutral,Java的语法机制概述,与C+一致的语法机制:数据类型、表达式、程序流控制、结构化异常处理等; 与C+不同的语法机制:类、接口(Interface)、程序包(Package)、自动内存回收以及多线程。,39,Java与C+不同的语法机制,类: 最重要、最基本的语法设施,类的定义与继承与C+类似,主要区别:Java不允许多重继承,多重继承必须通过接口实现。 Java引进了abstract 和final修饰词。带abstract的类称为抽象类,只能作为父类使用,不能直接产生实例对象。带final的
13、类不能用作父类被继承, 带final的属性在定义时必须赋初值并称为常量,带final的方法将禁止子类重写(Overriding)。,40,Java与C+不同的语法机制,接口是一种抽象类,其中只能出现静态常量或抽象方法定义。 主要目的是实现多重继承功能,避免C+在多重继承语义上的复杂性。 一个JAVA类可以实现(继承)多个接口。,41,Java与C+不同的语法机制,程序包 是一些相关类或接口的集合。JAVA提供包括可重用类标准程序包,用户可自定义程序包。通过 import 语句将程序包引入应用程序。,42,Java与C+不同的语法机制,自动内存回收 Java取消了指针类型,所有动态内存请求均通过
14、new运算符,并且得到的不是指针而是引用。 系统进行内存回收。 多线程语言级支持多线程:忽略操作系统多线程机制的差异, 软件具有更好的可靠性和可移植性。,43,1.4 Java运行系统,引入运行系统的必要性:将字节码转化为本机代码;类的装载与符号的消解;控制执行代码。运行环境的种类: Java Application - Java解释器 Java Applet- Java兼容的Web浏览器。,44,45,Java运行系统的构成,类装配器 字节码验证器 解释器 代码生成器 运行支持库,46,Java程序运行过程,Hello.java,javac Hello.java,Hello.class,网络
15、,类装配器,字节码验证器,解释器,代码生成器,运行支持库,本地系统,运行,47,执行字节码的过程,代码的装入 代码的验证 代码的执行:解释方式、即时编译JIT方式,48,1.4.2 Java虚拟机, JVM的定义: An imaginary machine that is implemented by emulating it in software on a real machine.Code for the Java Virtual Machine is stored in .class files.,49,JVM规范定义了一组抽象的逻辑组件,包括: 指令集; 寄存器组:程序计数器、栈顶指
16、针等; 栈结构:提供各种参数等; 存储区:存放字节码的方法代码、符号表; 垃圾收集器,JVM组成部分,50,JVM与 Java运行系统, Java运行系统是各供应商对JVM的具体实现,JVM需要针对不同的软硬件平台做专门的实现 JVM的意义:保证不同平台上的Java运行系统功能统一,51,电子商务 远程教育 企业综合信息服务 分布式计算(移动计算) 嵌入式应用,Java应用,52,两种应用程序Java application: 编译器编译运行Java applet:编译器编译编写HTML文件把Applet嵌入其中浏览器中运行 类库APIJava API是SUN提供的用Java语言开发的类集合。
17、Java API包括几十个包,常用的有:java.lang,java.io, java.util, , java.awt, java.applet等。,关键性术语,53,Java应用程序举例,HelloWorldApp.java:Public class HelloWorldApppublic static void main( String args )System.out.println(“Hello World!”); ,1.5 Java程序开发,54,Java 程序编写、编译过程, main声明- Java程序入口点 格式public static void main(String a
18、rgs) 源文件的名字与main()方法所在的类名相同,扩展名必须是 .java。 编译javac HelloWordApp.java生成HelloWorldApp.class 运行java HelloWorldApp,55,JDK1.6的安装,运行JDK6中的安装程序改变环境变量:Java_Home:指向JDK的安装路径PATH=%PATH%; %Java_Home%binCLASSPATH = .; %Java_Home%lib,Java常用开发环境,56,JDK (V1. 2 V1.3.0, V1.3.1, V1.4.2 ,V1.5.0,V1.6,V1.7,V1.8) Eclipse:开源的Java开发集成环境 MyEclipse:Java集成开发环境 Netbeans : Sun推出的集成开发环境 Jbuilder:图形化,客户端与服务器端 JCreator :轻型Java开发环境,