第一章 Java程序设计技术课程介绍
总学时,64(1-16周 )
其中,理论教学 32,上机 32+10
学分,4学分
课程性质程序设计语言类必修的公共基础课,主要介绍 Java语言的基本语法和面向对象编程方法。
教学安排共三个单元(基础篇、提高篇、进阶篇),
每个单元需提交相应实验报告,最后还有一个课程综合设计。
考核方式课程为统一考核课程,成绩由 平时成绩,综合性实践成绩 和 期末无纸化上机考试成绩 三部分组成,即:
总评成绩 =平时成绩( 30%) +综合性实践项目( 20%) +上机考试成绩( 50% )
其中:
平时成绩=平时出勤和表现( 25%)+作业
( 25%)+上机实验情况和报告( 50%)
概述
什么是 Java语言
一个简单的 Java程序
程序的编译和运行
常见错误
使用 Java核心 API文档什么是 Java语言
前身是 1991年由美国 Sun公司的 Jame
Gosling,Bill Joe等人开发的 Oak语言
Java是一种功能强大的程序设计语言,既是开发环境,又是应用环境,它代表一种新的计算模式正式发布 → 1.0 → 1.1 → 1.2 → 1.3 → 1.4 → 5.0 → 6.0
1995 1996 1997 1998 2000 2002 2004 2006
J2SE,J2EE,J2ME
什么是 Java语言面向对象的程序设计语言与机器无关的二进制格式的类文件
Java虚拟机(用来执行类文件)
完整的软件程序包(跨平台的 API和库)
Jav
a
语言
Java语言的特点
语法简单,功能强大
类似于 C++,去掉了 C++中不常用且容易出错的地方
完全面向对象
分布式与安全性
强调网络特性,内置 TCP/IP,HTTP,FTP协议类库
三级代码安全检查机制
与平台无关
一次编写,到处运行
Java语言的特点
解释编译两种运行方式
just-in-time编译器,简称 JIT编译器
多线程
动态执行
执行代码是在运行时动态载入的
丰富的 API文档和类库
Java的三层架构
主机架构
集中处理,集中管理,各用户分享使用计算机资源。这种模式下,可移植性差,扩充系统费用较大
个人计算机( PC)
本地处理,本地管理,各用户独占系统资源,
管理维护费用直线上升
Java的三层架构
Java计算模式
结合了上述两种模式的优势,它可用于客户 /服务器架构,将公共使用的程序放到应用程序服务器上,用户使用时从服务器上下载到客户端,
各用户独立使用设备和程序。当程序更新时,
只需在服务器上进行。不必在客户端做任何维护工作,达到,零管理,的理想目标。
Java语言的目标
创建一种面向对象的语言
提供一种解释环境
这可以缩短系统开发的编译-连接-装载-测试周期,提高开发速度。
去掉了影响代码健壮性的功能
如指针结构及程序员负责的内存分配与释放。
Java语言的目标
为程序运行多线程提供了方法
允许程序下载代码模块
在程序运行生命期内可以动态修改
检查下载的代码模块,提供了保证安全的一种手段
Java虚拟机
Java虚拟机( Java virtual machine,JVM)
是运行 Java程序必不可少的机制。编译后的 Java程序指令并不直接在硬件系统的 CPU
上执行,而是由 JVM执行。 JVM是编译后的
Java 程序和硬件系统之间的接口,程序员可以把 JVM看作一个虚拟的处理器。它不仅解释执行编译后的 Java指令,而且还进行安全检查。它是 Java程序能在多平台间进行无缝移植的可靠保证,同时也是 Java程序的安全检验引擎。
Java虚拟机
JVM的定义
JVM是在一台真正的机器上用软件方式实现的一台假想机
JVM的具体实现
指令集(等价于 CPU的指令集)、寄存器组、类文件格式、栈、垃圾收集堆、内存区
JVM代码格式为压缩的字节码,效率较高
JVM的实现叫做 Java运行时系统或运行时环境
( Runtime Environment),简称为 运行时
Java虚拟机的性能
Java解释器经过优化,字节码的执行速度已有很大提高
在字节码执行之前先经过 JIT编译器进行编译,生成针对具体平台的本机执行代码。
执行效率可比解释执行的效率大幅度提高。
并仍不失跨平台的特点
Java虚拟机的性能
Hotspot技术
是 Sun公司推出,为根本上解决 Java程序的效率问题。它提供对代码的运行时选择。在程序执行时,对每个字节码指令进行分析,根据它的执行次数,动态决定它的执行方式垃圾收集
程序员不必亲自释放内存
后台系统级线程,记录每次内存分配的情况,
并统计每个内存指针的引用次数。
垃圾收集自动进行,无需用户释放内存,
消除了内存漏洞代码安全语言定义
public protected
private final
取消指针自动回收垃圾
bytecode检查限定对象的存取权限系统堆栈溢出 参数类型一致程序执行系统
WWW浏览器限制 Java小应用程序的不正当使用
Java源程序 (.java文件 )
Java编译器
Java bytecode(.class文件 )
bytecode 下载器
bytecode 解释器系统执行平台代码安全
对于 Applet,因其是从其他机器上通过网络下载到本机执行的,程序中可能隐藏某些非法操作,所以在 Applet运行之前,系统要对之进行严格的三级代码安全检查,
即验证、分析和跟踪监测。
代码安全
JDK1.0版本中,安全模型是所谓的,沙箱,
模型
JDK1.1版本中,使用,签名 Applet”
Java 2允许用户自己设定相关的安全级别代码安全
Java解释器
Java解释器只能执行为 JVM编译的代码
Java解释器有三项主要工作:
(1)下载代码--由类下载器完成
(2)校验代码--由字节码校验器完成
(3)运行代码--由运行时解释器完成代码安全
类下载器
从 Internet网上下载类文件
类下载器把本地文件系统的类名空间和网络源输入的类名空间区分开来,以增加安全性代码安全
字节码校验器
检查代码的安全性,代码段的格式,并使用规则来检查非法代码段
主要检查以下几项内容:
(1)类遵从 JVM的类文件格式。
(2)不出现访问违例情况。
(3)代码不会引起运算栈溢出。
(4)所有运算代码的参数类型总是正确的。
(5)不会发生非法数据转换,如把整数转换为指针。
(6)对象域访问是合法的。
开发环境
开发环境的安装
安装 JDK (Java Development Kit)
设置环境变量
PATH = C:\Program Files\java\jdk1.6.0_03\bin;
CLASSPATH =,; c:\ Program Files\java\
jdk1.6.0_03\lib\dt.jar;c:\Program Files\java\
jdk1.6.0_03\tools.jar
常用开发工具,
UltraEdit,JCreator
Eclipse,JBuilder,NetBeans
JDK目录结构
C:\Program Files\java\
jdk1.6.0_03
bin lib
javac java appletviewer
jre1.6.0_03
当前目录
jre demo
C:
Java程序
Java应用程序( Java Application)
Java小应用程序( Java Applet)
public class HelloWorldApp{
public static void main (String args[ ]) {
System.out.println ("Hello World!");
}
}
Java应用程序例编译命令运行命令运行结果程序的编译和运行
编译源文件是文本形式的文件,经过编译,生成二进制格式的字节码类文件
Java编译器,,javac”
$ javac HelloWorldApp.java
运行
Java的解释器是,java.exe”
java和 javac一般放在 %JAVA_HOME%\bin目录中,系统配置文件的 PATH变量中应包含该目录
$ java HelloWorldApp
常见错误
编译时错误
javac,Command not found
包含 javac编译器的路径变量设置不正确。
HelloWorldApp.java:3,Method printl
(java.lang.String) not found in class java.io.PrintStream.
System.out.printl (“Hello World!”);
^
方法名 printl不正确,
HelloWorldApp.java:1,Public class HelloWorldapp must be
defined in a file called "HelloWorldapp.java".
public class HelloWorldapp{
^
文件定义的公有类 HelloWorldapp的名字和文件名不匹配。
常见错误
运行时错误
Can't find class HelloWorldApp
系统找不到名为 HelloWorldApp的类文件。
In class HelloWorldApp,main must be
public and static
main()方法的左侧缺少 static或 public
文件中含有的类个数错误
在一个源文件中只能定义一个公有类常见错误
层次错误
解释:一个,java源文件可以含有三个,顶层,
元素,这三个元素必须依次是:
(1)一个包说明,即 package语句,可选
(2)任意多个引入语句,即 import语句
(3)类和接口说明常见错误
整体来看,Java程序的结构如下:
package语句:零个或 1个,必须放在文件开始;
import语句:零个或多个,必须放在所有类定义之前;
公有的( public)类定义:零个或一个;
类定义:零个或多个;
接口定义:零个或多个;
源文件命名时,若文件中含有 public类,源文件必须与该类名字一致,注意区分大小写。
常见错误
正确的语句序列:
错误的语句顺序:
package Transportation;
import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Graphics;
import java.applet.Applet;
package Transportation; 该例中在包说明语句之前含有其他语句常见错误
错误的语句顺序:
package Transportation;
package House;
import java.applet.Applet;
该例中含有两个包说明语句常见错误例 1-2 计算圆的面积
package myjava;
import java.lang.*;
import java.util.*;
public class Circle {
private static double r=3;
private static double area;
public static void main(String[ ] args) {
area=Math.PI*r*r;
System.out.println("面积是,"+area);
}
}
注,
1.编译得到 Circle.class后将类文件移动到 myjava文件夹 (自己创建 )
2,执行时所用命令
java myjava.Circle 或
java myjava/Circle
使用 Java API文档
从 SUN公司的网站上下载文档文件,假定文件存放在 jdk目录下,则在浏览器地址框中输入
jdk\docs\index.html
即可以查看 JDK文档。
作业与实验
复习本章内容
实验内容
1.仿照教材例 1-1,输出下面的信息:
*****************
* Hello,Java! *
*****************
2.编写程序计算圆的周长。