InfoQ

News

Minimal Mono Runtime Smaller than Python

Posted by Jonathan Allen on Jul 17, 2007 10:41 AM

Community
.NET
Topics
Silverlight
Tags
Mono,
Moonlight

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.

8 comments

Reply

Interesting comparison. by Porter Woodward Posted Jul 17, 2007 12:15 PM
Re: Interesting comparison. by Jonathan Allen Posted Jul 17, 2007 1:12 PM
What a great comparison! by Jason Carreira Posted Jul 17, 2007 3:33 PM
Unfair Comparison by Ben Loud Posted Jul 17, 2007 5:56 PM
Re: Unfair Comparison by Jonathan Allen Posted Jul 18, 2007 4:21 AM
Consumer JRE by James Tikalsky Posted Jul 18, 2007 7:26 AM
Re: Unfair Comparison by Ben Loud Posted Jul 18, 2007 6:30 PM
Java runtime 18 MB on Linux and 14 MB on Windows by Florian Fankhauser Posted Jul 20, 2007 10:45 AM
  1. Back to top

    Interesting comparison.

    Jul 17, 2007 12:15 PM by Porter Woodward

    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.

  2. Back to top

    Re: Interesting comparison.

    Jul 17, 2007 1:12 PM by Jonathan Allen

    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.

  3. Back to top

    What a great comparison!

    Jul 17, 2007 3:33 PM by Jason Carreira

    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".

  4. Back to top

    Unfair Comparison

    Jul 17, 2007 5:56 PM by Ben Loud

    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.

  5. Back to top

    Re: Unfair Comparison

    Jul 18, 2007 4:21 AM by Jonathan Allen

    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.

  6. Back to top

    Consumer JRE

    Jul 18, 2007 7:26 AM by James Tikalsky

    Chet Haase has written about the details of the Consumer JRE: Consumer JRE: Leaner, Meaner Java

  7. Back to top

    Re: Unfair Comparison

    Jul 18, 2007 6:30 PM by Ben Loud

    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.

  8. Back to top

    Java runtime 18 MB on Linux and 14 MB on Windows

    Jul 20, 2007 10:45 AM by Florian Fankhauser

    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

Exclusive Content

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.

Using Ruby Fibers for Async I/O: NeverBlock and Revactor

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.

Agile and Beyond - The Power of Aspirational Teams

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.

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

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 On Programming Languages and Platforms

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#.

Future Directions for Agile

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 on JRuby

Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.