欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Apache Mina 学习笔记(1) - 入门

程序员文章站 2023-12-27 13:21:39
...
在本章,我们会让你对什么是MINA,什么是非阻塞IO,为什么我们在非阻塞IO上开发了这套框架有一个了解.我们也会给你展示一个非常简单的例子去让MINA跑起来.

1.非阻塞IO

非阻塞IO的API在JAVA 1.4版本出现,并且已经被用于数以万计的应用当中.NIO API覆盖了非阻塞的各种操作.在java.nio.*的包中包含了下面一些重要的结构:
Buffers - Data Containers
Chartsets - Containers translators for bytes and Unicode
Channels - represents connections to entities capable of I/O operations
Selectors - provide selectable, multiplexed non-blocking IO
Regexps - provide provide some tools to manipulate regular expressions

在MINA框架中,我们对于Channels,_Selectors_ 和 Buffers最为感兴趣,我们希望对用户隐藏这部分.

2.NIO vs BIO

理解这两种API之间的区别是很重要的.BIO,即阻塞IO,依赖于socket采用阻塞模式,当你读写或者其他任何操作socket的时候,调用者会阻塞直至该操作完成.

但是在一些实际情况中,它期待于被调用者在完成请求时能够通知调用者,而调用者在同时可以完成其他的操作.这就是NIO.当你有很多个已连接的socket,NIO是一种更好的解决方法,你不需要为每个连接创建特定的线程,你可以仅仅只采用一些线程去做同样的工作.如果你想要获得更多的关于NIO的信息,网络上有很多这方面的资料和书籍.

3.Why MINA?

写一些网络应用程序,通常被看作是一种负担,是一种底层的开发。是一块开发者不经常接触的领域,或者曾经在学校学习过,但是已经忘记了,或者网络层的复杂性被更高层的抽象隐藏了,而你并不了解底层的东西。

当提到异步IO的时候,一个额外的复杂性出现了:时间.

在BIO和NIO两者间最大的不同就是,在BIO中,当你发送一个请求,你必须等待知道请求被回应.在服务端,意味着每当有一个连接到来时,要有一个线程被创建.所以你不得不处理多路连接的复杂性.而在NIO中,你得在一个非阻塞系统中解决同步问题,它意味着,当一些事件发生时,你不得不被卷入其中.在NIO中,你不需要等待你之前的调用,你发送一个请求,当请求完成时会通知你的.

4.The need of a framework

考虑到这些差异,以及这些问题的复杂性,最好的解决方法就是将这些复杂性隐藏起来,这就是MINA所做的.但是MINA可以做的更多,当通过TCP,UDP或者其他机制通讯的时候,它提供了一些常见的IO。如果我们只考虑TCP和UDP,MINA可以区分这两种协议,并且让你的注意力可以集中在你的应用程序的其他部分。

MINA不仅仅可以解决TCP和UDP问题,他对于串行通信,ARP也很有用。

最后,MINA是一种被定制的用来解决服务器客户端通信问题的网络框架,书写一个高度可扩展的,根据需求适应的服务器,并且让内存性能得以体现,这些都是MINA所擅长的,总是它希望让你开发服务器的时候,变得轻松。

5.First Steps

下面我们会展示使用MINA是多么的简单,并且运行一个非常简单的例子。首先,到这里去下载MINA的最新版,除非你有足够的理由让你不用最新版,否则希望你能用最新版开发。http://mina.apache.org/mina-project/downloads.html。下载完毕之后,解压所下载的文件。目录下面会包含一些子目录,其中disk包含MINA库的jar文件,docs包含了API文档,lib包含了MINA所需要的jar文件。

6.运行第一MINA程序

首先,如果你在终端,需要将一下包加入classpath,修改/etc/profile,并让他生效。如果你用集成环境,build your classpath就可以了。

以上就是Apache Mina 学习笔记(1) - 入门的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签: Apache Mina

上一篇:

下一篇: