Что предлагает язык Mirah по сравнению с JRuby, Groovy и Scala?
Что предлагает Mirah по сравнению с JRuby, Groovy и Scala?
Ответы (5)
Согласно интервью с создателем Миры цель Mirah (что на яванском означает рубин) - создать высокопроизводительный вариант Ruby. Достаточно синтаксиса, подобного Ruby, чтобы с ним было удобно работать, но все же достаточно близко к семантике Java и JVM, чтобы он мог работать без накладных расходов большого уровня времени выполнения поверх JVM.
Цитата выбора:
Во многом преимущество Mirah перед аналогичными языками сводится к тому, что он настолько легкий. В Groovy, Scala, JRuby, Clojure или Jython в тот момент, когда вы пишете Hello, world, вы приковываете себя к библиотеке времени выполнения. В Mirah, Hello, мир так же краток, как и в JRuby, но имеет дополнительное преимущество в том, что он не навязывает вам никаких зависимостей; входит исходный файл, выходит файл класса, и все. Я считаю, что JVM нужен новый язык, свободный от зависимостей, и Mirah - моя попытка создать его.
Хотя JRuby по производительности соперничает с другими интерпретаторами Ruby или превосходит их, самый быстрый код JRuby по-прежнему на порядок отстает от чистой производительности Java. Хотя вы можете ожидать, что производительность JRuby улучшится с выпуском 1.6, Mirah - это попытка преодолеть потолок производительности и предоставить возможность программистам, которым требуется скорость выполнения на уровне кода Java.
Hello World
в Scala, вы получаете 6.496.110 scala-library.jar
(Scala 2.8.1), плюс собственные библиотеки Java (которые, конечно, позорят этот файл). То, что Mirah не предлагает никаких новых библиотек, действительно интересно.
- person Daniel C. Sobral; 23.11.2010
В отличие от полнофункциональных языков, которые поставляются со своими собственными библиотеками, Mirrah больше похожа на другой «интерфейс» для библиотек Java.
Код Mirrah не зависит от собственной среды (кроме компилятора Mirrah во время компиляции).
В этом главное преимущество: другой синтаксис для Java.
vs. Отличный
- Синтаксис, более знакомый существующим программистам на Ruby / JRuby
- Статически типизированный
vs. JRuby
- Статически типизированный
vs. Scala
- Синтаксис, более знакомый существующим программистам на Ruby / JRuby
ГЛАВНЫМИ преимуществами являются статическая типизация (более высокая производительность на JVM и гораздо более простое взаимодействие с существующими библиотеками Java) и знакомый синтаксис (если вы пришли из Ruby).
Если необходимо учитывать зависимости (например, разработка приложения для Android), вы не должны позволять этому руководствоваться вашим выбором языка. Использование такого инструмента, как Proguard, выровняет игровое поле.
Если вы пришли из Ruby, то Mirah - хороший выбор. Если вы переходите с Erlang или Haskell, вам понадобится Scala. Если вы LISPer, вам стоит взглянуть на Clojure.
Если ваш единственный предыдущий опыт - Java, позор вам! - и вам, вероятно, следует перейти на Scala - он быстро завоевывает репутацию наследника Java, поддержка инструментов в настоящее время усилена, и вы будете в большом сообществе других, которые сделали такой же переход, поэтому есть много блогов / обучающие материалы уже доступны.
и Groovy? В наши дни Groovy почти никогда не бывает правильным выбором ...
Я использую Mirah каждый день в Google AppEngine.
Вот мои причины использовать Mirah:
- нет библиотеки времени выполнения
- очень хороший синтаксис
- так же быстро, как Java
Наличие Java под капотом тоже очень полезно:
- твердотельная система
- хорошо задокументированы
- известные решения распространенных проблем
Я сделал немного Groovy, много JRuby и ничего не Scala. Если вы их знаете, попробуйте Mirah. Если нет, я бы пошел с JRuby.
Mirah - это просто еще один рубиновый синтаксис для java. ИМХО совсем не хорошо. Он ничего не знает о дженериках, а также имеет плохой инструментарий. Лучше попробуйте ceylon, xtend, scala, kotlin и т. Д.
Mirah компилируется в классы java (больше не в исходники). Xtend компилируется в исходные коды java, и так проще узнать, что он делает под капотом. У Ceylon и scala есть свои собственные библиотеки stdlib (тем не менее, в них обоих java interop почти идеален), насчет kotlin я не уверен. Kotlin - дитя JetBrains, поэтому он привязан к IDEA.
JRuby Мне тоже не нравится. Слишком много ошибок в взаимодействии с Java. И еще слишком много изобретенных колес. Я имею в виду кодировки (он не использует строки java и регулярные выражения, а настраиваемые строки поверх необработанных байтовых буферов), операции ввода-вывода, обработку исключений, потоки и т. Д.
Единственное преимущество jruby - это то, что он рубиновый. Многие Ruby-коды будут работать как есть.
Groovy OTOH не изобретает велосипед, он использует хорошо протестированные библиотеки java и просто добавляет к ним синтаксический сахар. Также отличное взаимодействие с Groovy-java. Это могут дженерики. Потоки, исключения, строки, коллекции - это просто классы java, как они есть в java.