张海旸 北京邮电大学计算机学院 zhhy@bupt.edu.cn Java语言程序设计 张海旸 北京邮电大学计算机学院 zhhy@bupt.edu.cn
1.1 Java语言的发展历程 1.2 Java语言的特点 1.3 Java程序分类
课前思考 大家回想一下,在PC下用windows编写的程序能够不做修改就直接拿到UNIX系统上运行吗? 在Java语言出现之前是否存在其它跨平台的语言? 有那些语言是面向过程的?有那些语言是面向对象的?C++呢?
学习目标 了解java语言产生的历史和工作原理; 初步接触java程序的两种方式: 学习阅读java帮助文档; Application Applet; 学习阅读java帮助文档; 学会安装java开发环境和帮助文档; 学会编写小的java程序,并生成相应的帮助文档。 掌握java程序的结构、编程规范;
难点和重点 Java虚拟机 垃圾内存自动回收机制 Java语言的特点 Java编程规范 Java类库帮助文档的浏览和生成
1.1 Java语言的春秋 Java语言在互联网时代获得巨大成功
1.Java语言的产生
2.Java的发展动态 电子商务解决方案:Java+XML 分布式计算:Jini 消费电子:Personal Java 手机:J2ME 交互式电视:JavaTV 实时Java:Real Time Java Peer 2 Peer:JXTA J2EE和J2ME的广泛应用
1.2 Java语言的原理 Java的三大实现机制: Java 虚拟机(Java Virtual Machine) 垃圾内存收集机制(Garbage Collection) 代码安全性检测(Code Security)
为什么要用Java? 简单的 面向对象的 健壮的 安全的 解释的 结构体系中立的(与平台无关的) 多线程的 动态的语言
Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。 简单性 (c++ - - ) Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。 Java语言的简单性主要体现在: Java的风格类似C++,C++程序员初次接触Java语言,就会感到熟悉.从某种意义上讲,Java语言是C++的一个变种。(便于理解和转换) Java摒弃了C++中容易引发程序错误的一些特性,如指针,结构,枚举以及内存管理等。 Java提供了丰富的类库,可以帮助我们很方便的开发Java程序. 小,基本的解释器及类支持大约为40KB,加上基础标准类库和对线程的支持大约增加175KB
面向对象 面向对象是Java的最重要特性,它支持: 继承,重载,多态等面向对象的特性; Java语言的设计是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。
Java 是健壮的 程序的健壮性即是程序的可靠性 Java非常重视及早检查错误,Java编译器可以查处许多其它编译器运行时才能发现的错误
Java 是安全的 作为Internet程序设计语言,Java用于网络和分布式环境 不允许Applet读写计算机的文件系统,防止对文件破坏、传播病毒等 不允许Applet运行浏览器所在计算机上的任何程序 除了存储Applet的服务器之外,不允许Applet建立用户计算机与任何其他计算机相连
Java 是解释执行的 Java的源程序首先由编译器(javac.exe)编译成字节码 再由解释器(java.exe)解释执行 CPU Java的源程序首先由编译器(javac.exe)编译成字节码 再由解释器(java.exe)解释执行 Java解释器能直接在任何机器上执行Java字节码
Java 是体系结构中立的 Write once, Run Anywhere 即Java的平台无关性 只要安装了Java虚拟机,Java程序就可以在任意处理器上运行,Java解释器得到字节码后,对他进行转换使他能够在不同的平台上运行 Java虚拟机在操作系统级得到统一支持
Java 是体系结构中立的(续) Windows下 C 语言编程过程 Java 语言编程过程 C 源程序(扩展名.c) Java 源程序(扩展名.java) Windows可执行文件 (扩展名.exe) Windows操作系统 C编译程序 执行 Java字节码文件 (扩展名.class) Java编译程序 Windows下 Java字节码 解释程序 Linux下 能直接解释 的CPU Java虚拟机(JVM) Windows 操作系统 Linux
休息一下:两个问题? Java是跨平台的?JVM呢? 跨平台究竟是如何实现的?
可移植性 Java语言的平台无关性,成为了Java语言应用程序方便地移植到网络上不同机器的良好基础,使得Java语言应用程序在已配备了Java语言解释及运行环境的任一台机器上运行是可行的。 可扩展性 由于Java语言是一种基于C++的编程语言,它们之间有很多相似性,便于扩展。当然,Java语言的可扩展性还体现在:Java语言可以把内部的方法映射成软件库所定义的功能,且可以动态地与虚拟机链接。
多线程 Java语言本身提供了一个Thread类和一组内置的方法,它负责生成线程、执行线程或者查看线程的执行状态。 所以程序员要设计多线程程序时,只要继承上述的那个类和调用相应的方法就可以解决了,从而也提高了程序执行的效率。
动态性 Java语言的动态性是其面向对象设计方法的扩展.它允许程序动态地装入运行过程中所需要的类,即可以在本地或网上动态地加载类,或者说在程序的执行过程中可以随意地增加新方法、实例变量等。 Java还简化了使用一个升级的或全新协议的方法.如果你的系统运行Java程序时遇到了不知怎样处理的程序,Java能自动下载你所需要的功能程序.
Java的性能?—Java字节码的两种执行方式 即时编译方式:解释器先将字节码编译成机器码,然后在执行该机器码. 解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作. 通常采用的是第二种方法.
Application应用程序 Applet小程序 1.3 Java程序的分类 Application应用程序 Applet小程序
Java Applet Java Application 通常称为Java应用程序,以main()方法作为程序入口,由java解释器加载执行。 通常成为java小应用程序,通过浏览器或是appletviewer命令加载执行。 Applet是java最早获得成功的应用。