Java gleich in Maschinensprache übersetzen?

Status
Nicht offen für weitere Antworten.

Djon

Mitglied
Hallo!!!

Ich habe hier mal kurz nachgedacht, und konnte nichts feststellen was gegen ein Javaprogramm in Maschinensprache sprechen würde. Wieso gibt es keinen Compiler, der Javacode gleich, wie z.B. in C oder anderen Hochsprachen in die Maschinensprache übersetzt? Ich verstehe natürlich, dass der Javacode auf beliebigen Plattformen ausführbar sein sollte, doch wenn ich davon ausgehe, dass ich mein Programm nur auf x86 - Architektur ausgeführt wird, spricht doch nichts gegen oder? Oder ist es aus irgendwelchen tiefverborgenen technischen Gründen nicht machtbar?

mfg Djon
 
B

bygones

Gast
nein ich denke er will noch einen Schritt weiter gehen. Das erstellen von exe datein ist meist nur das erstellen eines Wrappers der ein jar aufruft
 

Bleiglanz

Gesperrter Benutzer
Class.forName("ich.komm.aus.dem.Internet.von.Irgendwoher";

dann mit reflection

method.invoke(...)

=> sowas wird man nie mit einem native Compiler erledigen können
 

Djon

Mitglied
also meine Frage war es, ob man .java-Dateien gleich in die "richtige" Maschienensprache, wie z.B. bei Assembler übersetzen kann. Also wenn ich dann anschliessend die .exe-Datei starte, brauche ich für die Ausführung nicht unbedingt die VM. Ist es möglich?

mfg Djon
 

DTR

Bekanntes Mitglied
Es ist eingeschränkt möglich. Ich habe mal von einem Compiler gelesen der dir direckt Maschienencode erzeugt. Aber wie schon oben angemerkt verlierst du dabei etwas an Javafunktionalität. Leider habe ich den Namen des Compilers vergessen.
 

Djon

Mitglied
ja, das ist mir vollkommen klar. Ich brauch wie gesagt den Compiler nur für meine eigenen Programme, die ich zu hause für mich selber schreibe. Wenn dir der Name wieder einfällt, dann melde dich bitte!

mfg Djon
 

dark_red

Bekanntes Mitglied
wobei ausführbare datien mit gcj langsamer sind, als wenn man das selbe in der vm ausführt. dafür spart es etwas ram :)
 

0xdeadbeef

Top Contributor
Ich denke mal, der große Vorteil eines Exe-Compilers wäre die Möglichkeit der Distribution an Computer-Dummies. Eine Exe kann jeder Dödel ausführen. Wenn man aber erst erklären muß, daß man eine JVM braucht oder Webstart installiert haben muß, winken viele Leute schon dankbar ab.
 
R

Roar

Gast
0xdeadbeef hat gesagt.:
Ich denke mal, der große Vorteil eines Exe-Compilers wäre die Möglichkeit der Distribution an Computer-Dummies. Eine Exe kann jeder Dödel ausführen. Wenn man abdr erst erklären muß, daß man eine JVM braucht oder Webstart installiert haben muß, winken viele Leute schon dankbar ab.

man kann auch gleich eine jre mit einer exe mitbundlen. viel größer als sone komische von jet erzeugte executable wird das nicht sein (programm + 30MB jre)
 

dark_red

Bekanntes Mitglied
zudem sind java-programme in native-code in der regel langsamer. also gleich beim bytecode bleiben. hat eine menge vorteile. selbst ms ist mit .net zu bytecode gewechselt.
 
G

Gast

Gast
> witzig ist auch der versuch, SWT nochmal native zu übersetzen
Der Versuch ist bereits geglückt.
 
E

elchaschab

Gast
auf www.excelsior-usa.com findest du einen nativ compiler für java2. funktioniert einwandfrei für win32 (linux support nur in beta).
ausserdem gibt es eine java erweiterung für gcc -> gcj. gcj unterstützt aber leider kein awt.

und zu den postern die meinen der code sei native-kompiliert langsamer.... erst probieren, dann posten.
mfg, elchaschab
 

bronks

Top Contributor
Djon hat gesagt.:
... java-Dateien gleich in die "richtige" Maschienensprache, wie z.B. bei Assembler übersetzen kann. Also wenn ich dann anschliessend die .exe-Datei starte, brauche ich für die Ausführung nicht unbedingt die VM. Ist es möglich? ...
Was heißt "z.B."? Assembler ist das einzige, was hinten Maschinensprache rausspuckt. Das macht kein C- und ein C++Compiler schon gar nicht. In C kann man auch AssemblerCode unterbringen, aber es wird nichts daraus was man Maschinensprache nennt. Ausführbare Programme in Maschinensprache haben in MS-Umgebung die Endungs "*.com". Sie werden zwar vom Betriebssystem aufgerufen, brauchen das Betriebssystem zum Ablauf nicht.

Eine "*.exe" ist ein unleserlicher Zusammenschmiss von Funktionsaufrufen, in dem Maschinensprache teilweise, aber nicht immer, eher selten, enthalten ist. Um ein C-Programm mit brauchbarer Funktionalität ablaufen lassen zu können braucht man einen haufen Libs, die sich wichtig machen, aber sonst eigentlich in keiner Weise einen Vorteil gegenüber der aufgeräumten JVM bringen.
 

Linuxhippy

Mitglied
Ah, ich sehe als Laie also gleich: hier spricht ein Mann von Welt - der kennt sich aus und will das auch zeigen!

Was heißt "z.B."? Assembler ist das einzige, was hinten Maschinensprache rausspuckt. Das macht kein C- und ein C++Compiler schon gar nicht
Ahhh, so ist das! Ein C-Compiler spuckt hinten C-Sprache aus, drum heißt er auch Compiler - ich frag mich bloß was Sachen wie RTL im gcc dann machen. Man sieht hier deutlich: Man lernt nie aus ;-)

Eine "*.exe" ist ein unleserlicher Zusammenschmiss von Funktionsaufrufen, in dem Maschinensprache teilweise, aber nicht immer, eher selten, enthalten ist.
Und was soll in einer Exe-Datei außer Konstakten/daten noch drinnen sein? Bytecode ;-)

Um ein C-Programm mit brauchbarer Funktionalität ablaufen lassen zu können braucht man einen haufen Libs, die sich wichtig machen. aber sonst eigentlich in keiner Weise einen Vorteil gegenüber der aufgeräumten JVM bringen.
Hmm, gut, das ist Ansichtssache, aber es gibt Vorteile:
* Ram-Verbrauch (shared libraries, keine Runtime, kein heap (im GC sinn).
* Laufzeitperformance (nicht erst 1500 invocations bis das ordentlich funtzt)
* Ladezeit
* nicht 100%ige abhängigkeit von SUN

Das heist jetzt nicht, dass ich java schlecht finden würde, aber alles dorthin, wo es hingehört. Ein modernes desktop-Programm würd ich kaum mehr in C++ anfangen, sohingehen eine JVM als Mustererkennungssoftware eher nicht zu brauchen ist.

lg Clemens
 

Vatar

Bekanntes Mitglied
Ich hab vor einiger Zeit mal etwas von einem Prozessor namens "Pico" gelesen. Der soll angeblich Javacode verstehen. Wie die Sache genau läuft weiß ich nicht, googlet einfach mal nach pico java
 

Bleiglanz

Gesperrter Benutzer
Hat mich schon immer interessiert, weils ein gutes beispiel für eine IT-Leiche ist:

Sun hat eine neue Generation von speziellen Java-optimierten Chips angekündigt. Diese CPUs sollen den Output des Java-Compilers direkt und ohne den Einsatz einer Softwareschicht abarbeiten können. Deshalb können sie die Java-Programme schneller als andere CPU-s ausführen. Allerdings eignen sie sich auch nur für die Java-Applets. Als erster Chip soll die "Pico-Java" Mitte 1996 erscheinen. Dieser Chip soll unter 25 $ kosten und in Peripheriegeräten und Mobilfunktelephonen Einsatz finden. Der nächste Chip - "Micro-Java" wird wahrscheinlich im ersten Quartal 1997 erscheinen und ist mit einem Stückpreis zwischen 25 $ und 100 $ für Netzwerkgeräte, Buchungssysteme, Mail-Terminals und Spielkonsolen bestimmt. Schließlich am Ende 1997 soll ein Chip namens "Ultra-Java" erscheinen. Ultra-Java wird etwas über 100 $ kosten. Er soll aber auch 2D und 3D-Graphik, Audio, Vidokompression, Netzwerke und Verschlüsselung unterstüzen und ist für die zukünftige Internet-PCs bestimmt.

1995 - 1996 -1997 -

muss irgendwas im Zeitplan durcheinander gekommen sein...
 

0xdeadbeef

Top Contributor
Man sollte sich bei all diesen Diskussionen darüber im Klaren sein, daß die teils langsame Ausführung von Java-Programmen nicht wirklich darin begründet liegt, daß der Byte-Code von der JVM interpretiert werden muß, zumal bei engen Schleifen eh der JIT-Compiler einspringt.

Es gibt einige prinzipielle Designentscheidungen der Sprache, die dafür Sorgen, daß man mit Java nie wirklich die Geschwindigkeit von optimierten C-Code (oder gar Assemblercode) erreichen kann.
Einer dieser Punkte ist die Bounds-Überprüfung von Arrays. Ein anderer der Zwang, dauernd Objektinstanzen zu erzeugen und zu zerstören. Auch der in Java immer vorhandende Polymorphismus kostet viel Laufzeit. Nicht umsonst wird dieses Feature von vielen C++-Programmierern aus Performancegründen nicht benutzt.
Beides waren bewußte Designentscheidungen - den Gewinn an Sicherheit (Buffer Overflows) bzw. sprachlicher Eleganz und Einfachheit bezahlt man halt mit niedrigerer Geschwindigkeit.

Wobei man definitiv mal sagen muß, daß Java trotz allem eigentlich recht perfomant ist - zumindest solange man mit Basistypen operiert. Richtig schlimm wird es erst mit Swing. Warum auch immer: einige der JFC-Klassen sind atemberaubend langsam (insbesondere JTextPane usw.). Hier hilft eventuell der Umstieg auf SWT (z.B. per SwingWT). Die sogenannten Java-Exe-Compiler ändern daran jedenfalls leider nichts (eventuell bis auf den experimentellen GCJ mit SwingWT-Unterstützung).
 
B

Beni

Gast
Ein Teil der Langsamkeit von Swing kommt aus Bugs. Mit Java 6 soll sich im Swing-Bereich einiges tun, man kann nur hoffen...
(Das sind z.T. auch eher psychologische als echte Probleme. Dass bei einem Java-Fenster kurz graue Rechtecke bleiben können wenn man es herumzieht sieht exterm schlecht aus, aber wäre eigentlich keine grosse Sache zum eliminieren).
 
R

Roar

Gast
Beni hat gesagt.:
Ein Teil der Langsamkeit von Swing kommt aus Bugs. Mit Java 6 soll sich im Swing-Bereich einiges tun, man kann nur hoffen...
(Das sind z.T. auch eher psychologische als echte Probleme. Dass bei einem Java-Fenster kurz graue Rechtecke bleiben können wenn man es herumzieht sieht exterm schlecht aus, aber wäre eigentlich keine grosse Sache zum eliminieren).
in den java 6 snapshots ist es bereits eliminiert :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3
M Java Analyse/ SWOT-Analyse Allgemeine Java-Themen 13
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
E Java .exe Datei mit args starten Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben