【发布时间】:2009-10-28 13:08:58
【问题描述】:
为什么大多数代理研究和工作都是用 Java 完成的?开发人员似乎完全避开 .net 框架是有原因的,还是因为 .net 比 Java 更商业化,研究人员没有谈论它?
【问题讨论】:
-
repast 开发时不存在 .NET Express 版本,Java 易于扩展,并且对于使用 Terracotta 和类似的 map-reduce 技术跨越机器的非常大的模拟作业非常有用。
为什么大多数代理研究和工作都是用 Java 完成的?开发人员似乎完全避开 .net 框架是有原因的,还是因为 .net 比 Java 更商业化,研究人员没有谈论它?
【问题讨论】:
关于为什么使用 Java 的一个假设:研究人员主要受雇于大学。研究人员通常不编写代码——靠拉面为生的研究生为他们编写代码。大多数大学只是普通 java 程序员的工厂。因此,大多数研究都是用 Java 完成的。
关于为什么不使用 .NET 的另一个假设:暂时不考虑 Mono,.NET 与 Microsoft 的操作系统相关联。研究中心提供的工作环境很可能没有运行 Microsoft 操作系统/实用程序。
这当然与商业可行性无关 - Java 与 .NET 一样“商业”,就其价值而言。
【讨论】:
【讨论】:
.net (MS) 需要投资购买操作系统和开发平台的许可证。 Java (Sun) 和目标操作系统基本上是免费的(您为支持付费),经过企业验证并且该语言广泛传播。
基于代理的编程在扩展场景中很重要。在 .net (MS) 上横向扩展意味着投入大量资金!
【讨论】:
显而易见的答案是,Java 是免费的(就像啤酒一样),您愿意花时间在任何事情上。除了硬件,您还可以运行 Linux(或 Open Solaris 等)、免费 JVM、大量免费 API - 这是文化的一部分,免费鼓励免费。
Microsoft 生态系统更像是随用随付的环境。许多在 Java 世界中免费的工具在 Microsoft 世界中只有付费选项。
在研究领域,那里有大量薪酬过低的研究生,人力成本要便宜得多,因此商业许可工具节省人力的表面上的好处并没有那么大。除此之外,可能需要一个研究项目在广泛分布的机器上运行。当这种情况发生在商业环境中时,商业实体正在赚钱(例如,一家电子商务公司需要增加其集群中的机器数量 - 他们正在获得更多流量、更多销售、更多资金,以便他们可以消费增加基础设施)。在研究中,商业软件增加的许可要求不一定符合其潜在的经济性。
总而言之,Java 获得了偏好。一旦发生这种情况,它就会成为每个人都在谈论的工具,而且效果会滚雪球,以至于 .NET 被排挤。
当然你会发现以上所有的例外,但关键是它勾勒了趋势。
【讨论】: