2010-12-04 16 views
15

Uso Node.js para varios trabajos en mis aplicaciones web y hasta ahora todo está bien.¿Es posible hacer que Node.js use Rhino como el motor de Javascript?

Pero el Node.js utiliza el V8 de Google como el motor de JavaScript predeterminado (JSE) y el V8 se ejecuta de manera exclusiva en las arquitecturas de conjuntos de instrucciones (ISA) x86 y ARM.

Ahora tengo una computadora Mac con procesador PPC en la que quiero ejecutar el Node.js.

Para hacer eso, se me aconseja utilizar la máquina virtual Rhino + OpenJDK Shark + máquina virtual de bajo nivel (LLVM) como el compilador JIT. Actualmente, parece la forma más aplicable de ejecutar Node.js en PPC ISA. O, ¿hay una mejor manera de hacerlo?

¿Podría decir de antemano si sería posible hacer que Node.js funcione con Rhino? Btw, Node.js está escrito en C++ y tengo la experiencia de programación en C++, es decir, puedo intentar volver a editar el código de Node.js si es necesario.

Gracias.

+0

https://github.com/ic/v8-powerpc – earthmeLon

+1

Aún está en proceso, pero puede valer la pena verificarlo: https://github.com/mulesoft/rhinodo – apose

+0

rinoceronte parece una forma prometedora de ejecutar el nodo. js en arquitecturas no x86, para las cuales es compatible Java VM. – Romario

Respuesta

5

No es una implementación de Node.js en Rhino llamado Rhinodo por MuleSoft.

Pero ya no tiene que usar Rhino como back-end para Node.js: hay un puerto reciente de Node.js y V8 para PowerPC de Andrew Low (IBM).

+0

Sí, este parece el trabajo más prometedor para portar el V8 a PowerPC. Empezaré a tratar de usar en la primera oportunidad. – Romario

19

No, node.js está vinculado a V8, en casi todos los archivos fuente, e incluye todos los complementos que se han escrito. Incluso si tiene la experiencia en C++, sería una gran tarea hacer la conversión.

Sin mencionar que, si sigues este camino solo, también estarás solo para mantenerlo. (Mientras que node.js mismo ha reunido a una gran comunidad contribuyendo)

Si realmente desea hacer ese tipo de esfuerzo, considere debatirlo primero en the mailing list. O, alternativamente, junte impulso para un puerto PPC de V8. (Una tarea igualmente, si no más desalentadora.)

Para un motor de JavaScript del lado del servidor que utiliza Rhino de fábrica, échele un vistazo al Narwhal project. (Aunque parece menos activo.)

+4

Algunas personas han comenzado un esfuerzo para ejecutar Node.js en SpiderMonkey, que creo que tiene soporte para PPC. Solo notando esto aquí: http://blog.zpao.com/post/4620873765/about-that-hybrid-v8monkey-engine –

+1

No desalentaría Ömer tan rápido si fuera usted, Java tiene un eco- sistema para descartar simplemente integrando las dos tecnologías. La mayoría de las veces, cuando renuncio al uso de node.js en un nuevo proyecto, es porque realmente necesito usar una lib de Java especializada para realizar un trabajo (especialmente en el dominio empresarial de fuente cerrada). – bbozo

+0

Al menos a juzgar por las implementaciones de Java y C++ de EventMachine de ruby ​​(https://github.com/eventmachine/eventmachine - compare las carpetas ext y java), la API V8 debería ser mucho más sencilla de volver a implementar en Java y luego implementarla originalmente en C++ – bbozo

4

Esto es imposible, como Shtééf ya dijo Node.js está estrechamente vinculado a V8, utiliza métodos V8 específicos en todo el lugar, la dependencia solo crecerá en el futuro cercano, allí son "hacks" en el camino para entrar en el interior de V8 con el fin de mejorar masivamente el rendimiento al escribir cadenas en los sockets.

Muchos módulos (afirmar, inspeccionar, etc.) dependen de funciones específicas de V8. No hay forma de que el código sea de alguna manera portátil entre V8 y otros motores JS del lado del servidor.

Mientras Shtééf considera las opciones, veo una sola solución:
Deshágase del hardware PPC.

Si realmente desea que funcione en Rhino, terminará en una pesadilla de mantenimiento, al final tendrá dos aplicaciones de escritura o dos distintas, o creará una capa de tiempo de ejecución gigante para Rhino que intenta emula Node.js, buena suerte con eso, ya que muchas cosas simplemente no estarán disponibles en Rhino.

Además, no se admitirán las bibliotecas de terceros.

En serio, obtener otra computadora, escribir todas las envolturas etc. por su cuenta solo le costará el tiempo, en el que podría haber escrito cosas increíbles de Node.js. Y dado que el tiempo es dinero ...

+1

Oh, mira, alguien necesitaba aumentar su ego, contento de que me ayudó con una pregunta de casi un año :) –

+0

Sí, tienes razón. Perdón por mi comentario. Y, usted agregó a la discusión, gracias por eso. (mi -1 comentario eliminado) –

0

Proyecto para portar el motor de JavaScript V8 originado en Google a la arquitectura PowerPC.

https://github.com/ic/v8-powerpc

+0

Este proyecto ha estado inactivo durante 2 años, hay una mejor alternativa anterior. – niutech

Cuestiones relacionadas