it-swarm.cn

Java vs. C#-生产率透视图

如果您有使用Java)的多年经验,并且具有使用C#和.NET的多年经验,那么我想就您在这两种环境之间的软件开发生产率差异方面发表意见。我们的一位客户正在考虑替换现有的软件解决方案,因为替换需要大约10到15个工作年的工作,因此,根据他们之间的生产率差异,可以选择Java或.NET ,可能会严重影响所需的投资和上市时间。

您能否向我们提供Java和C#/。NET之间的)软件开发生产率差异的指示?我希望收到如下答复:

我的经验是基于X年使用Java的经验,以及X年使用C#/。NET的经验。Java比C#.NET的效率高X%或C#/。NET比Java如果考虑以下因素,.

34
Edin Dazdarevic

我的经验基于10年使用=​​Java的经验,以及3年使用C#/。NET的经验。Java比C#.NET的生产率高0%这是基于编写基于后端服务的应用程序。
C#/。NET的效率可能比Java。要高出5%。但是后来,我在Java,而新的Netbeans UI编辑器可以缩小差距。

您想提高生产力吗? [〜#〜] ci [〜#〜] (理想的是持续交付)和自动化测试。通过在任何主要语言/平台/ IDE上选择语言/平台/ IDE所获得的生产率都非常低。

17
mlk

我使用Java和C#)从事大学和Real World™项目已有5年了。

不言而喻,我更喜欢使用C#,因为它简洁明了并使用语法糖。您很少会在C#中找到Factory.GetFactory(OfFactory.GetFactory(Factory));代码。由于语法更小,更简洁,因此更易于阅读和遵循。

您将更高效地选择哪一个?这取决于项目的类型。

您是否正在设计Windows桌面应用程序?然后C#是最佳选择,因为它功能强大IDE Visual Studio,而.NET Framework使创建GUI非常简单。

坦白地说,我很高兴我不再使用Java(现在已经一年多了)),因为我记得代码必须要多么繁琐。一个简单的例子是异常处理。您的代码可以抛出一个异常您必须考虑到每个可能的异常,这很快将琐碎的代码转变为20行以上的怪异。

C#不那么实用,如果您选择让代码保持打开状态,则由开发人员来决定。

在过去的一年中,C#还增加了许多功能,使它使用起来很有趣。 Lambda,委托,匿名函数(如Ruby)以及许多不错的小东西,随着您的前进,您会发现它们。

43
Sergio

我有:Java 10年,C#8年

我投票Java

  1. 没有供应商锁定(您可以将应用程序/ Web服务器从linux更改为Windows到Unix)
  2. 第三方软件包(例如JasperReports JFreeChart,JSF或Spring)的互操作性/可互换性
  3. 大多数创新都来自这里(Log4j,Ant,Spring,Hibernate等)
  4. 在多个应用服务器(类似于A)上工作。例如JBoss,Tomcat,WebSphere,GlassFish,WebLogic
9
pat

我有10多年Java(自1.1版以来,确实如此!))的经验,以及7年的.NET经验(主要是C#)。

您有一个非常谨慎的决定,但是大多数情况下,您应该尝试分解为两种情况:

桌面应用程序

如果要开发桌面应用程序,则必须使用要使用的主要平台。如果是使用.NET的Microsoft平台,那么没有比母舰自身开发的平台更好的解决方案了。如果是Linux或多平台方案,请考虑Java或转向基于Web的解决方案。

基于Web的应用程序

这是一个很难做出的决定,因为每个人都有自己的优势和劣势。这里有一些:

C#

实力:目前有更多的动力在语言和平台/框架中构建新功能。一切都来自一个供应商,这绝对是一个优势。您还可以使用一些非常强大的组件,例如DevExpress(Java与DX团队多年来整合在一起的东西相差甚远,这极大地提高了生产力)。

缺点:对于企业应用程序,.NET不如Java成熟。您没有像Java那样有很多供应商在.NET中构建企业软件。

Java

实力:更加成熟(已经解释过),并且拥有一个大型社区,其中包含几个可以提供帮助的大型开源项目。几个所谓的.NET开源项目实际上只是Java项目的翻版。

缺点:Oracle拥有Java(我知道,不是JCP),这绝对是要考虑的风险。他们的意图不是很明确,我个人不喜欢这种语言的发展方向(我知道很多Java开发人员也有类似的担忧)。

服务器端应用程序

它与基于Web的应用程序基本上具有相同的论点,但是因为您不必过多担心UI Java在这种情况下会变得更强大。但是,如果平台主要是Windows .NET,可能是一个更好的选择。

总体注意事项

总的来说,我认为.NET的优势主要是因为Visual Studio 2010的紧密集成(提供了最好的IDE=),MS SQL,实体框架,IIS等。这都代表了生产率的巨大提高,我拥有大量的经验证明。我也与大多数Java转向.NET的开发人员合作,他们共享基本上是相同的意见。

我认为,微软比以往任何时候都强大意味着,.NET将会存在一段时间也是一个好点。因此,当展望10-15年时,使用.NET比使用Java更安全。

6
Alex

Java:5年(非连续)
C#:7年

我认为您无法通过这种方式来量化生产力。这在很大程度上取决于个人开发人员和项目。使用您的开发人员知道的知识。

编辑:
让我们将“典型企业应用程序”定义为:

  • 多层的
  • 客户端服务器
  • 数据库支持

Java和C#都可以做到。这与语言无关,而与框架/运行时有关。同样,请使用开发人员所知道的知识。他们可以学习新的语言和新的框架,但需要花费很多时间,这对于桌面应用程序是正确的,两种语言都可以与众多GUI工具包/库一起使用,但是它们都有不同的方法和理念。

6
EricSchaefer

我是一名刚从大学毕业的学生,​​但是在这两种语言上都有商业经验,总共花了大约3年Java和4年C#.Net(注意.net表示您可以使用C#,VB.net,C++ CLI和J#和F#)。

现在,我要说明的是我的总体偏好是C#而不是Java,两者的语法相似,我喜欢.Net框架在Java跨操作系统兼容性方面的强大功能。您必须认真考虑,需要构建什么?这只是一个桌面应用程序吗?您是否需要连接到其他客户端,以及其他台式机,手机和网站?

**关于IDE的讨论失败,因为Stackoverflow上的问题已关闭。最终目的是Java有很多免费的IDE,但我认为它们没有可比性Visual Studio的功能和附加功能,但请注意,Visual Studio的费用超过了每个许可证的费用。

您需要查看开发团队已经具备的技能,因为这将产生初步影响。在这方面,无论是语言/框架方面的经验丰富的用户,还是这里都没有给过经验的用户。我想指出的是,您不必考虑该语言,因为该语言只是语法,而是该语言所使用的工具和框架。

4
JonWillis

我在Java和.NET之间来回切换,从Java 1.2到1.6,而.NET 1到4.0,超过10多年的专业工作经验(在此之前是C/C++程序员)。

一次,就像.NET 2.0一样,我会说Java和C#大约是相同的,尤其是对于后端工作。语言构造仍然非常相似。NET由于Visual Studio中的WinForms设计器,可能在桌面UI编程中获得了Edge,并且Java本来可以在Web/Server中拥有Edge的东西,主要是因为您不受IIS的束缚。

现在进入.NET 3.5和4,我将生产力Edge交给.NET,是不言而喻的。在我看来,这主要是因为.NET是一种发展迅速的语言,因为MS可以相对快速地做出语言决策,而不是通过JCP的政策来推动变化。 var关键字,Linq的整体,扩展方法,Null运算符??dynamic,也许还有很多真正可以提高生产力的好东西。

就是说,一个项目的“最有生产力”的语言几乎始终是大多数开发人员最熟悉和最有经验的语言。学习曲线始终是最大的生产力杀手。

3
rally25rs

我注意到的一件事是,许多C#/。NET商店都采取“不在这里发明”的态度,并禁止所有第三方/开源库,而许多Java商店更愿意使用开源库。同样,似乎还有更多可用于Java的库。即使您查看.NET中的一些很棒的第三方库,例如NHibernate,NPOI,Spring.NET等。它们是Java库的端口,因此位于它们的后面。当然,似乎其中许多创新首先出现在Java上,之后又创建了.NET端口。从库的角度来看,Java无疑在新的创新发现方面胜出。

微软仍然会制作一些官方库,例如ASP MVC,LINQ等。但是经常与ASP一样,MVC的第三方库(如Struts,Spring MVC等)已经在Java中发布,并且微软迟到了进入模型视图的时间控制器Web范例。

当然,这些库中的许多库可以节省大量时间,并使您的工作效率更高。核心语言与核心语言C#和Java并没有什么不同,对我来说,它太接近了。投入第三方图书馆的力量,规模肯定会倾向于Java。仍然在开店的情况下,很多这种倾斜都可以平衡。只是很多.NET商店在这里没有发明态度,而许多Java商店却是完成工作所需要的一切……在我工作的公司中,.NET团队甚至都是如此。 Java团队拥有许多已批准的第三方库/实用程序,但收效甚微(由于管理)。而且,使用.NET时,很多其他好东西也不是免费的(例如,如果要使用Microsoft Office文档,则在NPOI之前,大多数解决方案[不包括办公室自动化]都不免费。而Java有自2001年以来的POI我认为NPOI直到2008年才问世,根据npoi项目站点很难说。

3
Cervo

由于语法和工具的相似性,C#或Java)的生产率提高幅度不大,不会对您的10至15个工作年的工作项目产生重大影响。更紧密地解决以下问题:

  1. 项目的要求是什么?满足这些要求的语言功能是什么(例如,跨平台与富Windows客户端)。
  2. 作为项目方法/方法论,我可以采取什么措施,使我的团队高效地工作。
  3. 对于工作环境,我该怎么办,以确保我聘用,保留和充分利用可能用于最佳项目的最佳团队。

我认为,我认为问题背后的前提是“((C#和Java)之间的生产率差异可能会显着影响所需的投资和上市时间)”。我毫不怀疑会有一些区别,但这不会很明显。

3
AlexC

我问了自己很多问题:哪个更好? C#或Java?

我会给您一个建议,这个建议是我研究的结论:没有一个是更好的,只有您自己熟悉的语言才是最好的,并且您可以使用许多有趣的应用程序。

学习如何编程,然后使用一种语言进行大量培训,当您精通使用一种语言编写代码时,考虑其他语言并相信我,您将像学习蛋糕一样学习其他语言。

0
Salah