`
sonic_yj
  • 浏览: 76893 次
  • 性别: Icon_minigender_1
  • 来自: CD
社区版块
存档分类
最新评论

[转贴+感受]C# vs. Java:相反的思维方式

阅读更多

作者:Malcolm Davis   发表于:September 12, 2004

我最近受邀对 C#/.NET 和 Java/J2EE 做一个对比。一开始,我比较了它们的功能特性、产品、技术,然后我发现 C# 和 Java 的战场并不在这些表面特征方面,而是思维方式层面的竞争。

坐在办公电脑前,开发者脑袋中按两种相反的思维方式看问题:

1.接受桌面上已有的工具并以此为标准。
2.经常的搜索能够提高工作效率的机会。

接受主义与探寻主义是两个社区的主要思维方式差异。什么是对开发者有益的,接受主义者放弃了对工具的控制,接受经理和卖主的选择。探寻主义者搜索、寻找正好对他们工作有用的工具。两种思维方式都有其正面因素和反面因素。

工具的探寻(包括 IDE,组件,工具等)是正常的、预想的、首选的行为。作为开发者,应该寻找适当的途径,比如新的程序、自动生成重复的代码以及组件重用等途径,提高工作效率。可是,这对于一个 IT 公司来说,可能是一个不好的兆头。很多的 IT 公司限制随意安装新的软件,很多公司限制对外部网站访问,有的还限制对新闻组和 blog 站点的访问。(当然,很难想象有些 IT 公司甚至不允许访问 weblogs.java.net。)这些 IT 公司有很多适当的理由,比如对病毒、木马软件传播的担忧,以及由于缺少许可证而导致的法律问题,很多程序员并不清楚也并不关心引进新软件可能带来的这些后果。

四年前,我向一家 IT 公司引进了 Ant,Tomcat 和 JUnit,这些工具简化并加快了 web 编程、测试以及制造的过程,极大的提高了公司的生产效率。现在几乎每一个 Java 开发者都已经掌握了这些技术。

NAnt 和 NUnit 是仅有的一些开源的、对 Java 工具集的 .NET 移植。然而,Microsoft 并不是采纳这些已有方案、加以改进、并将它们集成到生产线中,而是自己重新创建了类似的产品 Visual Studio Team System。停下来想象一下,会不会有哪家 Java IDE 会声称“我们将不会支持 JUnit 或者 Ant,我们将推出我们自己的产品。”这简直是不可想象的!你现在知道 Java 和 .NET 之间的思维差异了吧:一个采纳社区已有的成熟工具,另一个则重新创造一套集成的方案。因为商业 IT 公司偏爱集成的解决方案,Microsoft Team System 给人感觉不错。可是,Team System 只是一个落后时代大约 5 年的产品。

商业世界的人们已经开始使用 Jakarta 项目上发布的 Ant 和 Tomcat。思维方式凸现了商业运作和 IT 开发的主要差异。如果商业软件能够遵守和 IT 开发相同的规则,它们将压缩竞争对手的空间,同时失去他们最好的开发人员。

由于 IT 公司需要以应用程序提供商(Application Service Provider, ASP)的等形式采用外部资源,Java 以及 Open Source 将成为 IT 的主流。Microsoft 的做法最终会伤害他们。ASP 的商业模式,将带领我们进入一个商业软件开发的新时代。Industrial strength development techniques, cutting edge technology, 以及经常性的探寻提高生产效率的机会,将成为标准,我们将看到“小鱼吃大鱼”的一幕,我们将看到 Java 吃掉 .NET 的午餐。

大家都看到了 Malcolm Davis 刚刚发表的那篇“C# vs. Java:相反的思维方式”了吧?你也注意到:sourceforge 上 Lucene.NET 的主持者关闭了项目,带着他们的玩具回家去了吧?我接着 Malcolm 的话题,说说这两件事之间的关系。

大体而言,.NET 社区的参与者总是在谈论 Microsoft 推出的最新的、最强大的东西:MapPoint Location Server,SQL Server,Longhorn,ASP.NET 2.0,Visual Studio,所有来自雷德蒙(Redmond,微软总部所在地)的产品。相反的,Java 社区的程序员在那里谈论 JBoss,Hibernate,Struts,Eclipse,这些东西没有一个来自硅谷。

Malcom 的文章说,.NET 开发者接受 Microsoft 提供的工具和服务,我想这在很大程度上是对的。.NET 开发者很少花时间,开发持续层方案(persistence layers),web 应用程序框架(web application frameworks)或者缓存解决方案(caching solutions),因为 Microsoft 已经为这些问题提供了 Microsoft 解决方案。但是仅仅是因为 Microsoft 提供了这些工具吗?那为什么 JSF,JDO,NetBeans 不能成为 Java 技术 Blog 站点的主流声音呢?拿 ASP.NET 和 JSF 作一个细致的比较,它们并没有太多的不同,但 ASP.NET 和 Visual Studio 一起被广泛应用,而 JSF 却很少人用并且饱受嘲弄。我认为 Malcom 是对的,的确是思维方式的差异早就了这一切。

回过头来看看 Lucene.NET 的那群人吧:他们为什么关闭了开源的项目,他们为什么不再继续为这个很优秀的想法贡献他们的时间和精力呢?或许 .NET 社区对他们工作的反响,让他们无法继续维持下去了吧!使用 google 在 weblogs.asp.net 上搜索“lucene”只得到了 17 项结果,而在 jroller.com 得到了 2570 项结果。Lucene 已经存在很长时间了,但 Lucene.NET 的那群人们把东西包起来另起门户,其中一个原因可能就是:几乎没有人关注他们的工作:大家都在忙着研究 SQL Server 的全文检索,这才是 Microsoft 提供的解决方案(当然,需要为每个处理器花费成千的美元购买许可)。在 Java 世界,Lucene,Struts,Tomcat 之所以繁荣,也是因为为一个大的开源项目工作,给开发者带来了足够的威望。而当你投身于一个开源项目,却很少人注意时,沮丧的你也许也要寻找另外的动力。在 Lucene.NET 这个事例中,money 是他们的动力,所以他们关闭了项目,转而贩卖他们的个人版本和商业版本。他们或许能得到双倍的美元吧,但我打赌一年以内,不会有多少人谈论 seachblackbox.com 的。

那么我的观点是什么呢?是说 .NET 开发者很贪婪,不关心社区吗?不是这样的。我认为,这两个社区有不同的司机:.NET 开发者盯着 Microsoft,关心 Microsoft 提供的解决方案,如果他们在车窗外看到了好东西并拿来使用,Microsoft 可能会最终进入这个领域,并发布产品或者提出解决方案,这样,以前的工作就完全被否定了。Microsoft 是 .NET 社区的司机。Java 开发者们看了看 Sun 推出的产品和语言规范,扭头去开发他们自己的工具、框架、应用程序。Sun 推出的东西,Java 社区的开发者只有他们确实喜欢才会去使用。Struts 的门庭若市,与 JSF 的门庭冷落,印证了这一点。在 Java 社区,开发者自己是司机。

------------------------------------------------------------

   个人感觉作者对Java更看好,我觉得还真不一定。开发效率上.net 强了太多,我也很反感搞java的人开口模式闭口框架

  不过java的好处就在于有那么多开源,而且不是一家包办,民主社会 VS  独裁 ,特别希望开源能好好发展,HOHO

 

分享到:
评论

相关推荐

    电商引流方式.pdf

    "电商引流方式.pdf" 电商引流方式是电子商务领域中的一种重要营销策略,它可以帮助商家快速增加流量、提高转化率和销售额。下面是电商引流方式的详细知识点: 一、站内推广(淘宝免费流量与付费流量) 1. 直通车...

    android和java面试大全集

    史上最全的android和java面试文档集。包括有: java程序员面试宝典.txt Java面试宝典2011版-1C,Java基础部分.doc 三大框架面试题.zip 技术面试题.zip Android笔试题库 C语言终极面试宝典.doc Java笔试题目汇总.pdf ...

    动易系统的论坛转贴工具 -ASP源码.zip

    标题中的“动易系统的论坛转贴工具 -ASP源码.zip”揭示了这是一个基于ASP(Active Server Pages)编程语言开发的论坛转贴工具的源代码。ASP是微软公司推出的一种服务器端脚本环境,用于创建动态交互式网页。这个工具...

    ubucon-asia.github.io:Ubucon亚洲登陆页面

    ubucon-asia.github.io 网站包含使用和构建的Ubucon亚洲活动的索引添加内容您将需要安装才能轻松添加内容。 要创建新内容,请运行以下命令 # Create event contenthugo new --kind events events/ < session> /_...

    btskinner.github.io:我的网站

    个人网站 我的个人网站。 更新/发布网站的步骤 以下是我用于更新和发布网站的步骤。 由于我想要一个包含例如javascript可视化效果的动态网站,因此它比仅推送到master分支要复杂得多。 这是我使用其他遇到相同问题的...

    ZZ: 时间管理方法(转贴)

    【时间管理方法(转贴)】 时间管理是个人和团队高效工作的关键,它涉及到如何规划、组织和优化日常活动,以便在有限的时间内完成更多的任务并实现目标。在这个快速发展的IT行业中,良好的时间管理能力可以帮助程序员...

    c#导出PDF .pdf

    PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如 何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法

    [转贴]计算几何(附:计算几何函数库)

    计算几何是计算机科学的一个重要分支,它涉及到数学、物理学和工程学等多个领域的交叉,主要研究如何用算法处理和解决与几何形状、空间位置关系相关的计算问题。在这个领域中,我们通常会遇到点、线、面、多边形等...

    关于嵌入式系统方向!【转贴】.doc

    点在于: 1. 技术更新快:嵌入式领域的新技术和处理器不断涌现,需要开发者持续学习和跟进,保持技术的前沿性。 2. 工作压力:虽然工作强度相对较低,但在产品开发周期紧张时,开发者仍需面对高压,确保按时交付高...

    discuz X2转帖工具、采集工具

    1. 内容抓取:工具具备采集功能,可以从其他网站或者论坛抓取感兴趣的内容,快速转贴到自己的Discuz! X2论坛上,增加论坛的信息来源和内容丰富度。 2. 自动格式转换:采集到的内容会自动适应Discuz! X2的格式,确保...

    转贴C#实现关机,注销,重启

    在C#编程语言中,系统级别的操作如关机、注销和重启等,是通过Windows API调用来实现的。Windows API提供了丰富的函数集,允许开发者执行操作系统级别的任务。下面我们将详细探讨如何使用C#来实现这些功能。 首先,...

    动网转贴.e.rar

    【标题】"动网转贴.e.rar"是一个压缩文件,很可能包含了有关动网论坛或社区的相关资源、数据或用户帖子的备份。动网是中国早期知名的网络论坛软件之一,提供了丰富的社区功能,允许用户发帖、回帖、互动等。这个...

    SPSS期末复习笔记(注释).doc

    * SPSS 有三种运行方式:命令行方式、批程序方式、菜单对话框 数据文件类型 * 数据文件 *.sav:SPSS 软件默认的数据文件格式,双击可由 SPSS 直接读取 * 命令文件 *.sps:可在语法编辑程序(syntax)中先编写或贴上...

    flex和java进行CRUD操作(转贴)

    本篇文章将围绕"Flex与Java进行CRUD操作"这一主题展开,详细介绍如何使用Flex作为前端,通过与Java后端交互来实现创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的功能。 1. **Flex基础知识** ...

    易语言源码动网转贴.rar

    《易语言源码动网转贴》是一款基于易语言编程的源代码集合,主要用于实现网络论坛数据的迁移和转换功能。易语言是中国本土自主研发的一种高级编程语言,它以直观的汉字编程语法为特色,旨在降低编程难度,让更多人...

    行业文档-设计装置-木器、玻璃用贴花纸生产及转贴方法.zip

    《木器、玻璃用贴花纸生产及转贴方法》是一个深入探讨装饰材料工艺的行业文档,主要聚焦于贴花纸在木器和玻璃制品上的应用。这份文档可能包含了从贴花纸的设计、生产到实际转贴过程中的各种技术细节和实践经验。 1....

    算法设计与分析 转贴 算法试卷收集 3.doc

    算法设计与分析 算法设计与分析是计算机科学中的一门重要课程,涉及到算法的设计、分析和实现。下面是从给定的文件中生成的相关知识点: 一、算法的时间复杂性 * 算法的时间复杂性是算法运行所需要的时间量,这个...

    电子政务-导电泡棉转贴装置.zip

    电子政务,全称为电子化政府服务,是利用现代信息技术,特别是互联网技术,来改革和优化政府运作和服务的一种方式。在“导电泡棉转贴装置”这个特定的场景下,我们可能是在讨论一种用于电子政务设备或系统中的特殊...

Global site tag (gtag.js) - Google Analytics