Ruby - об'єктноорієнтована мова програмування з динамічною типізацією. Вона має декілька варіантів реалізації, які спеціально підлаштовані для окремих середовищ та потреб.
CRuby
Офіційний інтерпретатор - CRuby, також відомий як Matz's (нікнейм Юкіхіро Мацумото, автора рубі) Ruby Interpreter (MRI), є офіційною та найпопулярнішою реалізацією Ruby. Він написаний на C і є стандартом для сумісності різних бібліотек (gem's).
CRuby ідеально підходить для веб-розробки, особливо з використанням фреймворку Ruby on Rails. Підтримує багато бібліотек та має велику еко-систему та ком'юніті.
JRuby
JRuby - це реалізація Ruby, що працює на Java Virtual Machine (JVM). Спрощує інтеграцію з Java-бібліотеками, та дозволяє інтегруватись в існуючу Java систему.
Наприклад, JRuby можна використовувати у великих корпоративних застосунках, де потрібна інтеграція з існуючими (legacy) Java-системами.
Rubinius
Rubinius використовує LLVM (Low Level Virtual Machine) для компіляції коду і забезпечує багатопотоковість на рівні виконання коду. Rubinius намагається бути повністю сумісним з CRuby, що робить його непоганим варіантом в деяких випадках в якості реалізації інтерпретатора. Rubinius може бути використаний у розробці систем, які потребують обробки паралельних запитів (великої кількості), таких як фонові завдання в веб-застосунках.
TruffleRuby
TruffleRuby - це частина проєкту Oracle Graal і має високу продуктивність завдяки оптимізації на рівні віртуальної машини GraalVM. TruffleRuby підходить для обробки великих обсягів даних (наприклад - наукових досліджень), де потрібна максимальна швидкість виконання і зменшення витрат на обчислювальні ресурси.
mruby
mruby - це легка версія Ruby, призначена для вбудованих систем. Вона має менший розмір і менше споживає ресурсів, що робить її ідеальною для обмежених середовищ. mruby може бути використана у вбудованих системах, таких як мікроконтролери або інші портативні пристрої, де потрібно мінімізувати споживання пам'яті.
Чи можна запустити Ruby в браузері?
Ruby не виконується безпосередньо в браузері, як це можливо з JavaScript. Існує кілька підходів та інструментів, які дозволяють запускати Ruby в браузері.
Opal - це компілятор, який перетворює код Ruby на JavaScript, що дозволяє вам писати фронтенд-логіку на Ruby, а потім виконувати її у браузері як JavaScript. Opal обробляє Ruby код і перетворює його на оптимізований JavaScript, забезпечуючи велику частину функціональності Ruby.
Наприклад, на сайті Opal ви можете протестувати роботу та наочно побачити приклад роботи компілятора та того як Ruby код перетворюється на JS та виконується в браузере. Простий приклад:
Конвертуємо Ruby в JS за допомогою Opal
Ruby:
def title(s)
puts "title is #{s}"
end
puts title('hehe')
JS на виході:
Opal.queue(function(Opal) {/* Generated by Opal 1.8.2 */
var $def = Opal.def, self = Opal.top, nil = Opal.nil;
Opal.add_stubs('puts,title');
$def(self, '$title', function $$title(s) {
var self = this;
return self.$puts("title is " + (s))
});
return self.$puts(self.$title("hehe"));
});
І результат:
title is hehe
WebAssembly (Wasm) - це інструмент, який може скомпілювати код реалізації мови програмування та запустити в браузері. Це не прямий запуск Ruby в браузері. Це доволі складно, але можливо. Один з варіантів може виглядати так: mruby конвертується в C, а WebAssembly вже конвертує код у JavaScript, який вже можна запустити в бразері.
Існують й інші варіанти компіляції та запуску рубі коду в браузері. Але і так можна зрозуміти, що наразі немає можливості прямого запуску ruby-коду в браузері.
Як перевірити яку реалізацію Ruby я використовую?
Все просто - запускаємо в терміналі команду, щоб побачити версію ruby, реалізацію та архітектуру.
Під ruby - мається на увазі дефолтна реалізація (CRuby).
Для JRuby буде приблизно такий результат:
jruby 9.2.11.1 (2.5.7) 2020-03-02 d8d4b94 OpenJDK 64-Bit Server VM 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 on 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 +jit [linux-x86_64]
Тобто тут ми наочно бачимо текст jruby.
Поширити цей допис
Цитувати допис
Оберіть та скопіюйте потрібний стандарт цитування: