1、Java网络编程 Java回顾,Instructor : Teaching Assistants: ?,Java网络编程 - Fall 2007 绪论 - 2,主要内容,01 Java的发展历程及其特点 02 Java平台及其工作原理,Java网络编程 - Fall 2007 绪论 - 3,主要内容,01 Java的发展历程及其特点 02 Java平台及其工作原理,Lets go to .,Java网络编程 - Fall 2007 绪论 - 4,Green Project,1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系
2、统结构,使其能够在各种消费性电子产品上运行。而Green项目组的成员开始使用C+语言来完成这个项目,但很快他就感到C+的很多不足,需要研发一种新的语言来替代它。在17个月后,整个系统完成了,不过在当时市场不成熟的情况下,他们的项目没有获得成功,但新的语言却得到了Sun总裁McNealy的赏识。,Java网络编程 - Fall 2007 绪论 - 5,Java诞生,直至1994年下半年,由于Internet的迅猛发展,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling决定改变绿色计划的发展方向,他们对Oak进行
3、了小规模的改造,就这样,Java在1995年的3月23日诞生了!,Java网络编程 - Fall 2007 绪论 - 6,JDK,在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持。因此,Sun在1996年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面API,发布技术,Java虚拟机(JVM)五个部分。而开发环境还包括了编译Java程序的编译器(即javac)。在JDK1.0时代,JDK除了AWT(一种用于开发图形用户界面的API)外
4、,其它的库并不完整。,Java网络编程 - Fall 2007 绪论 - 7,JIT,Sun在推出JDK1.0后,紧跟着,Sun在1997年2月18日发布了JDK1.1。JDK1.1相对于JDK1.0最大的改进就是为JVM增加了JIT(即时编译)编译器。JIT和传统的编译器不同,传统的编译器是编译一条,运行完后再将其扔掉,而JIT会将经常用到的指令保存在内容中,在下次调用时就不需要再编译了。这样JDK在效率上有了非常大的提升。,Java网络编程 - Fall 2007 绪论 - 8,Java 2,在1998年12月4日。Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本
5、标志着Java已经进入Java2时代。这个时期也是Java飞速发展的时期。JDK1.2自从被分成了J2EE、J2SE和J2ME三大块,得到了市场的强烈反响。不仅如此,JDK1.2还对它的API分成了三大类:核心API,由Sun公司制定的基本的API,所有的Java平台都应该提供。这就是我们平常所说的Java核心类库;可选API,这是Sun为JDK提供的扩充API,这些API因平台的不同而不同;特殊API ,用于满足特殊要求的API。如用于JCA和JCE的第三方加密类库。,Java网络编程 - Fall 2007 绪论 - 9,Hotspot,在2000年5月8日,Sun对JDK1.2进行了重大
6、升级,推出了JDK1.3。Sun在JDK1.3中同样进行了大量的改进,主要表现在一些类库上(如数学运算、新的Timer API等)、在JNDI接口方面增加了一些DNS的支持、增加了JNI的支持,这使得Java可以访问本地资源了、支持XML以及使用新的Hotspot虚拟机代替了传统的虚拟机。在JDK1.3时代,相应的应用程序服务器也得到了广泛的应用,如第一个稳定版本Tomcat3.x在这一时期得到了广泛的应用,WebLogic等商业应用服务器也渐渐被接受。,Java网络编程 - Fall 2007 绪论 - 10,Java 2,Sun在2002年的2月13日发布了JDK历史上最为成熟的版本:JD
7、K1.4。进入21世纪以后,在.NET平台和Java平台之间曾经发生了一次声势浩大的比较孰优孰劣的论战,Java的主要问题就是性能。因此,这次Sun将主要精力放到了Java的性能上。在JDK1.4中,Sun对Hotspot虚拟机的锁机制进行了改进,使JDK1.4的性能有了质的飞跃。同时由于Compaq、Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。到JDK1.4为止,我们已经可以使用Java实现大多数的应用了。,Java网络编程 - Fall 2007 绪论 - 11,Java SE 5,虽然Java是纯面向对象语言,但它对一些高级的语
8、言特性(如泛型、增强的for语句)并不支持。而且和Java相关的技术,如EJB2.x,也由于它们的复杂而很少有人问津。因此,在2004年10月,Sun发布了新的版本:JDK1.5,同时,Sun将JDK1.5改名为Java SE5.0。和JDK1.4不同,JDK1.4的主题是性能,而Java SE5.0的主题是易用。Sun之所以将版本号1.5改为5.0,就是预示着Java SE5.0较以前的J2SE版本有着很大的改进。,Java网络编程 - Fall 2007 绪论 - 12,Java SE 6,2007年,Sun推出了最新版本的JDKJava SE 6.0 脚本、桌面应用、vista、性能、,
9、Java网络编程 - Fall 2007 绪论 - 13,Java语言的特点,简单的(Simple) 面向对象的(Object-Oriented) 分布式的(Distributed) 解释的(Interpreted) 健壮的(Robust),Java网络编程 - Fall 2007 绪论 - 14,Java语言的特点,安全的(Secure) 多线程的(Multithreaded) 可移植的(Portable) 高性能的(High-Performance) 动态的(Dynamic),Java网络编程 - Fall 2007 绪论 - 15,简单性,Java语言是一种面向对象的程序设计语言,通过提
10、供最基本的方法来完成指定的操作任务;同时Java 略去了诸如指针、结构体、运算符重载、多重继承等概念再有Java语言是由C+语言发展而来,语言风格十分相似,因此只须掌握一些最基本的概念,就可以编写出符合要求的应用程序。易于学习。,Java网络编程 - Fall 2007 绪论 - 16,面向对象,Java支持面向对象的设计方式。简单地说,Java让您可以用面向对象的思考方式来设计并编写程序。面向对象的好处之一,就是可以让您设计出可重用的组件,或者是直接使用别人所编写好的Java组件,并使开发出来的软件更具弹性且容易维护。,Java网络编程 - Fall 2007 绪论 - 17,分布性,Jav
11、a的许多功能与应用都与网络相关,从最初的Applet、简化的Socket、交互式的JSP/Servlet网络程序到今日热门的Web Service等,Java所提供的丰富的网络API使得采用Java可以很容易地实现分布式应用的开发。,Java网络编程 - Fall 2007 绪论 - 18,健壮性,首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠; 其次,Java不支持指针,这杜绝了内存的非法访问; 第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题; 第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界, 最
12、后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。,Java网络编程 - Fall 2007 绪论 - 19,安全性,Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后,Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能 访问某些文件系统。上述几种机制结合起来,使得Java成为安全的编程语言,Java网络编程 - Fall 200
13、7 绪论 - 20,可移植性,与平台的无关性使得Java语言程序可以很方便地移植到网络上的不同机器。同时Java类库也实现了与不同平台的接口,使这些类库也可以移植。,Java网络编程 - Fall 2007 绪论 - 21,解释性,为了解决在不同平台间运行程序的问题,Java的程序在进行编译时,并不直接编译为与平台相对应的原始机器语言,而是编译为与系统无关的“字节码”(Bytecodes)。为了要运行Java程序,运行的平台上必须安装有JVM(Java Virtual Machine),JVM等于是为Java程序所虚拟的环境。当运行Java程序时,Java实时编译器(Just In Time
14、Compiler,JIT)会将字节码编译为目标平台所接受的原始机器语言,通过JVM使得Java程序在不同平台上都能运行的目的得以实现,Java网络编程 - Fall 2007 绪论 - 22,多线程,线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。C和C+采用单线程体系结构,而Java却提供了多线程支持。利用Java的多线程编程接口,开发人员可以方便得写出支持多线程的应用程序,提高 程序执行效率。,Java网络编程 - Fall 2007 绪论 - 23,动态性,Java的动态特性是其面向对象设计方法的扩展。它允许程序动态地装入运行过程中所需要的类,这是C+
15、语言进行面向对象程序设计所无法实现的。在C+程序设计过程中,每当在类中增加一个实例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。,Java网络编程 - Fall 2007 绪论 - 24,主要内容,01 Java的发展历程及其特点 02 Java平台及其工作原理,Lets go to .,Java网络编程 - Fall 2007 绪论 - 25,Java体系结构的组成,Java编程语言 Java类文件 Java API JVM,Java网络编程 - Fall 2007 绪论 - 26,JVM plus basic APIs (what you need to di
16、stribute to people who will run your Java programs),JVM plus all APIs, compilers ,tools, and documentation (what you need in order to write java technology programs).,Java网络编程 - Fall 2007 绪论 - 27,Java应用平台,Java SE (J2SE) Java EE (J2EE) Java ME (J2ME),Java网络编程 - Fall 2007 绪论 - 28,Java SE,Java网络编程 - Fa
17、ll 2007 绪论 - 29,Java程序开发过程,机器码,字节码,平台无关,Java网络编程 - Fall 2007 绪论 - 30,Java编译环境与运行时环境,Java网络编程 - Fall 2007 绪论 - 31,Java虚拟机,类装配器,字节码验证器,解释器,本地计算机系统,代码生成器,Java网络编程 - Fall 2007 绪论 - 32,Java虚拟机,Java网络编程 - Fall 2007 绪论 - 33,共享存储区方法区、堆,对象实例,类的类型信息、方法信息、代码、静态变量等,Java网络编程 - Fall 2007 绪论 - 34,独立存储区计数器、栈,本地方法堆栈,Java方法堆栈,Java代码计数器,Java网络编程 - Fall 2007 绪论 - 35,对象存储示例,Java网络编程 - Fall 2007 绪论 - 36,下一章: Java I/O,THE END,