【转帖】NET 的一点历史往事:和 Java 的恩怨
NET 的一点历史往事:和 Java 的恩怨
https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068672&idx=1&sn=a87b80174cd8703182a0bcddc537f656&chksm=80dbfb95b7ac72835efe9c2fdd8634a36bb9fc1298f5f11ec242fde0ff67e635af32a6aa8644&scene=21#wechat_redirect
在编程语言的发展历史上,1995年应该是个特殊的年头,毕竟这个年头诞生了两个后来二十多年影响深远的语言。1995年5月23日的 SunWorld 大会上面 Sun 公司高调发布了自己研发了近五年的 Java 语言和 JVM 平台。当年的十二月,网景公司将自己刚刚预览的 LiveScript 语言改名为 JavaScript。由于微软正在和网景进行轰轰烈烈的浏览器大战,这两个和万维网有着紧密联系的语言同时得到了微软的关注和支持。
JavaScript 相对简单,所以微软直接反向工程,做出了自己的 JScript 引擎。但是在 Java 这个方面,它采用了完全不同的方式,1996年3月12日直接从 Sun 购买了 Java 授权,并且在当年10月15号开始提供 Windows 平台的 Java SDK。1997年1月到3月间,微软就隆重发布了自己的 Java 开发工具,Visual J++ 1.0/1.1,这个过程快得令人惊诧。
微软在 Visual J++ 方面的投入带来了立竿见影的效果:
Java 是一个比较完善的面向对象语言,这是微软当时的 Visual Basic 和 Visual C++ 两个开发工具都不能相提并论的。
微软为 Visual J++ 做的扩展 WFC 和 J/Direct 使得这个语言和 Windows 平台 API 之间有了更加紧密的联系。
Visual J++ 在 Windows 原生程序和 Office 开发方面都很便利,能够和快速开发工具 Visual Basic 平起平坐。
所以假如 Sun 公司这个时候睁只眼闭只眼,放任自流,那么 Visual J++ 很可能就是今天绝大部分 Windows 开发者的首选。这样服务器端的 J2EE,桌面端的 Visual J++,和移动端的 Android 三驾马车,是不是就让 Java 语言一统天下呢?
然而 Sun 这个公司在推广 Java 方面有点顽固不化的想法,一定要坚持“一次编写到处运行”,一定要坚持 Java 和 JVM 的纯粹,所以对于微软忽视 JNI 等标准部件、另起 WFC 等非标准部件的小动作,直接予以打击,开启了绵延数年的法律官司。这场官司也使得微软在1996年10月6日发布了Visual J++ 6.0之后,这个开发工具便被打入冷宫。
微软为什么会全面退出 Java 领域呢?
语言和平台的规范由 Sun 主导,Sun 在制定标准和接纳新事物方面过于强势。这个问题在数年之后再次发生,就是谷歌抛开 Sun 主导的 J2ME 规范,做了自己的 Android 平台。
Java 语言本身依然有它尚不成熟的地方,例如没有泛型,没有简单的事件机制。这时候微软已经从 Borland 挖来了 Anders Hejlsberg 这样的编辑器大师,完全可以抛开 Java 语言的枝梧来做新的尝试,也就是C#。
JVM 平台完全为 Java 一个语言设计,bytecode 很难成为其他语言的目标。微软可以设计一个更加通用的虚拟机平台,和更好的中间语言。这也就是微软后来的 CLR 和 MSIL。
这些因素使得微软最终招兵买马,开始研发自己全新的 .NET Framework 平台和新版开发工具 Visual Studio,希望在后续的开发工具战役中后来居上。
值得注意的是,毕竟微软从 Sun 购买了 Java 授权,这个授权使得微软得以看到 Java 的源代码,知晓了 Sun 的相关专利,所以在发布新平台之前,法律方面的问题仍是必须加以解决的。2001年1月,微软和 Sun 终于初步和解,一个新的时代即将开始。
原文地址:http://weibo.com/ttarticle/p/show?id=2309404102044121223524
【转帖】NET 的一点历史往事:和 Java 的恩怨的更多相关文章
- 【转帖】.NET的一点历史故事:作者的一些感想
.NET的一点历史故事:作者的一些感想 https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654068684&idx=2&a ...
- 【转帖】.NET的一点历史故事:Novell的崩溃和Xamarin的重生
.NET的一点历史故事:Novell的崩溃和Xamarin的重生 https://blog.csdn.net/sD7O95O/article/details/78096502 学习安装 mono 时了 ...
- 从官网下载历史版本的java
下载历史版本的java 因为一些bug需要降低java版本来尝试解决,但是好多都要收费,我就搞不明白了,官网都有免费的我要你的收费软件干嘛 首先直接搜索java,进入Oracle,或者 Java SE ...
- 【转帖】Linux的历史----Linux内核剖析(一)
Linux的历史----Linux内核剖析(一) 2015年04月09日 10:51:09 JeanCheng 阅读数:11351更多 所属专栏: Linux内核剖析 版权声明:本文为博主原创文 ...
- [转帖] JVM虚拟机的历史
Java虚拟机发展史 https://blog.csdn.net/tinyDolphin/article/details/72809018 如何查看自己的虚拟机版本?Sun Classic / Exa ...
- Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin
作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...
- 个人的一点小愚见,java有什么优点和缺点
java是一种面向对象的编程语言,优点是可移植性比较高,最初设计时就是本着一次编写到处执行设计的.可以开发各种应用程序和游戏,不过速度没有c++快,所以一般是不用java来编写应用程序和电脑游戏. j ...
- 【转帖】oracle数据类型和对应的java类型
原文地址:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.ht ...
- Java版本及历史简述
Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...
随机推荐
- Cogs 647. [Youdao2010] 有道搜索框(Trie树)
[Youdao2010] 有道搜索框 ★☆ 输入文件:youdao.in 输出文件:youdao.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 在有道搜索框中,当输入一个或 ...
- CF860E Arkady and a Nobody-men
CF860E Arkady and a Nobody-men 类比LNOI2014 LCA那个题,其实树剖可以过....(用树状数组区间加区间求和更快!) 巧妙的nlogn做法是: blog~ (其实 ...
- SpringCloud-Config通过Java访问URL对敏感词加密解密
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- DOM操作的性能优化
DOM操作的真正问题在于 每次操作都会出发布局的改变.DOM树的修改和渲染. React解决了大面积的DOM操作的性能问题,实现了一个虚拟DOM,即virtual DOM,这个我们一条条讲. 所以关于 ...
- ubuntu 14.04 升级到18.04
http://www.360doc.com/content/18/0929/09/35082563_790606785.shtml
- 修改Visual Studio的默认模板
如果我在Visual Studio创建的项目中每次新建一个文件,自动生成注释或者是结构的话,那么就需要改下默认的模板了.下面以vs2013为例 我们添加的文件有很多种,这里就举例3种,CSharp类文 ...
- Win10蓝牙鼠标老是断连卡顿的解决方法
一直用一个微软家的蓝牙鼠标,饱受鼠标卡顿困扰,今天找到了一个解决方案,用了下,效果显著.具体操作见下文. 原文地址:https://jingyan.baidu.com/article/c85b7a64 ...
- Ruby on Rails 的模型 validates 验证
validate(), 这个方法在每次保存数据时都会被调用.如:def validate if name.blank? && email.blank? errors.add_to_b ...
- 使用Selenium时解决方案: Exception: Failed to find firefox binary. You can set it by specifying the ······
问题描述: Firefox在自动升级之后,在使用selenium的时候出现了如下错误: Exception: Failed to find firefox binary. You can set it ...
- RabbitMQ 使用参考
http://www.zouyesheng.com/rabbitmq.html 安装 基本概念 基本形式 持久化 调度策略 5.1. fanout 5.2. direct 5.3. topic 5.4 ...