Pour mieux situer l'usage du Framework et le niveau d'action de la technologie JITc, il faut bien distinguer deux parties distinctes pour l'exécution d'une application :
- le langage de WINDEV, le WLangage, qui prend en charge l'exécution, et les traitements "bas niveau" de type déclarations, i = j + 5...
- le Framework de WINDEV qui contient toutes les fonctionnalités dont disposent les applications. C'est lui qui permet par une simple instruction, "TableAjoute", "ListeSupprime", appelée au travers du WLangage, d'éviter l'appel de centaines d'instructions API. Le Framework est donc indissociable des applications, son utilisation est configurée lors de la création d'un exécutable.
Pour permettre l'exécution, le langage est donc "pré-compilé"' au niveau de l'environnement de développement. C'est à dire que le code est vérifié et transformé dans un code intermédiaire unique quelle que soit la plateforme cible. Il sera traité à l'exécution par la "machine virtuelle" (WD150VM.DLL). Et c'est au niveau de l'exécution à proprement parler sur la machine cible que deux solutions sont possibles :
- le code "pré-compilé" est exécuté totalement et au fur et à mesure grâce à la technologie de la "machine virtuelle",
- ou le code "pré-compilé" est transformé en code machine et exécuté directement par le processeur : c'est la technologie "JITc".
Seul le WLangage bénéficie du JITc. Les appels des fonctions du Framework restent traités intégralement par le Framework (ses traitements sont déjà optimisés, et de trop haut niveau pour un traitement par le processeur).
L'ensemble de cette solution du langage "pré-compilé" est la plus adaptée aux besoins actuels qui nécessitent l'utilisation de différentes plateformes :
- le code intermédiaire "pré-compilé" offre l'avantage d'une exécution par la "machine virtuelle" quelle que soit la plateforme (Win32, Win64, WinCE, Linux, ...),
- la technologie JITc permet d'accélérer les applications en évitant l'exécution au fur et à mesure de la lecture du code "pré-compilé" par la "machine virtuelle".
La technologie JITc apporte d'autres avantages lors de l'exécution :
- appel des fonctions matérielles du co-processeur pour les calculs en lieu et place des fonctions du Framework (Cos...),
- réduction du code effectivement traité (fonctions DBG ou code cible-conditionnel ignoré),
- modèle de processeur pris en compte afin d'utiliser le jeu d'instruction le plus performant.
Cette solution d'utilisation d'une machine virtuelle utilisée depuis les premières versions de WINDEV a également été retenue par ailleurs :
- en JAVA tout d'abord : le code "bytecode" pour le code "pré-compilé", il est indépendant de toute plateforme et est interprété à l'exécution par la machine virtuelle Java (JVM). L'exécution nécessite un JRE (Java Runtime Environment) regroupant la JVM pour interpréter le "bytecode" et un ensemble de librairies Java standard qui correspondent au Framework.
- en .NET on retrouvera le CLR correspondant au WLangage, tous les assemblages .NET disponibles qui correspondent au Framework, l'appellation MSIL pour le principe de code pré-compilé.
N'hésitez pas à me contacter via le menu "? ... Requête au Support Technique" de WINDEV pour tout renseignement complémentaire sur ce sujet. Notez que la technologie JITc est utilisée par défaut par toutes les applications depuis la version 12 de WINDEV. Pour des besoins spécifiques elle peut être inhibée à l'aide de la fonction ModeExécution (cf. http://doc.pcsoft.fr/fr-FR/?3013048).