2010-08-31 19 views
9

Actualmente estoy en la necesidad de desarrollar una aplicación de Windows. Quiero mantener las cosas simples (en el espíritu de uTorrent) y me gustaría que el programa resultante sea un archivo .exe único que contenga todo lo que necesita.Desarrollo de aplicaciones de Windows con JavaScript

El programa es simple. Solo necesita un poco de UI. Tiene que funcionar durante un largo período de tiempo (sentar allí como un icono de la bandeja). Necesita hacer algunas tareas de rutina como E/S simple. También necesita acceder a Internet, específicamente a algún servidor web.

Aparte de estos pequeños requisitos, me gustaría escribir todo en JavaScript, ya que me siento más cómodo con él que con cualquier otro idioma.

Sé que hay cosas como Windows Script Host que te permiten ejecutar programas de JavaScript e interactuar con algunas API de Win32, pero ¿podré hacer todo lo que necesito con Windows Script Host? ¿Puedo empaquetar todo el Windows Script Host en un solo .exe?

Si no, ¿qué alternativas tengo para JavaScript?

+0

¿Conoces las HTA? Esa sería una forma de hacer * la GUI parte * completamente en HTML/CSS/JS, al menos. –

+0

@Andreas: Sí, creo que funciona de manera similar a Windows Script Host (probablemente usa cscript.exe, etc.). Así que todavía no estoy seguro si es suficiente para hacer lo que necesito. –

+4

JavaScript NO es un motor de navegador, es un lenguaje de scripting. Puede haber implementaciones de la misma que están vinculadas a un navegador en particular, pero al menos V8 es un motor "vanilla" sin ningún enlace particular. Eche un vistazo a Node.js para ver un ejemplo de uso no del navegador. –

Respuesta

8

he encontrado que hay realmente un compilador de JavaScript que viene con el marco .NET llamada jsc.exe.

Para más información:

http://www.phpied.com/make-your-javascript-a-windows-exe/

http://msdn.microsoft.com/en-us/library/7435xtz6(VS.80).aspx

supongo que no es realmente JavaScript, ya que introduce cosas adicionales como import e incluso algunos class sintaxis que es raro para mí. Pero esto funciona perfectamente para mí, ya que solo haré las cosas como estoy acostumbrado en la web.

+0

Lo encontré útil –

0

No soy 100% pero creo que WSH usa JScript o WScript, no JavaScript.

+5

JScript es el sabor de JavaScript/ECMAScript de Microsoft. La mayoría de las personas simplemente se refieren a JScript como JavaScript. –

+0

JScript y JavaScript son lo mismo; ambos son ECMAScript. Pero Microsoft no quería interferir con la marca comercial de Sun en "Java", por lo que llamaron a su implementación ECMAScript "JScript". Pero es el mismo lenguaje. – EAMann

+0

Creo que los idiomas son bastante idénticos en este nivel (sin DOM, etc.). ¿Cuáles son las diferencias? –

3

Aparte de de Windows Script Host, hay

Ambos están escritos con tecnologías web estándar, HTML, JavaScript, Flash, etc. También se pueden ampliar con objetos COM/controles ActiveX como FileSystemObject, WMI, WScript o incluso aquellos que usted mismo escribe. Los Gadgets de escritorio de Windows tienen acceso a una API/espacio de nombres separado con varias propiedades y métodos Win32-esque.

+0

Ok. No me siento cómodo con todo el API de objeto COM, pero ¿puedo hacer solicitudes de E/S y HTTP con él?Internet parece carecer de documentación importante sobre estos. ¿Qué pasa con UI y Windows Script Host ... tampoco podría encontrar mucho de eso? –

+0

@Luca: puede crear solicitudes web de dominio cruzado utilizando XMLHttpRequest en HTA y Gadgets de escritorio de Windows. Sin embargo, las E/S requerirán una interfaz de nivel superior, como un componente COM. Puede usar WinHTTPRequests desde WSH, pero tienen que ser sincrónicos en la mayoría de los casos. –

+1

¿Por qué el voto a favor? Esta es una buena entrada. –

2

Internet Explorer introdujo el concepto de Hypertext Applications en IE 5. Nunca tuvo un gran avance, por lo que los recursos y la documentación son escasos.

competidor respaldado por Mozilla Prism parece estar vivo y bien, sin embargo, y definitivamente vale la pena echarle un vistazo.

Prism es una aplicación que permite a los usuarios dividir las aplicaciones web de su navegador y se ejecutan directamente en su escritorio

+1

+1, me gusta el aspecto de Prism. Algo así como cómo se deberían haber hecho las HTA :-) –

+1

@Andy yup. Las HTA fueron un gran concepto, me encantó cuando lo presentaron de nuevo en el día, pero en realidad nunca lo hicieron despegar. ¡Tal vez Prism lo haga mejor! –

3

creo que estás buscando Adobe AIR

El Adobe El tiempo de ejecución de ® AIR® 2 permite a los desarrolladores usar HTML, JavaScript, el software Adobe Flash® y ActionScript® para crear aplicaciones web que se ejecutan como aplicaciones de cliente independientes sin las limitaciones de un navegador. ~ El sitio Web de aire

+3

todavía necesito el tiempo de ejecución ... eso es una sobrecarga adicional que me gustaría evitar –

+1

Luego, adelante y escriba su propia aplicación C++ que incorpora V8 y escriba todo el código de enlace C++ para usted. O espera hasta que alguien más lo haga. O simplemente aprende C++ o cualquier otra cosa que funcione bien en Windows. No mejorará sus habilidades en otros idiomas confiando siempre en una solución de JavaScript. –

+0

También hay Rhino, pero requiere Java, que es bastante inflado: https://developer.mozilla.org/en/Rhino_documentation –

2

Creo que la mejor manera de ir es V8 JavaScript Engine proporcionada por Google.

"V8 puede ejecutarse de forma independiente o puede integrarse en cualquier aplicación C++." - que creo que es perfecto para sus necesidades, porque puede hacer la mayoría de las cosas en JavaScript y usar las interfaces provistas para comunicarse con el sistema.

+0

Todavía tendrá que escribir una cierta cantidad de código C++, que creo que es la parte que le teme, al menos toda su GUI necesitará alguna interfaz para un kit de herramientas nativo. Entonces, al final, tendrá que escribir grandes cantidades de código vinculante. En general, terminará escribiendo muchísimo más código solo por el hecho de poder usar JS. –

0

Me enloquece el color, pero es solo un paso corto de Javascript a Java o C#. Sugeriría C# ya que, en una máquina de Windows, las bibliotecas ya están allí. Puedes simplemente copiar tu .exe y dejar que se rompa.

+0

Buen punto. Esto definitivamente haría las cosas más fáciles ... No hay muchas formas de hacerlo con un solo .EXE sin demasiados gastos generales si desea permanecer con Javascript. –

+1

javascript idiomático y C# idiomático son casi completamente opuestos. –

+0

¿Sugiere que ejecute JavaScript desde * dentro de * un ejecutable de C#? (por ejemplo, usar WSH a través de la interoperabilidad y cargar los guiones de los recursos ...) Porque, en realidad, funciona bastante bien. Pero si estás sugiriendo que C# es algo así como JavaScript ... – Shog9

-1

¿Por qué no utilizar Rhino - JavaScript en la JVM? Incluso puedes compilar tus scripts en archivos .class y empaquetarlos en un JAR junto con Rhino para una fácil distribución ...

0

Si quieres un .EXE solo, ¿qué tiempos de ejecución estás de acuerdo si se requieren requisitos previos?

Si estás de acuerdo con que requiere tiempo de ejecución .NET para ser preinstalado, y luego lo hace todo su trabajo en JScript.NET

0

Chromium Embedded Framework (CEF) puede brindarle alguna ayuda. No sé cómo, pero encontré muchas aplicaciones que usan este marco.

http://code.google.com/p/chromiumembedded/

Introducir para CEF son: El cromo infraestructura incorporada (CEF) es un proyecto de código abierto creada por Marshall Greenblatt en 2008 para desarrollar un control de navegador Web basado en el proyecto de Google cromo. CEF actualmente admite una variedad de lenguajes de programación y sistemas operativos, y se puede integrar fácilmente en aplicaciones nuevas y existentes. Fue diseñado desde cero con el rendimiento y la facilidad de uso en mente. El marco base incluye interfaces de programación C y C++ expuestas a través de bibliotecas nativas que aíslan la aplicación host de los detalles de implementación de Chromium y WebKit. Proporciona una estrecha integración entre el control del navegador y la aplicación de host, incluido el soporte para complementos, protocolos, objetos de JavaScript y extensiones de JavaScript personalizados. La aplicación host puede controlar opcionalmente la carga de recursos, la navegación, los menús contextuales, la impresión y más, mientras aprovecha el mismo rendimiento y las mismas tecnologías HTML5 disponibles en el navegador web Google Chrome.

Numerosos individuos y organizaciones aportan tiempo y recursos para apoyar el desarrollo de CEF, pero siempre se agradece una mayor participación de la comunidad. Esto incluye el apoyo tanto para el proyecto CEF central como para proyectos externos que integran CEF con marcos y lenguajes de programación adicionales (consulte la sección "Proyectos externos" a continuación).

3

Parece que nadie mencionó JSDB.

JSDB ofrece un entorno de línea de comandos que puede ejecutar código javascript arbitrario. Puede compilar fácilmente en un archivo .exe utilizando el comando copy /b jsdb.exe+program.zip program.exe

Es importante saber que debe llamar al archivo main js main.js dentro de un archivo zip estándar. No estoy seguro de si se requiere el nombre program.zip.

Todavía no he intentado hacer aplicaciones de GUI con esto, aunque parece ser compatible con varias API como ActiveX.

Es posible que utilizando el comando copy/b mencionado anteriormente, podría compilar un script desde el archivo wscript.exe, pero lo intenté y no pude hacerlo funcionar. Avíseme si alguien lo intenta y tiene éxito de alguna manera.

Cuestiones relacionadas