Можно ли заставить Node.js использовать Rhino в качестве движка Javascript?
Я использую Node.js для нескольких заданий в своих веб-приложениях, и пока все в порядке.
Но Node.js использует Google V8 в качестве движка Javascript по умолчанию (JSE), а V8 работает исключительно на архитектурах набора команд x86 и ARM (ISA).
Теперь у меня есть компьютер Mac с процессором PPC, на котором я хочу запустить Node.js.
Для этого в качестве JIT-компилятора рекомендуется использовать виртуальную машину Rhino + OpenJDK Shark + низкоуровневую виртуальную машину ( LLVM). В настоящее время это выглядит наиболее приемлемым способом запуска Node.js на PPC ISA. Или есть лучший способ сделать это?
Не могли бы вы заранее сказать, можно ли заставить Node.js работать с Rhino? Кстати, Node.js написан на C++, и у меня есть опыт программирования на C++, то есть я могу попытаться изменить код Node.js, если потребуется.
Благодарю.
4 ответа
Нет, node.js связан с V8 почти во всех исходных файлах и включает все надстройки, которые были написаны. Даже если у вас есть опыт работы с C++, преобразование будет огромной задачей.
Не говоря уже о том, что, если вы пойдете по этому пути в одиночку, вы также будете одиноки в его поддержании. (Принимая во внимание, что сам node.js собрал большое сообщество участников.)
Если вы действительно хотите приложить такие усилия, сначала обсудите это в списке рассылки. Или, в качестве альтернативы, соберите импульс для PPC-порта V8. (В равной степени, если не более сложной задачей.)
Для серверного движка JavaScript, который использует Rhino из коробки, взгляните на проект Narwhal. (Хотя это кажется менее активным.)
Это невозможно, так как Штеф уже сказал, что Node.js тесно связан с V8, он использует специальные методы V8 повсеместно, зависимость будет только расти в ближайшем будущем, есть "взломы" на пути проникновения во внутренности V8. чтобы значительно улучшить производительность при записи строк в сокеты.
Многие модули (утверждают, проверяют и т. Д.) Зависят от конкретных функций V8. Нет никакого способа, которым код будет каким-либо образом переносимым между V8 и другими JS-серверами на стороне сервера.
Хотя Штеф рассматривает варианты, я вижу только одно решение:
Избавьтесь от оборудования PPC.
Если вы действительно хотите, чтобы он работал на Rhino, вы окажетесь в полном кошмаре, в конце концов у вас будет два приложения: либо написать два разных приложения, либо создать гигантский слой времени выполнения для Rhino, который пытается эмулировать Node.js. Удачи в этом, поскольку многие вещи просто не будут доступны в Rhino.
Также не будет поддержки сторонних библиотек.
Серьезно, получить другой компьютер, написать все обертки и т. Д. Самостоятельно - это будет стоить вашего времени, на котором вы могли бы написать потрясающий материал Node.js. А так как время это деньги...
Проект по портированию движка V8 JavaScript возник в Google на архитектуру PowerPC.