Apache MINA is a free Java-based framework for network communication. It provides an event-based programming interface for asynchronous communication over transport protocols such as TCP / IP and UDP / IP and Java NIO available.
MINA is an acronym for Multipurpose Infrastructure for Network Applications.
Apache MINA is primarily a technology-independent programming interface for various network protocols. These objects and codecs can be addressed via ByteBuffers, StreamIoHandler or custom message. The included protocols are:
- TCP / IP and UDP / IP via Java NIO, and Transport Layer Security capable
- Serial communication (EIA -232) via RXTX
- In -VM pipe communication
In addition, proprietary protocols can be implemented. The network communication can be single-threaded or settled through configurable thread pools.
Apache MINA provides support for the protection of overload, bandwidth control, unit testing via mock objects, management and monitoring via Java Management Extensions and integrations with the Dependency Injection frameworks PicoContainer and Spring.
Apache Camel can be used as routing and conversion engine for Apache MINA.
Apache MINA is based on the first published in June 2004 by Trustin Lee Network Framework " Netty2 ". It was the first Java framework that was built on an event- based architecture, but had difficulty with text protocols and architectural error that prevented its use in massively parallel systems.
Alex Karasulu from Apache Directory team worked at the same time even on a network framework, and became aware of Netty2. He could Trustin Lee move to collaborate on a new network framework for Apache Directory project. In September 2004, on a mixture of the architectures of the two frameworks created based the foundation for Apache MINA.
Since then Apache MINA is the primary network framework of the Apache Directory project for various protocols of the Apache Directory Server - inter alia, LDAP, Kerberos, DNS and NTP.
Besides the direct use of the Java programming interfaces for NIO socket and TCP / IP and UDP / IP communication, there is the following alternative frameworks for network communication in Java:
- Netty 3
- Quick Server