Apache MINA | |
---|---|
![]() | |
Basisdaten | |
Entwickler | Apache Software Foundation |
Erscheinungsjahr | 4. April 2006[1] |
Aktuelle Version | 2.2.4[2] (19. Dezember 2024) |
Betriebssystem | plattformunabhängig |
Programmiersprache | Java |
Kategorie | Netzwerkkommunikationsframework |
Lizenz | Apache-Lizenz 2.0 |
mina.apache.org |
Apache MINA ist einfreiesJavaFramework für Netzwerkkommunikation. Es stellt eine ereignisbasierteProgrammierschnittstelle fürasynchrone Kommunikation über Transportprotokolle wieTCP/IP andUDP/IP undJava NIO zur Verfügung.
MINA ist einAkronym fürMultipurposeInfrastructure forNetworkApplications.[3]
Apache MINA ist primär eine technologieunabhängigeProgrammierschnittstelle für verschiedene Netzwerkprotokolle. Diese können über ByteBuffers, StreamIoHandler oder benutzerdefinierte Message Objekte und Codecs angesprochen werden. Die mitgelieferten Protokolle sind:
Darüber hinaus können eigene Protokolle implementiert werden.Die Netzwerkkommunikation kann single-threaded oder durch konfigurierbare Thread-Pools abgewickelt werden.[4]
Apache MINA bietet Unterstützung für die Absicherung von Überlast,Bandbreitenkontrolle,Unit-Testen überMock-Objekte, Management und Überwachung viaJava Management Extensions sowie Integrationen mit denDependency Injection FrameworksPicoContainer undSpring.[4]
Apache Camel kann alsRouting undKonvertierungs-Engine für Apache MINA verwendet werden.
Apache MINA basiert auf dem im Juni 2004 von Trustin Lee erstmals veröffentlichten Netzwerk Framework "Netty2". Es war das erste entsprechende Java Framework, welches auf einer ereignisbasierten Architektur aufbaute, hatte allerdings Schwierigkeiten mit Text-Protokollen und architektonische Fehler, die seinen Einsatz in massiv parallelen Systemen verhinderte.
Alex Karasulu vom Apache Directory Team arbeitete zur gleichen Zeit selbst an einem Netzwerk-Framework und wurde auf Netty2 aufmerksam. Er konnte Trustin Lee zur Zusammenarbeit an einem neuen Netzwerk Framework für das Apache Directory Projekt bewegen. Im September 2004 wurde basierend auf einer Mischung aus den Architekturen der beiden Frameworks die Grundlage für Apache MINA geschaffen.
Seit damals ist Apache MINA das primäre Netzwerk Framework des Apache Directory Projektes für diverse Protokolle des Apache Directory Servers – u. a. LDAP, Kerberos, DNS and NTP.[5]
Neben der direkten Verwendung der Java-Programmierschnittstellen für NIO, Socket und TCP/IP- und UDP/IP-Kommunikation gibt es noch folgende alternative Frameworks zur Netzwerkkommunikation in Java: