关于java socket 、java NIO和apeche mina的小差别 新手帖 大神请指导

liu15031573531 2013-10-23 11:28:48
本人最近在学习mina,一直纠结与socket有什么不同之处 mina的优点在哪里。
在一番搜索之后讲述Java Nio与mina的差别的文章倒是很多。
下面我试着说说我自己的理解,希望了解这方面的大虾能指点一二 ,本人小菜鸟一个,请赐教。
java socket
使用java socket进行网络编程,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。
Java NIO
Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,NIO 有一个主要的类Selector,这个类似一个观察者,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。
apeche mina
传统的 Java NIO 模型,都是典型的反应式模型,即应用代码对 I/O 描述符进行注册,然后等待 I/O 事件。当某个或某些 I/O 描述符所对应的 I/O 设备上产生 I/O 事件(可读、可写、异常等)时,系统将发出通知,于是应用便有机会进行 I/O 操作并避免阻塞。由于在反应式模型中应用代码需要根据相应的事件类型采取不同的动作,最常见的结构便是嵌套的 if {...} else {...} 或 switch ,并常常需要结合状态机来完成复杂的逻辑。前摄式模型则恰恰相反。在前摄式模型中,应用代码主动地投递异步操作而不管 I/O 设备当前是否可读或可写。投递的异步 I/O 操作被系统接管,应用代码也并不阻塞在该操作上,而是指定一个回调函数并继续自己的应用逻辑。当该异步操作完成时,系统将发起通知并调用应用代码指定的回调函数。在前摄式模型中,程序逻辑由各个回调函数串联起来:异步操作 A 的回调发起异步操作 B ,B 的回调再发起异步操作 C ,以此往复。 Mina 便是一个前摄式的异步 I/O 框架

总结来说 mina不仅解决了java socket的阻塞问题 而且优化了 java nio应用逻辑代码复杂的结构问题,使用mina开发一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。这样也就凸显了mina的优势 不知道小弟说的对不对 大虾请指点
...全文
794 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
独行码夫 2013-12-10
  • 打赏
  • 举报
回复
apeche mina 就是把一些复杂的实现封装了,然后你直接调用或者创建就好了,但是初学的话还是要尝试自己写写服务端和客户端,网上很多资料
  • 打赏
  • 举报
回复
公司在用mina搞通信这块 没用过 过来学习一下
huaye 2013-11-17
  • 打赏
  • 举报
回复
mina已经把一些繁杂的io操作自己给处理了,基本上mina需要比较明白的是编解码那块吧!nio,有时间可以看下。
gggggame 2013-10-28
  • 打赏
  • 举报
回复
签个章,以后会用到
  • 打赏
  • 举报
回复
搭建TCP服务器mina比较快,mina好用只是它把复杂的东西进行分解和隐藏,要想真正掌握它还是要看javaIO基础。socket的8个构造器好好掌握。 别的我也不熟,

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧