.NET的一点历史故事:招兵买马和聚义山林

曾几何时,Java 的兴起得益于众多大公司的涌入,Sun、IBM、SGI、网景、甲骨文、Borland 都在第一时间关注并投入大量资源来推动它的发展。比较典型的例子就是 IBM 做了自己的 Java SDK,并且做出了 SWT 界面框架,后面又开源了自己的 Visual Age for Java 开发工具,建立了 Eclipse 这个影响深远的平台。微软通过 Visual J++ 在 Java 这个领域插了一脚之后,很快就被 Sun 领头的大集团扫地出门。

从1998年10月6号到2000年6月22号,微软在开发工具领域就进入了一个缄默期,缺乏新鲜东西。而这个阶段,Java 正借着 J2EE 平台的不断升级在企业计算领域攻城略地。所以当微软终于在 Fortune 2000会议上由 Bill Gates 公布全新 .NET 平台战略时,对于熟知 Java 的程序员来说,明显绑死在微软 Windows 平台上的这些新技术即使看起来很美好,却并没有什么广大的前景。只有从 Windows 这只碗里取食的开发者,才会真正严肃的考虑它所带来的改变。

  • 全新设计的 C# 语言,兼有 Java 的严谨,Visual Basic 的简练,和 C++ 的全面。

  • 为 Visual Basic 社区开发了真正面向对象的 Visual Basic .NET 语言,和代码迁移路径。

  • 为 J++ 和 Java 社区开发了具有一定兼容性的 J# 语言。

  • 为 C++ 社区开发了 Managed C++ 扩展。

  • CLR 和 MSIL 和单一编程语言解耦,潜在支持更多的编程语言。

  • 语言和虚拟机的设计考虑了很多和既有技术(ActiveX、COM、COM+、DCOM、Win32 API)的集成问题,从而能够快速用来开发桌面、服务器端应用程序,完全取代老版本的 Visual C++ 和 Visual Basic。

在开发这个产品的漫长过程中,微软投入了不少明星研发人员,如 Anders Hejlsberg。Anders 在供职于 Borland 公司的十几年内,成功领导了 Turbo Pascal 和 Delphi 两个重量级产品的开发工作。而在加入微软公司后,又在 Visual J++ 6.0 和 C# 语言开发过程中发挥了关键作用。C# 语言可以看过是 Java/Delphi/Visual Basic三种语言的融合,汇集了三者的精华,所以也很快流行起来。

同时,也有新鲜血液在这个研发过程中脱颖而出,例如1997年5月才从 Duke 大学毕业的 Scott Guthrie 由于领导了 ASP.NET 框架的设计而受到关注。1999年11月他晋升为 ASP.NET 的 Lead Program Manager,而2001年1月就升为微软 Web Platform and Tools 的 Product Unit Manager,开始掌舵 Web 相关开发技术的研发。当然由于出色的领导才能,Scott 在后面的岁月里步步高升,如今已经是微软公司核心领导层不可或缺的支柱。

不过即使准备如此充分,甚至从2000年起微软就先后发布了多个测试版本以便开发者熟悉和了解这个新的技术平台,2002年2月13日正式发布的 .NET Framework 1.0 和 Visual Studio .NET 2002 也并没有覆盖到一个开发者日常开发所需要的所有工具层面。这个关键时候微软技术社区及时的填补了空白。几个很早就由社区领导的项目在这方面显得尤为重要:

  1. NUnit 单元测试框架早在2000年6月便出现了。早期是 JUnit 的简单模仿,而后期开始使用 attributes 等 .NET 独有的特性来简化用户体验。

  2. SharpDevelop 开源 IDE 于2000年9月11号开始启动,提供了一个免费而且比 Visual Studio 更加轻量级的开发工具。

  3. 2000年11月,GNOME 项目的领导人 Miguel de Icaza 考虑将 .NET 和 C# 带到 Linux 操作系统,使得 CLR 和 MSIL 成为跨平台的技术。Mono 项目应运而生,并与2001年6月30号正式启动。

  4. 2001年1月 Lutz Roeder 开始发布免费的 .NET Reflector 反编译工具,使得反向工程他人代码成为一个十分简便的过程。

  5. 2001年6月,Neoworks Limited 公司开始模仿 log4j 项目来开发 log4net,并与2004年2月将它捐赠给 Apache 基金会。

  6. 2001年7月5日,Gerry Shaw 启动了 NAnt 项目,尝试模仿 Ant 项目建立一个适合 .NET 项目的编译引擎。

  7. 2001年9月29日,Kral Ferch、Jason Diamond等人启动了 NDoc 项目,灵感来自 JavaDoc。

微软也建立了一个名为 GotDotNet 的站点来聚合这些社区项目,以及数以百计的范例代码。

这个阶段的 .NET 依然处于一个十分初级的阶段,表现为

  • 模仿 Java,尤其是社区项目基本都是 Java 领域对应项目的克隆。

  • 微软设计的 Windows Forms 和 ASP.NET 框架虽然简便易用,和 Windows 平台已有技术的集成也很完善,但完全绑定在 Windows 平台上。

  • 更为重要的是,微软没有能够设计出可以比拟 J2EE 平台的企业级开发框架。 

在后来的数年之中,Java 技术一直在广度上压过 .NET 一头,很多新兴技术例如 Hadoop 都使用 Java 开发。这既于 Java 跨平台的天生优势有关,也得益于 Sun 多年后开源 Java 平台的努力。

微软未来将会如何推动 .NET 平台的发展呢?下节我们继续回顾。


相关文章:

  • .NET 的一点历史往事:和 Java 的恩怨

原文地址:http://weibo.com/ttarticle/p/show?id=2309404102044121223524


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

教你用 3 台机器搞定一个 Redis 高可用架构

转载自 教你用 3 台机器搞定一个 Redis 高可用架构 基于内存的 Redis 应该是目前各种 Web 开发业务中最为常用的 key-value 数据库了。 我们经常在业务中用其存储用户登陆态(Session 存储),加速一些热数据的查询(相比较 MySQL…

调用函数的返回值和函数对象本身

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <script>function fun3() {function fun4() {alert("我是fun4");}//将fun4函数对象…

Mybatis主要内容

mybatis 框架 共四天 第一天 mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 自定义mybatis框架&#xff08;目的为了了解mybatis中执行细节&#xff09;。 第二天 mybatis基本使用 mybatis的单表crud操作 mybatis的参数和返回值 mybatis的dao编写 mybatis配置细…

使用java解析XML文件的步骤

以前的时候&#xff0c;也解析过&#xff0c;今天又拿出来解析就让忘记怎么解析了&#xff0c;后来在网上查还有自己想&#xff0c;终于解析出来了&#xff0c;下面就是原XML文件&#xff1a; accp.xml <?xml version"1.0" encoding"UTF-8"?> <…

世界上最大的搜索引擎公司 Google 宣布与 Elastic 达成战略合作协议

和大家的直觉反应比较不同&#xff0c;但谷歌&#xff0c;这家业界首屈一指的互联网搜索公司&#xff0c;要向她的云平台里加入新的搜索服务了。谷歌云平台一直向企业客户出租计算、存储和网络等服务&#xff0c;现在谷歌则要与Elastic公司合作&#xff0c;为谷歌云提供新的搜索…

sleep( ) 和 wait( ) 的这 5 个区别,你知道几个

转载自 sleep( ) 和 wait( ) 的这 5 个区别&#xff0c;你知道几个 sleep(休眠) 和 wait(等待) 方法是 Java 多线程中常用的两个方法&#xff0c;它们有什么区别及一些该注意的地方有哪些呢&#xff1f;下面给大家一一分解。 区别1&#xff1a;使用限制 使用 sleep 方法可以…

MyBatis_1 简介

1、什么是框架&#xff1f;它是我们软件开发中的一套解决方案&#xff0c;不同的框架解决的是不同的问题使用框架的好处&#xff1a;框架封装了很多的细节&#xff0c;使开发者可以使用极简的方式实现功能。大大提高开发效率。 2、三层架构 表现层&#xff1a;是用于展示数据的…

使用java读取文件并输出

通过Reader读取文件中的内容&#xff1a; 下面是文件&#xff1a; test.txt: 1、看着街上的人群&#xff0c;各个都把自己捂得严严实实的&#xff0c;好似一个个奇怪的布包裹。窗外的天&#xff0c;是灰蒙蒙的一片&#xff0c;灰色的霾把所有的物体都笼罩了起来。2、它来时&am…

Akka系列---什么是Actor

本文已.Net语法为主,同时写有Scala及Java实现代码 严肃的说,演员是一个广泛的概念,作为外行人我对Actor 模型的定义: Actor是一个系统中参与者的虚拟人物,Actor与Actor之间是可以相互沟通,所有的沟通都是通过Message 比如说一个呼叫中心,数以百万计的客户可能会呼叫一个1-800的…

架构师的工作都干些什么?!想做架构师必看

转载自 架构师的工作都干些什么&#xff1f;&#xff01;想做架构师必看 之前有网友说想看架构师升级的文章&#xff0c;所以写了本文。先给本文中架构师做个定义&#xff1a;第一&#xff0c;能力上达到&#xff08;似乎是废话&#xff09;&#xff0c;第二&#xff0c;公司…

使用java将字符串写入到指定的文件中

指定的字符串&#xff1a; 白天走在街道上&#xff0c;伸手不见五指&#xff0c;周围的建筑全被雾笼罩了&#xff0c;在家里通过窗户往外望去&#xff0c;外面就像仙境一般&#xff0c;雾把所有的东西都淹没了&#xff0c;能看到的&#xff0c;只有白色的雾。&#xff01;文件…

Mybatis入门 使用XML

1、项目结构 2、详细代码 数据库&#xff1a; 1、创建实体类bean package com.itheima.domain;import java.io.Serializable; import java.util.Date;/*** Created by Administrator on 2019/10/11.*/ public class User implements Serializable {private Integer id;priv…

.NET的一点历史故事:擦肩而过的机遇

Sun 公司曾经借由 SunOS/Solaris 这个 UNIX 操作系统&#xff0c;SPARC 硬件平台和 Java 语言建立了一个商业帝国。Sun 工作站应该是很多资深业界大佬们偶尔还会拿来回忆的一个经典产品。不过时间进入二十一世纪第一个十年的中段&#xff0c;它已经在竞争对手的轮番进攻下显出了…

响应式布局

一、实现弹性布局的方法&#xff1a; 1.浮动百分比 好处&#xff1a;网页内容宽度自适应 多设备都适用 2.flex弹性盒模型&#xff1a;该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用空间。 二、Flex布局的功能&#xff1a; 1.在屏幕和浏览器窗口大小发生改变时&am…

Java 中的 String 真的是不可变的吗

转载自 Java 中的 String 真的是不可变的吗 我们都知道 Java 中的 String 类的设计是不可变的&#xff0c;来看下 String 类的源码。 public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {/** The value is used for char…

JS中变量的作用域

/** 作用域* - 作用域指一个变量的作用的范围* - 在JS中一共有两种作用域&#xff1a;* 1.全局作用域* - 直接编写在script标签中的JS代码&#xff0c;都在全局作用域* - 全局作用域在页面打开时创建&#xff0c;在页面关闭时销毁* - 在全局作用域中有一个全局对象…

Mybatis入门 使用注解

使用XML方式地址为Mybatis入门 使用XML 1、目录结构 2、需要修改的地方 1、mybatis的配置文件 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.…

浅析如何在Nancy中生成API文档

前言 前后端分离&#xff0c;或许是现如今最为流行开发方式&#xff0c;包括UWP、Android和IOS这样的手机客户端都是需要调用后台的API来进行数据的交互。 但是这样对前端开发和APP开发就会面临这样一个问题&#xff1a;如何知道每个API做什么&#xff1f; 可能&#xff0c;…

bootstrap样式

一、目前比较主流的前端框架有&#xff1a; 1.layui 2.vue.js 3.bootstrap 4.jquery ui 二、bootstrap&#xff1a; 1.来自Twitter,目前最流行的前端框架之一 2.是基于HTML、CSS和JavaScript的一个简洁、灵活的开源框架。 3.目前版本是V3 三、bootstrap的优势&#xff1a; 1.快…

JS中的this指向问题

this&#xff08;上下文对象&#xff09; 我们每次调用函数时&#xff0c;解析器都会将一个上下文对象作为隐含的参数传递进函数。 使用this来引用上下文对象&#xff0c;根据函数的调用形式不同&#xff0c;this的值也不同。 指向当前对象 this的不同的情况&#xff1a; 1.…