Java RMI 实现的共享白板系统

需积分: 8 0 下载量 81 浏览量 更新于2024-11-02 收藏 15KB ZIP 举报
资源摘要信息: "RMI-Whiteboard是卡迪夫大学‘新兴技术’课程的一个小型项目作业,旨在实践Java RMI技术。该项目实现了一个基于网络的白板应用,其特点在于缺少图形用户界面(UI),重点在于远程方法调用(RMI)机制的学习与应用。客户端与服务器之间的交互不在Swing UI开发环境中进行,而是通过Java RMI技术实现。" 知识点详细说明: 1. Java RMI (Remote Method Invocation): Java RMI是Java提供的一种机制,允许一个Java虚拟机上的对象可以调用另一个Java虚拟机上对象的方法。RMI使Java程序能够执行分布式计算,即在不同的Java虚拟机上的对象可以像本地对象一样进行交互。 2. RMI架构组件: - RMI注册表(Registry):它是RMI服务查找中心,客户端通过它查找可调用的远程对象引用。在本项目中,ServerApp使用自托管的RMI注册表,意味着服务器自身提供注册服务。 - 远程接口(Remote Interface):这是定义远程对象方法的接口,必须继承自java.rmi.Remote接口。 - 远程对象(Remote Object):实现远程接口的类的实例,可以被远程调用。 - stub和skeleton:stub是客户端代理对象,实现了与远程对象相同的接口。skeleton则是在服务器端处理实际调用的对象。 3. 项目实现细节: - 服务器端主要方法:实现于ServerApp类中,该类使用了自托管的RMI注册表。 - 客户端主要方法:实现于WhiteboardClient类中,客户端通过命令行参数传入RMI注册表的URL。 - 连接与注册:客户端连接到服务器时,会将自己的信息注册到服务器。 - 客户端状态维护:服务器会定期“ping”每个客户端以检查它们是否在线。如果某个客户端响应失败,服务器会将其从活动列表中移除,并通知其他客户端。 4. 数据传输与交互: - 当客户端绘制形状时,相关信息(包括形状、绘制者和时间)被封装成一个类,并发送到服务器。 - 服务器接收到新形状后,会将该信息通知到其他客户端,但只发送新形状的数据,这样可以减少带宽的消耗。 5. 安全性考量: 尽管文档未详细说明,但提到了从安全角度出发,项目有很多改进的空间。这可能涉及到认证、授权、加密通信等安全机制的实现。 6. 缺少UI的练习目的: 通过省略Swing UI开发,学生被引导专注于理解RMI的工作原理,而不仅仅是界面开发。这种做法有助于加深对Java网络编程模型的理解。 7. “新兴技术”课程与小型项目: 这种类型的项目是工程类学科常见的教学手段,旨在将理论知识应用于实际项目中,通过实践来加深学生对新兴技术概念的理解。 8. 文件名称解释: 提供的文件名 "RMI-Whiteboard-master" 暗示了项目的版本信息和源代码的结构,表明这个项目是源代码库的一部分,并且 "master" 表示它是主分支,包含稳定和完整的代码。 通过这个项目的描述,可以了解到RMI在网络编程、分布式系统设计、以及远程通信中的应用。同时,也强调了理论学习与实际开发技能结合的重要性。