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. It's good to know that MINA is written on top of NIO.
Apache MINA is often called:
• NIO framework library,
• client server framework library, or
• a networking socket library
Apache MINA comes with many subprojects:
• Asyncweb: An HTTP server build on top of MINA asynchronous framework
• FtpServer: A FTP server
• SSHd: A Java library supporting the SSHH protocol
• Vysper: An XMPP server
The NIO API was introduced in Java 1.4 and had since been used for wide number of applications. The NIO API covers IO non-blocking operations.
It's important to understand the difference between NIO and BIO. BIO, or Blocking IO, relies on plain sockets used in a blocking mode : when you read, write or do whatever operation on a socket, the called operation will blcok the caller until the operation is completed.
In some cases, it's critical to be able to call the operation, and to expect the called operation to inform the caller when the operation is done : the caller can then do something else in the mean time.
This is also where NIO offers a better way to handle IO when you have numerous connected sockets : you dn't have to create a specific thread for each connection, you can just use a few threads to do the same job.