• 1. 1991, Sun 成立Green小组,开发了Oak语言; 1992.8,Oak与GreenOs、用户接口模块、 硬件模块集成为Star Seven,成功表现高效的小 程序代码技术,Green升级为First Person子公司 1994, First Person 解体,Sun决定将Oak与3W相结合; 1995年秋 , Netscape Navigator 2.0 32位版中支持Java 1995.1,James Gosling 和Naughton 完成Oak新版与第一 个基于Oak的应用程序Web Runner。 Oak  Java WebRunner  HotJava,支持Java的第二代浏览器JAVA的发展历史1
  • 2. James Gosling2
  • 3. Java 2 Platform Java 2 Platform Standard Edition — J2SE  Java 2 Platform Enterprise Edition — J2EE  Java 2 Platform Micro Edition — J2ME 3
  • 4. Java 2 Platform4
  • 5. J 2 S E 以Web为中心的客户端或服务器端的软件开发 以前称为 JDK 1.2  J2SE 的实现: Java 2 Software Development Kit (SDK), Standard Edition + Java 2 Runtime Environment, Standard Edition5
  • 6. J2ME针对消费类的电子设备如蜂窝电话、数字置顶盒、汽车导航系统等。 语言精简、运行环境高度优化。 6
  • 7. J2EE 开发企业级和服务器端的应用。  J2SE+Enterprice JavaBeans(EJB),Java Servlets API + Java Server Pages(JSP). 7
  • 8. J2EE Application Model8
  • 9. Java Development Platform9
  • 10. Java是一种编程语言。 Java又是一种平台。Java 语言10
  • 11. Java编程语言11
  • 12. Java 平台12
  • 13.  JAVA的特征  JAVA的语法机制  JAVA运行系统  JAVA应用  JAVA程序示例第一章 概 述13
  • 14. Java的特征Sun在JAVA“白皮书”中指出: JAVA是一种“简单、面向对象、分布式、解释型、健壮、安全、体系结构中立、可移植、高性能和动态”的编程语言14
  • 15. 对C++进行成功改造 去掉指针,取消多重继承和运算符重载 设立自动内存回收Java特征-简单性 语法和语义都比较单纯,容易学习和使用提供大量功能丰富的可重用类库简化了 编程工作量15
  • 16. Java特征-面向对象 Java 是最纯洁的面向对象语言,对面向 对象方法学的支持也最全面:JAVA对象有模块化性质和信息隐藏能力, 满足面向对象的封装要求; 支持继承; 通过抽象类与接口支持多态16
  • 17. Java特征-分布式 数据分布支持: 通过Java的URL类可以访问网上的各类信息 资源,访问方式完全类似于本地文件系统; 操作分布支持。 通过在3W页面中的小应用程序(Applet)将计 算从服务器分布至客户机,避免网络拥挤,提高 系统效率。 17
  • 18. Java特征-半编译,半解释18
  • 19. Java特征-半编译,半解释 编译器编译 JAVA源程序字节码 解释器解释执行 优点:  兼具编译执行的效率优势和解释执行的灵活性;  提高了应用程序的可移植性:源程序、中间代码19
  • 20. Java特征-可移植性. . .JAVA源程序JAVA编译器(Pentium)...(SPARC)JAVA字节码JAVA解释器. . .. . .(Pentium)...(SPARC)20
  • 21. “一次编程,到处运行”--- WORA 可移植性源于两方面:  Java的半编译、半解释的特征  Java采用标准的独立于硬件平台的数据类型Java特征-可移植性21
  • 22. Java特征-安全性在语言和运行环境中引入了多级安全措施:  Java的内存分配和引用模型对于程序员透明, 完全由底层的运行系统控制;  内存布局与C、 C++不同,不是由编译器决定, 而是运行系统根据所在的硬件平台的特性决定; 取消了C、C++的指针,JAVA编译器通过符号 指针来引用内存,由JAVA运行系统在运行时将 符号指针具体解释为实际的内存地址。 22
  • 23. 字节码验证。 运行系统引入字节码验证器,其中包含简单的 规则验证程序,以确保遵循下列规则:Java特征-安全性 不存在伪造的指针; 未违反访问权限; 严格遵循对象访问规范来访问对象; 合适的参数调用方法; 没有栈溢出23
  • 24. Java特征- 多线程 JAVA在语言级嵌入对并发的支持功能, 具体机制就是多线程。 线程是比进程更小、更 经济的并发执行单位,不拥有单独的内存空间。 JAVA中线程的同步采用C.A.R.Hoare的临界区 保护规则。 JAVA线程执行中被映射到实际的操作系统线程。24
  • 25. Java特征-动态特性 JAVA程序的基本组成单元--类是运行时动态 装载 的。使JAVA可以动态地维护应用系统及 其支持类之间的一致性。25
  • 26.  Java编译生成的字节码与机器代码十分接近。 提供即时编译等措施。Java特征-高性能26
  • 27. C++ as a model + better robustness support + portability + security The result is: Much of C++’s power and syntax But, simpler and platform neutral JAVA的语法机制概述27
  • 28. JAVA的语法机制概述与C++一致的语法机制: 数据类型、表达式、程序流控制、结构化 异常处理等; 与C++不同的语法机制: 类、接口(Interface)、程序包(Package)、 自动内存回收以及多线程。 28
  • 29. 类: 最重要、最基本的语法设施,类的定义与继承与 C++类似,主要区别: JAVA不允许多重继承,多重继承必须通过接口实现。 JAVA引进了abstract 和final修饰词。 带abstract的类称为抽象类,只能作为父类使用, 不能直接产生实例对象。 带final的类不能用作父类被继承, 带final的属性 在定义式必须赋初值并称为常量,带final的方法将 禁止子类(Overriding)。JAVA与C++不同的语法机制29
  • 30. JAVA与C++不同的语法机制接口 是一种抽象类,其中只能出现静态常量或抽象方法定义。 主要目的是实现多重继承功能,避免C++在多重继承 语义上的复杂性。 一个JAVA类可以实现(继承)多个接口。 30
  • 31. 程序包 是一些相关类或接口的集合。  JAVA提供包括可重用类标准程序包,用户可自 定义程序包。 通过 import 语句将程序包引入应用程序。 JAVA与C++不同的语法机制31
  • 32. 自动内存回收  JAVA取消了指针类型,所有动态内存请求均 通过new运算符,并且得到的不是指针而是引用。 系统进行内存回收。多线程 依赖操作系统提供的线程管理的API:与平台绑定 语言级支持多线程:忽略操作系统多线程机制的差异, 软件具有更好的可靠性和可移植性。JAVA与C++不同的语法机制32
  • 33. 引入运行系统的必要性: 将字节码转化为本机代码; 类的装载与符号的消解; 控制执行代码。 运行环境的种类: JAVA Application -- JAVA解释器 JAVA Applet-- JAVA兼容的Web浏览器。JAVA运行系统33
  • 34. 类装配器 字节码验证器 解释器 代码生成器 运行支持库JAVA运行系统的构成34
  • 35. Hello.javaJavac Hello.javaHello.class网络编译类装配器字节码验证器解释器代码生成器运行支持库本地系统运行JAVA程序运行过程35
  • 36. 执行字节码的过程代码的装入 代码的验证 代码的执行:解释方式、即时编译JIT方式36
  • 37.  JVM的意义: 保证不同平台上的JAVA运行系统功能统一  JVM的定义: An imaginary machine that is implemented by emulating it in software on a real machine. Code for the Java Virtual Machine is stored in .class files. JAVA虚拟机37
  • 38. JVM规范定义了一组抽象的逻辑组件,包括: 指令集; 寄存器组:程序计数器、栈顶指针等; 栈结构:提供各种参数等; 垃圾收集器; 存储区:存放字节码的方法代码、符号表JVM组成部分38
  • 39.  JAVA运行系统是各供应商对JVM的具体实现。 对运行系统的设计与实现的要求: 必须支持SUN的.class文件结构 必须支持字节码定义 必须支持JVM规范 ——使Java运行系统功能是统一的, 并且只能执行统一格式的字节码. JVM与 JAVA运行系统39
  • 40. 电子商务 远程教育 企业综合信息服务 分布式计算(移动计算) 嵌入式应用JAVA应用40
  • 41. Internet设备管理者设备Jini(Java智能网络架构,  java Intelligent Network Infrastructure)技术Jini是以Java技术为核心的分布式系统,它支持"即插即用",能够随时改变硬件或者软件的配置,从而提供了一个支持快速配置的分布式计算环境。Jini的迷人之处在于它能够使各种数字设备无需配置、安装或者人工干预,就能够在一个临时的称为服务联盟(federations of services)的设备集合中共同工作。联盟中的任何设备无论大小都可以自行管理,共同组成一个服务网络,联盟中的每一个成员都可以为其它成员提供资源或服务,同时又可以从其它成员那里获取自己所需的资源和服务,Jini提供一套完善的机制使得硬件设备或者软件组件能够随时加入或者退出联盟。 41
  • 42. ClientLookup ServiceServiceTCP/IP and RMI服务(Service):是一个独立的功能实体,它可以被人、程序或者其它服务使用。服务可以是一次计算过程或者存储操作,也可以是和另一个用户交流的通道,甚至可以是一个硬件设备或者另一个用户。Jini系统中成员间的联盟是为了对服务进行共享访问,一个Jini联盟不应被简单地看成是客户机和服务器的集合,而应当看作是组合到一起完成某个特定任务的服务集合。Jini提供了相应的机制,能够在分布式系统中实现对服务的构造、查找、通信和调用,同时还提供了一套服务协议来负责服务间的通信。 客户(Client):是需要利用服务的硬件设备或软件组件,Jini的目标是支持尽可能多的异构客户,包括各种硬件设备和软件平台。 查找服务(Lookup Service):是Jini中的一种服务协议,它允许软硬件发现网络并变成联盟中的成员,同时将所提供的服务广播给联盟中的其它成员。 Jini(读JEE-nee, 自发网络)技术42
  • 43. Jini如何工作的?Jini由4层结构: 目录服务   JavaSpace   远程方法调用(RMI)   Boot,Join,和Discover协议43
  • 44. 两种应用程序 Java application: 编译器编译—运行 Java applet: 编译器编译—编写HTML文件把Applet嵌入其中—浏览器中运行 类库API Java API是SUN提供的用Java语言开发的类集合。 Java API包括几十个包,常用的有:java.lang, java.io, java.util, java.net, java.awt, java.applet等。关键性术语44
  • 45.  Java.lang – JAVA语言的核心类组成,包括了基本数据类型 和出错处理方法等。自动引入。  Java.io – JAVA语言的标准I/O库  Java.util– 工具类,如Date等。  Java.net– 实现网络操作。  Java.awt--(Abstract Window Toolkit)创建用户界面。  Java.applet– 支持Applet开发。Java核心类包举例45
  • 46. HelloWorldApp.java: Public class HelloWorldApp{ public static void main( String args[ ]){ System.out.println(“Hello World!”); } }Java应用程序举例类名与文件名相同开始处46
  • 47.  main声明-- Java程序入口点 格式public static void main(String args[]){ … } 源文件的名字与main()方法所在的类名相同, 扩展名必须是 .java。 编译 javac HelloWordApp.java 生成HelloWorldApp.class 运行 java HelloWorldApp Java 程序编写、编译过程47
  • 48. JDK1.5的安装运行JDK1.5中的安装程序  JDK1.4之前的版本需要改变环境变量: PATH=%PATH%; c:\java\bin; CLASSPATH = .;c:\java\lib\classes.zip48
  • 49.  JDK 1. 2 (~V1.3.x, V1.4.2 ,V1.5 ,V1.6)  Eclipse:支持多种语言的集成开发环境  Netbean: Sun 功能强大的集成开发环境  Jbuilder:图形化,客户端与服务器端  WebLogic:适于开发服务器端 Symantec的Visual Cafe、 Oracle的JDeveloper和Oracle Application Server Java常用开发环境49