Warum Java im Gegensatz zu C die Größe des Datentyps festgelegt hat

8

In C kann die Größe der Datentypen (zB int) je nach Compiler / Hardware variieren.

Aber warum ist die Größe der Datentypen in Java-Sprache konstant? Warum haben wir nicht die Flexibilität für unterschiedliche Datentypgrößen in Java abhängig vom Compiler?

    
Harish 05.12.2009, 14:53
quelle

8 Antworten

19

Die JVM (Java Virtual Machine) ist plattformunabhängig ausgelegt. Wenn die Datentypgrößen für verschiedene Plattformen unterschiedlich sind, wird die plattformübergreifende Konsistenz geopfert.

Die JVM isoliert das Programm von dem zugrunde liegenden Betriebssystem und der zugrunde liegenden Plattform. Dies kann das Leben für die Durchführung systemspezifischer Arbeit erschweren, aber die Vorteile sind, dass Sie schreiben können - einmal, überall - das ist weitgehend richtig, mit einigen unglücklichen Problemen. Einmal schreiben, testen - überall ist ein viel praktischer Ansatz ).

    
Brian Agnew 05.12.2009, 14:58
quelle
14

Wenn die Größe des Datentyps auf verschiedenen Plattformen variiert, verlieren Sie die Portabilität.

    
Buhb 05.12.2009 14:55
quelle
3

Um eine wirklich umfassende Antwort darauf zu erhalten, müssten Sie eine Menge historischer Lektüre aus den frühen Tagen von Java machen. Natürlich hätten die Designer ein komplizierteres primitives System einbauen können. Als Java jedoch auf die breite Bühne kam, war es auf Applets ausgerichtet. Code, der in einem Browser ausgeführt wird und komplexe UIs organisiert, musste (und muss nicht) wissen, ob er auf dem berüchtigten MNS-49 (7 7-Bit-Zeichen pro Wort) oder dem Honeywell 68000 (4 9 - Bit Zeichen pro Wort), oder ein langweiliger moderner Prozessor. Es ist viel wichtiger als jeder andere Bit-Arithmetik in int programmieren kann und weiß, was nach 32 Schichten passieren wird.

    
bmargulies 05.12.2009 15:00
quelle
1

Die Flexibilität von C hat einige Vorteile (reduzierter Speicher- / Speicherverbrauch, wenn Sie 32 anstelle von 64 Bit verwenden), aber diese Vorteile tendieren dazu, weniger relevant zu werden, wenn sich die Hardware verbessert (dies wurde in den 70er Jahren entworfen) / p>

Diese Flexibilität ist jedoch mit starken Interoperabilitäts- und langfristigen Sehproblemen verbunden (Y 2038 Fehler).

Im Gegensatz dazu hat ein Java-Objekt sowieso einen gewissen Speicheraufwand. Das Speichern von 4 Bytes auf jedem Date-Objekt wäre also ziemlich sinnlos und nur mühsam.

    
Zorglub 05.12.2009 14:56
quelle
1

Weil das Java ist. Weitere Informationen finden Sie in der Java-Sprachspezifikation .

    
michael.kebe 05.12.2009 14:57
quelle
1

Die Idee von Java war "Einmal schreiben, irgendwo ausführen" ohne erneut zu kompilieren. Das bedeutet, dass jede VM dieselbe Datengröße hat. Natürlich werden auf 64-Bit-Rechnern 64-Bit-Referenzen verwendet, auf die Sie jedoch keinen Zugriff haben.

Es funktioniert ziemlich gut, aber eine Sache, die ich mir wünsche, ist der Wunsch, wir könnten 64-Bit-Array-Indizes bekommen. Das war damals nicht wirklich wichtig, aber für große Speicherkarten ist es ein großer Schmerz. Sie müssen sie in 2 GB-Stücke aufteilen.

    
Chad Okere 05.12.2009 15:40
quelle
0

c Sprache hat ihren eigenen Vorteil, die Größe des Datentyps zu variieren. Der Hauptspeicher ist nicht zu viel ... jeder Programmierer muss Code schreiben, der platzoptimiert ist.

Heutzutage ist Platz kein Problem mehr ... ein portables Programm ist viel vorzuziehen.

Warum java portable java macht keine unterschiedliche Größe Datentypen

    
Naren 16.07.2013 09:39
quelle
0

weil Java plattformunabhängig ist. Deshalb ist in Java die Größe des Datentyps festgelegt.

    
user3851804 18.07.2014 06:23
quelle

Tags und Links