was wird optimiert ? klassen, bytecode oder interpreter?

Status
Nicht offen für weitere Antworten.
S

stev.glasow

Gast
Die java ist ja in einigen bereichen doch schon recht zügig geworden, mich würde mal interessiern wie(was) dort so optimiert wird. die optimierung, der klassen, müsste doch schon langsam ausgereizt sein. wird denn immer noch am bytecode gefeilt (so weit das überhaubt geht) oder werden bestimmte sachen vom interpreter anders gehandhabt ?
 

jptc.org

Bekanntes Mitglied
eine direkte antwort darauf gibt es eigentlich nicht. es wird (wurde) an allem geschraubt, was irgendwie möglich war. alle java versionen zwischen 1.2 und 1.5 waren mehr oder weniger nur performance fixes. ok ich gebe zu das klinkt etwas übertrieben ist aber fast so. mit java 1.2 hatte die sprache einen beträchtlichen umfang erreicht, war aber im vergleich zu c++ viel langsamer. also hat man in allen folgeversionen sehr viel wert auf verbesserte performance geleckt und dabei lieber ein paar features rausgelassen. die version 1.5 ist erstmals wieder eine version die mehr auf funktionalität, als auf features getrimmt ist.

was hat sich also seit 1.2 getan :?: man hat so überall mal etwas gedreht. viele basisklassen wurden verbessert. die nativ schnittstellen wurden optimiert. es wurde einiges am garbagecollecting verbessert, die interne speicherverwaltung wurde optimiert... viel aufwand wurde auch in die optimierung des bytecodes gesteckt und ich denke dort sind auch noch eine menge potentiale versteckt. der interpreter wurde auch verbessert und mehr den bedürfnissen der anwender angepasst. zusätzlich gab es dann noch so tolle sachen wie HotSpot, JIT Compiler usw.

was man natürlich auch nicht vergessen darf, die gefühlte performance ist besser geworden, weil einfach die hardware mehr power bringt. d.h. viele unterschiede sind einfach nicht mehr spürbar.

achja nochwas :) : die entwickler haben auch dazu gelernt und so werden auch mehr die features der sprache ausgereizt und mehr auf performante anwendungen wert gelegt. häufig führen viele wege in java zum ziel und meist ist darunter auch ein wirklich performanter weg..

so das war meine meinung (in kurzform)

Karsten Voigt
http://www.java-performance-portal.org
 
S

stev.glasow

Gast
also mich würde auch mal, die langform interessieren ...
 

jptc.org

Bekanntes Mitglied
über performance im allgemeinen oder java im besonderen? gerade bei dem begriff performance gibt es eine menge spielraum. wusstest du, dass es programme gibt die extra sleeps eingebaut haben, nur um nicht zu schnell zu werden! gerade bei wissenschaftlichen anwendungen haben die anwender kein vertrauen in die ergebnisse, wenn der rechner diese zu schnell ausspuckt der war aber schnell, das kann ja niemals stimmen... Es gibt das ne menge untersuchungen drüber.

Karsten Voigt
http://www.java-performance-portal.org
 

Stefan1200

Top Contributor
Was ich manchmal allerdings als Gefühl empfinde, ist das besonders das starten von Java Applicationen nur schneller geworden ist, weil beim Start nur das geladen wird, was beim Start der Application gebraucht wird.

Sobald man im Programm auch nur auf die Idee kommt, JEditorPane, JFileChooser oder das Windows LookAndFeel aufzurufen, sitzt man als Anwender davor und wundert sich, warum nichts passiert, außer das die Festplatte gleich aus dem Tower fliegt ;-).

Gerade beim Windows LookAndFeel fand ich das ein bissel blöd.
Seither starten meine Programme ohne LookAndFeel Auswähler nur noch das Java Metal LAF, und nicht das System Standard LAF.

Bild ich mir das ein, oder sind gerade bei Java 1.4.2 die Ladezeiten für das Windows LAF höher geworden, als noch beim 1.4.1?
 

jptc.org

Bekanntes Mitglied
kann ich leider nicht bestättigen. aber wer verwendet denn schon den windows l&f, der ist einer der ungefähr unperformantesten den es gibt :!: und lizensrechtlich darf man den nur auf windowsplatformen verwenden. also ich nehm entweder den default java, kunststoff (extrem geil) oder schreib mir meinen eigenen für bestimmte komponenten.

wenn man ein fertiges programm nur für windows anbieten möchte, so empfiehlt sich meist daraus eine exe zu machen, das nervt den interpreter nicht so und die applikation wird schneller (muss ja auch nicht mehr interpretiert werden :wink: )

Karsten Voigt
http://www.java-performance-portal.org
 

Stefan1200

Top Contributor
jptc.org hat gesagt.:
kann ich leider nicht bestättigen. aber wer verwendet denn schon den windows l&f, der ist einer der ungefähr unperformantesten den es gibt :!: und lizensrechtlich darf man den nur auf windowsplatformen verwenden. also ich nehm entweder den default java, kunststoff (extrem geil) oder schreib mir meinen eigenen für bestimmte komponenten.

wenn man ein fertiges programm nur für windows anbieten möchte, so empfiehlt sich meist daraus eine exe zu machen, das nervt den interpreter nicht so und die applikation wird schneller (muss ja auch nicht mehr interpretiert werden :wink: )

Karsten Voigt
http://www.java-performance-portal.org


Naja, aber wenn man Software für Computer Anfänger schreibt, nehme ich normalerweise immer lieber das System Standard LAF, und das ist unter Windows nunmal das Windows LAF.
Allerdings wenn ich auf meinem Pentium 3 ca. 15 Sekunden länger warten soll, bis das Programm gestartet wird, nur weil er das Windows LAF laden soll, verzichte ich lieber drauf. Weil ob nun das Programm in 2 Sekunden mit Metal LAF oder in 17 Sekunden mit Windows LAF startet, ist für ein kleines Tool doch schon sehr wichtig. Auch wenn das bei sehr großen Programmen wieder relativiert wird.
 

marsias

Aktives Mitglied
Hi!

Also java hat sich echt gemacht finde ich.
Das einzige was ich noch bißchen benachteilige ist die langsame GUI,
aber das soll sich ja in 1.5 ändern.
Und teilweise die hohe CPU belastung.

Sonst ist Java top.

mfg
 
H

Hogo

Gast
[an "jptc.org"]
Du hattest erwähnt, dass man ein Java-Programm als exe-Datei umwandeln kann. Wörtlich, kompilierst du den bytecode zu einem native ausführbaren Programm. Mich würde mal brennend interessieren, mit welchem Prorgamm man kompilieren kann.
 

Stefan1200

Top Contributor
Jeder große IDE, wie JBuilder, kann Exe Dateien erzeugen. Allerdings machen diese Exe Dateien nichts anderes, als eine Jar Datei zu starten. Sei diese nun in der Exe integriert, oder beiliegend.

Ich habe mir daher selbst ein Programm geschrieben, das einfach eine Jar Datei im aktuellen Ordner sucht, und diese dann startet. Derzeit noch in RealBasic. Leider ist RealBasic unter Windows zum K***en. So läuft es mal, und mal nicht. Deshalb verwende ich derzeit noch ein VisualBasic Programm, das mein Kumpel geschrieben hat. Leider ist VisualBasic auch blöd, weil VisualBasic Programme genau wie Java ein Runtime Enviroment installiert haben müssen. Bei Windows ME/2000/XP ist dies glücklicherweise schon der Fall.

Ein Java Programm zu kompilieren, das man kein Java RE mehr braucht, geht ja nicht, oder?
 

marsias

Aktives Mitglied
Hi!

Doch es geht. Es gibt dafür programme die das können. such mal im web
findest bestimmt eins. ich habe es mal versucht...aber weiß nicht mehr wie
das prog hieß.

mfg
 

Koravel

Mitglied
Die arbeiten dann meines Wissens nach so, dass sie die Teile des JREs dabei legen, die du brauchst.
Oder war das lizenztechnisch verboten??
Wenn ja, dann müssen sie die ja ein komplettes JRE mit in deine Jar packen... könnte groß werden das Dateichen ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Y MVVM wie wird Eventhandler tausch geregelt Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
N warum wird es doppelt ausgegeben Allgemeine Java-Themen 6
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
M Frage-Antwortspiel wie Wer wird Millionär Allgemeine Java-Themen 1
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
C FileLock - Exception wird immer geworfen Allgemeine Java-Themen 4
R Was muss ich ändern, damit der Kreis links unten gezeichnet wird? Allgemeine Java-Themen 17
hello_autumn Java_Home geändert auf Java 13, trotzdem wird Java Version 8 angezeigt. Allgemeine Java-Themen 2
Thallius Char +1 wird int? Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
S If-Menü wird doppelt ausgegben Allgemeine Java-Themen 4
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
S Wird bei den JREs 9, 10, 11+ ueberhaupt noch Bytecode ausgefuehrt..? Allgemeine Java-Themen 8
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
kodela Klassen Klassenvariable wird nicht gesetzt Allgemeine Java-Themen 23
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
kodela Drücken der ALT-Taste wird nur bei jedem zweiten Mal erkannt Allgemeine Java-Themen 5
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
D Cursor unsichtbar, wenn Kontextmenü aufgerufen wird Allgemeine Java-Themen 5
K Arbeitsspeicher wird langsam voll Allgemeine Java-Themen 6
The Pi Wie oft wird ein Buchstabe in einem Wort wiederholt? Allgemeine Java-Themen 16
N Datentypen If-Statement wird "übersprungen" Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
T Textarea text wird immer überschrieben Allgemeine Java-Themen 4
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Java wird nicht gefunden Allgemeine Java-Themen 32
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
Z Exception wird nicht ausgelöst Allgemeine Java-Themen 2
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
G Methoden Aus einem Event, wo ich weiß, dass es ausgeführt werden wird, eine Get-Methode basteln Allgemeine Java-Themen 8
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
U Erkennen, ob PC benutzt wird Allgemeine Java-Themen 4
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
B Abfragenteil wird nicht aufgerufen Allgemeine Java-Themen 2
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
T Sicherheitshinweis - Zertifikat wird angefordert Allgemeine Java-Themen 5
L SetBounds wird vor dem Konstruktorcode aufgerufen - Wenn Startleiste links Allgemeine Java-Themen 1
P "Overriden statische Methode" Statische Methode die vererbt wird Allgemeine Java-Themen 5
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
P Wird double und float auf jedem Computer gleich berechnet? Allgemeine Java-Themen 10
G Tabelle wird nicht richtig dargestellt Allgemeine Java-Themen 9
HarleyDavidson Threads ProgressMonitor wird nicht angezeigt! Allgemeine Java-Themen 6
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
A Long variable wird negativ??? Allgemeine Java-Themen 1
J CSV Datei wird ungewollt umformatiert Allgemeine Java-Themen 5
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
gamebreiti Swing JLabel wird nicht angezeigt Allgemeine Java-Themen 4
I Java Applet wird immer blockiert Allgemeine Java-Themen 3
E Java Editor Klasse wird nicht weiter ausgeführt Allgemeine Java-Themen 4
S Java Applet wird dauerhaft blockiert Allgemeine Java-Themen 1
I Datei wird nicht richtig gelöscht Allgemeine Java-Themen 7
K Methoden Objekt wird nicht erkannt Allgemeine Java-Themen 11
D Input/Output Datei wird lokal aber nicht vom Webserver ausgelesen... Allgemeine Java-Themen 2
F Nach Export wird PDF Datei nicht mehr gefunden Allgemeine Java-Themen 0
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
D ActionListener wird mit jedem Mal öfter aufgerufen Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
A Threads Log4J Logger wird "überschrieben" Allgemeine Java-Themen 3
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
J batch datei wird nicht aufgerufen Allgemeine Java-Themen 11
M Datei wird nicht vollständig geschrieben (FileOutputStream, OutputStreamWriter, Encoding) Allgemeine Java-Themen 6
P OSGi - Bundle-Methode wird nicht aufgerufen Allgemeine Java-Themen 3
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
T Variablen Variable wird als nicht genutzt angezeigt Allgemeine Java-Themen 8
J Slideshow wird im IE überblendet Allgemeine Java-Themen 4
O Socket Object wird scheinbar falsch empfangen Allgemeine Java-Themen 6
J Textdatei auslesen, die gerade benutzt wird Allgemeine Java-Themen 8
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben