| Artículos | 01 MAY 1998

El código fuente de Netscape Communicator 5.0

Tags: Histórico
Jaime Peña.

Netscape acaba de hacer público el código fuente de Communicator 5 . 0 . En este artículo analizaremos la arquitectura del mismo e indicaremos, paso a paso, la forma de compilarlo . También entregamos junto al CD-ROM de la revista una versión ejecutable y funcional del mismo .

A finales de Enero, y como parte de la guerra de los navegadores que está teniendo lugar entre Microsoft y Netscape, este último hizo un anuncio impactante a la comunidad de usuarios y desarrolladores . Por un lado, se anunció la disponibilidad gratuita de la versión 5 . 0 de Communicator ( la versión actual sólo es gratuita para estudiantes y organizaciones sin ánimo de lucro ) . Esta circunstancia, hasta cierto punto, parece lógica, pues ¿ quién pagaría por un producto que hace, más o menos, las mismas cosas que otro que ya viene instalado de serie con el sistema operativo ? . Sin embargo, el segundo anuncio no era ni mucho menos esperado . Netscape dio a conocer que, además del código ejecutable del producto, también se haría libre el código fuente del mismo . De este modo, cualquier programador que lo desee puede utilizar este código para incorporar todas las mejoras que estime oportunas . Se ha creado un punto de encuentro en Internet www . mozilla . org donde se centraliza todo lo que tiene que ver con la fase de desarrollo . La idea es que los miles de programadores repartidos a lo largo del mundo puedan incorporar nuevas mejoras que se añadan a las características actuales y, así, conseguir un crecimiento muy rápido .

Lejos de entrar en las posibles repercusiones que esta decisión tendrá en el mercado informático ( vea el recuadro La guerra de los navegadores ) , nos centraremos en los aspectos técnicos del código fuente, analizando su estructura y mostrando la forma de compilarlo .

El código fuente lo podemos abordar desde dos puntos de vista bien diferentes . Uno de ellos es el oficialista, encaminado a conseguir mejoras de toda la comunidad de desarrolladores . Es decir, estudiaríamos el código para efectuar mejoras al mismo y, a su vez, reportarlas a Netscape para que las incluya en la versión definitiva . Sin embargo, el código fuente tiene un valor personal muy importante . No tenemos que olvidar que dentro de éste se incluye la implementación de muchas tecnologías . Esto nos puede ayudar en gran medida a ver cómo se ha realizado la codificación, y a aprender de ésta para nuestros propios desarrollos . Es decir, quizás no sepamos cómo implementar un intérprete de JavaScript, pero podremos verlo en el código fuente de Communicator . De igual modo, podremos aprender cómo analizar el flujo de datos procedente de un documento HTML y su posterior composición, o cómo descodificar un GIF que a su vez tiene varias imágenes transparentes . Estos son sólo algunos de los ejemplos que encontraremos en el código fuente de Communicator 5, ejemplos que pueden enriquecer en gran medida nuestros conocimientos .

Junto al CD-ROM que se entrega con PC World ofreceremos todos las fuentes y herramientas complementarias para la compilación . También entregamos una versión personalizada del ejecutable de Navigator, en la que hemos incluido un nuevo botón en la barra de herramientas que le llevará directamente hasta nuestra página web . Esto únicamente pretende ser un ejemplo de cómo modificar el código fuente de Navigator y cómo recompilarlo .

Arquitectura de Communicator 5 . 0

Antes de seguir adelante conviene que hagamos algunas precisiones con respecto al código . Para poder profundizar algo en el conocimiento de la arquitectura, nos centraremos en Navigator ( también conocido como Mozilla ) , pues es la parte fundamental de Communicator 5 .

El navegador está dividido en dos grandes bloques funcionales: NSPR y WinFE . El primero es independiente de la plataforma, y es exactamente igual para todas ellas . Dentro de él se incluyen todas aquellas funciones que no requieren GUI ( Graphics User Intergace o Interfaz Gráfica de Usuario ) ni dependen directamente del sistema operativo particular . WinFE ( Windows Front End ) es un módulo específico para Windows, y es el encargado de recoger todas las características específicas del sistema operativo, incluyendo la interfaz de usuario . A su vez, estos dos módulos hacen uso de varias librerías . Las más importantes son la librería de imágenes y la librería de JavaScript . Dentro de la primera se encuentra el código necesario para la correcta interpretación de los distintos gráficos que puedan llegar hasta el navegador . Se incluyen funciones de lectura, descodificación y escritura de archivos gráficos, además de otras complementarias, como la representación de los mismos en memoria, la reducción de colores, la optimización de éstos, etc . La librería de JavaScript es la encargada de gobernar todas las interacciones entre el corazón del engine JavaScript y el navegador .

Netscape Portable Runtime ( NSPR )

Este módulo inicialmente se ideó con el fin de satisfacer las necesidades de portar Java a varias plataformas . Sin embargo, la versión actual ( la 2 . 0 ) prácticamente se ha reescrito por completo . Aún se mantiene dentro de él una parte de la máquina virtual ( VM ) , exactamente la sys layer, que es la capa que la especificación Java define para la migración de la máquina virtual a varias plataformas . Sin embargo, dentro de este módulo son muchos los añadidos que se han incluido, en su mayoría clientes escritos por completo en lenguaje C/C++ . Entre las funciones que alberga el Portable Runtime se encuentra la gestión de hilos, incluida la sincronización de éstos . Se incorpora el código para la entrada y salida de la red y de ficheros estándar, así como todas las funciones de temporizado y calendario . Aunque pudiera parecer que la administración de memoria también estaría incluida en este módulo, en realidad no es así, y únicamente una gestión muy básica de ésta se contempla en el NSPR . En concreto se trata de las funciones malloc, calloc, realloc y free las únicas contempladas dentro del módulo . En función de la plataforma, estas funciones pueden ser implementadas completamente en el NSPR, o bien, simplemente llaman a sus homólogas . Podemos encontrar estas funciones dentro del directorio Ns\Nsprpub\Pr\Src en la carpeta donde hayamos instalado el código fuente .

Se podría decir que la gestión de hilos es la principal característica de NSPR, ya que en éstos se basará gran parte del funcionamiento del programa . La intención es proporcionar a los clientes un único API de gestión de hilos, pero además, con un comportamiento adecuado . Sin embargo, la gestión de hilos de los sistemas operativos suele ser bastante buena, por eso, el NSPR lo que pretende es establecer una capa un poco por encima del sistema operativo . De este modo se intenta conseguir la independencia de éste pero, por otro lado, no se quieren desaprovechar las ventajas de la implementación dentro del sistema . Tal y como comenta la misma documentación, la sincronización de hilos codificada dentro del Portable Runtime está basada en los Monitores descritos en Monitors: An operating System Structuring Concept [ 1 ] , que a su vez fueron formalizados por el lenguaje de programación Mesa [ 2 ] de Xerox . Básicamente se implementa la exclusión mutua para las secciones críticas ( mutex ) y la notificación de hilos mediante variables de condición . Puesto que además se está trabajando con Java, el NSPR incorpora métodos de sincronización más apropiados para este lenguaje, incluyendo monitor reentrancy, que son capacidades de notificación implícitas con la propiedad de poder asociar objetos de sincronización dinámicamente .

Otro aspecto importante dentro del NSPR son las direcciones de red . Uno de los factores a tener en c

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información