8

I am curious; can Java be referred to as a managed language? I am mainly thinking about the Microsoft model when it comes to unmanaged versus managed code (say native vc++ to C#). With the similarities between C# and Java as high-level languages, is it correct to call Java a managed language as well?

1
  • 4
    Please define "managed language". It's impossible to answer this question without a precise definition of what a "managed language" is. Apr 29, 2011 at 18:16

2 Answers 2

21

Yes. Java is considered a managed programming language as it's sandboxed well by the JVM. But the term "managed code" is microsoft specific.

8
  • 1
    @S.Lott Mono also uses this terminology on non-Windows platforms. So no, not “Windows-Only”. Apr 29, 2011 at 14:47
  • 4
    @S.Lott I think Microsoft uses “managed code” more as an umbrella term rather than tying it to a specific implementation (IL, CLR). I may be mistaken though. “Managed” for me simply implies that execution of the code is “safe” because it relies on checking of pointer accesses etc. By that definition, JVM execution would also be managed. Apr 29, 2011 at 15:04
  • 2
    @Konrad: I agree -- "managed" is much more a marketing term than a technical one. I'd go a bit further though: programmers and programming projects are largely considered nearly unmanageable, and I think the real intent is to imply that if you use Microsoft's "managed" (code, or whatever) that both will become more manageable -- and, incidentally, the managers will become a more important part of projects as well. In short, Microsoft is marketing directly to the people who control the money instead of to programmers, and hoping they'll convince the managers to buy from Microsoft. Apr 29, 2011 at 16:12
  • 1
    From that viewpoint, I'd say that yes, Java is similar. Both take the position that programmers are incompetent, untrustworthy, and need to be "controlled". Both also basically define "management" as being carried out by force -- rather than persuading somebody to do things well, they assume that what's being managed will do as much wrong as possible, so the "manager" must ensure against everything they've defined as "wrong". In short, both are intended to appeal to the basest instincts of the worst managers. Apr 29, 2011 at 16:23
  • 7
    Neither Java nor .Net assume incompetence on the part of developers, they just abstract away memory management. The term managed code comes form automatic memory management, i.e. garbage collection. It's not a marketing term (".Net" is the marketing term).
    – Steve
    Apr 30, 2011 at 10:08
9

Yes. A managed language is a language that runs in its own container.

Java is a managed language because you've got the JVM and in .NET you've got the CLR.

The term "managed code" seems to be something Microsoft specific, have a look at the following wikipedia article.

3
  • 3
    I don’t think any definition of “managed” actually hinges on the presence of a garbage collector. Apr 29, 2011 at 14:28
  • 2
    @Konrad: I've updated my answer.
    – Kevin
    Apr 29, 2011 at 14:30
  • The last paragraph of this answer seems to contradict the other two. The wikipedia article is pretty specific about "managed" relating to the CLR VM, not just any VM Sep 9, 2015 at 15:44

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