【转帖】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的产 ...
随机推荐
- Codevs 1331 西行寺幽幽子(高精度)
1331 西行寺幽幽子 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在幻想乡,西行寺幽幽子是以贪吃闻名的亡灵.不过幽幽子可不是只 ...
- shell中命令代换$()与`` 、 变量代换${} 、 整数运算$(( )) 的区别
命令代换$()与`` . 变量代换${} . 整数运算$(( )) 1.$( ) 与 ` ` (反引号) 在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(comm ...
- [笔记]Header V4 RSA/SHA256 Signature, key ID 4d274df2: NOKEY 解决办法
问题描述: 原因: IUS-COMMUNITY-GPG-KEY,版本太旧 解决: 切换到rpm-gpg目录中,下载最新的IUS-COMMUNITY-GPG-KEY
- python中的break continue之用法
Break break跳出循环,并且终止最小封闭循环. Continue continue跳过本次循环,继续执行下一次的循环. 二者区别就是break会终止循环,continue不终止循环.
- flutter中的生命周期函数
前言:生命周期是一个组件加载到卸载的整个周期,熟悉生命周期可以让我们在合适的时机做该做的事情,flutter中的State生命周期和android以及React Native的生命周期类似. 先看一张 ...
- 【Spark机器学习速成宝典】推荐引擎——协同过滤
目录 推荐模型的分类 ALS交替最小二乘算法:显式矩阵分解 Spark Python代码:显式矩阵分解 ALS交替最小二乘算法:隐式矩阵分解 Spark Python代码:隐式矩阵分解 推荐模型的分类 ...
- 以下示例使用一个 x,y 坐标列表创建了一个多边形几何对象。然后使用裁剪工具来裁剪具有多边形几何对象的要素类。
import arcpy # Create an Array object. # array = arcpy.Array() # List of coordinates. # coordList = ...
- 一次galera cluster集群故障节点无法启动问题排查
现象 环境: Server version: 10.0.25-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e 配置文件: [root@node-2 ...
- 【论文学习】Blind Super-resolution Image Reconstruction Based On Novel Blur Type Identification
机翻 <基于新型模糊类型识别的盲超分辨率图像重建>
- 301跳转与URL转发有什么区别
在购买域名时,域名本身是不带有www的,但由于域名要通过DNS服务器解析后才可以使用,在这个过程中每一个域名是会指向一个web服务器ip地址,由于在很早之前网站方都会增加一个"www&quo ...