Ich stimme allen Aussagen meiner Kollegen vollumfänglich zu, aber...
OSGI bzw. JRebel?
Das sind zwar schöne Technologien, aber auch nicht einfach zu beherrschen. Beispielsweise restarted selbst Eclipse neu, wenn Plugins neu installiert werden, obwohl das theoretisch aus OSGI-Sicht nicht notwendig sein sollte.
Ich würde über profanere Dinge nachdenken:
- Woher kann ein Benutzer wissen, das eine neuere Version bereitsteht?
- Wie kann ich es schaffen die neue Version zu laden?
- Wie starte ich die neue Version?
Vieles davon geht wohl nur, wenn du deine Applikation im Internet bereitstellst, also brauchst du einen Webserver der 7x24 in Betrieb und verfügbar ist.
Dann kannst du auf dem Server ein Servlet hinterlegen, das ein Benutzer fragen kann, ob eine neuere Version als X.Y bereitsteht.
Wenn dem so ist, kann über den Webserver die neue JAR-Version geladen werden.
Dieses Szenario deckt schon ziemlich die Anforderungen für einen Webserver auf dem du Root-Rechte hast.
Dein Programm müsste erkennen, das eine neue Version geladen worden ist, sich beenden und ein Upgrade-Programm starten, welches die alte JAR löscht und durch die neue ersetzt. Danach kann die neue Version vom Upgrade-Programm gestartet werden.
Wie du siehst, alles nicht ganz so einfach, aber machbar.