既然QQ能仿ICQ, 咱java也来个仿QQ.

在我刚学完java后,就想做点什么项目锻炼下自己的技能。凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了。

然后他想让我也一块做这个,我心想,像qq这么高难度的项目肯定复杂得要死,所以我是想都不敢想的。

没想到后来的偶然的一天,我手痒了,想用java做一个简单的聊天室。然后说做就做,着手开干,不一会,凭着对java和通信的有些基础的掌握,写出了一个简陋的聊天室。简陋到粗糙的地步,粗糙到只有聊天的文字一行一行的堆砌在面板上,早期效果截图没保存,不过大家凭着自己的想象力也不难脑补。

后来,我想,要是能给加个气泡就好看多了,于是,开始上网查资料,奈何,资料撩撩几笔,而又残缺不全,只能从有限的资料里找些蛛丝马迹,网上找来的知识零零散散,再凭着自己的理解进行简单拼凑之后,又开始上手开发。

在经过了数个日日夜夜之后,终于搞成了,下面来一张**早期的**效果图给大家看看:

当然,这个时候还只有一个聊天窗口,登录窗口和主窗口都没有,可以说是简易版的聊天软件了。

在做完这个之后,我成就感爆棚,顿时自己又飘了,想着这个能做完,离qq也不远了,于是开始正式做仿qq项目。

在后来的日子里,我对这个项目进行不断地改进和拓展,终于完成了基础聊天业务,并添加了附加的高级功能。

项目迭代历程大致如下:聊天文字堆砌

添加气泡,完成简易聊天室

添加登录注册窗口

添加主窗口

通信框架升级

数据库优化升级

添加群聊天

添加群资料

添加远程桌面

添加语音消息

添加音视频通话

下面谈谈令我印象深刻的几段经历,每每回忆起,不胜感动。。。。。。

刻骨铭心回忆录:swing美化:为改变java swing中固有的丑陋界面,又特地上网学习了关于swing的美化,并结合自己 实践不断地改进才得到现在这样比较满意的效果。

通信框架: 从一开始的java序列化到后来为了降低码流而改用netty框架,又进行了一次新的摸索和尝试,又来了一个地毯式的“更新迭代”。

截屏: 为了实现截屏效果,特地从网上找来教程,不过功能很朴素,只提供了基本的截屏功能,作为完美主义的我岂能容忍,于是又是几天的探索才做的功能相对的齐全,又长舒了一口气。

背景修改: 再然后就是对背景的修改,又想能改背景图,又想能改背景色,又要保存背景配置,又经历了一番长久地探索。

群资料: 私聊做完之后做群聊,群聊做完之后又做群资料,其中诸如群首页,群相册,群文件,群成员,群公告这些又是一轮烧脑。

文件发送: 为了降低服务器带宽,提高传输速率,我采用了p2p打洞技术,还是tcp打洞,在众人都说tcp打洞不可能实现的情况下硬是凭着坚韧摸索了出来,想到这里又是一把鼻涕泪。

远程桌面: 从一开始的简单传输指令与图像,到最后的反复测试优化,不断缩减延迟,提升体验,才 达到了与qq远程桌面相接近的远程效果,当然主要得益于算法方面的优化。

视频通话: 从一开始选择JMF框架,再到放弃JMF选择javacv, 再到选择jmf, 再到怀疑jmf, 再到选择jmf框架辅之以udp打洞才突破了技术壁垒。

服务器方面: 从一开始直接实例调用connetion对象,到后来为提升性能改用c3p0数据库缓存池,又是一轮辛苦的“劳动”。

以上每一次都是举步维艰,其中艰辛,不言自明,最后,在经历9个月的探索开发和迭代,才终于完成,实属不易啊。

下面,来几张效果图给大伙看看吧

远程桌面效果图:

视频通话效果图:

然后,懒得码字,也懒得重新做图了,就从其他地方找来张图详细的介绍下项目实现的功能吧:

最后,这个仿qq项目已经开源,小伙伴不再需要花费积分下载了,在此贡献给对java仿qq感兴趣的你。

gitee下载地址:https://gitee.com/asddgasg/java_qq_oim

欢迎加入qq交流群一起学习讨论:679578626

java仿qq思路_java仿QQ聊天软件OIM艰辛之路(开源项目)相关推荐

  1. java仿QQ聊天软件OIM艰辛之路

    既然QQ能仿ICQ, 咱java也来个仿QQ. 在我刚学完java后,就想做点什么项目锻炼下自己的技能.凑巧的是,我一个同样学java的朋友在做一个仿qq的项目,不过他做的实在太丑了. 然后他想让我也 ...

  2. java发送qq邮箱_Java 发送QQ邮箱邮件

    如果需要提供用户名和密码给e-mail服务器来达到用户认证的目的,你可以通过如下设置来完成: props.put("mail.smtp.auth", "true" ...

  3. Java网络通信实验小记四:Swing聊天软件

    Swing聊天软件 前面做了Tcp和Udp的基本通信以及文件传输实验,是时候把这些内容整合在一起了.. Swing就不介绍了,需要用到什么api都可以直接查. 一.基本聊天功能(服务端作中介,udp实 ...

  4. 模仿网易云音乐java桌面程序,瓣呀,一个模仿网易云音乐的豆瓣开源项目

    瓣呀 介绍: 优酷视频演示: 项目介绍:整体采用material design 风格,本人是网易云音乐的粉丝,所以界面模仿了网页云音乐,另外,项目中尽量使用了5.0之后的新控件. 项目整体采用mvp+ ...

  5. java qq 源代码_Java 仿QQ聊天源代码

    Java 仿QQ聊天源代码介绍,本源码实现了群聊和私聊. 截图如下: 代码文件清单如下: Client.java.ClientThread.java.Server.java.ServerThread. ...

  6. java读取qq邮箱_java获取qq邮箱中的好友列表

    评论 # re: java获取qq邮箱中的好友列表 2009-05-07 20:56 咖啡@可乐 # re: java获取qq邮箱中的好友列表 2009-05-08 09:07 EverestSnow ...

  7. java 发邮件 qq有些_Java 发送QQ邮件

    1. 开启SMTP服务 1.1 在QQ邮箱的 设置->账户 里开启 SMTP 服务 1.2 QQ邮箱不能直接用QQ密码,而是使用 授权码 ,点击 生成授权码 2. 编写代码 2.1 添加依赖的j ...

  8. java连接qq邮箱_Java使用qq邮箱发邮件实现

    public class MailDemo1 { public static void main(String[] args) throws Exception{ Properties prop = ...

  9. java qq登录_JAVA实现QQ第三方登录

    首先在QQ互联: https://connect.qq.com/manage.html 申请账号,并且进行资料审核,同时创建应用(设置回调地址) 申请应用完后,会有app_ID.app_KEY等参数 ...

最新文章

  1. beautifulsoup里面的find()和findall()小代码测试
  2. java nifty_Java NiftyDialogBuilder類代碼示例
  3. 腾讯-视频打标签算法探讨
  4. Ubuntu16.04安装MySQL5.7
  5. kali linux切换更新源_KALI更新源2020版(永久实用)
  6. 编程中的那些容易迷糊的小知识
  7. mysql dba系统学习(15)mysql用户管理之二
  8. 2018年千锋Java微服务架构视频教程
  9. 计算机房安全防范措施,机房安全防护方案
  10. python哪些模板引擎比较_3 个 Python 模板库比较
  11. 【矩阵论 图论】期末考试复习思维导图
  12. 2021年浙大考研计算机专业录取分数线,2021年浙江大学研究生录取分数线是多少...
  13. 如何降低开关电源空载损耗
  14. 安卓Android的手机微博平台设计与开发
  15. 亚马逊dynamo高可用性关键字仓库
  16. 小程序创业会有哪些坑
  17. 渗透学习日记day7
  18. 手机被偷完整找回方案
  19. 基于动作捕捉的踝关节动力矫形器外骨骼开发
  20. 计算机专业毕业设计题目大全文库,计算机专业毕业设计论文题目.doc

热门文章

  1. java基础知识总结,javaweb参考资料大全
  2. 30 年 IT 老兵谈数字化:这就不是个技术活
  3. 价值100亿美元!微软刚刚击败亚马逊,拿下美国国防部十年云计算基建订单
  4. 路透社:亚马逊和微软将竞标美国防部100亿美元云计算合同
  5. 当当网页制作html代码,网页制作语言:HTML
  6. C++软件工程师面试考点.md
  7. SystemTap使用技巧【二】
  8. HihoCoder 1082 : 然而沼跃鱼早就看穿了一切
  9. 没事的时候一个人静静的想着往事
  10. html消防产品模版,消防设备项目建议书模板