草庐IT

java - .NET/Mono 还是 Java 是跨平台开发的更好选择?

coder 2023-04-27 原文

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




Mono 的库比 Java 少多少?

我缺乏对这两种选择的概述,但我对下一个项目有很大的选择自由。我正在寻找以下领域的硬技术事实

  • 性能(例如,我听说 Java 适合线程处理,我听说最近对 .NET 的运行时代码优化变得非常好)
  • 现实世界的便携性(两者都意味着便携,每个 Catch-22 是什么?)
  • 工具可用性(CI,构建自动化、调试、IDE)

  • 我特别在寻找你在自己的工作中实际经历过的东西,而不是我可以谷歌搜索的东西。我的应用程序将是处理来自时间序列的大量数据的后端服务。

    我的主要目标平台是 Linux。

    编辑:
    为了更充分地表达我的问题,我对整个包(第 3 方库等)感兴趣,而不仅仅是语言。对于库,这可能归结为“Mono 的库比 Java 少多少”的问题?

    仅供引用,此后我为这个项目选择了 Java,因为它在可移植性方面似乎更加经久不衰,而且它在旧系统上也已经存在一段时间了。我对此有点难过,因为我对 C# 很好奇,我很想用它做一些大型项目,但也许下次吧。感谢所有的建议。

    最佳答案

    嗯....Java 实际上更便携。 Mono 并未在任何地方实现,而且它明显落后于 Microsoft 的实现。 Java SDK 似乎可以更好地跨平台同步(并且可以在更多平台上运行)。

    我还要说 Java 在所有这些平台上都有更多的工具可用性,尽管在 Windows 平台上有很多可用于 .NET 的工具。

    2014 年更新

    我在 2014 年仍然持有这个观点。但是,我将通过说我刚刚开始关注 Mono 在很长一段时间没有真正关心之后才开始关注这一点,因此 Mono 运行时(或生态系统)可能会有改进) 我还没有意识到。 AFAIK,仍然不支持 WPF、WCF、WF、WIF。 Mono 可以在 iOS 上运行,但据我所知,Java 运行时仍然可以在比 Mono 多得多的平台上运行。此外,Mono 开始看到一些大大改进的工具 (Xamarin),而且微软似乎有一种更加跨平台的态度和愿意与合作伙伴合作,使他们成为互补的,而不是具有竞争力的(例如,Mono 将成为即将到来的 OWIN/Helios ASP.NET 格局的一个非常重要的部分)。我怀疑在 future 几年,可移植性方面的差异会迅速缩小,尤其是在 .NET 开源之后。

    2018 年更新

    我对此的看法开始相反。我认为 .NET,尤其是 .NET Core,已经开始与 Java 实现“可移植性平等”。正在努力将 WPF 引入某些平台的 .NET Core,并且 .NET Core 本身现在可以在许多平台上运行。 Mono(归 Xamarin 所有,现在归 Microsoft 所有)是比以往任何时候都更加成熟和精致的产品,编写可在多个平台上运行的应用程序不再是 .NET 黑客的深入知识领域,而是一项相对简单的工作.当然,有些库、服务和应用程序仅适用于 Windows 或只能针对特定平台——但 Java(广义上)也是如此。

    如果此时我站在 OP 的立场上,我想不出语言或技术堆栈本身固有的任何原因会阻止我选择 .NET 用于从这一点开始的任何应用程序。

    关于java - .NET/Mono 还是 Java 是跨平台开发的更好选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61559/

    有关java - .NET/Mono 还是 Java 是跨平台开发的更好选择?的更多相关文章

    1. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

      作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

    2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

      我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

    3. ruby - 如何模拟 Net::HTTP::Post? - 2

      是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

    4. java - 等价于 Java 中的 Ruby Hash - 2

      我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

    5. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    6. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

      我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

    7. ruby-on-rails - 更好的替代方法 try( :output). try( :data). try( :name)? - 2

      “输出”是一个序列化的OpenStruct。定义标题try(:output).try(:data).try(:title)结束什么会更好?:) 最佳答案 或者只是这样:deftitleoutput.data.titlerescuenilend 关于ruby-on-rails-更好的替代方法try(:output).try(:data).try(:name)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

    8. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

      这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

    9. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

      我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

    10. java - 从 JRuby 调用 Java 类的问题 - 2

      我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

    随机推荐