gratis - como activar javascript en chrome
¿Por qué JavaScript en lugar de una máquina virtual de navegador estándar? (30)
¿Cómo defines mejor? Lo mejor para el navegador, o lo mejor para el desarrollador? (Además, ECMAScript es diferente a Javascript, pero eso es un tecnicismo).
Encuentro que JavaScript puede ser poderoso y elegante al mismo tiempo. Desafortunadamente, la mayoría de los desarrolladores que he conocido lo tratan como un mal necesario en lugar de un lenguaje de programación real.
Algunas de las características que disfruto son:
- tratar las funciones como ciudadanos de primera clase
- poder agregar y quitar funciones a cualquier objeto en cualquier momento (no es muy útil, pero alucinante cuando es)
- es un lenguaje dinámico
Es divertido de tratar y está establecido. Disfrútelo mientras esté disponible, ya que si bien puede no ser lo "mejor" para las secuencias de comandos del cliente, sin duda es agradable.
Estoy de acuerdo en que es frustrante cuando se hacen páginas dinámicas debido a las incompatibilidades del navegador, pero eso se puede mitigar con las bibliotecas de UI. Eso no debería retenerse contra JavaScript en sí mismo más de lo que Swing debería mantenerse contra Java.
¿No tendría sentido apoyar un conjunto de idiomas (Java, Python, Ruby, etc.) a través de una máquina virtual estandarizada alojada en el navegador en lugar de requerir el uso de un lenguaje especializado, en realidad, un paradigma especializado, para scripting de cliente solamente?
Para aclarar la sugerencia, una página web contendría código de bytes en lugar de cualquier lenguaje de nivel superior como JavaScript.
Entiendo la realidad pragmática de que JavaScript es simplemente lo que tenemos que trabajar ahora debido a razones evolutivas, pero estoy pensando más en el largo plazo. Con respecto a la compatibilidad con versiones anteriores, no hay ninguna razón para que el JavaScript en línea no pueda ser soportado simultáneamente por un período de tiempo y, por supuesto, JavaScript podría ser uno de los idiomas admitidos por la máquina virtual del navegador.
... Te refieres...
Applet Java y Java Flash y Adobe AIR, etc.
En general, cualquier marco de RIA puede satisfacer sus necesidades; pero para cada uno hay que pagar un precio por usarlo (ej. runtime avalible en el navegador y / o propietario y / o menos opciones que el escritorio puro) http://en.wikipedia.org/wiki/List_of_rich_internet_application_frameworks
Para desarrollar Web con cualquier lenguaje que no sea web, tienes GWT: desarrolla Java, compila a Javascript
Actualización rápida sobre esta vieja pregunta.
Todos los que afirmaron que una "página web contendría código de bytes en lugar de cualquier lenguaje de nivel superior como JavaScript" "no sucederá".
Junio de 2015, el W3C anunció el WebAssembly que es
un nuevo formato portátil, de tamaño de carga y tiempo eficiente, adecuado para la compilación en la web.
Esto todavía es experimental, pero ya hay alguna implementación prototípica en Firefox todas las noches y Chrome Canary y ya hay algo de demostración funcionando .
Actualmente, WebAssembly está diseñado principalmente para ser producido a partir de C / C ++, sin embargo
Te dejo echar un vistazo más de cerca a la página oficial del proyecto, ¡es realmente emocionante!
Bueno, sí. Ciertamente, si tuviéramos una máquina del tiempo, volver atrás y asegurarnos de que muchas de las características de Javascript se diseñaron de manera diferente sería un gran pasatiempo (eso y garantizar que las personas que diseñaron el motor de CSS de IE nunca ingresaron en TI). Pero no va a suceder, y estamos atrapados con eso ahora.
Sospecho que, con el tiempo, se convertirá en el "lenguaje de máquina" para la web, con otros lenguajes y API mejor diseñados que se compilarán a partir de ahí (y atenderán a las debilidades del motor en tiempo de ejecución).
Sin embargo, no creo que ninguno de estos "lenguajes mejor diseñados" sea Java, Python o Ruby. Javascript es, a pesar de la posibilidad de ser utilizado en otro lugar, un lenguaje de scripting de aplicaciones web. Dado ese caso de uso, podemos hacerlo mejor que cualquiera de esos idiomas.
Bueno, ya tenemos VBScript, ¿no? Espera, ¡solo IE lo admite!
Lo mismo para tu buena idea de VM. ¿Qué pasa si script mi página utilizando Lua, y su navegador no tiene el analizador para convertirlo en bytecode? Por supuesto, podríamos imaginar una etiqueta de script que acepte un archivo de bytecode, que incluso sería bastante eficiente.
Pero la experiencia muestra que es difícil traer algo nuevo a la Web: llevaría años adoptar un nuevo cambio radical como este. ¿Cuántos navegadores son compatibles con SVG o CSS3?
Además, no veo lo que encuentras "sucio" en JS. Puede ser feo si está codificado por aficionados, propagando malas prácticas copiadas en otra parte, pero los maestros que se muestran pueden ser también un lenguaje elegante. Un poco como Perl: a menudo parece un lenguaje ofuscado, pero puede hacerse perfectamente legible.
Creo que JavaScript es un buen lenguaje, pero me encantaría tener una opción cuando desarrolle aplicaciones web del lado del cliente. Por razones heredadas, estamos atrapados con JavaScript, pero hay proyectos e ideas que buscan cambiar ese escenario:
- Google Native Client : tecnología para ejecutar código nativo en el navegador.
- Emscripten : compilador de Emscripten LLVM a javascript. Permite que los lenguajes LLVM se ejecuten en el navegador.
- Idea: .NET CLI en el navegador, por el creador de Mono: http://tirania.org/blog/archive/2010/May-03.html
Creo que tendremos JavaScript durante mucho tiempo, pero eso cambiará tarde o temprano. Hay tantos desarrolladores dispuestos a usar otros idiomas en el navegador.
Creo que este no es un problema tan fácil . Podemos decir que estamos atrapados con JS, pero ¿es realmente tan malo con jQuery, Prototype, scriptaculous, MooTools y todas las bibliotecas fantásticas?
Recuerde, JS es ligero , más aún con V8, TraceMonkey, SquirrelFish, nuevos motores de Javascript utilizados en los navegadores modernos.
También está demostrado : sí, sabemos que tiene problemas, pero tenemos muchos de estos resueltos, como problemas de seguridad tempranos. Imágenes que permiten que su navegador ejecute el código de Ruby, o cualquier otra cosa. La caja de arena de seguridad tendría que hacerse por cero. ¿Y sabes qué? La gente de Python ya falló dos veces.
Creo que Javascript será revisado y mejorado con el tiempo, al igual que HTML y CSS. El proceso puede ser largo, pero no todo es posible en este mundo.
Definitivamente recibiría con satisfacción una máquina virtual independiente de lenguaje estándar en los navegadores (preferiría codificar en un lenguaje estáticamente tipado).
(Técnicamente) Es bastante factible gradualmente: primero un navegador importante lo admite y el servidor tiene la posibilidad de enviar bytecode si la solicitud actual es desde un navegador compatible o traducir el código a JavaScript y enviar JavaScript de texto sin formato.
Ya existen algunos lenguajes experimentales que se compilan con JavaScript, pero tener una VM definida permitiría (tal vez) un mejor rendimiento.
Aunque admito que la parte "estándar" sería bastante complicada. También habría conflictos entre las características del lenguaje (por ejemplo, tipeo estático vs. dinámico) con respecto a la biblioteca (suponiendo que lo nuevo usaría la misma biblioteca). Por lo tanto, no creo que va a suceder (pronto).
En Windows, puede registrar otros idiomas con el servidor de secuencias de comandos y tenerlos disponibles para IE. Por ejemplo, VBScript se admite de forma inmediata (aunque nunca ha ganado mucha popularidad, ya que es para la mayoría de los propósitos, incluso peor que JavaScript).
Las extensiones de Python win32 permitieron agregar Python a IE de esta forma con bastante facilidad, pero no fue una buena idea, ya que Python es bastante difícil de salvar: muchas características de lenguaje exponen suficientes ganchos de implementación para permitir que una aplicación supuestamente restringida salga .
En general, es un problema que cuanto mayor es la complejidad que agrega a una aplicación de red como el navegador, mayor es la probabilidad de que surjan problemas de seguridad. Un montón de nuevos lenguajes ciertamente encajarían en esa descripción, y estos son nuevos lenguajes que aún se están desarrollando rápidamente.
JavaScript es un lenguaje feo, pero mediante el uso cuidadoso de un subconjunto selectivo de características y el soporte de bibliotecas de objetos adecuados, generalmente puede hacerse bastante tolerable. Parece que las adiciones incrementales y prácticas a JavaScript son la única forma en que es probable que las secuencias de comandos web avancen.
En cierto sentido, tener un lenguaje más expresivo como Javascript en el navegador en lugar de algo más general como el bytecode de Java ha significado una web más abierta.
En efecto. Silverlight es solo eso: una máquina virtual basada en .Net basada en el cliente.
Es una buena idea ¿Por qué no dar un paso más?
- Escriba el analizador HTML y el motor de diseño (todos los bits complicados en el navegador, realmente) en el mismo lenguaje VM
- Publica el motor en la web
- Sirva la página con una declaración de qué motor de diseño usar y su URL
Luego, podemos agregar características a los navegadores sin tener que enviar nuevos navegadores a cada cliente: los nuevos bits relevantes se cargarán dinámicamente desde la web. También podríamos publicar nuevas versiones de HTML sin la ridícula complejidad de mantener la compatibilidad con versiones anteriores de todo lo que alguna vez funcionó en un navegador: la compatibilidad es responsabilidad del autor de la página. También podemos experimentar con lenguajes de marcado que no sean HTML. Y, por supuesto, podemos escribir sofisticados compiladores JIT en los motores, para que pueda guiar sus páginas web en el idioma que desee.
Esta es una muy buena pregunta.
No es solo el problema en JS, sino en la falta de buenos IDEs libres para desarrollar programas más grandes en JS. Solo sé uno que es gratis: Eclipse. El otro bueno es Visual Studio de Microsoft, pero no gratis.
¿Por qué sería gratis? Si los proveedores de navegadores web quieren reemplazar las aplicaciones de escritorio con aplicaciones en línea (y lo desean), entonces tienen que darnos a nosotros, los programadores, buenas herramientas de desarrollo. No puede crear 50,000 líneas de JavaScript usando un editor de texto simple, JSLint y un depurador integrado de Google Chrome. A menos que seas un maquista.
Cuando Borland hizo un IDE para Turbo Pascal 4.0 en 1987, fue una revolución en la programación. Han pasado 24 años desde entonces. De manera vergonzosa, en el año 2011 muchos programadores todavía no usan la finalización del código, la verificación de la sintaxis y los debuggers adecuados. Probablemente porque hay muy pocos IDEs buenos.
A los desarrolladores de navegadores web les interesa crear herramientas adecuadas (GRATUITAS) para los programadores si quieren que construyamos aplicaciones con las que puedan luchar contra Windows, Linux, MacOS, iOS, Symbian, etc.
Hay algunos errores en tu razonamiento.
Una máquina virtual estándar en un navegador estándar nunca será estándar. Tenemos 4 navegadores, y IE tiene intereses en conflicto con respecto a ''estándar''. Los otros tres están evolucionando rápidamente, pero la tasa de adopción de nuevas tecnologías es lenta. ¿Qué pasa con los navegadores en teléfonos, dispositivos pequeños, ...
La integración de JS en los diferentes navegadores y su historial lo lleva a subestimar el poder de JS. Promete un estándar, pero desaprueba JS porque el estándar no funcionó en los primeros años.
Como dijeron otros, JS no es lo mismo que AIR / .NET / ... y similares. JS en su encarnación actual encaja perfectamente con sus objetivos.
A largo plazo, Perl y Ruby bien podrían reemplazar javascript. Sin embargo, la adopción de esos idiomas es lenta y se sabe que nunca se harán cargo de JS.
IMO, JavaScript, el idioma, no es el problema. JavaScript es en realidad un lenguaje bastante expresivo y poderoso. Creo que se vuelve un mal representante porque no tiene las características OO clásicas, pero para mí, cuanto más voy con el ritmo prototípico, más me gusta.
El problema, como yo lo veo, son las implementaciones escamosas e inconsistentes en los muchos navegadores que estamos obligados a admitir en la web. Las bibliotecas de JavaScript como jQuery hacen un gran esfuerzo para mitigar ese sentimiento sucio.
JavaScript es la máquina virtual estándar del navegador. Por ejemplo, OCaml y Haskell ahora tienen compiladores que pueden generar JavaScript. La limitación no es el lenguaje JavaScript, la limitación es que los objetos del navegador se pueden acceder a través de JavaScript y el modelo de control de acceso utilizado para garantizar que pueda ejecutar JavaScript de manera segura sin comprometer su máquina. Los controles de acceso actuales son tan pobres que JavaScript solo permite un acceso muy limitado a los objetos del navegador por motivos de seguridad. El proyecto Harmony está buscando arreglar eso.
JavaScript es tu única opción nativa y estándar disponible. Si quieres mucha potencia, toma jQuery, pero si necesitas hacer un montón más, considera escribir un complemento para Firefox. o similar para IE, etc.
La gran mayoría de los desarrolladores con los que he hablado sobre ECMAScript et. Alabama. Termino admitiendo que el problema no es el lenguaje de scripting, sino el ridículo HTML DOM que expone. La combinación del DOM y el lenguaje de scripting es una fuente común de dolor y frustración con respecto a ECMAScript. Además, no olvide que IIS puede usar JScript para scripts de servidor, y cosas como Rhino le permiten crear aplicaciones independientes en ECMAScript. Intente trabajar en uno de estos entornos con ECMAScript por un tiempo, y vea si su opinión cambia.
Este tipo de desesperación ha estado dando vueltas por algún tiempo. Le sugiero que edite esto para incluir o volver a publicar problemas específicos. Puede que te sorprenda gratamente el alivio que recibes.
Un sitio antiguo, pero sigue siendo un excelente lugar para comenzar: el sitio de Douglas Crockford .
Me gustaría recibir cualquier lenguaje además de javascript como posible lenguaje de scripting.
Lo que sería genial es usar otros idiomas luego Javascript. Java probablemente no sería un gran ajuste entre la etiqueta, pero idiomas como Haskell, Clojure, Scala, Ruby, Groovy serían beneficiosos.
Llegué un Rubyscript cruzado hace algún tiempo ... http://almaer.com/blog/running-ruby-in-the-browser-via-script-typetextruby y http://code.google.com/p/ruby-in-browser/
Todavía experimental y en progreso, pero parece prometedor.
Para .Net Acabo de encontrar: http://www.silverlight.net/learn/dynamic-languages/ Acabo de encontrar el sitio, pero parece interesante también. Funciona incluso desde mi Apple Mac .
No sé qué tan bueno es lo anterior al proporcionar una alternativa para Javascript, pero se ve muy bien a primera vista. Potencialmente, esto le permitiría a uno utilizar cualquier framework Java o .Net nativamente desde el navegador, dentro del entorno limitado del navegador.
En cuanto a la seguridad, si el lenguaje se ejecuta dentro de la JVM (o motor de .Net para el caso), la VM se encargará de la seguridad, así que no tenemos que preocuparnos por eso, al menos no más de lo que deberíamos para cualquier cosa que se ejecute dentro del navegador.
Mira esto http://www.visitmix.com/Labs/Gestalt/ - te permite usar python o ruby, siempre y cuando el usuario tenga Silverlight instalado.
No creo que "entiendas el problema pragmático de que JavaScript es simplemente lo que tenemos que trabajar ahora". En realidad, es un lenguaje muy poderoso. Tuviste tu applet de Java en el navegador durante años, ¿y dónde está ahora?
De todos modos, no es necesario "ensuciarse" para trabajar en el cliente. Por ejemplo, prueba GWT.
No creo que una VM web estándar sea tan inconcebible. Hay varias formas en que puede introducir un nuevo estándar de VM web con gracia y con soporte heredado completo, siempre y cuando se asegure de que cualquier formato de bytecode de VM que utilice pueda descompilarse rápidamente en javascript y que el resultado resultante sea razonablemente eficiente ( Incluso llegaría a adivinar que un descompilador inteligente probablemente generaría mejor JavaScript que cualquier javascript que un humano pudiera producir por sí mismo).
Con esta propiedad, cualquier formato VM web podría descompilarse fácilmente en el servidor (rápido), en el cliente (lento, pero posible en los casos en que tenga un control limitado del servidor), o podría pregenerarse y cargarse dinámicamente mediante el cliente o el servidor (el más rápido) para los navegadores que no son compatibles de forma nativa con el nuevo estándar.
Aquellos navegadores que SI admiten de forma nativa el nuevo estándar se beneficiarían de una mayor velocidad del tiempo de ejecución para aplicaciones web vm. Además, si los navegadores basan sus motores javascript heredados en el estándar web vm (es decir, analizan javascript en el estándar web vm y luego lo ejecutan), entonces no tienen que administrar dos tiempos de ejecución, pero eso depende del proveedor del navegador .
Porque todos tienen máquinas virtuales con intérpretes de bytecode, y el bytecode también es diferente. {Chakra (IE), Firefox (SpiderMonkey), Safari (SquirrelFish), Opera (Carakan).
Lo siento, creo que Chrome (V8) se compila con el código de máquina IA32.
Probablemente, pero para hacerlo tendremos que conseguir que los principales navegadores los respalden. El soporte de IE sería lo más difícil de conseguir. Se usa JavaScript porque es lo único con lo que puede contar para estar disponible.
Respondiendo a la pregunta : No, no tendría sentido.
Actualmente, lo más parecido a una máquina virtual multilingüe es la JVM y la CLR. Estas no son exactamente bestias livianas, y no tendría sentido tratar de incorporar algo de este tamaño y complejidad en un navegador.
Examinemos la idea de que podría escribir una nueva VM multilenguaje que sería mejor que la solución existente.
- Estás atrás en la estabilidad.
- Estás atrasado en complejidad (camino, camino, atrás) porque intentas generalizar en varios idiomas
- Estás atrasado en la adopción
Entonces, no, no tiene sentido.
Recuerde, para poder admitir estos idiomas, tendrá que despojar a sus API de algo feroz, cortando cualquier parte que no tenga sentido en el contexto de un script del navegador. Hay una gran cantidad de decisiones de diseño que se deben tomar aquí, y una gran oportunidad para el error.
En términos de funcionalidad, probablemente solo estemos trabajando con DOM de todos modos, así que esto es realmente un problema de sintaxis y lenguaje idom, en cuyo punto tiene sentido preguntar, "¿Realmente vale la pena?"
Teniendo en cuenta, de lo único que hablamos es de las secuencias de comandos del lado del cliente, porque las secuencias de comandos del lado del servidor ya están disponibles en el idioma que desee. Es un campo de programación relativamente pequeño y, por lo tanto, el beneficio de traer varios idiomas es cuestionable.
¿Qué idiomas tendría sentido traer? (Advertencia, el material subjetivo sigue)
Traer un idioma como C no tiene sentido porque está hecho para trabajar con metal, y en un navegador no hay mucho metal realmente disponible.
Traer un lenguaje como Java no tiene sentido porque de todos modos, lo mejor de todo es las API.
Traer un lenguaje como Ruby o Lisp no tiene sentido porque JavaScript es un poderoso lenguaje dinámico muy parecido al Scheme.
Finalmente, ¿qué fabricante de navegadores realmente desea admitir la integración de DOM para múltiples idiomas? Cada implementación tendrá sus propios errores específicos. Ya hemos pasado por el fuego lidiando con las diferencias entre MS Javascript y Mozilla Javascript y ahora queremos multiplicar ese dolor cinco o seis veces?
No tiene sentido.
Si bien Javascript es el único lenguaje de scripts bien soportado desde el que puede controlar la página directamente, Flash tiene algunas características muy buenas para programas más grandes. Últimamente tiene un JIT y también puede generar bytecode sobre la marcha (consulte la evaluación de expresión de tiempo de ejecución para un ejemplo en el que usan flash para compilar expresiones matemáticas de entrada de usuario hasta el binario nativo). El lenguaje Haxe te brinda tipeado estático con inferencia y con las habilidades de generación de códigos de bytes puedes implementar casi cualquier sistema de tiempo de ejecución de tu elección.
Si sientes que te estás ensuciando las manos, entonces te han lavado el cerebro o todavía sientes los efectos posteriores de los "años DHTML". JavaScript es muy poderoso y se adapta bien a su propósito, que es guiar el lado de la interactividad del cliente. Esta es la razón por la cual JavaScript 2.0 tiene tan mala reputación. Quiero decir, por qué paquetes, interfaces, clases y similares, cuando esos son claramente aspectos de los lenguajes del lado del servidor. JavaScript está bien como un lenguaje basado en prototipos, sin ser orientado a objetos en toda regla.
Si sus aplicaciones carecen de continuidad debido a que el lado del servidor y el lado del cliente no se están comunicando bien, entonces tal vez desee reconsiderar la forma en que diseñan sus aplicaciones. He trabajado con sitios web extremadamente robustos y aplicaciones web, y nunca he dicho una vez, "Mmm, realmente desearía que JavaScript pudiera hacer (xyz)". Si pudiera hacer eso, entonces no sería JavaScript, sería ActionScript o AIR o Silverlight. No necesito eso, y tampoco lo hacen la mayoría de los desarrolladores. Esas son buenas tecnologías, pero intentan resolver un problema con una tecnología, no una ... bueno, una solución.
Siendo realistas, Javascript es el único lenguaje que usarán los navegadores durante mucho tiempo, por lo que si bien sería muy agradable usar otros idiomas, no puedo ver que ocurra.
Esta "máquina virtual estandarizada" de la que hablas sería muy amplia y necesitaría ser adoptada por todos los navegadores principales, y la mayoría de los sitios seguirían usando JavaScript de todos modos ya que es más adecuado para sitios web que muchos otros navegadores.
Debería tener una caja de arena en cada lenguaje de programación en esta máquina virtual y reducir la cantidad de acceso que cada idioma tiene al sistema, lo que requerirá muchos cambios en los idiomas y la eliminación o reimplementación de muchas funciones. Mientras que Javascript ya tiene esto en mente, y lo ha hecho durante mucho tiempo.
Tal vez estés buscando Native Client de Google.
esta pregunta resurge regularmente. mi postura sobre esto es:
A) no sucederá y B) ya está aquí.
perdón, ¿qué? Dejame explicar:
anuncio A
una VM no es solo una especie de dispositivo mágico universal. la mayoría de las máquinas virtuales están optimizadas para un determinado idioma y ciertas características del idioma. tome el JRE / Java (o LLVM): optimizado para el tipado estático, y definitivamente hay problemas y desventajas al implementar el tipado dinámico u otras cosas que java no admitió en primer lugar.
por lo tanto, la "máquina virtual multipropósito general" que admite muchas funciones de lenguaje (optimización de cola de cola, tipado estático y dinámico, foo bar boo, ...) sería colosal, difícil de implementar y probablemente más difícil de optimizar para obtener un buen rendimiento de eso. pero no soy un diseñador de idiomas o un gurú de vm, tal vez estoy equivocado: en realidad es bastante fácil, ¿pero nadie tenía la idea todavía? hrm, hrm.
anuncio B
Ya está aquí: puede que no haya un compilador de bytecode / vm, pero realmente no necesita uno. afaik javascript está completo, por lo que debería ser posible:
- crear un traductor de lenguaje X a javascript (por ejemplo, coffeescript)
- crear un intérprete en javascript que interprete el lenguaje X (por ejemplo, brainfuck ). sí, el rendimiento sería abismal, pero bueno, no puedo tener todo.
ad C
¿Qué? ¡No había un punto C en primer lugar !? porque no hay ... todavía. google NACL. si alguien puede hacerlo, es google. tan pronto como Google lo haga funcionar, tus problemas estarán resueltos. solo que, tal vez, nunca funcione, no lo sé. la última vez que lo leí, hubo algunos problemas de seguridad no resueltos del tipo realmente complicado.
aparte de eso:
javascript ha estado allí desde ~ 1995 = 15 años. aún así, las implementaciones del navegador difieren en la actualidad (aunque al menos ya no es insoportable). por lo tanto, si comienza algo nuevo todavía, es posible que tenga una versión que funcione en el navegador cruzado alrededor de 2035. al menos un subconjunto que funcione. eso solo difiere sutilmente y necesita libs y capas de compatibilidad. sin embargo, no tiene sentido tratar de mejorar las cosas.
también, ¿qué pasa con el código fuente legible? Sé que muchas empresas preferirían no mostrar su código como fuente abierta de tipo "bueno". Personalmente, estoy muy contento de poder leer la fuente si sospecho algo sospechoso o si quiero aprender de él. hurra por el código fuente!