1 有人能说清楚JAVA7 NIO NETTY IOCP之间的联系吗?
原文链接:https://www.zhihu.com/question/20853629
不过这似乎是3年前的问题?
还没有找到答案吗?
那我说一下吧
iocp和poll/epoll这些是操作系统层面的东西
iocp是win,poll(linux和unix)
后者在linux上可以改成epoll,在mac或bsd上可以改成kqueue,性能更佳,使用netty的native transport特性,在vert.x最新版本中亦支持这两种优化,很爽的
nio是java或者说jvm层面的东西,说白了就是基于iocp&poll的一个统一的java接口
netty是jvm之上框架层面的东西,说白了就是一个基于nio的框架
可以看到三个层次,后者基于前者
操作系统是啥?windows,macosx,linux(其实这个是kernal,你懂的,不懂百度下就有)
jvm是虚拟机,是我们经常需要安装的这么一个东西,这个虚拟机以及开发工具(jdk)
定义了一个nio的api,封装了操作系统的这些网络接口,java是跨平台的嘛
所以在我们使用java的这些api的过程中,不需要去区分是哪个操作系统
最终暴露给java用户的,是一个统一的api,这个api就是nio
除了nio以外,还有ai