We are right now. NET's comprehension can be summed up as: At first it was a clone of the Java platform (note that the platform, not confused with the Java language), and then slowly evolved, with its own characteristics. The most notable feature of the Java platform is "platform independence" (or the word "write once,run anywhere" that doesn't know who invented it). In theory, you can write a program that compiles and runs on any operating system that has a JVM installed. Most people think that. NET's emergence is to emulate the great concept of sun-platform independence, and thus compete with Java. And then some people don't know where to draw the conclusion that, even if there is a non-Windows platform like Mono. NET CLR, there are many. NET program can not be ported to other operating systems, such as WinForm almost can not be ported to Linux through Mono, so it came to a shocking conclusion: Microsoft even imitation is not imitation of integrity, incredibly is a pseudo-cross platform.
These are the most recent conclusions I have ever seen:. NET's Achilles ' heel is that it's not really a cross-platform. To this end, I have the following points:
(1). NET platform is not meant to support cross-platform, it appears only to optimize the traditional Windows development model, make Windows development more convenient and fast. It solves the COM age DLL The hell problem (. NET assembly Versioning), integrates multiple languages (convenient for a wide variety of programmers), and the Components (assemblies) written in each language can communicate without hindrance, set object-oriented and component-oriented in one, you can send from a component (DLL) Give birth to a new type without needing all the source code of that type (this unmanaged era is impossible), the real implementation of binary compatibility (you change one of the public members of the Assembly, if the client program using this assembly is not used to this public member, The client does not need to recompile at all, provides memory management that is not available in C + +, supports exception handling, and so on. Strictly speaking, Microsoft publishes. NET's first day is for its windows, there is no plan to let you write programs running on other operating systems (Microsoft has so far not released the official non-Windows platform of the. NET CLR).
(2) Again, the goal of the Java platform and the. NET two, the former from the beginning of the first thought: in the internet world, I want a language to run in any operating system, and the latter think: in the internet world, I want all the language to run in the same operating system (Windows). Two platforms the purpose of design from the outset is different.
(3) The emphasis of the two points is different:
For example, the red part is the function that other people extend out.
(4) as described in the above 3, the platform structure is similar, I do not know whether Microsoft has plagiarized Java, but it is certain that if the owners of the original intention, two platforms can be achieved "cross-platform" and "support multi-lingual". As for why it is not possible to use mono to port some. NET programs to Linux, which is easy to explain, Microsoft has no intention of porting. NET programs to other platforms, and some of the rich frameworks contained in. NET are closely related to Windows, and you use these frameworks to make it difficult to translate them into non-windows Code that can be executed in the platform. And, Java is not a complete cross-platform, it's about developing the framework you actually use. In the case of the above-mentioned cases, there are two key places, one is the framework you use for development, and the other is the CLR (or JVM) to see if the latter has the ability to translate the former into the executable code of the corresponding platform.
In summary, the focus of the two platforms is different.
---------------------------------------------Split Line------------------------------------------------------
November 17, 2014 update:
The above is a blog post written earlier. As far as Microsoft is determined. NET open source, and support multi-platform. Then 3) The red part of the left side of the picture is no longer a product of the image.
Above a little humble opinion, the topic is more sensitive, do not spray.
. NET support multi-platform after a point of humble opinion