Fragen über die JVM der Programmiersprache Java?

... komplette Frage anzeigen

3 Antworten

Zeiger sind in Java nicht verfügbar. Ob man in reinem Bytecode damit arbeiten kann weiß ich nicht.

C# bietet Zeiger in sogenanntem unsafe code an. Java hat sich entschieden gänzlich auf Zeiger zu verzichten.

Antwort bewerten Vielen Dank für Deine Bewertung

Man sollte schon sehr genau lesen können!

Im Artikel zur JVM steht, „Java unterstütze Zeiger nicht direkt“; d.h. aber auch, implizit werden Zeiger eben doch unterstützt.

Da die Anzahl der Register auf einer CPU doch sehr beschränkt ist, muss Code auch auf den Speicher zugreifen können. Dabei kann man sich früher oder später nicht um das Konzept „Zeiger“ herummogeln. Das ist ja auch kein grundlegender Mangel. Nur sollen dann auch Betriebssysteme dafür Sorge tragen, dass die Speicherbereiche für die laufenden Programme zur Laufzeit „sicher“ sind.

Allerdings kann ich mir schon vorstellen, dass Java den Zugriff auf Speicherbereiche verhindert, die den Byte-Code des Programmes enthalten. Das Peek- und Poke-Konzept von „Basic“ funktioniert in Java aus Gründen der Sicherheit natürlich nicht. Zumal man ja auch genauestens wissen sollte, welche Daten man ausliest (peek) oder schreibt (poke).

Während man sich Assembler-Codes zum „Poken“ selbst kompilieren oder zusammenstoppeln kann, wüsste ich nicht, wie Java seinen Byte-Code für die JVM zusammenstellt. Da muss man sich als Java-Entwickler auf die Programmierer des Java-Systems und dessen JRE verlassen. Es heißt immer nur, die *.jar Datei laufe in einer „virtuellen Maschine“ – was immer das heißen mag … :-)

Antwort bewerten Vielen Dank für Deine Bewertung

Um verspätet meinen Senf dazuzugeben:

JAR ist NICHT das ausführbare Format von Java, sondern eine Sammlung von Javaobjektdateien, die dank dem intelligenten -jar switch etwas leicher auszuführen ist, als die eigentlichen Java-Objektdateien "CLASS".

Ich packe in meine Jars oft alle möglichen Assets mit rein.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?