Is there a .NET-like managed code programming environment in Linux? I've heard of Mono, but I don't see it extensively used -- even now Python can be seen used in most open source projects.


By managed code I meant for a pure object-oriented language (Java isn't). What I did find is QT framework, which supports almost everything that I know, even web applications using widgets named WT. I guess I found what I needed; it has everything.

  • 1
    If you found what you're looking for, post it as an answer and accept it instead of editing it into the question – Michael Mrozek Oct 18 '11 at 12:39
  • 4
    I struggle to find any sane definition of “managed code” (in a sense that isn't specific to running on Windows) or “pure object-oriented language” that includes C# and not Java. Even more so if the C++-based QT fits the bill. – Gilles Oct 18 '11 at 17:23
  • I use Mono by Xamarian and I program in C# instead of bash on Linux. You can use GO from Google also. – Anton Andreev Oct 2 '14 at 13:16

It depends on how you understand the term "managed code". As wikipedia describes it, this is generally a Microsoft concept, so no other platform could really be counted in.

Otherwise, if you mean generally languages that compile to an intermediate code that needs a Virtual Machine or an interpreter to be run, then most of such languages can be used cross-platform. If that is what you aim at, then there is a number of choices: form Java, through Ruby on Rails all the way to lua and alike.

  • Thanks rozcietrzewiacz, I see that managed code is not that a simple term. While I was googling for I found that basically what I want is a pure object oriented language like C#. – Arvind Singh Oct 18 '11 at 11:51
  • 7
    In what sense [that C# is] is Java not a "pure" OO language? – Random832 Oct 18 '11 at 15:02
  • to be fair, mono doesn't use primitives, and arrays are more like collections. In that sense, mono, or c# if you prefer, have a leg up. – Thufir Jan 17 '17 at 14:19

It depends on what you want. If you want to work with .Net, Mono is your best bet. It's a clone of .Net that covers a lot of the feature set of that environment. People build production systems on it.

Java support on Linux is very mature and Java on Linux is a major platform. Between Redhat, the Apache Foundation, Eclipse and various others the open-source tool support for Java is pretty strong. Linux is also a tier-1 platform for commercial java players like Oracle and IBM.

The language and type system of Java and the JVM are quite similar to C# and .Net, although the standard libraries are different. Many third libraries for one sytem have clones on the other, such as Hibernate and NHibernate.

You will find Java support on Linux to be much greater than Mono, so if you want to develop against that type of environment on Linux you might be better off using Java. Having used both Java and .Net to a greater or lesser extent, I don't think it would be that hard to go from one platform to the other, although ASP.Net and J2EE have idiomatic differences that will probably affect your approach to application design.

There is an open source VM called Parrot but it doesn't really have that much of an ecosystem around it in the way that Java or .Net does.

Most open-source lanugages such Python offer native interpreter or JIT compiler implementations, but they tend to be language specific. There are also versions of Python, Ruby and various other languages targeted at third party VMs such as the CLR or JVM. For example, third-party implementations of Python are available that target both the CLR (IronPython) and JVM (Jython).

Some languages such as Boo or Groovy are specifically designed to support a specific VM with design features such as type systems tailored for that VM.


Assuming you mean what rozcietrzewiacz describes, why the desire to have something which runs in a VM? 'C' (especially if you are using automake) is almost completely portable across different POSIX environments, and even without automake will easily be portable across different Linux distros / architectures. However you can run into problems with overflows and null pointer derencing (not that p-code systems are immune from the latter). Perl, PHP, Python and Ruby are portable too (even to non-POSIX systems). Yes, these are interpreted (or at least not pre-compiled) but IME that's not nearly as big a deal as some people make out (unless you're Google or Facebook)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.