• No results found

Research design: Samples, data and analysis

3. Methods

3.3 Research design: Samples, data and analysis

CLR en tiempo de ejecución. El ejecutable generado por los compiladores de .NET no está en código nativo, y, por tanto, su ejecución no implica que el equipo en el que es ejecutado realice alguna acción.

Al correr un ejecutable en un equipo con .NET Framework, el cargador de programas del sistema operativo busca en el programa el encabezado CLR y los datos CLR; si estas sec- ciones existen quiere decir que se trata de un ensamblado (.NET PE), y procede a darle un tratamiento considerado consecuente. De no ser así, procede a ejecutar el programa consi- derándolo como archivo PE de Windows.

Si se trata de un .NET PE, el CLR identifica si ya ha sido ejecutado previamente en dicho equipo. En caso de que sea la primera vez que se ejecuta en el equipo, el CLR detecta que el ensamblado no es código nativo, y procede a generar código nativo a través de compi- ladores que actúan en tiempo de ejecución, a los cuales se les llama compiladores Justo a tiempo(compilador JIT / Just In Time Compiler).

Sólo para aclarar el punto: los compiladores JIT trabajan sobre ensamblados, no sobre có- digo fuente.

1

El compilador JIT evalúa el ensamblado, la disponibilidad de los typesutilizados por el en- samblado y los recursos disponibles del sistema en que se está ejecutando el ensamblado. A partir de ese análisis, genera el código nativo aplicable al equipo y procede a ejecutarlo. Los compiladores JIT son los que realizan la fase de síntesis de la compilación, transfor- mando el código intermedio que se encuentra en la sección de datos CLR en su equivalen- te a código nativo de la máquina, considerando la plataforma de la misma y la disponibili- dad de recursos.

Gracias al CLR los programas ejecutables de .NET son altamente portables. Quien deter- mina la diferencia del código nativo que ha de ejecutarse en una determinada plataforma es el CLR y no el ejecutable. Si un mismo ensamblado es ejecutado en dos equipos distin- tos, uno con mucha memoria y varios procesadores, y otro con poca memoria y un solo procesador, el CLR a través del compilador JIT generará el código nativo apropiado para tomar ventaja de todos los recursos disponibles.

Vea las posibilidades: se puede tener una versión de .NET Framework en un equipo basa- do en UNIX, otro en Linux y una versión compacta de .NET Framework en un teléfono celular o en un PDA como la Palm Pilot. El mismo ensamblado puede ser ejecutado en to- das las plataformas, y es el CLR a través del compilador JIT el que genera el código nati- vo y la funcionalidad disponible para cada una de las plataformas mencionadas.

Poco importa también en qué lenguaje estaba desarrollado el código fuente que dio origen al ejecutable: después de compilarlo, todo es IL.

NOTA

El hecho de que se realice la compilación JIT la primera vez que se ejecuta un programa eje- cutable en .NET, hace que el proceso sea más lento.

Algunos programadores se decepcionan con .NET, pues argumentan que es más lento que las plataformas de desarrollo anteriores; quizá sea más lento la primera vez, pero la segunda vez que lo ejecute, el CLR detecta que ya existe código nativo creado, por lo que no procede a la compilación JIT, y por tanto se puede ver la velocidad real a la que el programa se ejecutará.

NOTA

Resulta adecuado el nombre que se le da al ejecutable que generan los compiladores de .NET, “código intermedio” (IL), ya que lo generado es un código entre el código fuente y el código nativo. Los programadores de Java encontrarán la semejanza rápidamente: el IL sería como el Bytecode, mientras que el CLR sería como el Java Virtual Machine.

Sólo un lenguaje de .NET permite (por el momento) la compilación directa a “casi” código na- tivo: C++.

No tener instalado el .NET Framework en una máquina también afecta al momento de eje- cución, ya que el equipo no sabrá cómo interpretar el ejecutable, además de no ser posible transformar el IL en código nativo, por la ausencia de CLR. En ese contexto y dicho de otra forma, su programa nunca podría producir a partir del ensamblado la secuencia de nú- meros binarios que provoquen una respuesta en su computadora.

Microsoft ha puesto a disposición de todos un producto base denominado .NET Frame- work Redistributable Package en su sitio Web corporativo. Al instalarlo en su equipo ya es

posible ejecutar aplicaciones desarrolladas en plataforma .NET. También lo está incluyen- do en los Service Pack de sus sistemas operativos, y seguramente todos los sistemas ope- rativos con versiones OEM lo incluirán.

NOTA

En octubre de 2000, Microsoft propuso a la ECMA (Asociación Europea de Fabricantes de Computadoras, European Computer Manufacturers Association), encargada de la estandari- zación de sistemas de información y comunicación, un subconjunto funcional del CLR, deno- minado CLI (Infraestructura de lenguaje común, Common Language Infraestructure) para que fuera aprobado como estándar de desarrollo junto con el lenguaje C#.

En diciembre de 2001 se ratificó por ECMA (ECMA-335), por lo cual cualquier plataforma de sistema operativo que así lo desee podrá disponer de su propio subconjunto de CLR, hacien- do posible que las aplicaciones desarrolladas en .NET puedan ser ejecutadas en dichas plata- formas sin modificar el código.

Inicio Se solicita ejecución de ensamblado Compilador JIT realiza la fase de síntesis de compilación Se envía imagen nativa a Assembly Cache Se carga imagen nativa en RAM Se ejecuta la imagen nativa Fin ¿Se encontró imagen? ¿Es imagen vigente? Se busca en Assembly Cache una imagen nativa del Assembly No Si Si No FIGURA1.5 Proceso de ejecución .NET

1

Ensamblador de .NET. Existen también herramientas de .NET Framework que permi- ten realizar la fase de síntesis de la compilación, además del compilador JIT. El programa

ilasm.exees el ensamblador de .NET Framework; su función consiste en transformar un programa en código intermedio (MSIL) en archivo .NET PE.

Para aquellos que deseen desarrollar un lenguaje .NET, esta herramienta es muy importan- te. Sólo tendrán que preocuparse por generar un compilador que traduzca el código fuente a MSIL; es decir, que se encargue de realizar la fase de análisis. La fase de síntesis podrá ser desarrollada por el ensamblador de .NET.

También es posible desensamblar un archivo .NET PE, a través de la herramienta de .NET Framework llamada ildasm.exe.

Tanto ilasm.execomo ildasm.exeestán disponibles desde la línea de comandos del sis- tema operativo.

Impacto de .NET Framework

Related documents