Why there is no open source framework (like Java) for C# application development? [closed]
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
开发者_JS百科 Improve this questionC# is much more popular than Java in recent years. As a general-purpose programming language, many people feel that C# is better designed than Java.
Why until now there is no open source framework for C# application development? Why no one take the initiative to develop a open source framework for C# which is comparable to Java?
(Many people say Mono is not a mature framework and should not be used in serious application development.)
Not really sure what the question is - are you asking why there is no open source version of the full .net framework?
The answer is that the framework is HUGE, involving the full-time commitment of literally thousands of people. Replicating all that - including the bugs - so that .net programs could be reliably run across all platforms is simply impossible.
However, implementations of the base-class library (BCL) are available. Aside from Mono, there is also DotGNU
In addition, parts of the .net library itself are "open source," though not in the traditional sense (the source can be viewed, but not used).
While some people might claim that Mono is not mature enough for production code, that doesn't change the fact that Mono is an open-source framework for C# development, so the claim in your question's title is clearly not correct.
As to why there are no other open-source C# (.NET) frameworks around -- why should anyone bother creating a 2nd open-source .NET platform from scratch when they could just as easily invest their time in improving Mono? Do we really need two open-source .NET platforms?
Update: When I wrote this answer, I didn't yet know that some people at Microsoft actually did put out a sort-of open-source implementation of the CLI: the Shared Source CLI (SSCLI), also known as Rotor. In hindsight, I think this deserves a mention here, to support the argument by others that there are other alternative CLI implementations apart from Mono.
Apart from those considerations, I think this question probably asks for fairly subjective answers.
I'd be interested in who those "Many people" are; Mono is a considerable achievement, with serious backing (Novell) and also gets assistance from Microsoft. It is used in many serious and commercial applications. There would be little benefit in duplicating this huge amount of work.
The Mono CLI implementation is pretty solid. There are certainly some gaps in libraries (WPF, for example) - but that is a strategic decision; the plan there is to track Silverlight, and bring Moonlight up until the inevitable point when WPF and Silverlight are largely indistinguishable.
There are also several things that are in advance of Microsoft's .NET implementation; full AOT, for example, or the compiler-as-a-service (managed compiler).
You have mono on the server, on the desktop, in the browser (Moonlight) and on the mobile (Android and iPhone, 3.3.1 aside) - possibly other places too.
I think it's because most open source projects get started because there isn't a similar product available or in some cases a free product. In this case Visual Studio Express editions are very capable and free so there's not the incentive to create an open source development tool as there are in other languages/platforms. I expect if Express goes away or starts to have a cost associated with it then an open source project will develop.
精彩评论