1、 Java语言程序设计第一章第一章:绪论绪论1.1 Java语言的历史-1 Java 是什么吗?Just another valueless acronymJava 是一个地名吗?1.1 Java语言的历史-2 1991年4月,Sun公司的James Gosling领导了一个代号为Green的项目,其目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以通过手机、E-mail等方式发指令给电冰箱电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C+,但C+太复杂,安全性差,最后基于C+开发一种新的语言Oak。Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一
2、个交互式电视项目,但结果是被SGI打败。可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,结果Java一夜成名,迅速流行,甚至被誉为Internet上的世界语。1.1 Java语言的历史-3 Java的取名也有一趣闻,有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞赏,于是,Java这个名字就这样传开了。JavaJava创始人创始人 James GoslingJames
3、Gosling博士博士1.2 什么是 Java-1n JavaTM 技术是:1、程序设计语言 2、平台(开发环境、应用程序环境)1.2 什么是 Java-2 n一、Java是一种高级程序设计语言,并具有如下特征:简单性、面向对象、分布式、解释型、健壮性 安全性、可移植性、高性能、多线程、动态性1.2 什么是 Java-3nJava程序先被编译,然后被解释执行。通过编译器,可以把Java程序编译成一种中间代码字节码(Byte-code)。字节码是可以被Java解释器解释的独立于平台的代码,是运行在Java虚拟机(Java VM)上的机器代码指令。通过解释器,每条Java字节指令被分析,然后在计算
4、机上运行。下图说明了它是如何工作的:1.2 什么是 Java-4 Java字节码使得“一次编写,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何Java VM上。例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上,甚至这个JVM可以是个硬件、一块芯片。1.2 什么是 Java-5nJavaTM 虚拟机(虚拟机(JVM)规范规范:Java虚拟机(JVM)是可运行Java字节码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。Jav
5、a虚拟机(JVM)规范是一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。编译虚拟机的指令集与编译微处理器的指令集非常类似。1.2 什么是 Java-6nJavaTM 内存垃圾自动回收(内存垃圾自动回收(Garbage Collector)JavaTM 程序设计语言使程序员不必负责释放内存,因为它提供了一个后台系统级线程,用于记录每一个内存分配操作并保留对每个内存指针的引用计数。在 Java 虚拟机运行时的空闲周期内,垃圾收集线程查看是否有引用数已降到 0 的内存指针。如果有,则清除(解除分配)
6、垃圾收集线程所标记的内存。垃圾收集在 Java 应用程序的生命期内自动发生,因此不必手动解除对内存的分配。1.2 什么是 Java-7nJavaTM 不存在可信任代码不存在可信任代码 安全机制安全机制 Java 程序设计语言代码在计算机上实际运行之前已经过几遍测试。字节码检验器对程序代码进行四遍测试。它确保代码遵守 JVM 规范且不违反系统完整性。如果检验器完成所有四遍测试并且未返回错误信息,则可以确信下列情况属实:1、类遵守 JVM 规范的类文件格式。2、没有违反存取限制。3、代码不导致操作数堆栈溢出或下溢。4、所有操作码的参数类型正确。5、没有发生非法数据转换,例如将整型转换为指针。6、对
7、象字段存取合法。1.2 什么是 Java-81.2 什么是 Java-9二、平台是程序运行的硬件或软件环境。Java平台与大多数其它平台不同之处在于它是运行于其它基于硬件平台的纯软件平台。大多数其它平台是硬件和操作系统的结合。nJava平台由两部分组成:Java虚拟机(Java VM)(应用程序环境)Java应用程序界面(Java API)(开发环境)n我们已经介绍了Java VM,它是Java平台的基础,可以移植到各种基于硬件的平台上。(Java操作系统或Java芯片)nJava API是软件组件的集合,它们提供了很多有用的功能,如图形用户界面(GUI)。Java API被分组为相关组件的库
8、(包)。1.2 什么是 Java-10 作为一种独立于平台的环境,Java比本地代码慢一些。然而,聪明的编译器、很好地调制过的解释器和即时字节码编译器(JIT-just in time compiler)可以在不牺牲可移植性的条件下使Java的表现接近本地代码。1.3 Java 的应用领域Java 已经渐渐地渗透到各领域1。你可以编写 Java Application 程序,完成其他语言能完成的所有应用程序,而且是跨平台的,可应用于各行各业;2。你可以编写 Java Applet 程序,可以嵌入在浏览器中直接运行;3。你可以编写 Java Servlet/JSP 程序,将其挂在 Apache、
9、tomcat或其它网页服务器上;4。你可以编写 EJB/Java Beans,将其挂在Websphere、Weblogic、IAS或其他应用服务器上;5。你可以编写Java MIDlet 程序,在手机上执行;1.4 Java 的安装-1lJava的安装:(http:/)JDK(java development kit):jdk-1_4_0_008-win.exe JRE(java runtime environment):jre-1_4_0_008-win.exel环境变量的设置:可通过autoexec.bat文件设置:SET PATH=c:j2sdk1.4bin;.;%PATH%SET CL
10、ASSPATH=c:j2sdk1.4lib;.;%CLASSPATH%(其中,JDK安装在c:j2sdk1.4)1.4 Java 的安装-2l开发工具:一、文字模式(console mode)的开发工具:Sun 的 Java 2 Software Developmnet Kit(Java 2 SDK),最新版JavaTM SE 6(v1.6.0,The number 6 is used to reflect the evolving level of maturity,stability,scalability and security of Java SE.)。其中提供24个工具,都放在bi
11、n子目录中,常用的有javac、java、appletviewer等。编辑器可使用记事本。*关于版本号的说明:v 1.1.8 前两个数字代表功能的变更,第三个(以及以后的数字),代表错误修订版。*J2SE(标准版)J2EE(企业版)J2ME(微型版)1.4 Java 的安装-3 二、GUI模式的开发工具(graphics user interface mode):IDE(Integrated Development Environment,集成式开发环境):将程序的编辑、编译、执行、调试等功能整合在一起。如Jcreator2,Freejava2等,我们要使用的集成开发环境是Jcreator2。
12、RAD(Rapid Application Development,快速应用程序开发):除具备IDE功能外,可通过可视(Visual)处理的方法摆设组件(component),所见既所得,并调整其属性(property),使编写程序(特别是用户接口部分)就像搭积木一样简便。如 Jbuilder:是 Borland公司产品(最多人使用的开发工具);VisualAge for Java:是 IBM的产品(最先进的开发工具);VisualCafe:是 WebGain的产品(产品家族最完整的开发工具);NetBeans、Forte、Sun Java Studio:是 Sun的产品;Eclipse:是一
13、种开源的、可扩展IDE,是免费的。1.5 第一个Java程序-1 第一个“Hello World”小应用程序 按照以下步骤,可以创建一个Java小应用程序。/用C语言实现#include Main()println(“Hello World”);/用C+语言实现#include void main()cout“Hello Worldn”;1.5 第一个Java程序-2 /用Java语言实现1.建立一个名为建立一个名为HelloWorld.java的文件:的文件:public class HelloWorld public static void main(String args)System.
14、out.println(“Hello World”);2.编译源文件编译源文件用Java编译器编译这个源文件。(javac HelloWorld.java)如果编译成功,编译器产生一个与Java源文件(HelloWorld.java)在同一个目录(文件夹)的名为HelloWorld.class的文件。这个class文件包含Java字节码,是可以被Java运行系统解释的独立于平台的代码。3.运行小应用程序运行小应用程序 (java HelloWorld)1.6 Java的反编译-1 控制台下的:JAD的使用 图形用户界面的:FrontEnd的使用 *使用混淆器加密你的Java程序。1.7 Jav
15、a的文档注释方法-1 在注释方面,java提供一种C/C+所不具有的文档注释方式。其核心思想是当程序员编完程序以后,可以通过JDK提供的javadoc命令(javacdoc 文件名.java),生成所编程序的API文档,而该文档中的内容主要就是从文档注释中提取的。该API文档以HTML文件的形式出现,与java帮助文档的风格与形式完全一致。凡是在“/*”和“*/”之间的内容都是文档注释。例如下面的DocTest.java文件:/*这是一个文档注释的例子,主要介绍下面这个类 *author walkman *version 1.1.48 2008/09/1 */public class DocT
16、est/*变量注释,下面这个变量主要是充当整数计数*/public int i;/*方法注释,下面这个方法的主要功能是计数*/public void count()1.8 Java的学习方法-1 在理解课堂教授内容的基础上,尽量独立完成课后习题。对于疑难问题,可采用如下办法解决:a.参考教材配套书籍或其它相关书籍,上机调试程序,自行解决。问人之前,先问自己问人之前,先问自己。b.结成学习小组(3人左右),互助学习;c.通过互联网的技术社区或BBS,向高手请教;http:/ 边学习。http:/javaresearch.gro.clinux.org e.通过robocode,机器人坦克大战,边娱
17、乐边学习。官方网站:http:/ Java的学习方法-2 向上延伸,向下延伸,向旁延伸向上延伸,向下延伸,向旁延伸 当你发现你已经可以掌握此程序语言基本知识之后,你可以选择:1、向上延伸:学习对象导向分析设计、UML、Design Patterns、以及软件工程。培养自己具有做大型项目的能力。2、向下深入:深入了解内部底层的机制,例如JVM,操作系统(甚至硬件)内部。3、向旁延伸:学习不同的API,例如:多媒体、数据库、企业运算等等,扩展自己的编程能力。另外,数据结构、算法等基础也很重要。在人月神化中,F.Brooks 对他自己做的软件项目描述为:“史前巨兽在柏油坑中做垂死前的挣扎挣扎得越厉害
18、,柏油就会黏的越紧,没有任何的猛兽力量够强,技巧够高,得以逃过终至灭顶的命运。在过去的十年,大型系统的程序设计工作就陷进了一个像这样的柏油坑中。”在 Quality Softwre Management II 中,G.Weinberg 这样来描述他自己做软件项目的经验:“你身处湖心当中,划着一艘小船,船底有几个漏洞,水慢慢的渗进来。你想要去堵住漏洞,但却遭到一大群仲夏凶恶蚊子的攻击。能够随时注意到是否有问题的发生,或更进一步能预先加以防范(修补漏洞),理论上说来还不错,但是你得一直忙着去干昨日的问题(不停地打蚊子),完全抽不出空来实现分毫的理论。”Tom DeMarco 人件,管理,不仅仅是技
19、术,更是充满人文精神的艺术。1.9 Java的参考书籍 Sun公司编著 Java程序员认证教材SL-110 Sun公司编著 Java程序员认证教材SL-275机械工业出版社 Java编程思想Java 程序设计大学教程 国外计算机经典教材Java2实用教程 Java 夜未眠1.10 Java认证考试-1 Java认证考试认证考试(Java方面,方面,Sun推出七项认证推出七项认证):-Sun Certified Java Associate(SCJA)-Sun Certified Java Programmer(SCJP)-Sun Certified Java Developer(SCJD)-S
20、un Certified Web Component Developer(SCWCD)-Sun Certified Business Component Developer(SCBCD)-Sun Certified Developer For Java Web Services(SCDJWS)-Sun Certified Mobile Application Developer(SCMAD)-Sun Certified Enterprise Architect(SCEA)1.10 Java认证考试-2 1.10 Java认证考试-3 SCJP(Sun Certified Java progra
21、mmer),测试Java编程的观念和能力,内容偏重于Java语法和JDK内容。共59题复选和填充,2小时,61%及格;SCJD(Sun Certified Java developer)测试Java软件开发的进阶技能。分两阶段,第一阶段是程序设计题,不限时,80%进入第二阶段,5-10题简答,90分钟,对70%通过认证;SCWD(Sun Certified Web Component Developer for J2EE Platform)内容覆盖Servlet与JSP。共60题复选和填空,2小时,70%及格;SCAJ(Sun Certified Enterprise Architect fo
22、r J2EE)测试对于J2EE架构的熟悉程度以及系统整合能力。分三个阶段,第一阶段,48复选题,75分钟,68%进入下个阶段。第二阶段是系统设计专题,时间不限,70%进入下个阶段。第三阶段是4个申论题,90分钟,通过即可得到认证。所有考试都是英文试题。最新信息:http:/ 教授的主要内容-1 第一讲:概述第二讲:面向对象程序设计方法学第三讲:Java的语言规范第四讲:类和对象第五讲:类和对象的高级特性第六讲:异常处理第七讲:Java的图形用户界面第八讲:事件模型及Swing组件第九讲:Java Applet 第十讲:课程设计(科学计算器、扫雷、记 事本)(大约 50学时)基 础 部 分1.11 教授的主要内容-2 第一讲:I/O输入输出 Advanced I/O Streams第二讲:多线程 Multi Threads第三讲:网络编程 Networking 第四讲:数据库技术 Database Connectivity(JDBC)第五讲:BrokerTool Project项目实践(SUN 285课程)(大约80学时)提 高 部分