Sans doute nous faut comparer des pommes avec des pommes et des oranges les oranges. JRE est un moteur d'exécution, pas un kit de développement. Nous pouvons comparer: source: la taille de la trousse de développement, la taille de la compilation du kit de développement et la compilation de la taille de l'exécution minimale.
OpenJDK 7 de la source de faisceau est de 82 MO (download.java.net/openjdk/jdk7) vs GHC 7 source bundle, qui est de 23 MO (haskell.org/ghc/download_ghc_7_0_1). GHC n'est pas grand ici. Runtime taille: openjdk-6-jre-headless sur Ubuntu est de 77 MO décompressé vs Haskell helloworld, statiquement lié à son exécution, qui est <1 MB. GHC n'est pas grand ici.
Où GHC est gros, c'est la taille de la compilation du kit de développement:
GHC lui-même prend 270 MO, et avec toutes les bibliothèques et utilitaires livrés ensemble, il prend plus de 500 MO. Et oui, c'est beaucoup, même avec des librairies de base et un outil de construction/dependency manager. Java plate-forme de développement est plus petit.
GHC:
$ aptitude show ghc6 | grep Size
Uncompressed Size: 388M
contre OpenJDK withdependencies:
$ 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
Mais il est encore plus de 100 MO, pas de 26 MO comme vous l'écrivez.
Poids lourd de choses dans ghc6 et ghc6-prof:
$ 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
Veuillez noter quelle est la taille de libHSghc-6.12.1_p.a
. La réponse semble donc être la liaison statique et le profilage des versions pour chaque bibliothèque.