Umgebungsvariable Version des Programms

M

Maaanuel

Gast
Hallo,
via den button "über" kann man in meiner Applikation allgemeine Infos abfragen (wie man es von den meisten Programmen kennt). So z.B. auch die Versions-Nummer der Applikation.

Nun ist nur meine Überlegung, wo speichert man intern im Code am besten die aktuelle Versions-Nummer?
Hat mein eine Art "Settings.java" in der man die wichtigsten Einstellungen per Konstanten machen kann und dort ist auch die Versionsnummer?

Ich weiß, eigentlich ein sehr unwichtiges Thema aber ich interessiere mich dafür, wie schöner Code ist und wie man es normalerweise macht.


Über Google kam ich leider zu nichts, da bei java + version (egal welcher zusatz, wie programmieren, code) nur Infos herauskommen, wie man die aktuelle Version von Java an sich herausfinden kann.

Danke für eure Meinungen.
 
G

Gonzo17

Gast
Also wenn ich soetwas mache, dann würde ich soetwas in einem Propertyfile auslagern.

Hätte ich jetzt reflexartig auch zuerst gesagt, aber ich stelle mir gerade ernsthaft die Frage: warum? Welchen Vorteil hätte man davon? Wieso nicht in einer Klasse?

Mir würde als Argument nur einfallen, dass man dann die Version seiner Software per Hand pflegen muss und nicht automatisiert vergeben lassen kann. (Sowas macht übrigens ein Build-Tool wie Maven schon automatisch) Aber sonst?
 
M

Maaanuel

Gast
ok, ich hätte spontan gesagt, nicht in eine externe-File wie in einer Propertyfile.
Diese liegen ja in der jar im Klartext, können also einfach geändert werden. Auch wenn dies keine wirklich schlimmen Auswirkungen haben würde hätte ich gesagt, dass dies fest im Code sein sollte, damit es (weitgehend) unveränderlich ist.
 
M

maki

Gast
Property Dateien sind IMHO der richtige Ort dafür, gibt auch Alternativen, im Code selber ist die schlechteste Option IMHO, da man hierfür soz. den Quellcode "filtern" müsste, was man eigtenlich nur mit reinen Textressourcen wie zB. Property oder XML Dateien macht.
 
G

Gonzo17

Gast
im Code selber ist die schlechteste Option IMHO, da man hierfür soz. den Quellcode "filtern" müsste, was man eigtenlich nur mit reinen Textressourcen wie zB. Property oder XML Dateien macht.

"Filter"? Verstehe nicht, was du da genau meinst. Wenn die Version einfach als String hinterlegt wird oder evtl als int, wo wäre das Problem?
 
M

maki

Gast
"Filter"? Verstehe nicht, was du da genau meinst. Wenn die Version einfach als String hinterlegt wird oder evtl als int, wo wäre das Problem?
Wenn das automatisiert gemacht wird, wird meist vom Buildsystem (Ant, maven, etc. ) "gefiltert", d.h. dass Platzhalter zB. in der Form [c]${project.version}[/c] durch echte Werte wie [c]1.0.1[/c] ersetzt würden.

Das geht natürlich auch in Java Dateien und nicht nur in Property/XML Dateien, meist ist es aber praktischer nur 2-4 XML/Property Dateien zu filtern als hunderte Java Dateien und man hat alles gefilterte an einer bzw. an wenigen Stellen.

Da man meist mehr als nur die Version ersetzen will (DB URLs, JDBC Treiber, Nutzernamen & Passwort, etc. pp.) und solche Dinge sowieso schon gefiltert würden bietet es sich eben an.
 
G

Gonzo17

Gast
Wenn das automatisiert gemacht wird, wird meist vom Buildsystem (Ant, maven, etc. ) "gefiltert", d.h. dass Platzhalter zB. in der Form [c]${project.version}[/c] durch echte Werte wie [c]1.0.1[/c] ersetzt würden.

Das geht natürlich auch in Java Dateien und nicht nur in Property/XML Dateien, meist ist es aber praktischer nur 2-4 XML/Property Dateien zu filtern als hunderte Java Dateien und man hat alles gefilterte an einer bzw. an wenigen Stellen.

Achso, klar ich verstehe. Ich bin jetzt davon ausgegangen, dass man es manuell setzen würde, wenn man es im Code beerdigt. Wenn man es automatisiert möchte, dann würde ich wie oben gesagt auch davon abraten das im Code festzuhalten. Aber die Frage ist eben, ob man das automatisiert machen kann/will/soll und wie die Version aussehen soll.
 
M

maki

Gast
Wenn man es manuell macht, dann muss man wissen wohin man greift ;)
Wenn es nur eine einzige Stelle im Code ist (zB. eine Klasse für alle Einstellungen), wäre das ok.
Ab 2 Stellen wäre mir das zu unsicher... ist aber Geschmackssache.
 

Swoop

Gesperrter Benutzer
Wenn man es manuell macht, dann muss man wissen wohin man greift ;)
Wenn es nur eine einzige Stelle im Code ist (zB. eine Klasse für alle Einstellungen), wäre das ok.
Ab 2 Stellen wäre mir das zu unsicher... ist aber Geschmackssache.

Eine Klasse mit statischen Variablen mach ich in kleinen Programmen immer ... und von dort aus wird die Versionsnr immer verwendet!
 
G

Gast2

Gast
Also ich mach das über Werte im manifest, welche vom Build scripts dort reingeschrieben werden.
Auf diese Art kann man aohne Probleme SVN Revision etc mit einkompilieren.

Java:
String VERSION = getAttributeFromManifest("PROGRAMMNAME-Version");

Java:
private static String getAttributeFromManifest(String attributeName) {
		String attributeValue = null;
		if (!(attributeName == null)) {
			try {
				Enumeration<URL> resources = CLASSNAME.class.getClassLoader()
						.getResources("META-INF/MANIFEST.MF");
				while (resources.hasMoreElements()) {
					Manifest manifest = new Manifest(resources.nextElement()
							.openStream());
					Attributes attr = manifest.getMainAttributes();
					String mainClass = attr.getValue("Main-Class");
					if (mainClass != null
							&& mainClass
									.equals("package.CLASSNAME")) {
						attributeValue = attr.getValue(attributeName);
					}
				}
			} catch (Exception E) {
				// nothing irrelevant
			}
		}
		if (attributeValue == null) {
			attributeValue = "undeterminable";
		}
		return attributeValue;
	}

Code:
		<!-- Create the subversion version string -->
		<exec executable="svnversion" failifexecutionfails="no" outputproperty="svn.version">
		  <arg value="PATH_TO_REPO"/> 
		  <arg value="-n"/>
		</exec>
		
		<!-- create programs jar archive -->
		<jar destfile="${dist.directory}/PROGRAMMNAME.jar">
			<manifest>
			    <attribute name="Svn-Revision"  value="${svn.version}" /> 
			    <attribute name="PROGRAMMNAME-Version"  value="${dist.version}" /> 
...
..
.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
F Reason: Missing Constraint: Import-Package: okhttp3.internal.http; version="0.0.0" Allgemeine Java-Themen 0
S @version in Kommentaren aktualisieren Allgemeine Java-Themen 10
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
L Java Version ändernhi icj Allgemeine Java-Themen 9
S Tool mit dem man die Major version im Bytecode patchen kann..? Allgemeine Java-Themen 10
G Wiedereinstieg, welche Java Version empfehlt ihr Allgemeine Java-Themen 7
G GUI-basiertes Java-Program in Command-line Version umwandeln Allgemeine Java-Themen 1
I Geeignete Java-Version herusfinden Allgemeine Java-Themen 7
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
F Netbeans Version Allgemeine Java-Themen 2
M Windows 98 - Mit welchem JDK (Version) kann noch Programm dafür erstellt werden Allgemeine Java-Themen 6
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
Developer_X Java Version aufrüsten Allgemeine Java-Themen 6
J Firefox - Java Version Wechseln Allgemeine Java-Themen 2
B Input/Output version.cfg konnte nicht im Klassenpfad gefunden werden, ist aber dort. Allgemeine Java-Themen 0
L Java Version aus Tomcat ermitteln Allgemeine Java-Themen 3
P JDK und JVM: 64bit Version UND 32bit Version gleichzeitig? Allgemeine Java-Themen 5
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
B A newer version of Java is needed to view the application. Allgemeine Java-Themen 17
N iText-Nutzung (Version 2.1.7) in kommerzieller Website Allgemeine Java-Themen 8
E Java Version Details ermitteln Allgemeine Java-Themen 5
G Java ME Version Allgemeine Java-Themen 2
J Alte version nutzen Allgemeine Java-Themen 4
D Problem mit Java version? Allgemeine Java-Themen 4
E Probleme beim Umstieg auf Version 1.6.0_12 Allgemeine Java-Themen 4
ARadauer welche java version wird benutzt Allgemeine Java-Themen 4
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
H java version Allgemeine Java-Themen 6
B suche Deutsche Übersetzung für neuste Eclipse Version Allgemeine Java-Themen 6
A Apache License, Version 2.0 Allgemeine Java-Themen 7
E welche standalone Version von Tomcat benutzen? Allgemeine Java-Themen 6
D Probleme beim Umstellen von iText 1.4.4 auf Version 2.1.2 Allgemeine Java-Themen 5
G Auslesen mit welcher Java-Version Anwendung kompiliert wurde Allgemeine Java-Themen 2
X Version von der überladenen Methode/Klasse Allgemeine Java-Themen 10
W Programm prüft auf webserver ob neue version vorhanden? Allgemeine Java-Themen 3
B Java Buch zu welcher Version empfehlenswert? Allgemeine Java-Themen 6
J Windows Version von javacomm Allgemeine Java-Themen 2
S Bad version number in .class file Allgemeine Java-Themen 5
G Nachdem die neuste Version v. Java installiert-Fehlermeldung Allgemeine Java-Themen 22
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
L Wie für ein bestimmte JVM-Version kompilieren? Allgemeine Java-Themen 2
C Auswahl einer Version, bei mehreren installierten Versionen Allgemeine Java-Themen 3
A serial Version UID field of type long Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
B Welche Java-Version? Allgemeine Java-Themen 7
D Java Version Allgemeine Java-Themen 2
G Aktuelle JRE Version? Allgemeine Java-Themen 7
M java.lang.UnsupportedClassVersionError: Bad version number i Allgemeine Java-Themen 5
vogella Version von Java ermitteln Allgemeine Java-Themen 2
B jre version in der html-datei für ein applet abfragen Allgemeine Java-Themen 5
A Java Version verstellen Allgemeine Java-Themen 2
F JRE Version ermitteln Allgemeine Java-Themen 2
K Java Version ermitteln (über System.getProperty hinaus) Allgemeine Java-Themen 6
S Ich verstehe meine Java-Version nicht Allgemeine Java-Themen 6
P Java, rar.exe(winrar cmd version) und cpu-auslastung 100% Allgemeine Java-Themen 27
B java-version bestimmen innerhalb von Programm Allgemeine Java-Themen 4
W version aus klasse auslesen Allgemeine Java-Themen 8
P Javadoc -> Autmatisiertes @version Tag Allgemeine Java-Themen 6
R Java version Allgemeine Java-Themen 3
S Version des Browserplugins Allgemeine Java-Themen 4
clemson Kompilieren nach einer früheren Version Allgemeine Java-Themen 4
S Trial version Allgemeine Java-Themen 12
X Unattended alte Java Version deinstalliern und Java 1.4.2. Allgemeine Java-Themen 3
sokobus java ältere Version - das laden dauert sooo lange Allgemeine Java-Themen 3
F Version Allgemeine Java-Themen 5
B Java-Version aus .class erfahren Allgemeine Java-Themen 6
A Die Java-Version des Clients in einem Java-Applet ermitteln Allgemeine Java-Themen 2
G JDK Version - exec Befehl Allgemeine Java-Themen 3
B Java Version Allgemeine Java-Themen 5
C Java-Version herausfinden Allgemeine Java-Themen 9
G Name des aktuellen Programms Allgemeine Java-Themen 7
Speed FariyDragon Startsituation des Programms Feststellen Allgemeine Java-Themen 1
Lukas2904 Automatisches starten des Programms Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
J Webstart Lizenz des entwickelten Java-Programms Allgemeine Java-Themen 5
S Fehlermeldungen erscheinen erst in der Ausführung des Programms Allgemeine Java-Themen 11
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
MineJoke "Config" Datein wir bei neustart des Programms neu erstellt? Allgemeine Java-Themen 0
X Skalierung von Bildern zum Start des Programms Allgemeine Java-Themen 3
R Instanzen eines Programms Allgemeine Java-Themen 8
H Copy Paste implementieren ausserhalb des Programms? Allgemeine Java-Themen 2
Fab1 Komponenten eines zweiten Java Programms auslesen Allgemeine Java-Themen 8
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
C Ablauf des Programms anhalten, bis.... Allgemeine Java-Themen 5
N Erste Schritte Neuschreiben eines C++ Programms in Java Allgemeine Java-Themen 4
L Richtige Dokumentation eines Java Programms Allgemeine Java-Themen 5
T Update eines Programms - Beenden eines anderen Prozesses überwachen Allgemeine Java-Themen 8
O Problem bei Darstellung der Laufzeit eines Programms Allgemeine Java-Themen 3
H Mehrfachen Start des Programms verhindern Allgemeine Java-Themen 6
E Standort des Programms herausfinden Allgemeine Java-Themen 4
P Sauberes Beenden des Programms beim Herunterfahren? Allgemeine Java-Themen 9
G Erweiterung eines Programms Allgemeine Java-Themen 29
G Konfiguration eines Java- Programms Allgemeine Java-Themen 20
G Speicherverbrauch eines Programms Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben