VMware Infrastructure 3 Book Excerpt and Author Interview
VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.
Tracking change and innovation in the enterprise software development community
Posted by Jonathan Allen on Jul 17, 2007 10:41 AM
Runtime sizes are not very important for established technologies. Once a technology is so widely distributed that a typical user would be surprised to not find it on a machine, the download costs are mostly ignored.
With newer technology, that is not the case. Even mainstream platforms like Java are not ubiquitous and with a minimum footprint of 95 MB, users often balk at downloading it just to use a small utility.
Miguel quotes the full installation of Mono at a hefty 78 MB. When other related libraries like Gnome# and Gtk# are included, it jumps to 250 MB. But these are full installations, what about the bare-bones minimum?
Mirco Bauer, who maintains the Mono package on Debian Linux, has split the Mono runtime in such a way that the minimal installation is a mere 7 MB. This is of course just the runtime itself and the necessary libraries for non-GUI, "Hello World" style applications.
He compares this to the minimum size of Python, which weighs in at 13.4MB on the hard drive. As for Java, Mirco Bauer says:
So and Java? Here it becomes a bit unfair as SUN's license is not allowing to ship parts of a Java runtime. So the Java package in a distribution is one package. 34.5MB to download and 95.2MB on the harddisk. Yes, that's alot, but thats the smallest install you can get when you want to run anything on it.
On a final note, Miguel is estimating the final size for Moonlight, the Linux implementation of Microsoft's Silverlight, will be approximately 8 to 9 MB on disk.
IBM software architect eKit: Grady Booch podcast, whitepapers, articles
Gamma's Jazz platform's first implementation: Rational Team Concert (Trial Download)
The End of Middleware: Freedom from IT Stacks as we know it
Hacking 101 -The Top 10 Attacks in Web Applications
The Agile Business Analyst: Skills and Techniques needed for Agile
A stripped down, non-GUI capable version of Mono is 7 MB, and without GTK+ (the common GUI lib) Python is 13.4MB. Yet no attempt is made at a stripped down Java install - instead just taking it at face value that it is 95.2MB. I'm not certain, but a quick look at the JRE 1.6 directory (80MB in size on disk under Windows) shows that there's a fair bit one could strip away... I'm not convinced that you _need_ keytool.exe, and a host of the other tools, such as jucheck.exe (the task bar tool that autoupdates the java install). It's pretty easy to come up with wins when you set the criteria and don't make a real effort to compare apples to apples.
An apples to apples comparison would be nice, but as Mirco said, "Here it becomes a bit unfair as SUN's license is not allowing to ship parts of a Java runtime.". A striped down version of the Java runtime that one can't distribute isn't worth much except as a curiosity. Of course, that all changes if Sun decides alter the license or we start seeing open source implementations that allow for minimal installations.
God knows in my server-side applications I'm always thinking "If the runtime were just smaller, I could deal with less functionality, less stability, and less performance".
As other comments have said, its unfair to compare a version of Mono without GUI support to the feature full JDK. Even so, the numbers aren't accurate. A quick check of java.sun.com shows that Java SE 6 Update 2 Runtime Environment Linux RPM is in fact less than 18MB, not 34.5 as the article claims (note: the Windows download is 4MB smaller still, at under 14MB). Besides, keep an eye on the Comsumer JRE due later this year, which will make the initial download size a fraction of this, certainly much less than 7MB.
I have to admit that I am a bit confused by your comment. Besides the fact that the article doesn't actually compare the JDK with Mono, it specifically mentions that such a comparison would not be fair. That said, the Comsumer JRE does sound like an interesting development. I have to admit that, being on the .NET desk, I don't have a chance to follow Java nearly as closely as I would like.
Chet Haase has written about the details of the Consumer JRE: Consumer JRE: Leaner, Meaner Java
JDK was a typo, should read JRE. Anyway, reading Miguel's blog, his quote of Java download size was referring to the Debian packages, and looking them up, sure enough they are huge because they package it in their own way. On other platforms, with the RPM or the self extracting binary, the download size is far more reasonable at around 18MB, which is what I was referring to (and 14MB on Windows). It's able to compress this well because of Java's Pack200 classfile compression which works wonders (and it will make the download size of your Java apps tiny too) But yes its tricky to compare as Miguel says, the Mono install includes the dev tools (for some reason...). But I wasnt making a comparison, I just wanted to clear up confusion over the download size. After unpacking, the quoted size is about right.
I checked the sun java download page and found out that your data is inaccurate. The Java Runtime download is on Linux smaller than 18MB, on windows it's even below 14MB. Regards, Florian
VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.
8 comments
Reply