4D v16.3

Presentación

Inicio

 
4D v16.3
Presentación

Presentación  


 

 

Es posible compilar su aplicación, es decir traducir todos sus métodos a lenguaje de máquina. La compilación de una base permite verificar la coherencia del código y acelerar su ejecución, como también hace posible proteger integralmente el código. La compilación es una etapa indispensable entre el desarrollo de bases de datos utilizando 4D y el despliegue de aplicaciones autónomas.

El proceso de compilación es completamente automático; sin embargo, la compilación requiere más rigor en la escritura del código 4D. La sección Compilador del manual Lenguaje 4D ofrece consejos e información específica relacionada con la programación con miras a la compilación. Además, recuerde que el compilador le indicará errores de programación y los situará en su contexto.

Un ordenador es una máquina en la cual los comandos se escriben utilizando únicamente “0” y “1”. Este lenguaje binario es llamado lenguaje de máquina. El corazón de la máquina, el microprocesador, sólo entiende este lenguaje. Un programa escrito en cualquier lenguaje de programación de alto nivel (C, C++, Java, BASIC, 4D, etc.) primero es traducido a lenguaje de máquina, de manera que el microprocesador del ordenador lo entienda.

Hay dos formas de hacer esto:

  • Las instrucciones pueden traducirse durante la ejecución; entonces el programa es interpretado.
  • Las instrucciones se traducen en bloque antes de la ejecución del programa; entonces el programa es compilado.

Cuando una serie de instrucciones se ejecuta utilizando un intérprete, el proceso se descompone así:

  • el programa lee la instrucción en el lenguaje del programa,
  • traduce la instrucción al lenguaje de máquina,
  • ejecuta la instrucción.

Este ciclo se ejecuta para cada una de las instrucciones en el programa. El programa que maneja la ejecución de este tipo de ciclo es llamado interpreter. En una base en desarrollo, los métodos 4D son interpretados.

Un programa compilado está completamente traducido antes de su ejecución. Este proceso resulta en una serie de instrucciones en lenguaje máquina. Esta serie puede conservarse y utilizarse varias veces. De esta forma, la fase de traducción se realiza sólo una vez y la versión compilada del programa está disponible para ser ejecutada repetidamente.

Esta fase es completamente independiente de todo uso del programa. El programa que maneja la traducción se llama compilador.

El compilador de 4D compila en su base los métodos base, los métodos de proyecto, los triggers, los métodos de formulario y los métodos de objeto. Si no tiene ninguno de estos elementos en una aplicación, el compilador no tendrá nada que compilar.

Cuando haya completado la compilación exitosamente, la utilización de la base compilada es idéntica a la de la base original.

El primer beneficio de la compilación es en la velocidad de ejecución. Hay dos beneficios adicionales relacionados directamente con la compilación:

  • Verificación sistemática de su código,
  • Protección de sus bases y componentes.

El aumento en la velocidad se debe a dos características del código compilado: la traducción directa y definitiva del código y el acceso directo a las direcciones de las variables y de los métodos.

  • Traducción directa y definitiva del código
    El código de los métodos escritos en 4D será traducido una sola vez con el compilador. Cuando se utiliza una base de datos compilada, se ahorra el tiempo requerido en modo interpretado para traducir todas las instrucciones. Por ejemplo un bucle que contiene una secuencia de instrucciones que se repite 50 veces:
     For($i;1;50)
      `Secuencia de instrucciones
     End for

    Cada instrucción de la secuencia se traduce 50 veces en una base interpretada. Utilizando el compilador, se elimina la fase de traducción de cada instrucción de la secuencia. Por cada instrucción de la secuencia, ahorramos 50 traducciones.
  • Acceso directo a las direcciones de las variables y de los métodos
    En bases de datos interpretadas, el acceso a las variables se efectúa por intermedio de un nombre. Por lo tanto, 4D debe acceder al nombre para acceder al valor de la variable.
    En código compilado, el compilador asocia una dirección a cada variable, escribe directamente la dirección de la variable en el código y va directamente a la dirección cuando es necesario.
    Notas:
    - Las operaciones que requieren acceso directo a disco pueden no afectarse porque su velocidad de ejecución está limitada por la velocidad de transmisión entre el ordenador y sus periféricos (unidades de almacenamiento o disco duro).
    - Los comentarios no se traducen por lo tanto no aparecen en el modo compilado. Por lo anterior, los comentarios no afectan el tiempo de ejecución en modo compilado.

El compilador también funciona como un verificador de la sintaxis de sus bases. El compilador revisa sistemáticamente su código y nota posibles ambigüedades, mientras 4D sólo lo hace cuando se ejecuta el método.

Suponga que uno de sus métodos contiene una serie de pruebas y de secuencias de instrucciones a ejecutar. Es improbable que usted pruebe completamente todos los casos si el número de pruebas es muy grande. En este caso, un error de sintaxis en un caso no probado podría no aparecer hasta que un usuario final lo encuentre.

Este tipo de problema se evita cuando utiliza una base compilada. Cuando compila una base, el compilador escanea toda la base de datos y analiza cada instrucción. El compilador detecta cualquier anormalidad y genera un mensaje de error o advertencia.

Una vez haya compilado su base de datos, puede utilizar el generador de aplicaciones para borrar el código interpretado. En este caso, el acceso al entorno Diseño (excepto para registros) está bloqueado. Para mayor información sobre el generador de aplicaciones, consulte el capítulo Terminar y desplegar aplicaciones finales.

En una base compilada, los comandos relacionados al desarrollo están desactivados. 

Cuando un componente compilado se instala en una base local, los métodos de proyecto compartidos son accesibles en el Explorador y pueden llamarse en los métodos de la base local pero sus contenidos no aparecen en el área de previsualización ni en el depurador. Los otros métodos de proyecto del componente no aparecer más. Para mayor información sobre componentes, consulte el capítulo Desarrollar e instalar componentes 4D.

Los beneficios son:

  • el desarrollo de la base no puede modificarse voluntaria o involuntariamente,
  • ahora sus métodos están protegidos.

El compilador está integrado a 4D. La compilación de una base de datos se efectúa utilizando la siguiente caja de diálogo:

También es posible lanzar directamente una compilación con los parámetros actuales vía el comando Iniciar compilación que se encuentra en el menú Diseño y en el menú asociado al botón “Compilador” de la barra de herramientas.

La compilación se realiza teniendo en cuenta opciones de compilación genéricas, configuradas en la Página Compilador de las Propiedades de la base.

Una vez compilada la base, aún es posible pasar en cualquier momento de modo interpretado a modo compilado y viceversa, utilizando los comandos Reiniciar en interpretado y Reiniciar en compilado del menú Ejecutar, sin tener que salir de la aplicación 4D, excepto cuando se ha borrado el código interpretado (ver la sección anterior). 

La caja de diálogo de apertura de base de datos permite igualmente elegir el modo interpretado o compilado al lanzar la base (ver Opciones de la caja de diálogo de apertura). 

Si modifica la estructura de su base en modo interpretado, debe recompilarla para tener en cuenta los cambios en modo compilado. 

Cuando pasa de un modo a otro, 4D cierra el modo actual y abre el nuevo modo. Este funcionamiento requiere salir y reabrir la aplicación. Por lo tanto, cada vez que pase de un modo a otro, 4D ejecuta los métodos de base (si se especifica) en este orden: Método base On Exit -> Método base On Startup

 
PROPIEDADES 

Producto: 4D
Tema: Compilación

 
HISTORIA 

 
ARTICLE USAGE

Manual de Diseño ( 4D v16)
Manual de Diseño ( 4D v16.1)
Manual de Diseño ( 4D v16.3)