430 likes | 755 Views
第 1 章 Java 语言概述. —— Write once, run anywhere. 本章内容. JAVA 语言的发展史 JAVA 的版本演化 JAVA 白皮书的关键术语 JAVA 程序的类型 JAVA 集成开发环境. 1.1 Java 的历史. JAVA 是 SUN 公司 (java.sun.com) 于上世纪 90 年代开发。
E N D
第1章 Java语言概述 ——Write once, run anywhere 广东工业大学计算机学院
本章内容 • JAVA语言的发展史 • JAVA的版本演化 • JAVA白皮书的关键术语 • JAVA程序的类型 • JAVA集成开发环境
1.1 Java的历史 • JAVA是SUN公司(java.sun.com)于上世纪90年代开发。 • 1990年12月,SUN公司的一个开发小组从事家用电器方面的小型研究项目。最初的方案是用C++开发。开发人员James Gosling对C++实现这一任务感到失望,决定自己编写一种更好的语言来实现这一项目。最初,这种语言命名为OAK,后来改名为JAVA。 • JAVA最初为用于家用电器而开发,JAVA的小型、安全、可移植性等特点,使其适用于WEB。 • JAVA产生的时候,Internet正日益流行。95年8月,Netscape公司的浏览器率先支持JAVA。随后,Microsoft的Internet Explorer浏览器也支持JAVA。这样,随着万维网的日益普及,JAVA得到了广泛的使用。
Java语言在互联网时代获得巨大成功 • 互联网的出现使得计算模式进入了网络计算时代。 • 网络计算模式的特点 • 计算机是异构的——即计算机的类型和操作系统是不一样的。 例如:SUN工作站的硬件是SPARC体系,软件是UNIX中的Solaris操作系统,而PC机的硬件是INTEL体系,操作系统是windows或者是Linux。 • 代码可以通过网络在各种计算机上进行迁移。 • 网络的计算模式迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中各种计算机上能够正常运行,Java就是在这种需求下应运而生的。 • Java语言具有安全、跨平台、面向对象、简单等适用于网络的显著特点,使得它已经成为最流行的网络编程语言。
本章内容 • 1.1 JAVA语言的发展史 • 1.2 JAVA的版本演化 • 1.3 JAVA白皮书的关键术语 • 1.5 JAVA程序开发环境 • 1.6 JAVA源程序结构与编程规范
Java版本历史 • 1996年初,Sun公司发布了Java 1.0. 该版本实际上并不能用来进行真正的应用程序开发。 • 1998年,Sun在JavaOne会议上发布Java 1.2。 三天后,又将Java1.2改名为“Java 2标准版软件开发工具箱1.2版” • 在Java 1.2中分为3个版本: • J2SE:标准版,面向一般用户 • J2ME:微型版,用于手机等嵌入式设备的应用程序开发 • J2EE:企业版,用于服务器端处理的软件开发。 • 本课程内容主要基于J2SE。
Java版本历史(续) • Java 1.3和1.4对最初的Java 2版本作了一些细微的改进,如扩展了标准类库、提高了系统性能个,修正bug。 • 2004年发布的Java 1.5改称Java5.0,该版本对Java作出了重大改进: • 添加了泛型类型generic type,类似于C++的模版 • “for each”循环 • 可变元参数 • 自动打包 • 元数据 • 枚举 • 静态导入 #
本章内容 • JAVA语言的发展史 • JAVA的版本演化 • JAVA白皮书的关键术语 • JAVA程序的类型 • JAVA集成开发环境
JAVA“白皮书”的关键术语 Java白皮书解释了设计Java语言的初衷及完成的情况,在白皮书的摘要中有11个关键术语: • 1.简单性 • 2.面向对象 • 3.分布式 • 4.健壮性 • 5.安全性 • 6.体系结构中立 • 7.可移植性 • 8.解释型 • 9.高性能 • 10.多线程 • 11.动态性
JAVA“白皮书”的关键术语(续) 1. 简单性 • 目标之一:建立一种简单的系统,它允许使用者不需要像现今的标准程序一样接受深奥的训练就能轻易地设计程序,而且要符合当今的标准惯例。 • Java的语法与C++的语法相似,但删除了许多极少被使用、不容易理解和令人混淆的C++功能,如运算符重载(operator overloading)、多重继承(inheritance)以及指针; • Java增加自动内存垃圾收集(auto garbage collection)功能,因此简化Java程序工作。
JAVA“白皮书”的关键术语(续) 2. 面向对象 • 将事物抽象为对象。 • 面向对象语言关注“对象”和接口 非面向对象语言关注“过程”和“工具” • 提高了程序代码的重用性
Java语言与C++ • Java产生于C++之后,是完全的面向对象的编程语言,充分吸取了C++的优点,同时摒弃了C++的一些弊端。 • 采用了程序员所熟悉的C和C++语言的许多语法,同时又去掉了C语言中指针、内存申请和释放等影响程序健壮性的部分。 • Java语言的一个目标是跨平台,因此采用了解释执行而不是编译执行的运行环境,在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码,实现跨平台运行。 • Java语言具备动态下载程序代码机制,是为了适应网络计算的特点——程序可以根据需要把代码实时地从服务器中下载到目标机器来执行。在此之前还没有任何一种语言能够支持这一点。
JAVA“白皮书”的关键术语(续) 3. 分布式(网络适用性) • 将复杂的网络编程变成简单化: • 提供大量的系统模块支持TCP/IP协议的编程。 • 远程方法调用机制使得分布式对象之间可以进行通信。 • Java应用程序可以借由URL在通过网络开启和存取对象,就如同存取一个本地(local)文件系统一样简单。
JAVA“白皮书”的关键术语(续) 4. 健壮性 • Java的设计目标之一为程序的可靠性 • 强调在设计初期即检查可能存在的问题(编译检查), • 运行时执行动态(runtime)检测,并排除容易出现错误的条件。 • Java和C++的最大不同是Java可以消除重写内存和损坏数据的可能性。
JAVA“白皮书”的关键术语(续) 5. 安全性 • Java设计目的是要供使用于网络/分布式运算环境。为此,Java非常强调安全性 • 禁止运行时堆栈溢出。(蠕虫病毒常用的攻击手段) • 禁止在自己的处理空间之外破坏内存 • 未经授权禁止读写文件
JAVA“白皮书”的关键术语(续) 6. 体系结构中立性(平台无关性) • Java编译器能产出与某一计算机结构无关的字节代码指令,该字节码可以在多种不同处理器上执行。 • Java应用程序能够在网络上的各种异构计算机上执行 。
JAVA“白皮书”的关键术语(续) 7. 可移植性 • 在Java中,数据类型的大小固定(C/C++数据类型大小不不固定),消除了代码移植时数据类型大小不一致的问题; • 二进制数据采用固定的格式存储和传输,消除了字节顺序的困扰。 • 定义了可移植的接口。 例如:有一个抽象的window类给出了在UNIX、Windows和Macintosh环境下的不同实现。
JAVA“白皮书”的关键术语(续) • 8. 解释型 • Java解释器(interpreter) 将字节码翻译成本地机器指令执行。 面向Windows的JRE 传输 编译 编写Java程序,文本格式 字节码文件 面向Linux的JRE 传输
JAVA“白皮书”的关键术语(续) 9. 高性能 • 字节码可以(在运行时)被快速地翻译成运行该应用程序的特定CPU的机器码。 • 提供“即时编译”方式,即一次将字节码编译成本地代码,并将结果缓存起来。在需要的时候重新调用。 • 在Java虚拟机技术中,还可以监控代码被执行的“热度”。将最常执行的字节码部分可以逐渐翻译成本地代码并小心地优化,能够极大地提高程序执行速度。
JAVA“白皮书”的关键术语(续) 10. 多线程 • Java中的多线程处理非常便捷。只要OS支持,Java中的线程就可以利用多个处理器。 • 但在底层,主流平台的线程实现机制各不相同,Java并没有对此实现平台相关性。在不同的机器上,只是调用多线程的代码完全相同,Java仅是简单地把多线程的实现交给底层的OS去处理。 • 问题:正因为如此,有些程序员不得不为不能深入控制线程而苦恼,并认为这是Java的缺陷之一。
JAVA“白皮书”的关键术语(续) 11. 动态性 • Java能支持不断变化的运算环境。 • C++中,如果修改了某一个类,整个程序都得重新编译。 • 在Java中,可以在类库中自由地加入新的方法和实例变量,而不影响用户的程序执行。虽然C++也可以实现这样的动态性,但使用起来非常复杂,代价也很高。 #
本章内容 • JAVA语言的发展史 • JAVA的版本演化 • JAVA白皮书的关键术语 • JAVA程序的类型 • JAVA集成开发环境
Java程序的类型 • Application程序:需要独立的解释器解释运行。必须有main()方法。 • Applet程序:嵌入在HTML编写的WEB页面中的非独立程序。由Web浏览器内部包含的Java解释器解释运行。
JAVAApplication 结构 • 例如:有一个java源程序可以是如下结构,该源程序命名为HelloWorldApp.java: • package javawork.helloworld; /*把编译生成的所有.class文件放 到包javawork.helloworld中*/ • import java.awt.*; //告诉编译器本程序中用到系统的AWT包 • public class HelloWorldApp{.... • public static void main(String args[]){…} • ..} /*公共类HelloWorldApp的定义, 名字与文件名相同*/ • class TheFirstClass{......} //第一个普通类TheFirstClass的定义 • class TheSecondClass{......} //第二个普通类TheSecondClass的定义 • ...... //其它普通类的定义 • interface TheFirstInterface{......} //第一个接口TheFirstInterface的定义
java编程规范 包(package) • 即目录,它能够将某一个类放入到某个目录当中,使得程序员能够更好地管理Java类(Class)和接口(Interface)。 import语句 • 如果在源程序中用到了除java.lang这个包以外的类(无论是系统的类还是自己定义的包中的类),都必须用import语句标识,以通知编译器在编译时找到相应的类文件。
Java命名规范 • 包名:系统包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event; • 类名:通常首字母大写由多个单词合成一个类名,每个单词的首字母也要大写,例如:class HelloWorldApp; • 接口名:命名规则与类名相同,例如:interface Collection; • 方法名:往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanceAccount,isButtonPressed • 变量名:全部字母小写,一般为名词。例如:length; • 常量名:习惯上应该全部字母大写,单词间用下划线“_”,分隔。例如: MAX_SIZE, R_PG13, TERM_LIMIT
Java命名规范(续) • 参数的命名:参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。 • Javadoc注释:除了常见的注释方式之外,Java语言规范还定义了一种特殊的Javadoc多行注释:以/**开头,而以*/结束。 • 使用Javadoc注释的好处:编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。例如: • /*** This is an example of* Javadoc** @author Darchon* @since 2008-2-28*/ # Eclipse演示
Java Application 注意问题 注意问题: (1)类个数:至少一个类,最多只能有一个public类 (2) 源文件命名:若有public类,源文件必须按该类命名 (3) 标识符:区分大小写 (4) main()方法:一个应用程序有且只有一个main()方法,main()方法必须包含在一个类中,该类即为应用程序的外部标志。
Java应用程序的编辑 public class HelloWorldApp { public static void main(String args[]) { System.out.println(“Hello World!”); } } • 注意:存盘时文件名和公共类名(用public声明)要一致 HelloWorldApp.java
Java应用程序的编译与运行(1) • Step 1:安装Java开发工具包JDK: http://developers.sun.com/downloads/(下载) 主要文件:javac.exe、java.exe和appletviewer.exe (建议装1.6以上版本:jdk-6u4-windows-i586-p.exe)
Java应用程序的编译与运行(2) • Step 2:设置Java运行环境 设JDK目录:C:\Program Files\Java\jdk1.6.0_02 “我的电脑” “属性” “高级” “环境变量” path:添加“C:\Program Files\Java\jdk1.6.0_02\bin\” (java编译器和虚拟机可执行文件java、javac、appletviewer所在目录) classpath:. ; (在dos当前目录下寻找.class文件) C:\Program Files\Java\jdk1.6.0_02\lib\dt.jar; C:\Program Files\Java\jdk1.6.0_02\lib\tools.jar (告诉虚拟机java需要使用到的类库文件路径) JAVA_HOME:告诉系统JDK的安装目录(可省略)
Java应用程序的编译与运行(3) • 编译HelloWorldApp.java javac HelloWorldApp.java (在与HelloWorldApp.java 相同的目录下生成HelloWorldApp.class) 运行:java HelloWorldApp • 若在HellowWorldApp.java程序最前面加上以下语句: package app; 编译: javac HelloWorldApp.java 或 javac –d . HelloWorldApp.java 运行: javaapp.HelloWorldApp
Java Applet的组成 • 类库支持:继承Applet类。 • init()方法:初始化,自动调用,只执行一次。 • start()方法:初始化后,重入等都将自动调用。Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务等。 • stop()方法:离开Applet所在页面时调用,以停止消耗系统资源。 • pait()方法:每次激活时自动调用
Java Applet实例 import java.applet.*; import java.awt.*; public class HelloApplet extends Applet { public String s; public void init() { s = new String("Hello Applet"); System.out.println("调用了Applet init()"); } public void start() { System.out.println("调用了Applet start()"); }
Java Applet实例 public void stop() { System.out.println("调用了Applet stop()"); } public void destroy() { System.out.println("调用了Applet destroy()"); } public void paint(Graphics g) { g.drawString(s,25,25); } }
Java Applet实例 编辑存盘:文件名(.java)和主类名一致 编译代码:javac HelloApplet.java 编写HTML文件: HelloApplet.html 查看运行结果:appletviewer HelloApplet.html <HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <applet code="HelloApplet.class" width=300 height=300> </applet> </HTML>
本章内容 • JAVA语言的发展史 • JAVA的版本演化 • JAVA白皮书的关键术语 • JAVA程序的类型 • JAVA集成开发环境
JAVA程序的集成开发环境 • 1. NetBeans • 2. Eclipse • 3. JBuilder2007
1. NetBeans • 安装过程: • (1) 首先安装JDK: jdk-6u4-windows-i586-p.exe • (2) 安装NetBeans:version 6.1
课程要求 • 掌握Java程序的语法 • 深刻理解面向对象含义(类、对象、接口) • 掌握Java图形程序设计、多线程、异常处理等技术 • 学会独立(通过小组讨论)解决实际问题(查阅资料)
考核方式 总成绩= 平时成绩(10%)+三次作业(90%) 第一、二次作业(20%) 的三次大作业(70%)
附录:参考书籍 • 1. JAVA2 核心技术(第7版):CAY S.HORSTMANN,GARY CORNELL,机械工业出版社 • 第I卷:基础知识 • 第II卷:高级特性 • 有英文电子版及源代码。这套书的卷I适合于Java语言基本入门,卷II则可以作为进入特定应用程序设计的基本指导。 • 2. 21天学通Java 2(第3版)(专业参考版):Rogers Cadenhead,Laura Lemay,人民邮电出版社 • 作为需要快速掌握Java语言基础知识的傻瓜书。 • 3. Java编程思想(第3版):机械工业出版社 • 适宜于曾经接触过Java,但未系统学过Java的读者,不太适合于基本入门。 • 4. Java Swing(第二版):清华大学出版社 • Java GUI程序设计的字典式工具书
作业 • 安装JDK(1.5以上版本) • 安装 NetBeans集成开发环境,构建一个java工程。 • 并编写HelloWorld程序,分别在Dos和集成开发环境中编译运行