代码之家  ›  专栏  ›  技术社区  ›  Chiron

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

  •  12
  • Chiron  · 技术社区  · 15 年前

    做什么 Mirah language 提供JRuby、Groovy和Scala?

    5 回复  |  直到 9 年前
        1
  •  9
  •   Thilo    15 年前

    根据 an interview with Mirah's creator Mirah(在Javanese中是“ruby”的意思)的目的是创建一个高性能的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
  •  12
  •   soc Bhuwan Tripathi    15 年前

    与全功能语言不同,Mirrah有自己的库,它更像是Java库的另一个“前端”。

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

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

        3
  •  8
  •   Kevin Wright    15 年前

    与Groovy的比较

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

    对JRuby

    • 静态类型

    对斯卡拉

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

    主要优点是静态类型( JVM上的更快性能和与现有Java库更容易的互操作 )熟悉的语法( 如果你来自鲁比 ).

    当依赖性是一个考虑因素时( 例如,开发android应用程序 )那么你就不应该让这个指导你的语言选择。使用像Proguard这样的工具可以使游戏环境变得更加公平。

    如果你来自鲁比,那么米拉是个不错的选择。如果你是从Erlang或Haskell来的,那么你会想要Scala。如果你是一个口齿不清的人,那么你会想看看克罗朱尔。

    如果你以前唯一的经验是Java,那你真丢脸!-而且你可能应该选择Scala——它正在迅速获得Java的继承者的声誉,工具支持目前更强大,你将在一个由其他人组成的大社区中进行同样的转换,因此已经有很多博客/教程可用。

    很好吗?如今,Groovy几乎永远都不是正确的选择。。。

        4
  •  5
  •   hakunin    15 年前

    我每天在谷歌AppEngine上使用Mirah。

    以下是我使用米拉的理由:

    • 没有运行库
    • 很好的语法
    • 和Java一样快

    把Java放在幕后也很有帮助:

    • 固体打字机
    • 另外其文档也很齐全
    • 常见问题的已知解决方案

    我做了一些Groovy,很多JRuby和Scala。 如果你知道这些,试试米拉。 如果不是,我会和JRuby一起去。

        5
  •  -2
  •   guai    11 年前

    Mirah只是java的另一个rubysh语法。我一点也不好。它对泛型一无所知,而且工具也很差。最好试试锡兰、xtend、scala、kotlin等。
    Mirah编译成java类(不再是源代码)。Xtend编译成java源代码,因此更容易发现它在幕后的作用。Ceylon和scala都有自己的stdlibs(尽管java interop在两者中都近乎完美),但对kotlin并不确定。科特林是杰特布莱恩斯的孩子,所以和这个想法联系在一起。
    我也不喜欢。它在java互操作中有太多的错误。它也有太多重新发明的轮子。我的意思是编码(它不使用java字符串和regex,而是在原始字节缓冲区之上使用自定义字符串)、IOs、异常处理、线程等。
    jruby的唯一优势是它是ruby。很多ruby代码都能正常工作。
    Groovy OTOH并没有重新发明轮子,它使用了经过良好测试的java库,只是添加了语法糖。groovy java互操作也很棒。它可以泛型。线程、异常、字符串、集合——和java中一样,都是java类。