| SIMON | |
|---|---|
| Basisdaten | |
| Entwickler | root1.de - Software Engineering |
| Aktuelle Version | 1.3.0 (8. März 2016) |
| Aktuelle Vorabversion | 1.3.1-SNAPSHOT |
| Betriebssystem | plattformunabhängig |
| Programmiersprache | Java |
| Kategorie | RPC-Kommunikationsframework |
| Lizenz | GPL 3.0 / root1.de Library Commercial License 1.0 |
| https://gitlab.com/dev.root1.de/simon | |
SIMON ist eine dual lizenzierte Java API, die einen alternativen Ansatz zur Durchführung eines Remote Procedure Call (RPC) verfolgt und deshalb als Alternative zu Remote Method Invocation (RMI) bezeichnet wird. Im Vergleich zur RMI-Implementierung ist SIMON deutlich einfacher in der Verwendung und kommt besser mit netzwerkübergreifenden Verbindungen zurechtkommt wie zum Beispiel mit Firewalls.
SIMON ist ein Akronym für Simple Invocation of Methods Over Network.
SIMON verfolgt prinzipiell die gleichen Ziele und Ansätze wie RMI: Die Kommunikation erfolgt im objektorientierten RPC-Stil über eine TCP/IP-Verbindung. Nach wenigen einleitenden API-Aufrufen ist die Verbindung hergestellt und die weitere Entwicklung kann völlig unabhängig von der verwendeten Netzwerktechnologie verlaufen.
Bei der Entwicklung von SIMON wurde jedoch besonderes Augenmerk auf folgende Funktionen gelegt:
Die aktuelle Version bietet unter anderem folgende Funktionen:
SIMON orientiert sich zwar am Vorbild RMI, jedoch gibt es deutliche Unterschiede:
SIMON lässt sich dank seiner Architektur und Vorteilen gegenüber dem klassischen RMI vielseitig einsetzen. So findet SIMON unter anderem Verwendung in der Ausbildung, Forschung und Spieleentwicklung, im Grid-Computing sowie bei diversen Wirtschaftsunternehmen wo es für die klassische Trennung von Front-End und Back-End eingesetzt wird.
Im Dezember 2007 begann Alexander Christian, angetrieben durch die Nachteile, die RMI bei der Verbindung über das Internet mit all seinen Hürden wie Router, Gateways, Firewalls etc. hat, eine alternative RMI Lösung zu implementieren.
Bedingt durch den etwas erweiterten Funktionsumfang gegenüber RMI und Auslegung der Netzwerkkommunikation, war es nicht möglich das Protokoll und die Programmierschnittstelle kompatibel zum RMI zu halten.
Die erste Version 0.1 alpha wurde am 18. Januar 2008 in einer deutschsprachigen Java-Entwickler-Community veröffentlicht.
Mitte 2008 begann die Umstellung von blocking-IO zu non-blocking-IO mit Hilfe der Java-Programmierschnittstellen für NIO, was am 15. Oktober 2008 zu Version 0.2 führte. Da die Implementierung der Netzwerkschicht in SIMON jedoch noch nicht optimal war, begann kurz darauf die Umstellung der Netzwerkschicht auf Apache MINA, was eine nochmal bessere Performance versprach.
Bereits im Oktober 2008 gab es eine erste „MINA powered“ Version 0.3 alpha von SIMON. Bis zur stabilen Version 1.0.0 sollte es jedoch noch bis 1. Februar 2010 dauern. In der Zwischenzeit wurde das Build-System von Apache Ant auf Apache Maven umgestellt, was auch die Änderung des Versionsschema von einer zweistelligen, auf eine dreistellige Version umfasste.
Am 19. April 2012 teilte die IANA den TCP-Port 4753 dem Dienst simon zu, sowie den UDP-Port derselben Nummer dem Dienst simon-disc (SIMON Discovery).