Mungkin kita harus membandingkan apel dengan apel dan jeruk dengan jeruk. JRE adalah runtime, bukan kit pengembang. Kita dapat membandingkan: ukuran sumber kit pengembangan, ukuran kit pengembangan yang dikompilasi dan ukuran yang dikompilasi dari runtime minimal.
Bundel sumber OpenJDK 7 adalah 82 MB (unduh.java.net/openjdk/jdk7) vs bundel sumber GHC 7, yaitu 23 MB (haskell.org/ghc/download_ghc_7_0_1). GHC tidak besar di sini. Ukuran runtime: openjdk-6-jre-headless di Ubuntu adalah 77 MB terkompresi vs Haskell helloworld, secara statis dikaitkan dengan runtime-nya, yaitu <1 MB. GHC tidak besar di sini.
Di mana GHC besar, adalah ukuran kit pengembangan yang dikompilasi:
GHC sendiri membutuhkan 270 MB, dan dengan semua perpustakaan dan utilitas yang menyatukannya dibutuhkan lebih dari 500 MB. Dan ya, banyak, bahkan dengan pustaka dasar dan pengelola alat / dependensi. Platform pengembangan Java lebih kecil.
GHC:
$ aptitude show ghc6 | grep Size
Uncompressed Size: 388M
terhadap OpenJDK penarikan kembali:
$ 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
Tapi itu masih lebih dari 100 MB, bukan 26 MB saat Anda menulis.
Hal-hal berat dalam ghc6 dan ghc6-prof adalah:
$ 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
Harap perhatikan seberapa besar libHSghc-6.12.1_p.a
. Jadi jawabannya tampaknya menghubungkan statis dan membuat profil versi untuk setiap perpustakaan di luar sana.