4D v16.3

Présentation

Accueil

 
4D v16.3
Présentation

Présentation  


 

 

Vous pouvez compiler votre application, c’est-à-dire traduire en langage machine la totalité de vos méthodes. La compilation d’une base permet de vérifier la cohérence du code, d’accélérer son exécution et donne la possibilité de protéger intégralement le code. La compilation est une étape indispensable entre le développement de bases de données sous 4D et le déploiement d’applications autonomes. 

Le processus de compilation est entièrement automatique ; toutefois, la compilation requiert une plus grande rigueur dans l’écriture du code 4D. Le chapitre Compilateur du manuel Langage de 4D fournit des conseils et des précisions concernant la programmation en vue de la compilation. A noter qu’en outre, le compilateur vous signalera vos erreurs de programmation et les replacera dans leur contexte.

Un ordinateur est une machine à laquelle on ne peut transmettre des ordres que par des “0” et des “1”. Le cœur de cette machine, le microprocesseur, n’est pas capable de comprendre un autre langage. Ce langage binaire est appelé langage machine. Lorsque l’on écrit un programme, dans n’importe quel langage informatique (C, C++, SQL, Java, BASIC, 4D…), les instructions sont traduites en langage machine, afin d’être comprises par le microprocesseur de l’ordinateur.

Deux cas de figure peuvent alors se présenter :

  • si les instructions composant le programme sont traduites au fur et à mesure de leur exécution, on dit alors que le programme est interprété.
  • si les instructions sont traduites en bloc avant le lancement de l’exécution du programme, on dit alors que le programme est compilé.

Pour un programme interprété, l’exécution d’une instruction se décompose de la façon suivante :

  • lecture de l’instruction dans le langage du programme,
  • traduction de l’instruction en langage machine,
  • exécution de l’instruction.

Ce cycle s’exécute pour chacune des instructions composant un programme. Le programme qui se charge de l’exécution d’un tel cycle pour chaque instruction est appelé interpréteur. Dans une base de données en cours de développement, les méthodes 4D sont interprétées.

Un programme compilé est entièrement traduit avant le début de l’exécution. On obtient alors une série d’instructions en langage machine. Cette série peut être conservée et utilisée plusieurs fois.

Ainsi, pour un programme donné, la phase de traduction n’est effectuée qu’une seule fois, quel que soit le nombre d’utilisations futures du programme. 

Cette phase est totalement indépendante de toute utilisation du programme. Le programme chargé de la traduction est appelé compilateur.

Le compilateur de 4D compile dans votre base les méthodes base, les méthodes projet, les triggers, les méthodes formulaire et les méthodes objet. Si vous n’avez aucun de ces éléments dans une application, le compilateur n’a rien à compiler.

Lorsque vous avez mené à bien la compilation, l’utilisation de la base compilée est identique à celle de la base originale.

Le premier bénéfice de la compilation est évidemment un gain de temps conséquent lors de l’exécution des instructions. Il existe deux autres avantages directement liés à la compilation :

  • la vérification systématique de votre code,
  • la protection de vos bases et de vos composants.
Vitesse  

Le gain de performance tient à deux raisons majeures : la traduction directe et définitive du code et l’accès direct aux adresses des variables et des méthodes.

  • Traduction directe et définitive du code
    Le code des méthodes écrites sous 4D sera, avec le compilateur, traduit une fois pour toutes. Le temps passé à traduire chacune des instructions, au fur et à mesure qu’elles apparaissent, sera économisé lors de l’utilisation de la base. Imaginons par exemple une boucle contenant une séquence d’instructions devant être exécutée 50 fois :
     For($i;1;50)
      `Séquence d’instructions
     End for

    Chaque instruction de la séquence est traduite 50 fois dans une base interprétée. Avec le compilateur, la phase de traduction de chaque instruction de la séquence est supprimée. On économise ainsi, pour chaque instruction de la séquence, 50 traductions.
  • Accès direct aux adresses des variables et des méthodes
    Dans une base non compilée, l’accès aux variables s’effectue par l’intermédiaire d’un nom. Il faut donc accéder au nom pour accéder à la valeur de la variable.
    Dans le code compilé, le compilateur attribue à chaque variable une adresse, écrit directement l’adresse de la variable dans le code et va directement à cette adresse, lorsqu’un accès à la variable est nécessaire.
    Notes :
    - Il va de soi que les opérations nécessitant des accès à vos disques seront peu accélérées car leur vitesse est limitée par la vitesse physique de transmission de votre ordinateur vers ses périphériques (lecteur ou disque dur).
    - Les commentaires ne sont pas traduits et n’apparaissent pas dans le code compilé. Ces lignes n’interviennent en rien dans les temps d’exécution en mode compilé.

Le compilateur fonctionne aussi comme analyseur syntaxique de vos bases. Il procède à un examen systématique de votre code et relève vos éventuelles négligences alors que 4D ne le fait que lorsque la méthode est exécutée.

Supposez que l’une de vos méthodes contienne une série de tests et des séquences d’instructions à exécuter. Il est improbable que vous testiez absolument tous les cas de figure si le nombre de tests est, par exemple, supérieur à 100. Il n’est alors pas impossible que se révèle à l’utilisation une erreur de syntaxe contenue dans un cas non testé.

Ce phénomène ne peut pas se produire lorsque vous utilisez une base compilée. En effet, lors de la compilation, la base entière est parcourue et la syntaxe de chaque instruction est vérifiée. S’il existe une anomalie, le compilateur la détecte et vous demande d’y remédier.

Une fois que vous avez compilé votre base, vous pouvez en supprimer le code interprété à l’aide du générateur d’applications. Dans ce cas, l’accès au mode Développement (hors enregistrements) est verrouillé. Pour plus d’informations sur le générateur d’applications, reportez-vous au chapitre Finaliser et déployer les applications finales.

Dans une base compilée, les commandes liées au développement sont donc désactivées. 

Lorsqu’un composant compilé est installé dans une base hôte, les méthodes projet partagées sont accessibles dans l’Explorateur et peuvent être appelées dans les méthodes de la base hôte mais leur contenu n’apparaît pas dans la zone de prévisualisation ni dans le débogueur. Les autres méthodes projet du composant n’apparaissent jamais. Pour plus d’informations sur les composants, reportez-vous au chapitre Développer et installer des composants 4D.

Les avantages sont les suivants :

  • le développement de la base ne peut être modifié volontairement ou involontairement,
  • vos méthodes sont désormais protégées.

Le compilateur est intégré à 4D. La compilation d’une base de données s’effectue depuis la boîte de dialogue suivante :

Il est également possible de déclencher directement une compilation avec les paramètres courants via la commande Lancer la compilation, présente dans le menu Développement et le menu associé au bouton “Compilateur” de la barre d’outils.

La compilation est effectuée en tenant compte d’options génériques de compilation, paramétrables dans la Page Compilateur des Propriétés de la base.

Une fois la base compilée, il reste possible à tout moment de basculer du mode interprété au mode compilé et inversement via les commandes Redémarrer en interprété et Redémarrer en compilé du menu Exécution, sans devoir quitter l’application — sauf si le code interprété a été supprimé (voir paragraphe précédent). 

La boîte de dialogue d’ouverture de base de données permet également de choisir le mode interprété ou compilé au lancement de la base (cf. paragraphe Options de la boîte de dialogue d’ouverture). 

Si vous effectuez des modifications sur la structure de la base en mode interprété, vous devez la recompiler afin d’en bénéficier en mode compilé. 

Lorsque vous passez d’un mode à l’autre, 4D referme le mode courant et ouvre le nouveau mode. Ce fonctionnement revient à quitter puis rouvrir l’application. Par conséquent, lors du changement de mode, 4D exécute dans l’ordre suivant les méthodes base éventuellement définies : On Exit database method -> On Startup database method

 
PROPRIÉTÉS 

Produit : 4D
Thème : Compilation

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v16)
4D - Mode Développement ( 4D v16.1)
4D - Mode Développement ( 4D v16.3)