阅读更多

7顶
10踩

编程语言

原创新闻 Java 与 .NET 的平台发展之争

2013-08-27 09:46 by 副主编 wangguo 评论(24) 有21225人浏览



Java 8即将正式发布,从早期版本中,我们已经可以领略到一些令人兴奋的特性。但是开发者Andrew C. Oliver表示,尽管如此,Java语言在某些特性上还是落后于.Net。比如,Java 8中最令人期待的Lambda表达式,在2007年发布的.Net 3.5中已经存在了。他认为,.Net已有的和即将到来的特性要比Java 8优秀得多,如果Java 9再不做一些大的改进,那么Java落后于.Net就不止一点点了。

关于更新速率

微软有能力做出更快的改进。我记得在很早期的时候,微软能做到每周都更新数据库API:从ODBC、RDO、ADO到OLEDB等。自从出现了.Net之后,微软便达到了一种前所未有的更新速度。

但是Java为什么落后这么远?在早期的时候,Java的发展也是非常快速的,从Java 1.0.2 到 Java 1.1,仅仅一年时间,我们就看到了Java彻底地改变。从Java 1.1到Java 1.2只用了一年半时间,而Java 1.2.2只用了7个月的时间(这是一个重要的版本,只是使用了一个小版本号)。而在10个月之后,具有关键意义的Java 1.3问世,这也正是Java发行的第一个带有垃圾回收的版本。

Java 1.4为我们带来了NIO和正则表达式,但在之后不到两年的时间里就被取消了。Java 1.4.2版本带来了用于多核环境的垃圾回收器。Java 1.5带来了可用于生产环境的并行和并发GC(垃圾回收)特性,它还添加了更重要的并发和NIO功能,不过这一过程花了一年多的时间。

总的来说,Java还是有不错的表现的,Java 6使锁变得更廉价,但其在本质上和Java 1.5是一样的,还是让用户多等了2年时间。Java 7是第一个对底层VM技术做出重大改变的版本,同时还给用户带来了invokedynamic特性——用于在JVM上更好地连接其它语言,但是在两个大版本的更新之间用了大概5年时间,这个进度着实有些太慢了。



为什么Java进展缓慢?

对于这个问题有一个简单的解释:Sun并不是一个实力超群的公司。Java创造于互联网繁荣时期,而那个时候Sun正在出售Sparc业务。

之后,互联网经济不景气,Sun决定持续加大其在硬件业务中的投入。Sun比较擅长创建生态系统,但它就是无法创造出用户需要的产品。Oracle是Sun的后继者,擅于彻底毁坏生态系统,最终吞并/摧毁圈内的同行,还会开发出高利润的产品来取代同行。

Oracle曾在一份简洁的公开声明中称:“我们都知道,由于各种商业和政治原因,该版本(Java 7)花费了不少时间。”

当然,在分析Java的问题上,我们还必须考虑Sun公司的财政困难以及Java系统周边的东西。Sun公司违背了其提交Java进行标准化的初衷,它创造了自己的“标准”委员会,即JCP(Java社区进程)。随着时间的推移,JCP尽管在一定程度上已经开放,但是无论是Sun还是现在的Oracle,都拥有绝对的否决权,它们可以忽略规则,做任何想要的事情。

什么阻碍了JCP?不是开放性,而是利益冲突。我记得当时参与EJB3规范制定的某个供应商,它习惯延迟规范的进度。这是为什么呢?这些供应商需要购买或开发一个产品来集成到它们的应用服务器中,如果下一代JavaEE规范已经发布,那么它们也必须尽快推出产品,它们不希望比市场晚。

协调产品的发布,对于一个公司来说都有些难,更不用说几个公司了。因此,我认为Java最大的问题并不是由于JCP造成的。

抛弃或分离一些东西

Sun已经成为了过去时,现在Oracle是“老板”,那么为什么Java版本的发布周期仍然需要这么长?最简单的解释是——Java太大。大项目往往意味着进展比较缓慢,且充满风险。下面我们就来看看如何将Java变得小一些。

首先,Oracle必须摆脱其“心爱”的客户端技术。当然,目前还没有更好的Swing和JavaFX的替代品,但是使用这些技术意味着需要把你捆绑在Oracle的平台上——至少目前是这样。

我尚不清楚,目前JavaFX或客户端Java为Oracle带来的战略上的意义是什么,它们似乎被设计用来和VB6、Flash或一些4GL(第四代语言)进行竞争的。在现代的、多平台的环境中,大部分人会认为触摸和滑动操作会更酷一些,而JavaFX与这种趋势是不相匹配的。为什么我们需要使用客户端Java来阻碍服务器端的发展,并且还有可能伴随着各种风险,比如持续数月的Java零日漏洞安全问题以及关于如何禁用Java的讨论。

如今Java语言已经不再和Java平台一样重要。从Java平台中砍掉Java语言,并根据自己的时间表进行发布,这对于Oracle来说可能更容易——Oracle推出的开发工具不是Java业务的重要组成部分,并没有为大部分的Java开发者所使用。

Java平台上有多种语言,比如JRuby、Scala等等。以高性能和可扩展的方式来支持这些语言和技术,对于云计算来说非常重要。如果云计算是未来,那么Oracle应该首先考虑Java平台。而目前所支持Ruby、Scala、甚至Node.js的Java平台似乎是一个“锚”,而不是产生创新的“引擎”。

比起Mark Reinhold(Java SE规范领导者,目前在Oracle公司),我更希望由Charles Nutter(JRuby创始人,目前在Red Hat公司)和Martin Odersky(Scala创始人,目前在Typesafe公司)来决定在Java平台中添加哪些特性。我并没有不尊重Mark Reinhold的意思,但是一些证据表明,在很多与Java语言合作的项目中,Java语言拖慢了项目的进度。

对于Oracle领导的Java来说,事情发展不会那么顺利,很多Sun之前的决议现在仍然在困扰着我们。我的建议是,抛弃客户端Java,独立出JVM和Java语言的发布周期,致力于将Java作为一个平台,而不是想一次性地解决所有问题。

英文来源:Java faces tough climb to catch up to .Net
  • 大小: 13.6 KB
  • 大小: 74.2 KB
7
10
评论 共 24 条 请登录后发表评论
4 楼 yunzhu 2013-08-27 13:50
说得很有道理,Java如今发展确实缓慢,落到Oracle手里尤其堪忧,看看MySQL悄悄变更了许可协议就知道了,Oracle根本就不是开源阵营的,而是开源阵营的敌人。
3 楼 tedeum 2013-08-27 12:57
一直在说java
2 楼 damoqiongqiu 2013-08-27 12:41
别老拿Java和.net比较,压根就不是一回事儿好吗?
除了引起各种喷,毫无意义。
1 楼 bitray 2013-08-27 10:18
干脆把兼容版本交给社区开发,把官方标准版本,开发出来不向上兼容的吧...不过怎么设计成兼容性测试就不清楚了

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 从 .NET 和 Java 之争谈 IT 行业

     开篇我先表明自己的立场:同时使用 .Net 和 JAVA,但更加偏爱.Net。原因很简单:  1、.Net语言更具开放性,从开源协议和规范可以看出;  2、语言更具优势严谨;  3、开发工具 VS 更具生产力;  然而  1、...

  • .NET和Java之争

    这几天连续有多篇文章(详细文章列表在《.NET和Java之争一点随想》和《由优劣语言之争引起的思考》有写)诋毁.NET,这类文章我十几年前就看得多了,只不过十几年前是C和C++之争,C++和Java之争。我从来不理这类文章,...

  • java .net之争_桌面应用轮回之战 .net和java之争

    .net是绑定于一种系统的多语言平台,是一个规范性较弱的垄断性产品。这两大类别的产品,在不同领域各有千秋。就服务端市场来讲,Java目前在技术先进性上有绝对优势。应用系统需要各个层面的框架,Java都有大量已完成...

  • java与.net的世纪之争

    如果把几条罗斗鱼放在同一个...时至今日,J2EE已经发展成为一个覆盖面广,效率高,易用性强的技术平台,吸引了400万开发者,在网络技术遍及全球的的今天,更有17.5亿台设备使用JAVA技术.同时, Mustang版本的J2EE正在

  • .net与java之争

    在经验丰富的 Java 开发人员看来,.NET 可能与 Java 平台很相似,它们都提供了一种创建应用程序的结构化方法,都有编译为中间代码的语言,都为应用程序开发提供了一个大型 API 库。但实际上,.NET 的核心有一套与 ...

  • 《.NET和Java之争》 读后感,互联网 面试官 如何面试

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,...原文地址:https://www.cnblogs.com/adalovelacer/p/dotnet-vs-java.html 这是博客园被推荐上首页的文章,本着好学的心态,点进去拜读....

  • IT 行业| .NET 和 Java 之争谈

    2) 等待着甲骨文把JAVA给终结了,但甲骨文Android之争的结果,显示甲骨文对JAVA挣钱这件事情失去信心, 尤其是谷歌在Android上面的胜利。有理由相信甲骨文不会对JAVA做出更大的贡献。谷歌依然有被起诉的风险,从...

  • 从.NET和Java之争谈IT这个行业

    开篇我得表名自己的立场:.NET JAVA同时使用者,但更加偏爱.NET.原因很简单 1.NET语言更具开放性,从开源协议和规范可以看出; 2.语言更具优势严谨; 3.开发工具VS更具生产力; 然而 1.Java,C#的职位比率在4:1,虽然这...

  • 我的第一个C#小程序之简单音乐播放器1731655933.html

    我的第一个C#小程序之简单音乐播放器1731655933.html

  • 练习springboot1 项目 模拟高并发秒杀,实现基本的登录、查看商品列表、秒杀、下单等功能,简单实现了系统缓存、降级和限流

    练习springboot1 项目 模拟高并发秒杀,实现基本的登录、查看商品列表、秒杀、下单等功能,简单实现了系统缓存、降级和限流。SpringBoot + MyBatis + MySQL+Druid + Redis + RabbitMQ + Bootstrap + jQue….zip

  • html常规学习.zip资源资料用户手册

    html常规学习.zip资源资料用户手册

  • ASP+ACCESS论坛的设计与实现(论文+源代码+开题报告)(源代码+论文+说明文档).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • HTML转PDF py脚本

    HTML转PDF py脚本

  • yolo算法-车辆行人数据集-127张图像带标签-汽车-人.zip

    yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值

  • 模电大作业放大器设计xd

    西电通院模电大作业课后题电路设计图24年

  • sqlserver内存释放中文最新版本

    本文档主要讲述的是sqlserver内存释放;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

  • zw.html

    zw

  • 发动机制造厂技术处安全、消防安全手册.docx

    发动机制造厂技术处安全、消防安全手册.docx

Global site tag (gtag.js) - Google Analytics