一、前言
差不多一年前写过一篇博客——.NET是个啥。
那篇博客基本上就是按照官方文档的翻译,并加入一些自己的理解和吐槽来写的。现在回过去看呢,虽然内容全面,但是停留在表面。(相当于回答了它是什么,它包含了什么)
什么意思呢?
通过那篇博客,可以知道.NET是微软的开发平台,它包含各种各样的工具。
但是,微软为什么要开发这样一个平台?这个平台是怎么实现的?和其他平台/技术(如Java)有什么不一样?
这些拓展的问题,似乎并没有办法得到解答。
本文主要围绕这几个问题,来讨论、进一步认识.NET。
二、.NET是个啥
.NET,它是微软创建的一个用于构建多种不同类型的应用程序的开发人员平台。
1 微软为什么要开发.NET平台
这个问题比较好理解。
我们都知道微软早期在PC操作系统市场几乎是垄断的。
电脑/计算机光有操作系统可不行,上面还得有应用软件啊。当然,微软自己不可能开发出用户需要的所有软件。虽然不能开发出所有软件,但可以开发一个平台,让有需要的人用该平台来开发软件,这样归根到底还是用了微软的技术,命脉(上层技术/元技术)还是掌握在微软手中。
当然,归根到底还是钱。占有市场,基于已有业务(OS)拓展新业务(应用软件)。
实际上这一步也不得不走,因为Java是1995年面世的,.NET是2000年出现的,而95年到2000年Java相当火爆。如果.net迟迟不出现,微软可能受到严重打击,失去相当一部分软件市场。可见.NET的出现是为了与Java抗衡。
最终,因为.NET的出现,至少在PC端桌面应用上,微软保住了霸主地位。至于其他方面(移动端、网页端),微软因为布局问题并不占优势。
至于为了程序员开发程序变的容易这一说,这是.NET必须达到的(.NET得做的好用,才有人去用;不然人人写汇编开发应用不就好了)。这不是.NET出现的原因,微软又不是搞慈善的。
2 .NET是怎么实现的
或者说是什么语言编写的。
这里提到的.NET当然不是指整个.NET平台,更像是专指CLR。
在这之前,先谈谈C语言的编译过程,大家应该都不陌生。
简单讲就是,预处理=>编译=>汇编=>链接。
它是一个将高级语言代码转换为计算机可理解的机器码的过程。
那显然,.NET最终也要生成计算机可理解的机器码,所以必然会经过其中一个或几个过程。一种更高级(这个高级不是说该语言多么先进,多么优越;而是指抽象层次更高)的语言(语言的编译器),通常是由更底层的语言来编写实现的。.NET的这个核心运行环境CLR也不例外,它是由C/C++以及汇编来编写完成的。
有了自举这个概念后,再问.NET平台(这次指整个平台)是啥编写的?答案就很花了,C、C++、C#、汇编等等。
3 .NET和Java有何不同?
.NET是个开发平台;Java是一种编程语言。
两者没啥可比性,硬要比的话应该是C#和Java比。
不过平时口头上(有时候会把C#和.NET等同起来),确实会出现拿这两者作比较,这个时候通常是讲.NET相关技术和Java相关技术比较。
因为两者确实有很多对应的技术,比如.NET有ASP,Java有JSP;桌面端.NET有WinForm、WPF,Java有swing、Javafx等。当然它们各有千秋,有些技术不适应环境已经快被淘汰了。
总之,我认为两者各有千秋,C#在工业领域应用广;Java在企业应用广。从当下国内大环境来讲,Java是热于C#的,不过这不是C#的问题,是生态、历史等多因素造成的。同时,Java求职市场也更卷,国内大厂应用多。
三、 结语
严格来讲,这篇博客有点跑题了。
不过以上几点拓展认识对全方位了解.NET还是有促进作用的。