SlideShare a Scribd company logo
Java 面向对象程序设计 上海财经大学信息管理学院 黄海量
教材 : 《 Java 语言程序设计》 ,  郎波编著,清华大学出版社, 2005 年 5 月第 1 版 参考书 :   《 Java 编程思想》( Thinking in Java ) API 文档参考网站  http://java.sun.com/j2se/1.3/docs/api/index.html 不满足于作业的同学可以自己找些习题书做一下。例如,《 java 程序设计习题集(含参考答案)》,雍俊海编著,清华大学出版社  2006 教材和参考书
可供本课程使用的软件 J2SDK 1.4.2 UltraEdit for Windows EClipse JBuilder  VJ++
1  课程的定位 1.1  课程性质 1.2  课程学习目的和基本要求 1.3  课程内容与重点 1.4  实践环节 1.5  考核
1.1  课程性质   是一门建立 软件设计 基本概念的课程,是本科信息类专业的必修课。 通过 Java 语言建立面向对象程序设计的思想和理念,为将来进一步学习面向对象的 软件工程 和网络编程打下基础。
为什么要学 Java ? “ Java 为 Internet 和 WWW 开辟了一个崭新的时代。”   —— Scott McNealy, SUN  公司总裁 “ Java 是最卓越的程序设计语言。” —— Bill Gates
为什么要学 Java ? 北美地区使用 Java 的软件开发人员比例达到 44% 在北美以外地区,使用 Java 的软件开发人员比例为 43% ,并仍在不断上升 美国伊文斯市场调查公司 2006 年报告:在美国 Java 程序开发人员的平均年薪最高,基本年薪为 $71000 ; C++ 、 C 程序开发人员的平均年薪为 $65000 美元。
为什么选择 Java , 而不是 C++ 有利因素 使用 Java ,能更容易、更准确地理解面向对象程序设计的概念( 简单、纯粹 )。 学习 Java ,能为应用软件尤其是网络、 跨平台 应用软件的开发奠定基础。 不利因素 学习 C++ 有利于系统软件的开发 研究生入学考试个别使用到 C++
1.2  课程学习目的和基本要求 掌握 面向对象 程序设计的基本概念,如:类、对象、封装、继承、多态 掌握 Java 的 语言规范 及其面向对象特性 掌握 Java 异常处理、输入输出、图形用户界面、网络编程等具体方法 使用面向对象的思路来分析问题、设计软件。
2  课程内容与重点 面向对象程序设计的概念 重点掌握面向对象的基本概念,有类、对象、属性操作、封装、继承、接口、重载、包容、多态。 Java 语言规范 重点掌握 Java 语法基础、 GUI 、 Applet 、多线程、网络等。
3  课程的实践教学 实践教学 课堂:结合程序 案例 ,采用面向对象的思路进行讲解和分析 通过课后 作业 和 上机实验 ,自主设计程序
4  课时分布( 68 课时) 课堂教学( 50 ) Java 概述与基本语法: 12 面向对象与 java 的 OOP 核心特征: 20 异常处理: 4 输入输出: 4 图形用户界面: 6 Applet : 4 上机实验( 12 ) 课堂练习和期末复习( 6 )
5  课程的主要章节 Java 概述 简单数据类型 运算符和表达式 流程控制 Java 语言中的面向对象特性 异常处理 图形用户界面
5  主要章节(续) Java 输入/输出和文件操作 Applet 多线程 Java Bean 网络通信 JDBC 编程 RMI 编程技术 Holding Objects
作业 源程序+注释 上机实验 实验报告+源程序 成绩 期末考试  70% 平时作业、上机、出勤  30% 6  课程的考核
第一章  Java  语言概述 Java  语言的产生 Java  的特点 Java  的工作方式 Java  的版本 Java  程序的类型 Java  的开发工具 Java  程序举例
Java  的产生 1991 年 , SUN  公司的  James Gosling 、  Bill Joe 等人  ,  为在电视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为 Oak   的程序语言。 简单,小型化 跨平台运行 聪明绝…
Java  的产生 90 年代初,互联网、 WWW 兴起      Oak     Java  WebRunner  浏览器     Hot Java  【优点:跨平台,短小精炼,用户交互性好】
Java  的发展历程 1995:  公布 Java 的 Alpha 1.0a2 版本 1996:  第一个开发包 JDK v1.0 1997:  JDK v1.1 1998:  JDK v1.2  (Java2) 2000 以来 :  J2EE( 企业版 ) , J2SE( 标准版 ) , J2ME( 微型版 )
Java  的特点 简单性: 语法单纯、易学; 可重用类库、自动内存管理(如内存回收机制)- > 简化程序员的编程工作; 去掉指针,修改 C++ 中容易引起错误的成分(如多重继承等),减少出错可能 面向对象: 纯面向对象 语言,所有程序代码均以类的形式组织,由类来定义对象的各种状态和行为
Java  的特点 体系结构中立(可移植性): Java 源程序 Java 解释器 Java 字节码 Java 编译器 Win32 Unix Mac Win32 Unix Mac 程序运行 Win32 Unix Mac Java 应用程序能够在任何平台上执行,字节码 ——  平台无关性 ;完全统一的语言版本  ( 如数据类型在所有平台上一样 )—— 实现无关性 。
Java  的特点 “ 半编译,半解释”特性: 本质上, Java 是 解释执行 的,但 Java 通过预先将源代码编译为接近于机器指令的 字节码 ,有效地克服了传统解释型语言的性能瓶颈,同时又保持了解释型语言的 可移植性 。 即,“ 较高的运行效率 + 可移植性 ”
Java  的特点 分布式: 数据分布性:很方便地访问网络节点上的分布资源; 操作分布性: Applet 字节码从 web 服务器自动分散到客户端(浏览器)执行 强壮性: 静、动态检查(强类型语言),排除出现错误的条件;异常处理;取消指针达到内存保护 安全性: 目的:在网络 / 分布式运算环境中,确保程序运行可靠、可信任,不损害系统 手段:内存分配及布局由 Java 运行系统 (而不是编译器)决定;字节码验证;程序代码的访问权限控制
Java  的特点 多线程 :支持多线程(并发执行程序,提高效率); Java 在语言级(而不是操作系统级)加入了并发控制的功能,大大简化了多线程应用程序的开发 动态性 :  (可维护性) Java 程序的基本组成单元是类,所有类都在运行时才动态加载,因此更便于程序的动态维护。
Java  与 C 、 C++ 的不同 全局变量 (C)  类变量 (java) Goto (C)  指针 (C)  内存管理 :  分别由 JVM(Java)/ 编译器 (C/C++) 来决定内存的分配 类型转换 C 更灵活,而 Java 更严格 头文件 (C) : 主要作用在于调用函数库功能 结构和联合 (C)
Java  的运行系统 j08 即时编译技术 : 将要执行的字节码一次编译为机器代码,然后全速运行。可提高运行速度
Java 的工作方式 : 编译过程 文件类型 .java   源文件 .class   二进制字节码文件 编译过程 Java 编译器 import java.io.*; class  T est {….} Hello .java (源代码) DF BA 09 88 …… .. Hello.class ( 字节码 )
Java 的工作方式:解释执行 x08 Java 虚拟机( JVM ) Java 处理器“芯片”,一般由软件实现 Java 虚拟机 类加载器 字节码验证器 解释器 DF BA 09 … Hello.class 字节码 执行 机器码
Java  所定义的虚拟 CPU  JVM 提供以下定义: 指令集( ByteCodes  是 JVM 的机器指令)。 寄存器组 类文件格式 栈 垃圾回收“堆”(实现内存的动态分配和自动回收) 内存区域  JVM(Java Virtual Machine)
JRE  :  java  运行环境  . JRE  是由 JVM  和  java  核心类库( API )以及相关支撑文件组成。 Java 的运行环境
Bytecode   字节码, JVM 指令集, .class JDK  — Java Developer’s Kit  ( java 开发工具包) 包含 JVM 和其他工具,以及 API 和相关文件 Java 2  — Java 2 Platform J2 SDK — Java 2 Software Development Kit Java 中的几个英文术语
The Java™ 2 Platform ●   Java™ 2 Platform, Standard Edition ( J2SE ) ●   Java™ 2 Platform, Enterprise Edition ( J2EE ) ●   Java™ 2 Platform, Micro Edition ( J2ME )
The Java™ 2 Platform High-End Server Java Technology Enabled Desktop Workgroup Server Java Technology Enabled Devices
Java 程序的类型 Application “ Java  应用程序” , 是可以独立运行的 Java 程序。 由 Java 解释器控制执行。 例: 计算器
Java 程序的类型 Applet “ Java 小程序”不能独立运行,而是 被嵌入到 Web 页中 。 如: 嵌入网页的 计 算器 , 网页效果1  , 2 , 3 。 由 Java 兼容的浏览器控制执行。 Browser 网页 字节码 Server
Java 程序的类型 Servlets 是 Java 对 CGI  编程的解决方案。 是运行于 Web server 上的、作为来自于 Web browser ( 或其他 HTTP  客户端的请求 )  和 在 HTTP  服务器上的数据库及其他应用程序之间的 中间层程序 。
程序类型与用户界面 Applet Servlets Application 图形界面 字符界面
Java  开发工具 J2 SDK +文本编辑器 记事本、 JCreator... IDE JBuilder (Borland) Visual  J++ (MicroSoft) WebSphere 、 EClipse (IBM)
J2SDK 中的核心工具 javac.exe java 编译器 ,将 Java 源程序编译成 字节码 java.exe java 解释器 ,解释字节码、执行 Java 应用程序, 即 application appletviewer.exe 小程序浏览器 ,执行 html 文件中的 Java 小程序, 即 Applet
Application 程序举例 HelloWorld.java : class   HelloWorld  {  public static void  main (String[ ] args)  {   System.out.println("HelloWorld!");  // 在屏幕上显示 “ HelloWorld!” }  } class MyClass{……} 主类名
Application 程序基本结构 由 1 个或多个“类”组成。 如何定义类 : class  HelloWorld {  …  } 可执行的 Application 程序中,必须有一个“类”定义了 main()   方法: public static void  main (String[ ] args) —— main()   方法是自动执行的,是 java 应用 运行的起始点 。而这个类就称之为“ 主类 ”。
HelloWorld.java 的具体分析 Java 源文件名 必须与 主类名 同名 (包括大小写) class HelloWorld {…}=>HelloWorld.java 注释 System.out.println("Hello World!");  // 显示字符串
HelloWorld.java 的具体分析 方法的调用 System.out. println( "Hello World!" ) ;  public final class System { public final static PrintStream out ; ... ... }
Application 程序创建过程 1. 编写 源代码  HelloWorld .java 2. 编译   —  javac.exe  javac  HelloWorld.java 编译通过后,将生成 HelloWorld.class  文件 3. 解释 执行   —  java.exe  java  HelloWorld  (隐含: .class 文件) D:\> javac Hello World .java  D:\> java Hello World Hello World!
class Many_Hellos Many_Hellos.java public class  Many_Hellos { public static void  main (String args[]) { for ( int j=0; j<5; j++) { System.out.println(“Hello! World,”) ; int c=0; }  } } 类声明与定义 类中的方法 语句结尾以分号标志 用大括号括起 语句组
Java 语言中的大小写 Java 语言 区分大小写 类名第一个字母大写  class  BankCard   方法名第一个字母小写  float  getBalance()   变量名第一个字母小写  int  cardNumber
applet 的开发、执行模式 Browser Client 机 Server 机 编译器 .java 源代码 .class 字节码 .class 字节码下载
applet  小程序举例 Hello World Applet.java import  java.awt.Graphics;  import  java.applet.Applet ;  // 将 java.applet 包中的 // Applet 类引入 本程序,从而可以使用它   public class HelloWorldApplet  extends java.applet.Applet  { public void paint(Graphics g) { g.drawString(&quot;Hello, Java World!&quot;, 10,20); } }
applet  小程序的特殊规范 applet 程序中必须包含 java.applet.Applet 类的子类。该子类就是 applet 小程序的主类。 系统类 Applet 中已经定义了很多的成员变量和成员方法,它们规定了 Applet 小程序如何与执行它的解释器—— WWW 浏览器配合工作;  主方法——被浏览器自动调用的方法。 init() 、 start() 、 stop() 、 destroy () 、 paint()
applet  的创建过程 编写 源代码:  HelloWorldApplet .java 编译 : javac HelloWorldApplet.java - > 生成 HelloWorldApplet .class 文件 建立 index. html 文件, 嵌入 Hello World Applet.class <applet code=HelloWorldApplet.class width=200 height=50> </applet>
applet  小程序 浏览 html 文件 使用 appletviewer  如:  appletviewer index.html 使用常规的浏览器 D:\> javac HelloApplet.java  D:\> appletviewer index.html
Servlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Servlet1 extends HttpServlet  {  public void  service (HttpServletRequest request,    HttpServletResponse response) throws IOException , ServletException  {   PrintWriter out; String title=&quot;This is title of servlet&quot;; String heading1=&quot;This is output1 from Servlet1&quot;;
Servlet (续)   response.setContentType(&quot;text/html&quot;); out = response.getWriter(); out.print(&quot;<HTML><HEAD><TITLE>“ +title+&quot;</TITLE>&quot;);   out.print(&quot;</HEAD><BODY>&quot;);   out.print(&quot;<h1>&quot;+heading1 +&quot;</h1>&quot;);   out.println(&quot;<P>This is output2 from Servlet1.&quot;);   out.print(&quot;</BODY></HTML>&quot;);  out.close(); } }
Servlets 的工作 读入用户发来的数据(通常在 web 页的 form 中) 找出隐含在 Http 请求中的其他请求信息(如浏览器功能细节、请求端主机名等 ) 产生结果 ( 调用其他程序、访问数据库、直接计算结果) 格式化结果(网页) 设置 Http Response 参数 ( 如告诉浏览器返回文档格式 ) 将文档返回给客户端。
Servlet  运行结果
JSP ( Java Server Page ) <HTML><HEAD><TITLE>Welcome Page</TITLE></HEAD> <body> <H1>You hit the page: <%! int hitcount=1;%> <%= hitcount++ %> times </H1> </body></html>
JSP  运行结果
作业一 编写一个 Application ,在屏幕上显示如下信息: ****************************   Welcome  < 你的姓名 _ 学号 >  **************************** 把上题改写为 Applet 。
作业、课程资料、答疑时间 作业提交:通过 BB 系统上传作业 课程资料( ppt, 实验指导书):从 BB 系统下载 作业命名格式:学号 _ 姓名 _ 作业 1 答疑 : 每周二下午 15:00 - 16:30, 信息学院 419 室。

More Related Content

What's hot (20)

PDF
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
 
PPT
Jsp
rdandy
 
PDF
ASP.NET Core 2.1設計新思維與新發展
江華 奚
 
PDF
Html5form
jay li
 
PDF
Top100summit automan x之框架介绍 王超
drewz lin
 
PDF
Android 智慧型手機程式設計
Kyle Lin
 
PDF
2. java introduction
netdbncku
 
PPT
IKVM.NET 深入敵營的 Java
建興 王
 
PPT
Migrating from Spring Applications to Java EE 6 [CHINESE VERSION]
Bert Ertman
 
PDF
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
江華 奚
 
PDF
Java Api Design
yiditushe
 
PDF
实战Ejb(最终完美版)
yiditushe
 
PDF
JavaScript Engine
jay li
 
PPT
SCJP ch02
r82093403
 
PDF
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
 
PPT
千呼萬喚始出來的Java SE 7
javatwo2011
 
PDF
Js doc toolkit
jay li
 
PDF
Maven in eclipse practices
Pei-Tang Huang
 
PPT
從 Java programmer 的觀點看 ruby
建興 王
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
ArBing Xie
 
Jsp
rdandy
 
ASP.NET Core 2.1設計新思維與新發展
江華 奚
 
Html5form
jay li
 
Top100summit automan x之框架介绍 王超
drewz lin
 
Android 智慧型手機程式設計
Kyle Lin
 
2. java introduction
netdbncku
 
IKVM.NET 深入敵營的 Java
建興 王
 
Migrating from Spring Applications to Java EE 6 [CHINESE VERSION]
Bert Ertman
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
江華 奚
 
Java Api Design
yiditushe
 
实战Ejb(最终完美版)
yiditushe
 
JavaScript Engine
jay li
 
SCJP ch02
r82093403
 
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
 
千呼萬喚始出來的Java SE 7
javatwo2011
 
Js doc toolkit
jay li
 
Maven in eclipse practices
Pei-Tang Huang
 
從 Java programmer 的觀點看 ruby
建興 王
 

Similar to Java 1(Java概述) (20)

PDF
Java Jdk6学习笔记[Ppt]
yiditushe
 
PPTX
1, java intro
ted-xu
 
PDF
Effective.enterprise.java中文版
Peter Fan
 
DOC
超级入门:JAVA从零开始到HelloWorld
wensheng wei
 
DOC
2006年招聘试题
yiditushe
 
PDF
Java 推荐读物
yiditushe
 
DOCX
[圣思园][Java SE]001 java se 第一讲(java se入门、jdk的下载与安装、第一个java程序、java程序的编译与执行)
ArBing Xie
 
PDF
Java安全性编程实例
yiditushe
 
PPT
Sun java
softwaredesigner
 
PDF
Java explore
Roger Xia
 
PPT
漫谈php和java
sulong
 
PPTX
2, object oriented programming
ted-xu
 
PDF
[圣思园][Java SE]Java se lesson 3
ArBing Xie
 
PDF
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Justin Lin
 
DOC
Java程序员面试之葵花宝典
yiditushe
 
PPT
基于J2 Ee的Web应用
yiditushe
 
DOC
Java面试宝典
ma tao
 
PDF
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
 
DOC
Java相关基础知识
yiditushe
 
PDF
给学习J2 Ee的朋友一些值得研究的开源项目
yiditushe
 
Java Jdk6学习笔记[Ppt]
yiditushe
 
1, java intro
ted-xu
 
Effective.enterprise.java中文版
Peter Fan
 
超级入门:JAVA从零开始到HelloWorld
wensheng wei
 
2006年招聘试题
yiditushe
 
Java 推荐读物
yiditushe
 
[圣思园][Java SE]001 java se 第一讲(java se入门、jdk的下载与安装、第一个java程序、java程序的编译与执行)
ArBing Xie
 
Java安全性编程实例
yiditushe
 
Java explore
Roger Xia
 
漫谈php和java
sulong
 
2, object oriented programming
ted-xu
 
[圣思园][Java SE]Java se lesson 3
ArBing Xie
 
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Justin Lin
 
Java程序员面试之葵花宝典
yiditushe
 
基于J2 Ee的Web应用
yiditushe
 
Java面试宝典
ma tao
 
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
 
Java相关基础知识
yiditushe
 
给学习J2 Ee的朋友一些值得研究的开源项目
yiditushe
 
Ad

Java 1(Java概述)

  • 2. 教材 : 《 Java 语言程序设计》 , 郎波编著,清华大学出版社, 2005 年 5 月第 1 版 参考书 : 《 Java 编程思想》( Thinking in Java ) API 文档参考网站 http://java.sun.com/j2se/1.3/docs/api/index.html 不满足于作业的同学可以自己找些习题书做一下。例如,《 java 程序设计习题集(含参考答案)》,雍俊海编著,清华大学出版社 2006 教材和参考书
  • 3. 可供本课程使用的软件 J2SDK 1.4.2 UltraEdit for Windows EClipse JBuilder VJ++
  • 4. 1 课程的定位 1.1 课程性质 1.2 课程学习目的和基本要求 1.3 课程内容与重点 1.4 实践环节 1.5 考核
  • 5. 1.1 课程性质 是一门建立 软件设计 基本概念的课程,是本科信息类专业的必修课。 通过 Java 语言建立面向对象程序设计的思想和理念,为将来进一步学习面向对象的 软件工程 和网络编程打下基础。
  • 6. 为什么要学 Java ? “ Java 为 Internet 和 WWW 开辟了一个崭新的时代。” —— Scott McNealy, SUN 公司总裁 “ Java 是最卓越的程序设计语言。” —— Bill Gates
  • 7. 为什么要学 Java ? 北美地区使用 Java 的软件开发人员比例达到 44% 在北美以外地区,使用 Java 的软件开发人员比例为 43% ,并仍在不断上升 美国伊文斯市场调查公司 2006 年报告:在美国 Java 程序开发人员的平均年薪最高,基本年薪为 $71000 ; C++ 、 C 程序开发人员的平均年薪为 $65000 美元。
  • 8. 为什么选择 Java , 而不是 C++ 有利因素 使用 Java ,能更容易、更准确地理解面向对象程序设计的概念( 简单、纯粹 )。 学习 Java ,能为应用软件尤其是网络、 跨平台 应用软件的开发奠定基础。 不利因素 学习 C++ 有利于系统软件的开发 研究生入学考试个别使用到 C++
  • 9. 1.2 课程学习目的和基本要求 掌握 面向对象 程序设计的基本概念,如:类、对象、封装、继承、多态 掌握 Java 的 语言规范 及其面向对象特性 掌握 Java 异常处理、输入输出、图形用户界面、网络编程等具体方法 使用面向对象的思路来分析问题、设计软件。
  • 10. 2 课程内容与重点 面向对象程序设计的概念 重点掌握面向对象的基本概念,有类、对象、属性操作、封装、继承、接口、重载、包容、多态。 Java 语言规范 重点掌握 Java 语法基础、 GUI 、 Applet 、多线程、网络等。
  • 11. 3 课程的实践教学 实践教学 课堂:结合程序 案例 ,采用面向对象的思路进行讲解和分析 通过课后 作业 和 上机实验 ,自主设计程序
  • 12. 4 课时分布( 68 课时) 课堂教学( 50 ) Java 概述与基本语法: 12 面向对象与 java 的 OOP 核心特征: 20 异常处理: 4 输入输出: 4 图形用户界面: 6 Applet : 4 上机实验( 12 ) 课堂练习和期末复习( 6 )
  • 13. 5 课程的主要章节 Java 概述 简单数据类型 运算符和表达式 流程控制 Java 语言中的面向对象特性 异常处理 图形用户界面
  • 14. 5 主要章节(续) Java 输入/输出和文件操作 Applet 多线程 Java Bean 网络通信 JDBC 编程 RMI 编程技术 Holding Objects
  • 15. 作业 源程序+注释 上机实验 实验报告+源程序 成绩 期末考试 70% 平时作业、上机、出勤 30% 6 课程的考核
  • 16. 第一章 Java 语言概述 Java 语言的产生 Java 的特点 Java 的工作方式 Java 的版本 Java 程序的类型 Java 的开发工具 Java 程序举例
  • 17. Java 的产生 1991 年 , SUN  公司的  James Gosling 、  Bill Joe 等人  , 为在电视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为 Oak   的程序语言。 简单,小型化 跨平台运行 聪明绝…
  • 18. Java 的产生 90 年代初,互联网、 WWW 兴起   Oak  Java WebRunner  浏览器  Hot Java 【优点:跨平台,短小精炼,用户交互性好】
  • 19. Java 的发展历程 1995: 公布 Java 的 Alpha 1.0a2 版本 1996: 第一个开发包 JDK v1.0 1997: JDK v1.1 1998: JDK v1.2 (Java2) 2000 以来 : J2EE( 企业版 ) , J2SE( 标准版 ) , J2ME( 微型版 )
  • 20. Java 的特点 简单性: 语法单纯、易学; 可重用类库、自动内存管理(如内存回收机制)- > 简化程序员的编程工作; 去掉指针,修改 C++ 中容易引起错误的成分(如多重继承等),减少出错可能 面向对象: 纯面向对象 语言,所有程序代码均以类的形式组织,由类来定义对象的各种状态和行为
  • 21. Java 的特点 体系结构中立(可移植性): Java 源程序 Java 解释器 Java 字节码 Java 编译器 Win32 Unix Mac Win32 Unix Mac 程序运行 Win32 Unix Mac Java 应用程序能够在任何平台上执行,字节码 —— 平台无关性 ;完全统一的语言版本 ( 如数据类型在所有平台上一样 )—— 实现无关性 。
  • 22. Java 的特点 “ 半编译,半解释”特性: 本质上, Java 是 解释执行 的,但 Java 通过预先将源代码编译为接近于机器指令的 字节码 ,有效地克服了传统解释型语言的性能瓶颈,同时又保持了解释型语言的 可移植性 。 即,“ 较高的运行效率 + 可移植性 ”
  • 23. Java 的特点 分布式: 数据分布性:很方便地访问网络节点上的分布资源; 操作分布性: Applet 字节码从 web 服务器自动分散到客户端(浏览器)执行 强壮性: 静、动态检查(强类型语言),排除出现错误的条件;异常处理;取消指针达到内存保护 安全性: 目的:在网络 / 分布式运算环境中,确保程序运行可靠、可信任,不损害系统 手段:内存分配及布局由 Java 运行系统 (而不是编译器)决定;字节码验证;程序代码的访问权限控制
  • 24. Java 的特点 多线程 :支持多线程(并发执行程序,提高效率); Java 在语言级(而不是操作系统级)加入了并发控制的功能,大大简化了多线程应用程序的开发 动态性 : (可维护性) Java 程序的基本组成单元是类,所有类都在运行时才动态加载,因此更便于程序的动态维护。
  • 25. Java 与 C 、 C++ 的不同 全局变量 (C) 类变量 (java) Goto (C) 指针 (C) 内存管理 : 分别由 JVM(Java)/ 编译器 (C/C++) 来决定内存的分配 类型转换 C 更灵活,而 Java 更严格 头文件 (C) : 主要作用在于调用函数库功能 结构和联合 (C)
  • 26. Java 的运行系统 j08 即时编译技术 : 将要执行的字节码一次编译为机器代码,然后全速运行。可提高运行速度
  • 27. Java 的工作方式 : 编译过程 文件类型 .java 源文件 .class 二进制字节码文件 编译过程 Java 编译器 import java.io.*; class T est {….} Hello .java (源代码) DF BA 09 88 …… .. Hello.class ( 字节码 )
  • 28. Java 的工作方式:解释执行 x08 Java 虚拟机( JVM ) Java 处理器“芯片”,一般由软件实现 Java 虚拟机 类加载器 字节码验证器 解释器 DF BA 09 … Hello.class 字节码 执行 机器码
  • 29. Java 所定义的虚拟 CPU JVM 提供以下定义: 指令集( ByteCodes 是 JVM 的机器指令)。 寄存器组 类文件格式 栈 垃圾回收“堆”(实现内存的动态分配和自动回收) 内存区域 JVM(Java Virtual Machine)
  • 30. JRE : java 运行环境 . JRE 是由 JVM 和 java 核心类库( API )以及相关支撑文件组成。 Java 的运行环境
  • 31. Bytecode 字节码, JVM 指令集, .class JDK — Java Developer’s Kit ( java 开发工具包) 包含 JVM 和其他工具,以及 API 和相关文件 Java 2 — Java 2 Platform J2 SDK — Java 2 Software Development Kit Java 中的几个英文术语
  • 32. The Java™ 2 Platform ● Java™ 2 Platform, Standard Edition ( J2SE ) ● Java™ 2 Platform, Enterprise Edition ( J2EE ) ● Java™ 2 Platform, Micro Edition ( J2ME )
  • 33. The Java™ 2 Platform High-End Server Java Technology Enabled Desktop Workgroup Server Java Technology Enabled Devices
  • 34. Java 程序的类型 Application “ Java 应用程序” , 是可以独立运行的 Java 程序。 由 Java 解释器控制执行。 例: 计算器
  • 35. Java 程序的类型 Applet “ Java 小程序”不能独立运行,而是 被嵌入到 Web 页中 。 如: 嵌入网页的 计 算器 , 网页效果1 , 2 , 3 。 由 Java 兼容的浏览器控制执行。 Browser 网页 字节码 Server
  • 36. Java 程序的类型 Servlets 是 Java 对 CGI 编程的解决方案。 是运行于 Web server 上的、作为来自于 Web browser ( 或其他 HTTP 客户端的请求 ) 和 在 HTTP 服务器上的数据库及其他应用程序之间的 中间层程序 。
  • 37. 程序类型与用户界面 Applet Servlets Application 图形界面 字符界面
  • 38. Java 开发工具 J2 SDK +文本编辑器 记事本、 JCreator... IDE JBuilder (Borland) Visual J++ (MicroSoft) WebSphere 、 EClipse (IBM)
  • 39. J2SDK 中的核心工具 javac.exe java 编译器 ,将 Java 源程序编译成 字节码 java.exe java 解释器 ,解释字节码、执行 Java 应用程序, 即 application appletviewer.exe 小程序浏览器 ,执行 html 文件中的 Java 小程序, 即 Applet
  • 40. Application 程序举例 HelloWorld.java : class HelloWorld { public static void main (String[ ] args) { System.out.println(&quot;HelloWorld!&quot;); // 在屏幕上显示 “ HelloWorld!” } } class MyClass{……} 主类名
  • 41. Application 程序基本结构 由 1 个或多个“类”组成。 如何定义类 : class HelloWorld { … } 可执行的 Application 程序中,必须有一个“类”定义了 main() 方法: public static void main (String[ ] args) —— main() 方法是自动执行的,是 java 应用 运行的起始点 。而这个类就称之为“ 主类 ”。
  • 42. HelloWorld.java 的具体分析 Java 源文件名 必须与 主类名 同名 (包括大小写) class HelloWorld {…}=>HelloWorld.java 注释 System.out.println(&quot;Hello World!&quot;); // 显示字符串
  • 43. HelloWorld.java 的具体分析 方法的调用 System.out. println( &quot;Hello World!&quot; ) ; public final class System { public final static PrintStream out ; ... ... }
  • 44. Application 程序创建过程 1. 编写 源代码 HelloWorld .java 2. 编译 — javac.exe javac HelloWorld.java 编译通过后,将生成 HelloWorld.class 文件 3. 解释 执行 — java.exe java HelloWorld (隐含: .class 文件) D:\> javac Hello World .java D:\> java Hello World Hello World!
  • 45. class Many_Hellos Many_Hellos.java public class Many_Hellos { public static void main (String args[]) { for ( int j=0; j<5; j++) { System.out.println(“Hello! World,”) ; int c=0; } } } 类声明与定义 类中的方法 语句结尾以分号标志 用大括号括起 语句组
  • 46. Java 语言中的大小写 Java 语言 区分大小写 类名第一个字母大写 class BankCard 方法名第一个字母小写 float getBalance() 变量名第一个字母小写 int cardNumber
  • 47. applet 的开发、执行模式 Browser Client 机 Server 机 编译器 .java 源代码 .class 字节码 .class 字节码下载
  • 48. applet 小程序举例 Hello World Applet.java import java.awt.Graphics; import java.applet.Applet ; // 将 java.applet 包中的 // Applet 类引入 本程序,从而可以使用它 public class HelloWorldApplet extends java.applet.Applet { public void paint(Graphics g) { g.drawString(&quot;Hello, Java World!&quot;, 10,20); } }
  • 49. applet 小程序的特殊规范 applet 程序中必须包含 java.applet.Applet 类的子类。该子类就是 applet 小程序的主类。 系统类 Applet 中已经定义了很多的成员变量和成员方法,它们规定了 Applet 小程序如何与执行它的解释器—— WWW 浏览器配合工作; 主方法——被浏览器自动调用的方法。 init() 、 start() 、 stop() 、 destroy () 、 paint()
  • 50. applet 的创建过程 编写 源代码: HelloWorldApplet .java 编译 : javac HelloWorldApplet.java - > 生成 HelloWorldApplet .class 文件 建立 index. html 文件, 嵌入 Hello World Applet.class <applet code=HelloWorldApplet.class width=200 height=50> </applet>
  • 51. applet 小程序 浏览 html 文件 使用 appletviewer 如: appletviewer index.html 使用常规的浏览器 D:\> javac HelloApplet.java D:\> appletviewer index.html
  • 52. Servlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Servlet1 extends HttpServlet { public void service (HttpServletRequest request, HttpServletResponse response) throws IOException , ServletException { PrintWriter out; String title=&quot;This is title of servlet&quot;; String heading1=&quot;This is output1 from Servlet1&quot;;
  • 53. Servlet (续) response.setContentType(&quot;text/html&quot;); out = response.getWriter(); out.print(&quot;<HTML><HEAD><TITLE>“ +title+&quot;</TITLE>&quot;); out.print(&quot;</HEAD><BODY>&quot;); out.print(&quot;<h1>&quot;+heading1 +&quot;</h1>&quot;); out.println(&quot;<P>This is output2 from Servlet1.&quot;); out.print(&quot;</BODY></HTML>&quot;); out.close(); } }
  • 54. Servlets 的工作 读入用户发来的数据(通常在 web 页的 form 中) 找出隐含在 Http 请求中的其他请求信息(如浏览器功能细节、请求端主机名等 ) 产生结果 ( 调用其他程序、访问数据库、直接计算结果) 格式化结果(网页) 设置 Http Response 参数 ( 如告诉浏览器返回文档格式 ) 将文档返回给客户端。
  • 56. JSP ( Java Server Page ) <HTML><HEAD><TITLE>Welcome Page</TITLE></HEAD> <body> <H1>You hit the page: <%! int hitcount=1;%> <%= hitcount++ %> times </H1> </body></html>
  • 58. 作业一 编写一个 Application ,在屏幕上显示如下信息: **************************** Welcome < 你的姓名 _ 学号 > **************************** 把上题改写为 Applet 。
  • 59. 作业、课程资料、答疑时间 作业提交:通过 BB 系统上传作业 课程资料( ppt, 实验指导书):从 BB 系统下载 作业命名格式:学号 _ 姓名 _ 作业 1 答疑 : 每周二下午 15:00 - 16:30, 信息学院 419 室。