Benutzer Diskussion:Messi
aus Wikipedia, der freien Enzyklopädie
[Bearbeiten] Java: Big-Endian und 8 Bit
Hallo Messi,
Du hast mit der Version vom 05:28, 5. Okt 2005 im Artikel Java-Syntax meine Änderungen rückgängig gemacht mit dem Hinweis, dass dies schon richtig sei. Daher meine Frage: Woher beziehst Du Dein Wissen? Weder die Angabe zu Big-Endian, noch die Angabe, dass ein Boolean 8 Bit groß ist, finde ich in der Java-Spezifikation.
--Tobias.haustein 13:40, 6. Nov 2005 (CET)
- Ich beziehe mein Wissen aus der JLS und aus der VMSpec. Dort steht, dass
boolean
intern alsbyte
gespeichert werden. Außerdem ist die Byte-Order mit Big-Endian vorgeschrieben, damit der Bytecode auf jeder Plattform lesbar ist. --messi 11:13, 8. Nov 2005 (CET)
Das ist richtig, aber Deine Formulierung ist aus meiner Sicht missverständlich. Die Sprachspezifikation der Programmiersprache Java legt weder 8 Bit noch Big Endian fest. Beides sind Implementierungsdetails der Java VM, welche nicht Teil der Sprache ist! In der Java VM steht, dass boolean auf den Datentyp int bzw. boolean-Arrays auf byte-Arrays abgebildet werden. Ich vermute, dass Du daraus die 8-Bit interpretierst. Mehr Hinweise darauf habe ich jedenfalls nicht gefunden. Zum Big Endian: Deine Formulierung legt nahe, dass intern immer Big Endian verwendet würde. Das ist aber (natürlich) nicht so, denn sonst wäre eine effiziente Implementierung einer VM auf Little Endian-Systemen unmöglich. Es ist nur definiert, dass im class-Dateiformat Big Endian gespeichert wird. Das hat aber weder etwas mit der Sprache, noch mit der VM zu tun, sondern nur mit dem Dateiformat. Das mag übertrieben penibel klingen, aber es ist ein für das Verständnis sehr wichtiges Detail. Übersehe ich etwas?
--Tobias.haustein 01:07, 8. Jan 2006 (CET)