Advanced Network Programming Ren Jiansi renjsv@cug.edu.cn
Java的发展历史 1 Java的起源 Java是Sun公司1995年正式推出的新一代面向对象程序设计语言, 特别适合于Internet应用程序开发, 具有平台无关性。 Java来自于1991年Sun公司的一个叫Green的项目, 其原先的目的是为家用消费电子产品开发一个分布式代码系统, 可以把E-mail发给电冰箱、 电视机等家用电器, 对它们进行控制。开始, 准备采用C++, 但C++太复杂, 安全性差, 最后基于C++开发了一种新的语言Oak(Java的前身), Oak是一种用于网络的精巧而安全的语言。 1994年下半年, Internet的快速发展, 促进了Java语言研制的进展, Green项目组成员用Java编制了HotJava 浏览器, 触发了Java进军Internet,使得它逐渐成为Internet上受欢迎的开发与编程语言,现已发展成为一种重要的Internet平台。 Java语言的创始人之一Bill Joy说过“Java=C++--”,意思是Java在C++语言的精简,去掉了其中较难、较易出错的部分。 Java取名趣闻:Java开发组的成员一起讨论给新语言取名字,当时正好在咖啡馆喝Java(爪哇)岛出厂的咖啡,有一个人提议就叫Java,希望他们的语言和那里的咖啡一样有名气,受人们欢迎,得到了大家一致认可。
2 关于Java 的大事 1991年 Sun公司的一个叫Green的项目开始启动 1992年 “Oak”编程语言诞生,绿色小组开发出Star Seven (*7), "Duke"作为Java语言的吉祥物登上国际舞台 1993年 绿色工程成为焦点,Mosaic v1.0版本发布 (历史上第一个多媒体的网络浏览器) 1994年 第一个支持移动对象和动态可执行内容的浏览器WebRunner发布 1995年 以James Gosling为首的编程小组在wicked. neato.org网站上发布了Java技术,Java语言的名字从"Oak"变为Java,Java 技术通过Sun world正式发布 1996年 第一次举办JavaOne 开发者大会 , JDK 1.0 软件发布 计算机深蓝色首次击败国际象棋大师Garry Kasparov 1997年 三周内超过22万的开发者下载了JDK 1.1 软件,超过8,000名开发者参加了JavaOne大会,Java Card 2.0平台发布 1998年 JDK 1.1发布,其被下载次数超过2 百万,VISA公司应用Java Card技术推出了世界上首张智能卡,Java社区(JCP)成立
1999年 Java 2平台源代码公开,JavaOne大会参会人数增长到20,000人,J2EE beta软件发布 2000年 全球有超过400个Java开发团队, 在JavaOne大会上,Steve Jobs与Scottn McNealy一起宣布苹果公司会全力支持Java技术 2001年 首个国际性JavaOne会议在日本横滨召开,超过百万的开发者下载Java Platform Enterprise Edition (Java EE) SDK Google公司的PageRank查询算法被授予专利 2002年 J2EE SDK下载次数达2百万,78%的决策者认为,J2EE技术是最有影响力的网络构建开发平台 2003年 大约有5.5亿个桌面系统应用了Java技术,有75%的专业开发者使用Java 编程语言,并将其作为主要的开发语言 2004年 Java 2 Platform, Standard Edition 5 发布,利用Java技术开发的火星探测器成功登陆火星,Sun Java Studio Creator发布 2005年 有大约450万名开发者正在使用Java 技术,全球有25亿台设备使用了Java技术,用于生态系统中的Java 技术约合1000亿美金 展望 当前版本:Java EE 5.0
Java风云人物 “Java之父” James Gosling 40年前,一个寒冷的冬天出生在加拿大一个村庄里, 12岁做了一台电子游戏机 ,14岁学习计算机编程 。80年代初,James Gosling获得博士学位后到IBM工作,设计IBM第一代工作站,后跳槽到Sun,1991年开始从事“绿色计划” 项目,随后创造了Java。 “Java 之母 ” Java 2 元勋Joshua Bloch 将Java“哺育”成长 , 主要贡献:JDK 1.1 中的java.math、 JDK 1.4 中的assertions、Collections Framework、Tiger, 2004年7月离开Sun到Google公司。 Bill Joy,软件行业的爱迪生 1954年出生,是兼通计算机软硬件技术的天才,Sun的创始人之一,世界上最优秀的程序员(Best Coder) Acott McNealy Sun十年来的掌舵者,Sun的CEO、总裁兼懂事长 Doug Lea 世界上对Java影响力最大的个人,因为在Java的两次大变革中,他都起了举足轻重的作用,服务于纽约州立大学Oswego分校计算机科学系 Bruce Eckel 《Thinking in Java》的作者,具有超人的表达能力和捕捉机会的能力
Java著名产品 Sun JDK Java的基石 ,Sun公司产品,1996年1月推出JDK1.1,目前是2004年9月推出的J2SE 5.0 Eclipse 以构架赢天下,2001年IBM投资成立了Eclipse联盟,是目前最受欢迎的Java开发工具 Junit/Ant 让Java自动化的绝代双骄, Junit是单元测试的工具,Ant是编译部署工具,是Java程序员的必备工具 Websphere 1999年IBM推出,开发Web 应用程序的平台 WebLogic 1998年BEA推出的以Java为基础的应用平台服务器 JBuilder Java开发工具的王者,是由Borland公司推出的Java 集成开发环境,半年推出一个新版本,目前为2005版 Jdeveloper IDE Oracle公司提供的Java开发工具
3 Java语言的特点 简单易学: 1)风格类似于C++, 基本语法与C语言类似; 2)摒弃了C++中容易引发程序错误的地方, 如指针和内存管理; 3)提供了丰富的类库。 面向对象:支持静态和动态风格的代码继承及重用,是完全 面向对象的, 它不支持类似C语言那样的面向过程 的程序设计技术。 解释执行:Java解释器(运行系统)能直接运行目标代码指令。 平台无关:Java源程序被编译成一种高层次的与机器无关的 byte-code格式语言, 被设计在Java虚拟机上运行。
性能优异:Java可以在运行时直接将目标代码翻译成机器指令, Sun用直接解释器一秒钟内可调用300,000个过程, 翻译目标代码的速度与C/C++的性能没什么区别。 分布式:Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此, Java应用程序可凭借URL打开并访问网络上的对象, 其访问方式与访问本地文件系统几乎完全相同。 可移植:Java应用程序可以在配备了Java解释器和运行环境的任何计算机 系统上运行, 通过定义独立于平台的基本数据类型及其运算, Java数据得以在任何硬件平台上保持一致。 多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小任务。 多线程带来的好处是可以有更好的 交互性能和实时控制性能。
健壮:Java致力于检查程序在编译和运行时的错误。 类型检查帮助检查出许多开发早期出现的错误。 Java自已操纵内存减少了内存出错的可能性。 Java还实现了真数组, 避免了覆盖数据的可能。 安全:Java的安全性可从两个方面得到保证。一方面, 在Java语言里, 象指针和释放内存等C++功能被删除, 避免了非法内存操作。 另一方面, 当Java用来创建浏览器时, 语言功能和一些浏览器本身提供的功能结合起来, 使它更安全。 动态:Java的动态特性是其面向对象设计方法的拓展, 它允许程序动态地装入运行过程中所需要的类。
4 与Java语言相关的应用 Java Application ( Java应用程序): Java Applet (Java小程序): 用Java语言编写的、嵌入在HTML编写的Web页面中的非独立程序,由Web浏览器内部包含的Java解释器来解释运行,是动态、安全、跨平台的网络应用程序。
JSP (JavaServer Pages, Java 服务器页): 是一种实现普通静态HTML和动态HTML混合编码的技术,是在Sun公司倡导及多个公司参与下共同建立的一种动态网页标准,实现了Web动态内容与其显示的分离,用于构建动态Web网站,JSP文件运行于服务器端,JSP的脚本语言是Java,其平台无关性使得JSP一次编写,各处运行。 最新应用——Java为用户推出了游戏、天气预报、地图等一系列紧俏时髦的应用,它能够帮助汽车司机避免交通阻塞,还能让公司对即将出行的销售人员进行跟踪。目前在移动通讯中被广泛使用,如手机抓捕图象、手机游戏等。
5 与Java相关的几个常见名词 Java EE—— Java Platform, Enterprise Edition (Java 企业版) Java EE首先是一种构架,它包罗了Java的多种先进的技术,最合适使用MVC的方法来构建系统,其表现层使用JSP,控制层可以使用Servlet或Session Bean,用于实现业务逻辑,Entity Bean则对业务实体进行抽象。此外它还使用JAAS实现安全机制,JNDI用于查询资源,JDBC和JTA访问数据库和管理事务;JMS实现企业的消息处理;JavaMail实现与企业外界的联系。今年10月份将发布的最新版本为Java EE 5.0。
Java SE——Java Platform, Standard Edition (Java 标准版),是Java最核心的技术。 Java ME——Java Platform, Micro Edition (Java 袖珍版), 是一个重要的用于无线方面的 Java 平台,它从可移植的、以网络为中心的 Java 虚拟机转变而来。 JVM——Java Virtual Machine (Java虚拟机),它通过采用一种被称之为Java虚拟机的虚拟微处理器的规范,用软件在计算机芯片内模拟出一个假芯片,然后开始运行程序,为Java程序提供统一的脱离软、硬件平台的运行环境。
JDK——Java Development Kit (Java开发工具包),由 Sun公司免费发行的,JDK有多个版本,大体经历过1 JDK——Java Development Kit (Java开发工具包),由 Sun公司免费发行的,JDK有多个版本,大体经历过1.02、 1.1.x、1.2、1.3、1.4、1.5几个系列。 JSDK——Java Server Development Kit (Java服务器 开发工具包),是JDK 的一个典型的扩展工具包。 JDBC——Java DataBase Connectivity(Java数据库连 接),是一种用于执行SQL语句的Java API(应用程序接 口),可以为多种关系数据库提供统一访问,是由一组 用Java语言编写的类和接口组成。
Applet——Java Applet 是用 Java 语言编写的、包含在网页里的“小 应用程序”,通常被放在 Web 服务器上。当有人上网浏览时,Applet 随网页一起 下载到客户端的浏览器中,并借助浏览器中的 Java 虚拟机(JVM)运行工作。 Servlet——Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabled Web Server中。Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。 Servlet与Jsp之间的交互为开发Web服务提供了优秀的解决方案。
Swing与 AWT(抽象窗口工具包)——是Java设计 GUI (图形用户界面)的基础 。 Swing是在AWT基础上发展起来的,为Java GUI编程提供了强大丰富的API和灵活的结构设计,提供了替代AWT重量组件的轻量组件,Swing 中大部分是轻量级组件。Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。二者最好不要混用。
EJB(Enterprise JavaBeans)—Java EE核心组件,EJB并不是一个产品。它是Java服务器端服务框架的规范,软件厂商根据它来实现EJB服务器。 Enterprise Bean 与 JavaBean 不同。JavaBean 是使用 java.beans 包开发的,它是 Java SE的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件,是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java EE 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件,是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象。
JavaScript、VBScript 、 JScript辨异 JavaScript是由Netscape公司发明的一种Web脚本编制语言(基本语法和C语言非常类似) ,最初叫作 LiveScript,可嵌入在HTML文件中,用来处理以客户端环境为基础的动态信息,但不能访问服务器端资源, 只要浏览器支持JavaScript,用JavaScript编写的脚本就可以正确执行。尽管JavaScript采用与Java类似的语法,但二者并无直接的联系。 VBScript是Microsoft公司开发的一种通用的Web脚本语言,其基本语法与Basic语言类似,但它只能被IE浏览器所支持。 VBScript是ASP(Active Server Pages)默认的脚本语言,使用ASP可以创建和运行动态、交互的Web服务器应用程序。ASP需要Microsoft 的IIS(Internet信息服务器)的支持才可以运行。 JScript 是 Microsoft 公司推出的一种解释型的、基于对象的脚本语言, JScript 脚本只能在某个解释器上运行,该解释器可以是 Web 服务器,也可以是 Web 浏览器。 可以用JScript 来编写ASP页面。 Jscript 是 Microsoft 公司对 ECMA 262 (European Computer Manufacturers Association specification) 语言规范的一种实现。ECMA标准是一个基于JavaScript的脚本语言,它是JavaScript的一个分支。Netscape把ECMA作为一个标准的通用的基于JavaScript的语言来看待。