Mirah在JRuby,Groovy和Scala上提供什么?

时间:2010-11-23 02:02:18

标签: scala groovy jruby language-comparisons mirah

Mirah language对JRuby,Groovy和Scala的贡献是什么?

5 个答案:

答案 0 :(得分:12)

与功能齐全的语言不同,Mirrah更像是Java库的不同“前端”。

Mirrah代码不依赖于它自己的环境(编译时的Mirrah编译器除外)。

这是主要的好处:Java的不同语法。

答案 1 :(得分:9)

根据an interview with Mirah's creator,Mirah(在爪哇语中意为“红宝石”)的观点是创建一个Ruby的高性能变体。足够类似Ruby的语法使其易于使用,但仍然足够接近Java和JVM语义,以便它可以在JVM之上运行而无需大型运行时层的开销。

选择报价:

  

Mirah相对于类似语言的许多好处归结为如此轻量级。在Groovy,Scala,JRuby,Clojure或Jython中,当你写“Hello,world”时,你已经厌倦了运行时库。在Mirah中,“Hello,world”和JRuby一样简洁,但是还有一个额外的好处,就是不要依赖于你;源文件进入,类文件出来,就是这样。我相信JVM需要一种新的无依赖语言,Mirah是我尝试提供一种语言的。

     

虽然JRuby的性能可以媲美或超过其他Ruby解释器,但最快的JRuby代码仍然将纯Java性能滞后一个数量级。虽然你可以期望JRuby的性能在1.6版本中得到改善,但Mirah试图突破性能上限并为寻求与Java代码相同的执行速度的程序员提供一个选项。

答案 2 :(得分:8)

<强> VS。 Groovy的

  • 现有Ruby / JRuby程序员更熟悉的语法
  • 静态类型

<强> VS。 JRuby的

  • 静态类型

<强> VS。阶

  • 现有Ruby / JRuby程序员更熟悉的语法

主要优点是静态类型(在JVM上更快的性能以及更容易与现有Java库的互操作)和熟悉的语法(,如果您来自Ruby )。

当依赖性是一个考虑因素(开发一个Android应用程序,例如)时,你不应该让这个指南成为你的语言选择。使用像Proguard这样的工具可以平衡比赛场地。

如果你来自Ruby,那么Mirah是个不错的选择。如果你是来自Erlang或Haskell,那么你会想要Scala。如果你是LISPer,那么你会想看看Clojure。

如果你以前唯一的经验是Java,那么你就会感到羞耻! - 你可能应该去Scala - 它正在迅速赢得作为Java明显的继承人的声誉,工具支持目前更强大,你将在一个大型社区中进行同样的过渡,因此有很多博客/教程已经可用。

和Groovy? Groovy现在几乎从来都不是正确的选择...

答案 3 :(得分:5)

我每天都在Google AppEngine上使用Mirah。

以下是我使用Mirah的原因:

  • 没有运行时库
  • 非常好的语法
  • 和Java一样快

将Java置于引擎盖下也非常有用:

  • 固体类型系统
  • 记录良好
  • 常见问题的已知解决方案

我做了一些Groovy,很多JRuby,没有Scala。 如果你知道这些,试试Mirah。 如果没有,我会选择JRuby。

答案 4 :(得分:-2)

Mirah只是java的另一种rubyish语法。恕我直言并不擅长。它对仿制药一无所知,而且工具也很差。最好试试锡兰,xtend,scala,kotlin等 Mirah编译为java类(不再是源代码)。 Xtend编译为java源代码,因此更容易找到它在幕后的功能。 Ceylon和scala都有自己的stdlibs(尽管如此,java interop几乎完美无缺),不确定kotlin。 Kotlin是JetBrains的孩子,因此与IDEA联系在一起 JRuby我也不喜欢。它在java interop中有太多bug。它也有太多重新发明的轮子。我的意思是编码(它不使用java字符串和正则表达式,而是使用原始字节缓冲区之上的自定义字符串),IO,异常处理,线程等。
jruby的唯一优点是它是红宝石。许多ruby代码都可以正常工作 Groovy OTOH没有重新发明轮子,它使用经过良好测试的java库,并且只添加语法糖。 groovy-java interop也很棒。它可以泛化。线程,异常,字符串,集合 - 只是java中的java类。

相关问题