Sun 公司曾经借由 SunOS/Solaris 这个 UNIX 操作系统,SPARC 硬件平台和 Java 语言建立了一个商业帝国。Sun 工作站应该是很多资深业界大佬们偶尔还会拿来回忆的一个经典产品。不过时间进入二十一世纪第一个十年的中段,它已经在竞争对手的轮番进攻下显出了颓势。作为最后一搏,当时的管理层采纳了开放源代码这个方式,希望学习网景公司孕育 Mozilla/Firefox 的经验来扭转乾坤。于是2005年,它宣布了 OpenSolaris 项目,开源自己的操作系统,并在2006年11月13日,更近一步将自己核心资产 Java 平台开源,并采用 GPL 这个非常严格的授权协议。虽然这些努力并没有完全解决 Sun 公司的经营困难,它最终被甲骨文收购,但是开放+开源的 Java 平台确实在之后的十几年中顶住了新型语言的冲击,既然是 IT 业界广泛采用的主要技术。与之相比,微软一家主导并且完全绑定在 Windows 平台的 .NET 技术,在二十一世纪的发展过程中却是从平淡无奇开始的。

2002年2月13日发布了 .NET Framework 1.0 和 Visual Studio .NET 2002 之后,微软将研发资源同时投到了多个领域,希望在广度和深度上追上 Java 的脚步。这些投资在后来的三年内逐步提升了 .NET 平台的开发灵活性,也补上了一些缺环,但是是否符合用户的需要则必须另说了。

第一个重要升级是2003年4月3日,微软发布了Visual Studio .NET 2003 和 .NET Framework 1.1。这个版本带来了一些新的特性,但是明显比较平淡:

  • IP v6支持

  • ODBC 和甲骨文数据库支持

  • 配合 Windows CE 开发的 Compact Framework

  • ASP.NET 对于移动浏览器的支持

在2007年 iPhone 发布之前,J2ME 和 Windows CE 的竞争只能说是小孩打架。所以这次升级更多的是配合微软 Windows Server 2003 的发布。毕竟 Windows Server 2003 是微软第一个内置 .NET Framework 的 Windows 发布版本。

下一个重要升级就拖到了2005年11月7号的 .NET Framework 2.0 和 Visual Studio 2005。从这里开始,.NET 开始慢慢在广度上追上 Java,比如加入官方构建工具 MSBuild,官方测试框架 MSTest,加入64位支持,同时在深度上开始超越 Java,比如在 CLR/MSIL 层面实现真正的泛型。同时微软开始发布适合嵌入式系统使用的Micro Framework。

有了这个关键的版本做基础,微软后面连续发布了 .NET Framework 3.0 (2006年11月6日) 和 3.5 (2007年11月19日),终于在广度上再进一步,加入 WPF、WCF、WF 和 EF,ASP.NET 开始支持 AJAX。在深度方面,.NET 开始引入 LINQ 机制,使得数据库操作可以不使用 SQL 等查询语言,而是在 C# 等语言层面直接集成。

在 Java 开源之前,微软也做出了一些积极行动,比如

  • 2004年4月5日在 SourceForge 开源了 WiX 工具

  • 2006年6月正式上线了 CodePlex 开源托管平台

  • 2006年11月2日和 Novell 公司达成了一系列开源软件相关的合作(Novell 公司当时是 Mono 项目的领导者,所以这些合作对于 Mono 团队有很大帮助)

但是它一直没有在是否开源 .NET 平台问题上做出决定。这些当然我们事后来看都是可以理解的,因为

  • 微软公司的创始人 Bill Gates 领导了商业软件革命,使得软件有版权这一理念深入人心,并且建立了自己的微软帝国,同时也促使了其他商业软件公司成长壮大。

  • 开源软件运动对于商业软件公司具有潜在威胁,而大型商业软件公司选择开源自己产品的案例不多(网景、IBM和Sun走在了时代的前列)。

  • 微软公司内部对于如何运作开源项目,如何把开源代码作为竞争手段缺乏了解,所以迟疑不决。

但是当时没有追随 Java 开源的热潮去做 .NET 平台的开源,对于微软来说还是棋差一招。等它八年后意识到必须走开源这条路的时候,IT 世界的版图已经完全不同了。

相关文章:

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

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

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


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

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

  1. .NET的一点历史故事:Novell的崩溃和Xamarin的重生

    Novell 是一家神奇的技术公司,它自行开发和收购了很多不错的软件和标准,涵盖 NetWare.IPX.WordPerfect.Quattro Pro,Unix,SUSE和Mono.它曾有心挑战微软 ...

  2. .NET的一点历史故事:作者的一些感想

    最近几天通过微博的头条文章平台公开连载了<.NET的一点历史故事>一书的部分草稿.不论是书名还是章节内容,目前真的是仅仅草稿阶段.所以这么早就以连载的方式发布出来,一方面是正在准备在蒙特利 ...

  3. .NET的一点历史故事:误入歧途,越陷越深

    移动计算的时代其实早已有了苗头,起码微软的 Windows CE.诺基亚的 Symbian 都曾经给手机用户多少带来了一些便利,黑莓则由于接入了企业邮件等商业应用而日进斗金,甚至 Sun 也给自己的 ...

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

    曾几何时,Java 的兴起得益于众多大公司的涌入,Sun.IBM.SGI.网景.甲骨文.Borland 都在第一时间关注并投入大量资源来推动它的发展.比较典型的例子就是 IBM 做了自己的 Java ...

  5. 燕赵志愿云如何认证_人物|志愿者讲解员王静雅:用心讲好河北历史故事

    博物馆志愿者讲解员王静雅: 用心讲好河北历史故事 王静雅在河北博物院进行志愿讲解. 深夜,写完报告的王静雅合上电脑,站在窗前伸了伸懒腰.在这座"大唐不夜城",她忽然失了神. 王静雅 ...

  6. 仅改变rowspan背景_真实的他们《王者荣耀》全英雄历史故事以及设定背景介绍...

    在王者荣耀中,每个英雄都有着自己的故事,不仅仅是拥有这里的故事,他们还有独属于他们的历史故事,他们的存在也是那些历史中的一道色彩. 在王者荣耀中,每个英雄都拥有自己的背景故事,有些是和历史比较挂钩,有 ...

  7. 给某汉化联盟讲些历史故事

    我干脆来讲些历史故事吧-- 想当年3DM汉化I社游戏的时候,沐风网站的管理员WAR3ANDC.S(特工)就经常偷3DM的汉化,让汉化组很是头痛.将3DM的汉化补丁破解后,替换成自己的名字,然后改个名叫 ...

  8. 《疑案里的中国史》——很多奇怪的历史故事其实都有合理的逻辑支撑

    摇摇晃晃中,总算将本书的最后一个故事看完了.合上书,不由得为自己从小到大建立起的历史框架感到些许惶恐.小时候那些多荡气回肠.万人空巷的竟然大部分是编的.假的.逻辑不自洽的.好可怕,但转念一想,这本书里 ...

  9. 明修栈道暗度陈仓的意思,明修栈道暗度陈仓的历史故事

    明修栈道,暗度陈仓是指将真实的意图隐藏在表面的行动背后,用明显的行动迷惑对方,使敌人产生错觉,并忽略自己的真实意图,从而出奇制胜. 明修栈道暗度陈仓的历史故事 秦朝刚被推翻的时候,项羽.刘邦以及其他参 ...

最新文章

  1. 通过配置NFS使Ubuntu和海思3559A板子共享目录
  2. 石墨文档技术总监:敏捷思想在产品周期的延伸
  3. 天体摇摆仪的工作原理-测量电路中的部分电路波形
  4. python sklearn_KFold 什么是K折?
  5. 枚举的使用(限foton)
  6. Shell学习笔记 - 环境变量配置文件(转)
  7. CCF NOI1144 众数
  8. 上传失败 已保存至草稿_特大福利 清睿口语100成都会议专家讲座视频已上传至口语100网站...
  9. JavaScript中错误正确处理方式,你用对了吗? 1
  10. 年薪百万!这所高校一名本科生入选“天才少年”
  11. linux服务器_Linux 服务器为什么被黑?
  12. Spring之JDBC模板jdbcTemplate
  13. Queue与生产者消费者模型
  14. matlab 有限元 图书,MATLAB有限元分析与应用
  15. ASP.NET课设——新闻发布系统
  16. 薅羊毛算副业吗?薅羊毛到底是怎么赚钱的?
  17. pythonfor反向循环_python如何实现反向迭代
  18. 中水处理设备:中水回用的三种主处理方法及其比较
  19. python-非零整数代表True
  20. python把汉字变成拼音英文_利用python将表格中的汉字转化为拼音

热门文章

  1. 段落排版--行间距, 行高(line-height)
  2. SRM 440(1-250pt, 1-500pt)
  3. Eclipse/Myeclipse生成serialVersionUID方法
  4. 局域网速度变慢的故障分析
  5. asp.net中的窗体身份验证(分目录验证篇)
  6. 解决 ASP.NET Core 部署到 IIS,更新项目时文件夹正在使用错误
  7. 如何预热Web API,减少初次执行时间
  8. ASP.Net Core Web API 如何返回 File。
  9. .NET 6 Preview 6 Released
  10. 利用 PGO 提升 .NET 程序性能