1 引言
1.1 项目开发背景
1.1.1 项目背景
“即时通信产品”最早的创始人是三个以色列青年,是他们在 1996 年做出
来的,取名叫 ICQ( I seek you)。随后,腾迅 QQ 抓住 IM 的大好机遇,在中国迅速
崛起并垄断即时通讯市场。自从腾迅的 QQ 在中国即时通讯行业垄断后,即时通
讯的产品在 IT 行业可谓雨后春笋,层出不穷,目前,Windows 平台方面的即时
通讯已经很多,但是其他系统比如 Linux 平台,虽然有类似 QQ 方面的一些产品,
比如 LinuxQQ,Lunaqq,但数量毕竟不多且功能界面等都还不是很理想,鉴于此
种情况,我 们 开发了基于 Java 语言 的 即 时通信系统(JICQ), 该 系统是以
J2SE(Java 2 Standard Edition)语言实现的网络即时通信工具,包括服务器端和
客户端,可以在企业内部网络和互联网上运行,同时具有 Java 应用的跨平台特性,
方便运行在各个系统之上。该系统具有相对比较漂亮的界面以及类似于 QQ 的很
多功能,比如可以和好友进行交流以及离线发送与好友管理、可以加入不同的群,
即时发送、即时回复等功能。
1.1.2 技术背景
技术上采用 sun 公司的 java 语言,该语言有很多优点,比如多线程、网络
流概念、异常捕获处理、安全性以及速度与性能等方面,并且具有可以一次编写、
到处运行的跨平台优点。
多线程:多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个
指令流都称为一个线程,彼此间互相独立,线程又称为轻量级进程,多线程技术
允许你在一个应用程序中启动多个执行轻量程序,使多段程序同时竞争 CPU 资源,
从而提高系统效率。而对于网络通讯工具来说,多线程的特性是必须的,不仅是
为了效率,而且可以实现同时处理多个请求。
网络流:java 中的网络通讯以及文件的读取都是以一种流的概念来理解的,
这样,网络上数据的传输其实就等同于看成一台机器上文件的读取,有利于理解
与编写运用程序,java 类库中提供了丰富的 IO 流类资源以及网络编程类资源,
软件开发人员可以很方便的编写网络应用程序。
例外处理:Java 通过面向对象的方法来处理例外。在一个方法的运行过程
中,如果发生了例外,则这个方法生成代表该例外的一个对象,并把它交给运行
时系统,运行时系统寻找相应的代码来处理这一例外。我们把生成例外对象并把
它提交给运行时系统的过程称为抛弃(throw)一个例外。运行时系统在方法的调
用栈中查找,从生成例外的方法开始进行回朔,直到找到包含相应例外处理的方
法为止,这一个过程称为捕获(catch)一个例外。所以,java 的例外处理使非常