2009-09-18 14 views
8

Consideraciones de rendimiento aparte, ¿hay alguna forma conocida de tomar el código C, C++ o Objective C existente y ejecutarlo directamente en el navegador? Por ejemplo, un compilador que convierte todo el código en un lenguaje interpretado que se puede ejecutar en el navegador. Como Javascript, Actionscript y Flash Player, o supongo que Java y JVM.¿Está ejecutando el código C directamente en el navegador?

Reconozco que hay lenguajes de nivel superior como HaXe que se pueden compilar a diferentes objetivos. Y, por otro lado, hay proyectos como Cappuccino y GWT que intentan hacer que el desarrollo de Javascript se parezca más al desarrollo de escritorio tradicional.

Pero me preguntaba si tenía una aplicación que funcionaba en un escritorio o una base de código existente hecha en C, C++ o Objective C ¿podría fácilmente convertirse en una aplicación basada en web?

¿Se está trabajando en este frente? ¿Hay alguna razón práctica para hacer esto? Básicamente, ¿convertir el navegador en el sistema operativo?

Además de los problemas de rendimiento y el afianzamiento de los proveedores de sistemas operativos, ¿hay algún motivo técnico por el que no se pueda lograr? ¿Podría este tipo de código como C ser calzado en una máquina virtual alojada en un navegador?

+1

Bueno, una búsqueda rápida en Google descubrió el proyecto "Native Client" de Google. http://code.google.com/p/nativeclient/ –

+1

¿En qué se diferencia esto de escribir complementos de navegador? –

+0

Buena pregunta. Supongo que finalmente elimina la necesidad de instalar complementos adicionales. Si había una versión genérica vm instalada en el navegador, entonces podría tener un destino de implementación coherente. –

Respuesta

3

Creo que lo más parecido que está buscando es Google Native Client. Sin embargo, todavía está en las primeras etapas de desarrollo.

16

Google Native Client (NaCl) utiliza un compilador ajustado para crear código objeto x86 que puede ser verificado por el navegador y ejecutarse en un entorno limitado, sin un golpe de rendimiento importante - cosas muy interesantes. Han compilado Quake debajo de él.

Este Matasano article tiene un buen deterioro en la forma en que funciona.

+0

Esto es muy interesante. Muchas gracias. –

6

Aquí es un compilador de C, que se dirige a un número de otros idiomas, incluyendo Javascript:

http://cowlark.com/clue/

No está seguro de qué estado está en - última vez que hablé con el autor, que maneja pura C89 (sujeto a las limitaciones de la interfaz del compilador). AFAIK no hay planes para que soporte una GUI.

Me preguntaba si tenía una aplicación que funcionaba en un escritorio o una base de código existente hecha en C, C++ o Objective C, ¿podría fácilmente convertirse en una aplicación basada en web?

Eso es más o menos lo que Silverlight es (C# en lugar de Objective-C, por supuesto), ya que hace que el tiempo de ejecución de .NET esté disponible. Portar una aplicación de escritorio suele ser tanto sobre la GUI como sobre el idioma: si tiene una aplicación Cocoa y desea transferirla a otro entorno (ya sea un navegador o Windows), entonces necesitaría algo más que solo un compilador cruzado de Objective-C, necesita el Kit de aplicaciones, etc. Como WINE es un contraejemplo notable, es bastante raro que estas bibliotecas específicas del sistema operativo estén disponibles en otras plataformas, y mucho menos de manera eficiente. E incluso cuando están disponibles, hay problemas de apariencia y usabilidad cuando las convenciones de una interfaz de usuario se atornillan una encima de la otra. Entonces, la gente tiende a usar frameworks portátiles para comenzar, o bien reescribe completamente la capa de presentación de la aplicación.

¿Básicamente convierte el navegador en el sistema operativo?

Existen varios proyectos en curso para convertir el navegador en un entorno con todas las características para las aplicaciones (no estoy seguro de si esto es lo que quiere decir con "SO"). Flash y AIR, Silverlight, HTML 5. Ninguno de ellos planea proporcionar C como lenguaje de programación, por lo que yo sé.

2

Puede que le interese LLVM, la máquina virtual de bajo nivel. Sería posible implementar un LLVM dentro de un applet de Java, un applet de Flash o incluso en Javascript (no me sorprendería que alguien no haya hecho algunas o todas las anteriores).

La conversión de una existente es una caldera de pescado completamente diferente. Los paradigmas de la interacción del usuario son tan completamente diferentes entre una aplicación de "escritorio" y una aplicación de "navegador" que gran parte de ella tendrá que rediseñarse antes de que un puerto sea razonable.

+0

Sí, estaba leyendo sobre LLVM en Ars Technica sobre OS X Snow Leopard.Eso es algo de lo que surgió la pregunta. Y preguntándome si sería capaz de escribir una aplicación Cocoa y apuntar a OS X, y al navegador desde la misma fuente. –

0

Me parece que los principales desafíos no están relacionados con el idioma que se utiliza. Sospecho que C sería un lenguaje muy difícil de implementar en JavaScript, pero es posible. Me parece una mala idea.

En primer lugar, no escribiría una aplicación de escritorio en C, y mucho menos una aplicación web. En segundo lugar, las aplicaciones web requieren una arquitectura completamente diferente a las aplicaciones de escritorio. Simplemente, la compilación cruzada de una aplicación de escritorio no lo convertirá en una aplicación web. Si está buscando la portabilidad, le sugiero usar un lenguaje de alto nivel dirigido a la JVM.

1

Esto es posible con un control ActiveX, pero esto solo funciona en microsoft internet explorer.

2

Consulte Adobe Alchemy (anteriormente conocido como FlaCC), que utiliza LLVM para compilar C/C++ a Flash.

0

http://code.google.com/p/cibyl/wiki/Cibyl puede hacer que las fuentes de Java, por lo que podría compilar eso para el complemento de Java en un navegador. Sin embargo, dado que los complementos de Java son mucho menos comunes hoy en día, puede que estés mejor con una solución que se compila en Javascript.

0

¿Quizás deberías considerar http://ideone.com para compilar C++ en el navegador? También puede compilar o interpretar otros idiomas, personalmente lo uso en lugar de idiomas más exóticos - Tengo c y C++ en mi PC :)

3

Emscripten le permite compilar su código en javascript, que es independiente de la plataforma y el navegador .

+1

Probablemente [Asamblea Web] (http://webassembly.org/) también debe mencionarse aquí, por el bien de completar –

Cuestiones relacionadas