1.mina 是什麼?html
apach mina 是一個網絡應用框架,使開發者更容易開發出高性能可擴展的網絡應用。它經過java NIO提供了一個抽象的基於事件驅動的異步API,在例如 TCP/IP ,UDP/IP 等各類傳輸協議之上.java
Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract event-driven asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.web
Apache MINA 常常被稱爲 : apache
NIO framework library, api
client server framework library, or網絡
a networking socket libraryoracle
Apache MINA 伴隨着不少子項目 :app
Asyncweb : An HTTP server build on top of MINA asynchronous framework框架
FtpServer : A FTP server異步
SSHd : A Java library supporting the SSH protocol
Vysper : An XMPP server
2.使用mina以前咱們應該瞭解什麼?
首先咱們須要瞭解是MINA在NIO 1的基礎上進行設計的(可能3.0版本會加入java 7,NIO-2 的特性吧)。那麼第一個問題來了 NIO VS BIO
BIO(Blocking IO) : BIO 在調用者進行socket讀寫等操做時會阻塞調用者直到調用結束。
NIO : 採用非阻塞模式 使一個線程從某通道發送請求讀取數據,可是它僅能獲得目前可用的數據,若是目前沒有數據可用時,就什麼都不會獲取。而不是保持線程阻塞,因此直至數據變的能夠讀取以前,該線程可 以繼續作其餘的事情。 非阻塞寫也是如此。一個線程請求寫入一些數據到某通道,但不須要等待它徹底寫入,這個線程同時能夠去作別的事情。 線程一般將非阻塞IO的空閒時間用於在其它通道上執行IO操做,因此 一個單獨的線程如今能夠管理多個輸入和輸出通道(channel)。
Java NIO 由如下幾個核心部分組成:
Channels
Buffers
Selectors
MINA 特性
MINA is a simple yet full-featured network application framework which provides:
Unified API for various transport types:
TCP/IP & UDP/IP via Java NIO
Serial communication (RS232) via RXTX
In-VM pipe communication
You can implement your own!
Filter interface as an extension point; similar to Servlet filters
Low-level and high-level API:
Low-level: uses ByteBuffers
High-level: uses user-defined message objects and codecs
Highly customizable thread model:
Single thread
One thread pool
More than one thread pools (i.e. SEDA)
Out-of-the-box SSL · TLS · StartTLS support using Java 5 SSLEngine
Overload shielding & traffic throttling
Unit testability using mock objects
JMX managability
Stream-based I/O support via StreamIoHandler
Integration with well known containers such as PicoContainer and Spring
Smooth migration from Netty, an ancestor of Apache MINA.
3.mina 最新版本穩定版本 2.0.9 及下載地址
http://mina.apache.org/mina-project/downloads.html
打開源碼包,能看到官方給出的example , ok 第一步就記錄到這裏了.
文章內容來源及參考 :
http://mina.apache.org/mina-project/userguide
http://blog.csdn.net/keda8997110/article/details/19549493
http://ifeve.com/overview/ Java NIO系列教程
http://docs.oracle.com/javase/6/docs/api/