1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java程序设计,主讲教师:刘晓璐,为什么要学习Java?,大家看到下面这张图片一定不陌生:,同学们看到这张图片最多的地方是哪里啊?,Java已经渐渐地渗透到各领域,你可以写出 Java servlet,将其挂在Apache或其它网页服务器上,你可以写出Java applet,在网页浏览器上执行。你甚至可以用Java写出数据库的stored procedure,然后安装到Oracle 8i上。,如果你靠写程序为生,你迟早都会接触到Java,!,学习Java的哪些内容?,Java开发平台的使用,Java的基本
2、语法,面向对象及其特性,常用Java库类,异常处理机制,图形用户界面设计,输入、输出流,如何学好Java?,课前做好预习,带着问题听课。上课认真听讲,做好笔记。认真完成作业和上机实验。,有不懂的地方和疑问要马上提出,寻找答案和解决的方法,千万不要积累问题。,勤读代码,勤写代码,在实践中学习。,多看课外参考书。,一个程序员的自嘲,君子坦荡荡,小人写代码。,举头望明月,低头写代码。,少壮不努力,老大写代码。,生当作人杰,死亦写代码。,商女不知亡国恨,一天到晚写代码。,洛阳亲友如相问,就说我在写代码。,垂死病中惊坐起,今天还没写代码。,人生自古谁无死,来生继续写代码。,众里寻他千百度,蓦然回首,那人
3、正在写代码。,课程考核,总评成绩=平时成绩*30%+期末考试成绩*70%,平时成绩包括:出勤、作业和上机实验。,教务处规定:旷课累积达到课程总学时数的三分之一者不能参加该门课程的期末考试。,同学们在学习中有任何问题都可以联系我哦!,联系方式:QQ:1904930932e-mail:lxl8325新浪微博:腾讯微博:EE,特点,熟练掌握,Java EE,工作原理,掌握使用,Java API,掌握,JDK,的安装和配置,熟练掌握开发,Java,应用程序和小应用程序,熟练使用,Eclipse,和,NetBeans,开发,Java,程序,1.1 Java,历史,Java,产生背景,1991,年,4,月
4、Sun,公司的,James Gosling,领导的绿色计划,(Green Project),开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。而,Green,项目组的成员一开始使用,C+,语言来完成这个项目,由于,Green,项目组的成员都具有,C+,背景,所以他们首先把目光锁定了,C+,编译器,,Gosling,首先改写了,C+,编译器,但很快他就感到,C+,的很多不足,需要研发一种新的语言来替代它。,这种语言最初被命名为,Oak,,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。在,17,个月后,整个系统完成了
5、这个系统是更注重机顶盒式的操作系统,不过在当时市场不成熟的情况下,他们的项目没有获得成功,但,Oak,语言却得到了,Sun,公司总裁的赏识,。,James Gosling,从Oak到Java,1.1 Java,历史,Java,产生,Java,在,1995,年的,3,月,23,日诞生,,Java,的诞生标志着互联网时代的开始,Sun,继,Green,项目后又经过了几年的研究,终于在,1995,年,5,月,23,日在,SunWorld95,上正式发布,Java,和,HotJava,浏览器。,Sun,在,1995,年发布第一个,Java,版本后,于,1996,年,1,月宣布成立新的业务部门,Jav
6、aSoft,部,这个部分主要负责开发、销售并支持基于,Java,技术的产品。,Sun,在,1996,年,1,月,23,日发布了,JDK1.0,。这个版本包括了两部分:运行环境(即,JRE,)和开发环境,(,即,JDK),。,1.1 Java,历史,Sun,在推出,JDK1.0,后,紧跟着,,Sun,在,1997,年,2,月,18,日发布了,JDK1.1,。,JDK1.1,相对于,JDK1.0,最大的改进就是为,JVM,增加了,JIT(,即时编译,),编译器。,Sun,在推出,JDK1.1,后,接着又推出了数个,JDK1.x,版本。自从,Sun,推出,Java,后,,JDK,的下载量不断彪升,在
7、1997,年,,JDK,的下载量突破了,220,000,,而在,1998,年,,JDK,的下载量已经超过了,2,000,000,。,1.1 Java,历史,Java,高速发展,虽然在,1998,年之前,,Java,被众多的软件企业所采用,但由于当时硬件环境和,JVM,的技术原因,它的应用却很有限。当时,Java,主要只使用在前端的,Applet,以及一些移动设备中。然而这并不等于,Java,的应用只限于这些领域。在,1998,年是,Java,开始迅猛发展的一年,在,1998,年,12,月,4,日,,Sun,发布了,Java,的历史上最重要的一个,JDK,版本:,JDK1.2,。这个版本标志着
8、Java,已经进入,Java2,时代,这个时期也是,Java,飞速发展的时期。在这一年中,Sun,发布了,JSP/,Servlet,、,EJB,规范以及将,Java,分成了,J2EE,、,J2SE,和,J2ME,。标志着,Java,已经吹响了向企业、桌面和移动,3,个领域进军的号角。,1.1 Java,历史,Java,的今天,目前,全球Java开发人员已经超过450万,而与之相对应的是Java社区充满活力和创新精神,这正是Java下一个10年更加繁荣的保障。为了保持Java的增长和推进Java社区的参与,Sun在Java One开发者大会上宣布开放Java核心源代码,以鼓励更多的人参与到社团
9、活动中来,这是Sun为推进社团发展和维护Java技术兼容性而迈出的重要一步。随着Java的开源,Java的未来似乎变得更加明朗。在未来,Java的应用范围有可能变得更广。,1.2 Java,概述,Java,是一种既面向对象又可跨平台的语言。,Java,语言产生于,C,语言之后,是完全的面向对象的编程语言,充分吸取,C,语言的优点,采用程序员所熟悉的,C,和,C,语言的许多语法,同时又去掉了,C,语言中指针、内存申请和释放等影响程序健壮性的部分,可以说,Java,语言是站在,C,语言这个“巨人的肩膀上”前进的。,1.2.1 Java,介绍,Java,是一个广泛使用的网络编程语言,它是一种新的计算
10、概念。,Java,是一种面向对象程序设计语言。,Java,不同于一般的编译执行计算机语言和解释执行计算机语言。,Java,语言的前身,Oak,在,C+,的基础上开发,而,C+,在,C,的基础上开发。,Java,语言可以编写两种程序,一种是应用程序(,Application,),一种是小应用程序(,Applet,)。,Java,至今主要发展出,3,个领域的应用平台:,Java 2 Platform,,,Standard Edition,(,Java SE,)、,Java 2 Platform,,,Enterprise Edition,(,Java EE,)和,Java 2 Platform,,,
11、Micro Edition,(,Java Me,)。,1.2.2 Java,语言特点,Sun,的“,Java,白皮书”对,Java,做了如下定义,“,Java:A,simple,object-oriented,distributed,interpreted,robust,seure,architecture-neutral,portable,high-performance,multi-threaded,and,dynamic language,”。翻译过来的意思是,,Java,:一种简单的、面向对象的、分布式的、解释执行的、健壮的、安全的、结构中立的、可移植的、高效率的、多线程的和动态的语言
12、1.2.2 Java,语言特点,Sun,公司对,Java,的定义充分地展示了,Java,的如下特点:,简单,面向对象,分布式,高效解释执行,健壮,安全,结构中立,可移植,高效率,多线程,动态,1.2.3 Java,工作原理,Java,是一种跨平台的语言,同时也是既编译又解释的语言。我们知道,,Java,可以运行在网络不同的计算机上,但运行的计算机上必须装有相应的,Java,解释器。而这种解释器我们可以称为,JVM,。,Java,工作流程,Java,可以编写各种各样的程序,如单机应用程序,,Web,程序等。但不管那种,Java,程序,其运行的流程大致如图,1-2,所示:,1.2.3 Jav
13、a,工作原理,图,1-2 Java,程序运行流程,1.2.3 Java,工作原理,Java,虚拟机,JVM,虚拟机在计算机上的位置如图,1-3,所示:,图,1-3 JVM,在计算机中的位置,1.2.3 Java,工作原理,JVM,虚拟机解释执行的过程如图,1-4,所示:,图,1-4 JVM,虚拟机运行过程,1.2.3 Java,工作原理,Java,虚拟机的执行引擎有三种,分别如下:,常用的解释器。,JIT,(,Just-In-Time,),,JIT,是一个可将,Java,字节码转换为本地机器码的代码生成器。由,JIT,调用的,Java,程序,其运行速度通常要比由解释程序执行字节码时的速度高得多
14、这种情况,第一次执行的字节码会编译成本地的机器代码,被缓存在系统中,以后可以随时调用。,还有一种自适应的优化器,这种方法里,虚拟机开始时解释字节码,但是会监控运行中程序的活动,并记录下使用最频繁的代码段,虚拟机会把这些活动最频繁的代码段编译成本地代码。,1.2.4 Java API,介绍及使用,随着,Java,应用领域越来越广,,Java,所涉及的类库也越来越大。一个人的精力有限,在编写程序时,不可能熟悉,Java,的类库中的所有方法和属性。,Java,程序员面对的一大问题,就是了解和熟悉,Java,各方面的类库。通过,Sun,公司提供的中文,Java API,,可以非常快速的查找和获取,J
15、ava,类库信息,这对不是精通英语的程序员是一个很好的消息。,1.3 Java,运行环境,运行,Java,程序,只需要下载一个,JDK,开发工具包就可以,因为,JDK,开发工具包中包含了,Java,运行环境(,Java Runtime,Envirnment,),一堆,Java,工具和,Java,基础的类库。,JDK,开发工具包是整个,Java,的核心,不论,Java,应用程序,实际上都是需要,JDK,开发工具包。最主流的,JDK,是,Sun,公司发布的,JDK,,除了,Sun,之外,还有很多公司和组织都开发了自己的,JDK,,例如,IBM,公司开发的,JDK,,,BEA,公司的,Jrocket
16、还有,GNU,组织开发的,JDK,等等。,1.3.1 JDK,安装以及配置,JDK,是,Sun Microsystems,针对,Java,开发人员提供的软件开发工具包。自从,Java,推出以来,,JDK,已经成为使用最广泛的,Java SDK,(,Software development kit,)。用户在编写,Java,程序时,必须用到类库和,Java,语言规范。,JDK,中还包括完整的,JRE,(,Java Runtime Environment,,,Java,运行环境),也被称为,private runtime,。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、
17、IDL,库。,JDK,中还包括各种例子程序,用以展示,Java API,中的各部分。,从初学者角度来看,采用,JDK,开发,Java,程序能够很快理解程序中各部分代码之间的关系,有利于理解,Java,面向对象的设计思想。,JDK,的另一个显著特点是随着,Java,(,J2EE,、,J2SE,以及,J2ME,)版本的升级而升级。但它的缺点也非常明显,从事大规模企业级,Java,应用开发非常困难,不能进行复杂的,Java,软件开发,也不利于团体协同开发,1.3.1 JDK,安装以及配置,ava,开发工具包(,JDK,)是,Java,程序员最初使用的开发环境。,JDK,由一个标准类库和一组建立,测
18、试及建立文档的,Java,实用程序组成。其核心,Java API,是一些预定义的类库,开发人员需要用这些类来访问,Java,语言的功能。,Java API,包括一些重要的语言结构以及基本图形,网络和文件,I/O,。一般来说,,Java API,的非,I/O,部分对于运行,Java,的所有平台是相同的,而,I/O,部分则仅在通用,Java,环境中实现。,1.3.2 Java,应用程序开发,我们知道,,Java,语言可以编写两种类型程序,一种是,Java application,应用程序,一种是,Java applet,小应用程序。开发Java程序的开发工具很多,这里采用大家都熟悉的记事本开发。其
19、他的开发工具,将会在1.4节中介绍。本节将会详细介绍使用记事本开发Java应用程序(Application)。,一个Java application由一个或者多个class文件组成。其中有一个class定义了main()方法,该类被称为主类,即该类可以独立运行。可以在任何提供了Java解释器的环境中运行Java application,例如,在Java IDE中,Sun公司的Java运行环境(JRE)也提供了Java解释器,但是并没提供编译器这种与Java开发相关的工具。,1.3.2 Java,应用程序开发,工作流程,编写,Java,应用程序非常简单,一般可以分为下面三个步骤:,创建,Java
20、源程序,编译源程序,运行,class,(字节码)文件,1.3.2 Java,应用程序开发,编写实例,实例分析和运行,如果是初学者,需要注意下面几个方面:,源文件的名称一定要,和主类,的名称保持一致。,源文件的扩展名必须以,.java,命名。,Java,语言是区分大小写,在,Java,程序中,,System,和,system,对,Java,来说是一个不一样的名称。,空格只能是半角空格符或是,Tab,字符。,1.3.2 Java,应用程序开发,在使用“javac”编译器编译源代码文件时,可能会出现下面几个常见问题:,Error:cannot,read:Hello.java,这表示,javac,工
21、具程序找不到指定的,.java,文件,需要检查文件是否存储在当前目录中,或是文件名是否错误。,Hello.java:1:class Hello is public,,,shoud,be declared in a file named,Hello.java,源文件中类的名称和源文件名称不符,需要确定源文件名称和类名称是否相同。,Hello.java:3:cannot find symbol,源程序文件中某些代码部分输入错了,最常发送的原因可能是没有注意到字母的大小写。,Javac,不是内部或外部命令、可执行程序或批量文件,path,设置有误或没有在,path,中加入,JDK,的,bin,目录。
22、1.3.2 Java,应用程序开发,如果没有出现上述所列问题,即成功编译了该,Java,文件。在解释执行,.class,文件时,可能会出现下面几个常见问题:,Exception in thread main,java.lang.NoClassDefFoundError,Java,工具程序找不到所指定的,.class,类,需要确定指定的类存是否存储在当前目录中,名称是否正确。,Exception in thread main,java.lang.NoSuchMethodError:main,没有指定,Java,程序的入口。,Java,工具程序指定的类必须有一个程序入口,也就是必须包括,main
23、String,args,)这个方法。,13.3 Java,小应用程序开发,Java applet,不是一个,application,,它没有定义,main(),方法。实际上,,applet,是靠它的宿主,application,(如,Web,浏览器)来启动、打开、关闭窗口。很多,Applet,只是简单地用来在,Web,浏览器的指定窗口中显示图形图像,也有些,applet,是用来提供一个带命令按扭的,GUI,,这种命令按扭通常用做启动应用指定的操作。,Applet,操作一般在某些安全限制下进行,这是为了防止用户受到未知情况下下载的,applet,偷窃私有数据,损坏文件系统等行为的破坏。,创
24、建,Applet,小应用程序和创建,Application,应用程序的流程,前两个步骤一样,都是首先编写源文件,然后编译源文件,而,Applet,最后一个步骤就是编写网页,在网页中引入编译通过的,class,文件,通过执行网页来执行,Applet,小应用程序。,1.4 Java,开发工具简介,Java,作为一门流行网络语言,相应的图形化开发工具很多,比较著名的有,IBM,公司的,Eclipse,、,Sun,公司的,NetBeans,和,Borland,公司的,JBuilder,等。,IBM,的,Eclipse,以其开源和扩展性获得广大程序员的喜欢,,Sun,公司的,NetBeans,是一个免费
25、的、开源的集成开发环境。在本节中,我们将介绍,Eclipse,和,NetBeans,的安装和使用。,1.4.1 Eclipse,介绍及使用,Eclipse,是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由,Eclipse,项目、,Eclipse,工具项目和,Eclipse,技术项目三个项目组成。,1.4.2 NetBeans,介绍及使用,NetBeans,IDE,(集成开发环境)是一个免费的、开源的基础开发环境。主要包括,IDE,(集成开发环境)和,Platform,(平台)两个部分。它可以运行在众多常见的平台上,包括,Windows
26、Linux,、,Solaris,和,MacOS,等。,NetBeans,基础开发环境为开发者提供了所需要的所有工具,使得开发专业的跨平台的桌面、企业、,Web,和移动应用十分简便。目前,NetBeans,的最新版本为,NetBeans,IDE 6.1,,因此本节以,6.1,简体中文版为目标进行介绍。,1.4.2 NetBeans,介绍及使用,NetBeans,介绍,Netbeans,是一个纯,Java,的程序。,Windows,、,OS2,、,OpenVMS,和,Linux,版是同一个程序,只不过通过不同的启动程序启动。纯,C+,的,Java,编译器速度比纯,Java,的快了很多。语法分析和编译部分,可以用纯,C+,写出来,比如,Visual Age for java,。当然,C+,的标准中缺少跨平台的动态连接库标准,是一个极大的失策。,1.4.2 NetBeans,介绍及使用,NetBeans,6.1,具有下面的新功能:,功能强大的代码编辑器,增强的图形用户界面编辑器,全面支持,Java,企业版应用程序,Web,程序开发,协同开发,Ruby,和,Rails,支持,对版本控制,CVS,和,Subversion,支持,可视化的手机程序开发,






