Mirah 语言比 JRuby、Groovy 和 Scala 提供什么?
5 回答
与自带库的全功能语言不同,Mirrah 更像是 Java 库的不同“前端”。
Mirrah 代码不依赖于它自己的环境(编译时的 Mirrah 编译器除外)。
这是主要的好处:Java 的不同语法。
根据对Mirah 的创建者的采访, 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 代码同等执行速度的程序员提供了一个选择。
与 Groovy 对比
- 现有 Ruby/JRuby 程序员更熟悉的语法
- 静态类型
与 JRuby
- 静态类型
与 Scala 对比
- 现有 Ruby/JRuby 程序员更熟悉的语法
主要优点是静态类型(在 JVM 上更快的性能和更容易与现有 Java 库的互操作)和熟悉的语法(如果您来自 Ruby)。
如果需要考虑依赖项(例如,开发一个 android 应用程序),那么您不应该让这个指导您的语言选择。使用像 Proguard 这样的工具将公平竞争。
如果您来自 Ruby,那么 Mirah 是一个不错的选择。如果你来自 Erlang 或 Haskell,那么你会想要 Scala。如果你是 LISPer,那么你会想看看 Clojure。
如果您之前唯一的经验是 Java,那么您真丢脸!- 你可能应该选择 Scala - 作为 Java 的继承者,它正在迅速获得声誉,工具支持目前更强大,你将在一个大型社区中进行同样的转换,所以有很多博客/教程已经可用。
和 Groovy?如今,Groovy 几乎从来都不是正确的选择……
我每天都在 Google AppEngine 上使用 Mirah。
以下是我使用 Mirah 的原因:
- 没有运行时库
- 非常好的语法
- 和 Java 一样快
在引擎盖下安装 Java 也非常有帮助:
- 实体类型系统
- 有据可查
- 常见问题的已知解决方案
我做了一些 Groovy,很多 JRuby,但没有做 Scala。如果你知道这些,试试 Mirah。如果没有,我会选择 JRuby。
Mirah 只是 java 的另一种 rubyish 语法。恕我直言,一点都不好。它对泛型一无所知,而且工具也很差。最好尝试 ceylon、xtend、scala、kotlin 等。 Mirah
编译为 java 类(不再是源代码)。Xtend 编译为 java 源代码,因此更容易找出它在幕后的作用。Ceylon 和 scala 有自己的标准库(尽管 java 互操作在它们两者中都接近完美),但不确定 kotlin。Kotlin 是 JetBrains 的孩子,因此与 IDEA 联系在一起。
JRuby我也不喜欢。它在 java 互操作中有太多错误。而且它也有太多重新发明的轮子。我的意思是编码(它不使用 java 字符串和正则表达式,而是在原始字节缓冲区之上的自定义字符串)、IO、异常处理、线程等。
jruby 唯一的优点是它是 ruby。许多 ruby 代码将按原样工作。
Groovy OTOH 并没有重新发明轮子,它使用经过良好测试的 java 库,并且只是添加了语法糖。groovy-java 互操作也很棒。它可以泛型。线程、异常、字符串、集合——就像它们在 java 中一样,只是 java 类。