Wahrscheinlich sollten wir Äpfel mit Äpfeln und Orangen mit Orangen vergleichen. JRE ist eine Laufzeit, kein Entwickler-Kit. Wir können vergleichen: Quellgröße des Entwicklungskits, Größe des kompilierten Entwicklungskits und kompilierte Größe der minimalen Laufzeit.
Das OpenJDK 7-Quellpaket umfasst 82 MB (download.java.net/openjdk/jdk7) und das GHC 7-Quellpaket 23 MB (haskell.org/ghc/download_ghc_7_0_1). GHC ist hier nicht groß. Laufzeitgröße: openjdk-6-jre-headless unter Ubuntu ist 77 MB unkomprimiert gegenüber Haskell helloworld, statisch verknüpft mit seiner Laufzeit, die <1 MB ist. GHC ist hier nicht groß.
Wo GHC groß ist, ist die Größe des kompilierten Entwicklungskits:
GHC selbst benötigt 270 MB und mit allen Bibliotheken und Dienstprogrammen, die zusammenkommen, mehr als 500 MB. Und ja, es ist viel, selbst mit Basisbibliotheken und einem Build-Tool / Abhängigkeitsmanager. Die Java-Entwicklungsplattform ist kleiner.
GHC:
$ aptitude show ghc6 | grep Size
Uncompressed Size: 388M
gegen OpenJDK mit Abhängigkeiten:
$ aptitude show openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless ant maven2 ivy | grep Size
Uncompressed Size: 34.9M
Uncompressed Size: 905k
Uncompressed Size: 77.3M
Uncompressed Size: 1,585k
Uncompressed Size: 3,736k
Uncompressed Size: 991k
Aber es sind immer noch mehr als 100 MB, nicht 26 MB, während Sie schreiben.
Schwergewichtige Dinge in ghc6 und ghc6-prof sind:
$ dpkg -L ghc6 | grep '\.a$' | xargs ls -1ks | sort -k 1 -n -r | head -3
57048 /usr/lib/ghc-6.12.1/ghc-6.12.1/libHSghc-6.12.1.a
22668 /usr/lib/ghc-6.12.1/Cabal-1.8.0.2/libHSCabal-1.8.0.2.a
21468 /usr/lib/ghc-6.12.1/base-4.2.0.0/libHSbase-4.2.0.0.a
$ dpkg -L ghc6-prof | grep '\.a$' | xargs ls -1ks | sort -k 1 -n -r | head -3
112596 /usr/lib/ghc-6.12.1/ghc-6.12.1/libHSghc-6.12.1_p.a
33536 /usr/lib/ghc-6.12.1/Cabal-1.8.0.2/libHSCabal-1.8.0.2_p.a
31724 /usr/lib/ghc-6.12.1/base-4.2.0.0/libHSbase-4.2.0.0_p.a
Bitte beachten Sie, wie groß ist libHSghc-6.12.1_p.a
. Die Antwort scheint also statische Verknüpfungs- und Profilversionen für jede Bibliothek da draußen zu sein.