Wiederkehrende Klassen in Projekten

Anfänger2011

Bekanntes Mitglied
Hallo alle zusammen,

seit einger Zeit kommt es bei meinen Projekten vor, dass ich Klassen, die ich bereits geschreiben habe, auch in anderen Projekten benötige. Damit sind zum Beispiel Menüs, Messages, Datenbankverbindungen oder bestimmte Allgorithmen gemeint. Bis jetzt hab ich die dann immer nach dem Copy-und-Paste Prinzip in meine Projekte eingefügt, doch das kann ja auf dauer nicht die Lösung sein. Mein Lösungsanstz wäre, dass ich auf meiner Webserver/Webspace eine Art Bibliothek hochlade und die dann per import wie z. B.

Java:
import javax.swing.*;

in mein Projekt importiere. Meine Frage wäre einerseits, ob das überhaupt so funktioniert oder ob es nicht noch besser/einfacher geht und natürlich noch wie ich das umsetze.

Ich bin sehr gespannt auf eure Antwort und schonmal vielen Dank dafür.

Freundliche Grüße
Anfänger2011
 
Nein, das geht nicht (so einfach). Der offizielle Weg ist, die Dinge, die du öfters verwendest, als eigene Library zu entwickeln und als JAR mit jeder Software mitzuliefern, die sie benötigt. Je nach IDE kannst du das auch so regeln: Du legst pro Library ein Projekt an (welches als build-ergebnis die Library-JAR hat). Dieses Projekt (oder diese JAR) bindest du dann in die anderen Projekte ein (und zwar die selbe Datei, keine Kopieen davon). Wenn du jetzt entwickelst hast du die Libraries immer auf dem neuesten Stand; beim build der Software wird die JAR dann kopiert.

Zum Thema aus dem Web nachladen: Das geht. Es hat aber einige entscheidende Nachteile:
1. Der User braucht mindestens zur Installation eine Internetverbindung.
2. Wenn du die Dateien auch nach der Installation Up-2-date halten willst, braucht der Nutzer zumindest bei jedem Programmstart eine Internetverbindung.
3. Wenn du 2. umsetzt, musst du pinibelst auf abwärtskompatibilität der Libraries achten. Eine Software, welche auf Version 0.5 der Library geschrieben wurde, muss auch mit 2.3 laufen. (Oder aber du definierst irgendwo im Manifest, welche Version der Library genutzt wird).
4. Das nachladen der Libraries verzögert den Programmstart => Usability sinkt
5. Das nachladen der Libraries verbraucht Traffic. Geht ein nutzer oft über einen mobilen Zugang ins Netz wird er deine Software mglw. nur deswegen deinstallieren, weil sie zu viel Traffic verursacht.
6. Wenn sich deine Software bei jedem Start mit dem gleichen Server verbindet kann (und wird!) das von Anti-Viren Software als "nach hause telefonieren" und daher als gefährlich gewertet.

Alles in allem: es geht. Es ist den Aufwand meiner Meinung nach aber nicht im geringsten Wert.
 
Zuletzt bearbeitet:
Du könntest deine Klassen als eine Bibliothek kompilieren und neben dem System JRE einfügen, du kompilierst die Bibliothek als JAR und fügst es als "External JAR" hinzu oder du erstellst ein Bibliotheksprojekt und bindest dieses Projekt immer ein.
Ersteres würde ich nicht empfehlen, sondern eher Letzteres aber das musst du wissen.
 
Das Zusammenfassen häufig benötigter Klassen zu einer Bibliothek ist nicht nur möglich, sondern auch dringend angeraten. In Java kannst du deine Klassen in ein Jar-File zusammenfassen.
Dieses wird das sowohl beim Übersetzen deiner Anwendung als auch zur Laufzeit benötigt.

Wie du dem System die Jar-Files zur Laufzeit bekannt gibst, hängt von der Anwendungsart ab.
Damit meine ich : Willst du ein Java-Stand-Alone Programm, ein Applet oder eine serverseitige Webanwendung schreiben ?
 
Erstmal Danke für eure Antworten.
@Dompteur: Um deine Frage zu beantworten: Ich entwickele fast ausschließlich für Desktop Anwendungen, sprich JFrame, ....

Eure Vorschläge werde ich morgen in aller Ruhe ausprobieren und dann schauen was mir am besten gefällt.
 
Ganz wichtig ist, dass wenn du daraus eine Bibliothek machst, du Änderungen immer abwärtskompatibel machst. Wenn du nur einmal eine Änderung an den sourcen vornimmst sie nicht abwärtskompatibel ist, dann bekommst du riesige Probleme.

Gruß

Claus
 

Zurück
Oben