Mientras me documentaba para el post sobre soporte HTML5/CSS3 en los diferentes browsers recopilé un montón de información sobre los motores internos de cada navegador, que finalmente opté por no incluir por respetar mi principio KISS. Sin embargo, como me parecía bastante interesante he decidido construir este post, analizando dos de las partes fundamentales de nuestros queridos navegadores web: el Layout Engine y el JavaScript Engine.
Layout Engines
El Layout Engine (o motor de renderización) es EL componente clave de todo browser, ya que es el encargado de recoger los contenidos etiquetados (HTML) y la información de maquetación (CSS) y de renderizar todo para mostrarlo por pantalla (o para formato de impresión). En la actualidad los browsers mayoritarios se pueden dividir en tres categorías (mejor dicho, 3+1) según el layout engine que utilizan:
- Trident: de Microsoft, utilizado principalmente por todos los Microsoft Internet Explorer, excepto la versión para Mac (que la hubo en su momento!) que usaba un engendro denominado Tasman. Es el motor líder en cuota de mercado actualmente.
- Gecko: Es gratuito y open source bajo una triple licencia Mozilla Public License (MPL), GNU General Public License (GPL) and GNU Lesser General Public License (LGPL), y utilizado por Mozilla Firefox y muchos de los demás herederos del mítico Netscape (que no son utilizados ya por nadie).
- WebKit: ¡El más famoso y que más marketing tiene, y con razón! Algunos componentes del core están bajo licencia GNU LGPL, mientras que el resto bajo la menos restrictiva BSD. Es el utilizado por Safari y Chrome, pero en versiones diferentes según el release de cada uno (la utilizada por Safari suele ser la más moderna). Es en la actualidad el motor que da soporte a mayor número de las nuevas características de HTML5 y CSS3. Se encuentra también en los navegadores Safari de iPad y iPhone, en el navegador web de Android, siendo por tanto líder absoluto en el sector mobile, y también otros usos menos ortodoxos como para renderizar HTML en Adobe Air o el navegador web del Amazon Kindle, entre otros.
- Y último (y en este caso sí, menos importante): Presto, utilizado por Opera y desarrollado por ellos mismos.
En esta entrada de la wikipedia podemos encontrar una comparación (a nivel tecnológico e histórico) realmente completa de las características de cada uno de estos motores.
JavaScript Engines
A diferencia de los Layout Engines, los Javascript Engines son exclusivos de cada browser. Desde que en 2008 Google Chrome apareció y, por así decirlo, la «petó» barriendo a todos los demás browsers en rendimiento de ejecución del código JavaScript, se ha iniciado una auténtica carrera armamentística por tener el motor de javascript más rápido y eficiente.
Los chicos de Mozilla respondieron rápidamente con TraceMonkey en Firefox 3.5 para sustituir al anterior (y muy lento) SpiderMonkey y equipo de Apple con SquirrelFish, más tarde llamado Nitro (este motor es tan secreto que no tiene ni entrada en la Wikipedia… claro de Apple tenía que ser), que en su momento convirtió a Safari 4 en el líder del sector en cuanto a velocidad de ejecución de JavaScript, pero en 2009 Google hizo magia otra vez y se sacó de la chistera el motor V8 (desarrollado en Dinamarca, no se porqué este dato es relevante pero aparece cada vez que se menciona este motor) y Chrome volvió a reinar.
A principios del 2010 Opera sacó el (en teoría) impresionante motor Carakan, que según 2 de 3 benchmarks utilizados (cito textualmente a la wikipedia) es más rápido que todos los demás, pero aquí no se ha enterado nadie (en serio, ¿pero alguien usa Opera?). Firefox después sacó su nuevo motor JägerMonkey (al que ellos mismos definen como un cruce entre Nitro y el antiguo TraceMonkey) con la beta de Firefox 4.0, que también era mucho más rápido que los demás, lo mismo que se supone lo es la nueva versión de Nitro, aparecida este mismo verano de 2010 con Safari 5. Microsoft, del que todo el mundo se había olvidado salvo para echarle en cara la bazofia que es IE6, ha sorprendido a propios y extraños este mismo año con el motor Chakra de IE9, que aparte de tener un nombre guapísimo, según estudios de ellos mismos (no comment) resulta más rápido que ningún otro. Eso sí, por si las dudas se han apresurado a decir que otros elementos, como la velocidad de rendering y el tratamiento de la memoria son tan importantes o más a la hora de evaluar el rendimiento global de un browser.
Conclusión: Creo que actualmente, al ritmo vertiginoso que se producen los cambios y aparecen nuevas versiones, nadie tiene ni idea de cuál será el más rápido (además, cada desarrollador barre para casa sin ningún tipo de vergüenza). Viendo el lado bueno, toda esta feroz competencia claramente nos beneficia a nosotros, los usuarios, y más aún a los desarrolladores de JavaScript, que con motores más y más potentes pueden atreverse con aplicaciones más complejas haciendo realidad la Ley de Atwood (any application that can be written in JavaScript, will eventually be written in JavaScript) y comiéndole terreno en el campo de las RIAs a Flex/Flash… o no… pero ésa ya es otra historia ;).
Muy buen articulo. He leido todos tus post y son muy buenos, felicidades.
Gracias! Son comentarios como este los que nos animan a seguir escribiendo!