ubuntuusers.de

Java

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion der Artikel Java, Java/Installation, Java/Tipps.

TheMagican

Anmeldungsdatum:
29. März 2007

Beiträge: 203

Hi,

ich hätte hier noch einen Vorschlag für einen Absatz unter "Problemlösungen" in dem Java-WikiEintrag. Ich möchte jetzt nicht direkt in dem Artikel rumpfuschen, der gerade überarbeitet wird, deshalb hier in der Diskussion dazu:

____Java WebStart____

Es kann vorkommen, dass eine Java Web Start Anwendung zwar mit dem Java-Startbildschirm startet, danach aber nach 
langem Warten nur eine Fehlermeldung erscheint:

    java.net.MalformedURLException: unknown protocol: socket
    ....

Dieser Fehler liegt an den Proxy-Einstellungen von Java. Um den Fehler zu beheben muss man unter Ubuntu (GNOME) 
    System → Einstellungen → Sun Java 6 Plugin Control Center 
öffnen und dort in den Netzwerkeinstellungen „Direkte Verbindung“ auswählen bzw. die korrekten Proxy-Einstellungen 
machen. Die automatische Proxy-Auswahl über den Browser funktioniert nicht.

Grüße
Andi

BigMc

Avatar von BigMc

Anmeldungsdatum:
18. März 2007

Beiträge: 1814

Wenn ein Artikel in der Baustelle ist, sollte man ihn erst recht bearbeiten. 😉 Also nur hinein damit.

Gruß, BigMc

TheMagican

Anmeldungsdatum:
29. März 2007

Beiträge: 203

Wie du meinst, habs rein gemacht.

Grüße

pippovic

Avatar von pippovic

Anmeldungsdatum:
12. November 2004

Beiträge: 9130

Hallo,

was ist denn nun mit den Java-Artikeln in der Baustelle? Bei keinem davon ist ein Bearbeiter eingetragen. Wer arbeitet denn daran bzw. wer wollte die Artikel in der Baustelle haben?

Gruß pippovic

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Ich bin im Artikel 'Java' auf Fehler und Ungenauigkeiten gestoßen, und wollte diese ändern, aber bekomme die Meldung, der Artikel würde überarbeitet, und ich solle den Baustellenartikel überarbeiten.

In dem ist dieser Abschnitt aber gar nicht drin. Allerdngs im Artikel Java/Tipps, Abschnitt: Programme beschleunigen.

⚓︎

Programme beschleunigen

Als Beispielaufruf sei der Befehl

java -jar myFancyGuiApp.jar 

gegeben. Auf Windows-Systemen wird automatisch die DirectX-Beschleunigung verwendet, aber auf Unix-Systemen leider nicht automatisch die OpenGL-Beschleunigung. Um diese einzuschalten verwendet man den Parameter -Dsun.java2d.opengl=true (siehe System Properties for All Platforms 🇬🇧 / Support for Hardware-Accelerated Rendering Using OpenGL 🇬🇧 ):

Wieso wird hier die Windowsversion genannt? Ist die normativ für irgendetwas? Sehr viele Programme benutzen keine fortgeschrittenen Grafikfunktionen, und daher werden sie dadurch nicht beschleunigt. Das wertende leider gehört da m.E. auch nicht hin.

java -Dsun.java2d.opengl=true -jar myFancyGuiApp.jar 

Je nach Rechnerarchitektur (z.B. 64bit-System) wird als Standard (siehe Server-Class Machine Detection 🇬🇧 ) die Server-VM verwendet. Um die für Client-Anwendungen optimierte VM zu verwenden, muss man auf solchen Systemen explizit den Parameter -client angeben:

java -client -jar myFancyGuiApp.jar 

Es hängt dabei von der verwendeten VM ab, ob eine Client-VM für 64bit verfügbar ist. Suns 5.0 64bit VM scheint noch keine Client-VM zu unterstützen, der Parameter schadet aber nicht. Insofern sollte jede grafische Anwendung mit dem Parameter -client gestartet werden.

Von der Anwendung wiederum hängt es ab, ob die Server- oder Clientversion schneller sein wird. Pauschal läßt sich das nicht sagen. Auch hier würde ich die Anwendngsdokumentation empfehlen, oder eigene Messungen.

Schließlich kann man je nach Anwendung (z.B. Java-Spiele oder andere umfangreichere Applikationen) auch noch Geschwindigkeit herausholen, indem man der Anwendung mehr als die maximalen 64 MB zur Verfügung stellt. Hierzu dient der Parameter -Xmx:

Ein Programm, daß mehr Speicher braucht als vorhanden ist, wird abstürzen. Ein Programm, daß weniger Speicher braucht, wird nicht schneller. Lediglich eine kleine Anzahl an Programmen wird an der Grenze von 64 MB operiereren, und nur durch häufiges Starten der Garbage-Collection, den Absturz zu vermeiden, und dann gebremst werden. Dann aber den Speicher zu vervierfachen,

java -Xmx256m -jar myFancyGuiApp.jar 

und diesen Parameter als Universalmittel gegen langsame Programme zu empfehlen, scheint mir irreführend.

Wenn ein Programm betroffen ist, dann sollte dessen Dokumentation erwähnen, wie man es am besten startet.

Natürlich kann man auch alle miteinander kombinieren:

java -client -Xmx256m -Dsun.java2d.opengl=true -jar myFancyGuiApp.jar 

Diese und weitere Parameter sind auch noch einmal in den Java options 🇬🇧 erläutert. Es gibt noch zahlreiche weitere Parameter, um die Java VM zu tunen, aber die hier vorgestellten sind die einfachsten, welche auch meist die größte Wirkung bringen. Natürlich ist eine spürbare Beschleunigung damit nicht zwingend garantiert, aber man sollte es mal ausprobieren und staunen, warum das nicht als Standard so schnell geht.

Beim Staunen sollte man aber nicht stehen bleiben, sondern überlegen wieso das wohl so ist. Wenn ich der JVM sage, sie soll sich 256 MB Speicher angeln, dann tut sie das auch, selbst wenn das Programm nur 4 MB braucht. Das ist also Speicherverschwendung.

Vielleicht möchte der Autor widersprechen. Sonst würde ich gerne ändern. Wäre dann die Tipps-Seite der richtige Ort?

danield5732

Anmeldungsdatum:
22. Oktober 2007

Beiträge: 182

Wohnort: Berlin

Ich wurde über Hibiscus auf diese Seite verwiesen um meine Java-Installation passend zu Hibiscus anzupassen in dem ich die JVM anstelle der GCJ installiere. Tatsächlich hatte ich schon (unwissentlich) über das Paket ubuntu-restricted-extras die Java-Version von Sun installiert und musste nichts mehr ändern.

Ich denke dass ein Vermerk am Anfang der Java-Seite darauf hinweisen sollte dass durch die Installation von ubuntu-restricted-extras, bzw. "Eingeschränkte Extras für Ubuntu" (Software-Center), nicht mehr die GNU Java-Variante sondern die von Sun installiert ist.

march Team-Icon

Avatar von march

Anmeldungsdatum:
12. Juni 2005

Beiträge: 17368

Wohnort: /home/noise

Da diese Seite aktuell in der Baustelle überarbeitet wird (s. Artikelanfang) ist es sinniger, wenn du dies im entsprechenden Topic des Baustellenartikels vermerkst. Ich führe die Threads einmal zusammen.

feuerloescher

Avatar von feuerloescher

Anmeldungsdatum:
28. November 2006

Beiträge: 190

Wohnort: Bocholt

Hallo zusammen. Ich wollte gerade den Artikel ubuntu-restricted-extras verlinken, weiß jedoch nicht wo. Auf der Wikiseite steht: Änderungen bitte in der Baustelle. Dort ist aber seit anderthalb Monaten Funkenstille. Also bitte ich jetzt darum, dass der oder die Verantwortlichen sich eines Linkes auf die o.a. Seite bemühen.

zerwas Team-Icon

Avatar von zerwas

Anmeldungsdatum:
13. April 2005

Beiträge: 2561

Ich habe einmal alle drei Artikel bearbeitet, aber insbesondere die Installation komplett grundüberholt.

Bisher war der Artikel besonders für Anfänger sehr schwer zu verstehen. Ich habe nun einen Abschnitt hinzugefügt, wie man einfach an Java kommt.

feuerloescher, auch den Bezug zu ubuntu-restricted-extras habe ich hineingebracht.

Kann es damit theoretisch aus der Baustelle raus?

Liebe Grüße,
zerwas

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Ich habe auch meine unwidersprochene Kritik am Abschnitt Performance umgesetzt.

Mit dem Wiki geht es mir oft so, daß ich die Arbeit anderer nicht torpedieren will, und erstmal hören möchte, wie der Autor seinen Text verteidigt, was dann aber selten passiert.

So entwickelt sich dann folgendes Muster: Ich entdecke in einem Artikel einen Absatz, den ich so nicht stehen lassen will, und stelle ihn im Forum erstmal zur Diskussion. Dort meldet sich dann niemand, und nach 3 Tagen habe ich auch vergessen, daß ich eine Diskussion eröffnet habe.

Aber wenn jmd. einfach so meine Arbeit löscht, ohne mich zu Wort kommen zu lassen, würde ich auch sauer werden, und schnell aufhören dem Wiki beizutragen.

Hier nun ein neuer Abschnitt, der mir problematisch scheint:

Problemlöser Startscript

Bei einigen Java-Programmen findet die Java-Umgebung nicht den richtigen Pfad zum Programmverzeichnis. Es kommt dann zu sehr kuriosen Fehlern. Abhilfe schafft hier ein kleines Startscript. Vorraussetzung: Der Ordner mit dem Java-Programm sollte sich direkt im Homeverzeichnis befinden. Der Startscript sorgt dafür, dass das Programm immer direkt aus dem Programmordner gestartet wird. Der Startscript lässt sich komfortabel einer Desktopverknüpfung oder einem Starter im GNOME Panel zuweisen.

#!/bin/bash
#start.sh - Der Java-Programm-Starter
#In den Programmordner wechseln
cd ~/javaprgrammordner/
#Java-Programm starten
java -jar programmname.jar
exit 0

Dieses Script als start.sh direkt in den Java-Programmordner speichern und in der Konsole mit folgendem Befehl ausführbar machen:

chmod u+x start.sh 

Also dieses Skript macht kaum etwas anderes, als

java -jar ~/javaprgrammordner/programmname.jar

aber schummelt ein paar Unsauberkeiten ein.

Die Hauptsache ist aber die, dass die Lösung nicht sagt welches Problem überhaupt gelöst wird. Was soll das sein - ein Programmordner? Wieso soll der im User-Home sitzen? Weil der User ohne Adminrechte das Programm auf einem Multiusersystem installiert hat? Programmordner sind eigentlich eine Windowskiste - .../Eigene Programme/Firefox oder so. Bei Linux habe ich libdir, usr/share usr/man usw. und keine Programmordner, und Jars sind auch eine Technik um Programmordner loszuwerden.

Der Aufruf des Programms über den gezeigten Umweg macht nur einen Unterschied, wenn das Programm davon ausgeht aus einem bestimmten Verzeichnis heraus aufgerufen zu werden, um dort nach Konfigurations- oder Arbeitsdateien zu suchen. Das ist aber lausige Programmierung, und sollte wenn, dann in der Doku des Programms erwähnt werden. Als allgemeine Lösung im Wiki ist es m.E. Humbug.

Es ist auch nicht beschrieben bei welcher Fehlermeldung man diesen Weg versuchen soll, und ermuntert die Leute zum ziellosen rumstochern im System. Der Abschnitt sollte ersatzlos gestrichen werden.

Wozu als letzte Zeile ein

exit 0

gut sein soll verstehe ich auch nicht - das ist immer überflüssig, denn wenn das Skript soweit kommt, dann endet es an der Stelle sowieso (exit) und gibt auch keinen Fehler zurück.

Eine weitere, kl. Unsauberkeit ist, daß der Archivname nicht unbedingt der Programmname sein muß.

zerwas Team-Icon

Avatar von zerwas

Anmeldungsdatum:
13. April 2005

Beiträge: 2561

Hallo user unknown,

ich denke, in diesem Fall ist es eindeutig. Besonders, da sich seit einigen Monaten mehr keiner um die Artikel gekümmert hatte.

Ich habe den Abschnitt zum Starterskript rausgenommen. Sollte jemand erklären können, warum es unbedingt reinsollte, kann er sich ja einfach hier melden.

Den Abschnitt zu Beryl habe ich auch rausgenommen.

Ebenso den Abschnitt zu 64Bit (nicht mehr gültig). Ersetzt habe ich diesen zur Anleitung, wie man 32bit-Java-Programme ausführt, die 32Bit-Java voraussetzen.

Liebe Grüße,
zerwas

zerwas Team-Icon

Avatar von zerwas

Anmeldungsdatum:
13. April 2005

Beiträge: 2561

Wie siehts aus? Keine Reaktionen mehr? Raus aus der Baustelle?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Von mir aus ja! ☺

zerwas Team-Icon

Avatar von zerwas

Anmeldungsdatum:
13. April 2005

Beiträge: 2561

Und wer muss noch zustimmen, damits passiert? 😉

mgraesslin Team-Icon

Avatar von mgraesslin

Anmeldungsdatum:
8. November 2006

Beiträge: 9183

zerwas schrieb:

Und wer muss noch zustimmen, damits passiert? 😉

kannst du kurz sagen welche Artikel verschoben werden müssen und welche Altlasten entfernt werden müssen?