Java的发展历史
1995年5月23日,Java语言诞生
1996年1月,第一个JDK-JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
1997年9月,JavaDeveloperConnection社区成员超过十万
1998年2月,JDK1.1被下载超过2,000,000次
1998年12月8日,JAVA2企业平台J2EE发布
1999年6月,SUN公司发布Java的三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME)
2000年5月8日,JDK1.3发布
Java 分成三种版本,分别是 Java 标准版(JSE)、Java 微缩版(JME)和 Java 企业版(JEE),每一种版本都有自己的功能和应用方向。
Java 标准版: JSE(Java Standard Edition)
JSE(Java Standard Edition)是 Sun 公司针对桌面开发以及低端商务计算解决方案而开
发的版本,例如:我们平常熟悉的 Application 桌面应用程序。这个版本是个基础,它也是
我们平常开发和使用最多的技术,Java 的主要的技术将在这个版本中体现。本书主要讲的
就是 JSE。
Java 微缩版:JME(Java Micro Edition)
JME(Java ,Micro Edition) 是对标准版 JSE 进行功能缩减后的版本,于 1999 年 6 月
由 Sun Microsystems 第一次推向 Java 团体。它是一项能更好满足 Java 开发人员不同需求
的广泛倡议的一部分。Sun Microsystems 将 JME 定义为“一种以广泛的消费性产品为目标
的高度优化的 Java 运行时环境,包括寻呼机、移动电话、可视电话、数字机顶盒和汽车导
航系统。”
JME 是致力于消费产品和嵌入式设备的开发人员的最佳选择。尽管早期人们对它看好而
且 Java 开发人员团体中的热衷人士也不少,然而,JME 最近才开始从其影响更大的同属产
品 JEE 和 JSE 的阴影中走出其不成熟期。
JME 在开发面向内存有限的移动终端(例如寻呼机、移动电话)的应用时,显得尤其实用。
因为它是建立在操作系统之上的,使得应 用的开发无须考虑太多特殊的硬件配置类型或操作
系统。因此,开发商也无须为不同的终端建立特殊的应用,制造商也只需要简单地使它们的
操作平台可以支持 JME 便可。
Java 企业版:JEE(Java Enterprise Edition)
JEE(Java Enterprise Edition)是一种利用 Java 平台来简化企业解决方案的开发、部
署和管理相关的复杂问题的体系结构。JEE 技术的基础就是核心 Java 平台或 Java 平台的标
准版,JEE 不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存
取数据库的 JDBC API、CORBA 技术以及能够在 Internet 应用中保护数据的安全模式等等,
同时还提供了对 EJB(Enterprise Java Beans)、Java Servlets API、JSP(Java Server Pages)
以及 XML 技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时
间的体系结构。
JEE 体系结构提供中间层集成框架来满足无需太多费用而又需要高可用性、高可靠性以
及可扩展性的应用的需求。通过提供统一的开发平台,JEE 降低了开发多层应用的费用和复
杂性,同时提供对现有应用程序集成强有力支持,完全支持 Enterprise Java Beans,有良
好的向导支持打包和部署应用,添加了目录支持,增强了安全机制,提高了性能。
JEE 是对标准版进行功能扩展,提供一系列功能,用来解决进行企业应用开发中所面临
的复杂的问题。具体的我们会放到后面 JEE 的课程去讲。
三个版本之间的关系
JEE 几乎完全包含 JSE 的功能,然后在 JSE 的基础上添加了很多新的功能。
JME 主要是 JSE 的功能子集,然后再加上一部分额外添加的功能。
Java语言特点
编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
Java的主要特性
Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
Java语言是面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。