# 4e Dimension (langage)

4D (auparavant 4e Dimension) est un système de gestion de base de données associé à un langage de programmation de quatrième génération fonctionnant à la fois sur les plateformes macOS et Windows. La version la plus récente est 4D v20.

## Historique

En 1984, Laurent Ribardière crée le logiciel 4e Dimension qui devient l'un des premiers systèmes de base de données sur la plateforme Apple Macintosh. En 1995, 4D devient multiplateforme pour également fonctionner sous Microsoft Windows et deux ans plus tard il embarque un serveur web.
| Année | Version | Remarques |
| 1984 | ABCBase | |
| 1985 | 4D v1 | |
| 1986 | 4D v2 | |
| 1987 | 4D v3 | |
| 1989 | 4D v4 | Utilisation multiposte - Compiler |
| 1992 | 4D v5 | Environnement client/serveur intégré |
| 1995 | 4D v5.5 | Multiplateforme Mac OS et Windows |
| 1997 | 4D v6 | Serveur Web intégré |
| 1999 | 4D 6.5 | 4D 6.5.9r2 est la dernière version de cette ligne |
| 2000 | 4D 6.7 | 4D 6.7.4 est la dernière version de cette ligne |
| 2001 | 4D 6.8 | Certification Mac OS X (6.8.5) ; la version 6.8.6 est la dernière version de cette ligne. |
| 2003 | 4D 2003 | XML, Web Services et Compilateur intégré ; la version 2003.8r2 est la dernière version de cette ligne. |
| 2004 | 4D 2004 | Interface revue ; intégration des commandes ODBC haut niveau, 4D Customizer, 4D Backup et 4D Engine ; la version 2004.8 est la dernière version de cette ligne. |
| 2007 | 4D v11 SQL | Nouveau moteur de base de données, SQL intégré, support Unicode, gestion SVG, centre de maintenance intégré, zone web ; 4D v11 SQL Release 9 (11.9) est la dernière version de cette ligne. |
| 2010 | 4D v12 | Nouvelles fonctionnalités, améliorations de l'environnement de développement, multibases, système intégré de synchronisation entre plusieurs bases, support PHP ; 4D v12.4 est la dernière version de cette ligne. |
| 2012 | 4D v13 | Nouveau serveur HTTP multithread, gestion des sessions automatique, nouveau client HTTP extensible, intégration de webkit et support étendu de Javascript, list box enrichie, gestion de documents externes. |
| 2014 | 4D v14 | Création de Web apps avec 4D Mobile: Applications multiplateforme disponibles sur Mobile, Tablette et tout type de navigateur. Objets structurés JSON, vues SQL, nouveaux outils de maintenance et de monitoring. |
| 2015 | 4D v15 | 4D Server 64 bits pour macOS ; Nouvelle couche réseau; Première version de 4D Write Pro; support LDAP; fonctions avancées d'analyse et d'optimisation |
| 2017 | 4D v16 | Nouveau système de gestion de cache; multithreading préemptif; généralisation du 64 bits; messages asynchrones entre processus |
| 2018 | 4D v17 | Introduction de ORDA acronyme pour Object Relational Data Access |
| 2020 | 4D v18 | Mode projet, Chiffrement des données, 4D for iOS, 4D Write Pro, 4D View Pro |
| 2021 | 4D v19 | Support Natif pour Apple Silicon, Classes |

## Logiciel 4D

4D est un système de gestion de base de données relationnelle disposant d'un langage de programmation de la quatrième génération (L4G). Environnement de développement intégré (EDI ou IDE en anglais), 4D intègre :
* un compilateur
* un débogueur
* un système de sauvegarde et de réplication
* un serveur Web
* un serveur et client de services web
4D permet à tout développeur d'écrire ses propres plug-ins et propose les siens :
* Productivité : 4D View pro (tableur), 4D Write pro (traitement de texte)
* Connectivité : 4D Internet Commands (ftp, courriel), ODBC Driver for 4D
* Extensions : 4D Plugin SDK (développement de plugin)
Le logiciel 4D possédait traditionnellement 3 modes :
* Le mode structure (ou mode Design) permettant de créer des formulaires et des méthodes, mais aussi de modifier la structure de la base de données, de compiler, de déboguer.
* Le mode utilisation, permettant le lancement à l'unité des programmes réalisés et la modification du contenu de la base de données.
* Le mode dit menus créés dans lequel les utilisateurs peuvent visualiser une application sur-mesure entièrement « habillée ».
Depuis la version 4D v11 SQL, les modes Structure et Utilisation ont fusionné en un seul mode Développement. Le mode Menus Créés est devenu le mode Application.

## 4D en quelques notions

* Langage propriétaire de haut niveau indépendant du système d’exploitation
* Multiplateforme : Mac OS X (y compris MacIntel depuis la version 4D 2004.5) et Windows (certification Vista depuis la version 4D 2004.6 et Windows Server 2008 depuis la version 4D v11 SQL 11.3, certification Windows 7 depuis la version 4D V11.5)
* Solutions mono-poste et client/Serveur
* Architecture extensible : plug-ins, bibliothèques d’objets, composants
* Possibilité de développer en client/Serveur (développement collaboratif)
Depuis 4D v11 SQL :
* Moteur SQL natif
* Prise en charge du SVG
* Intégration d’Unicode
* Support étendu de ODBC, XML et des Web Services SOAP

## Fonctionnalités principales

* Ouverture de bases de données en code interprété ou compilé
* Générateur de formulaires
* Gestion des accès utilisateurs et mot de passe
* Éditeur de méthodes
* Éditeur de menus, bulles d'aide (ou infobulles), de listes, de feuilles de styles, de filtres
* Correcteur orthographique multilingue
* Moteur de rendu HTML
* Débogueur, vérificateur syntaxique
* Compilateur et générateur d'applications
* Système intégré de sauvegarde et de mirroring
* Serveur Web
* Serveur et Client de Web Services
* Serveur et Client de données (ODBC, JDBC, Oracle, SQL, MySQL…)

## Points forts de 4D V11 SQL

* Que ce soit pour des projets élémentaires en local ou des solutions en client-serveur avec de nombreux clients : sans changer une ligne de code, le moteur de 4D prenant tout en charge. La version serveur de la version 11 donne d'excellents résultats du point de vue de la réactivité.
* Multiplateforme : un même programme peut être porté de macOS à MS Windows (et vice-versa) sans changer une seule ligne de code.
* Toute l'administration des bases et leur configuration sont centralisées en un seul point (le Centre de Support et Maintenance)
* Les sauvegardes sont soit déclenchables dans le code soit programmables à heures régulières
* l'indexation très puissante permet de faire des recherches en full-text (plein-texte)
* 4D est conforme à toutes les normes du marché :
** SQL2 (la dernière) : la grande majorité des commandes existantes dans ce langage sont implémentées dans 4D
** XML : 4D est « orientée » XML. Les données et la structure sont directement exportables en XML pour une réutilisation avec d'autres produits.
** Webservices : un assistant permet d'utiliser simplement des Webservices.
** Web 2.0 : un framework Ajax a été développé afin de simplifier l'intégration des données issues de 4D à des pages web dynamiques
** Flex : des bibliothèques 4D pour Flex permettent de connecter les données 4D via SQL dans une application cliente riche
** Oracle : via le driver ODBC, 4D peut communiquer avec les bases oracle
** UTF8
* Un traitement de texte (4D Write) et un tableur (4D View) sont intégrés en natif dans 4D. Il existe en plus des objets 4D qui permettent de communiquer directement avec les applications de la suite Office.
* Un développement complet peut être réutilisé très simplement dans un autre par simple glisser-déposer, grâce à la prise en compte de la programmation orientée composants
* 4D est à la fois serveur de données, serveur Web, serveur de webservices et serveur SQL.
* le langage de programmation de 4D est tokennisé : un développement fait avec des commandes en français sera automatiquement traduit en anglais, en allemand, en espagnol ou en japonais selon la version de 4D utilisée.
* un framework permet de développer des pages web spécifiquement adaptées à l'iPhone.
* Le déploiement client/serveur est d'une grande simplicité.

## Compatibilité

| Systèmes d’exploitation / Version 4D | V18 | v17 | v16 | v15 | v14 | v14 serveur | v13 | v12 | v11 | 2004 |
| Windows 10 | Certifié | Certifié | Certifié | Non | Non | Non | Non | Non | Non | Non |
| Windows 8.1 64 bits | Certifié | Certifié | Certifié | Certifié | Certifié (32 bits) | Certifié | Certifié | Non | Non | Non |
| Windows 8.1 32 bits | Non | Compatible | Certifié | Certifié (32 bits) | Certifié | Compatible | Certifié | Non | Non | Non |
| Windows 8 64 bits | Certifié | Non | Certifié | Certifié | Certifié (32 bits) | Certifié | Certifié | Compatible | Non | Non |
| Windows 8 32 bits | Non | Non | Certifié | Certifié | Certifié | Compatible | Certifié | Compatible | Non | Non |
| Windows 7 64 bits | | Certifié | Certifié | Certifié | Certifié (32 bits) | Certifié | Certifié | Certifié | Certifié | Non |
| Windows 7 32 bits | Non | Compatible | Certifié | Certifié | Certifié | Compatible | Certifié | Certifié | Certifié | Non |
| Windows Vista | Non | Non | Non | Non | Non | Non | Certifié | Certifié | Certifié | Certifié |
| Windows XP | Non | Non | Non | Non | Non | Non | Certifié | Certifié | Certifié | Certifié |
| Windows Server 2016 | | Certifié | Certifié | Non | Non | Non | Non | Non | Non | Non |
| Windows Server 2012 R2 | | Certifié | Certifié | Certifié | Certifié (32 bits) | Compatible | Certifié | Non | Non | Non |
| Windows Server 2012 | | Certifié | Certifié | Certifié | Certifié (32 bits) | Compatible | Certifié | Compatible | Non | Non |
| Windows Server 2008 R2 | Non | Non | Certifié | Certifié | Certifié (32 bits) | Compatible | Certifié | Certifié | Non | Non |
| Windows Server 2008 64 bits | Non | Non | Certifié | Compatible | Compatible | Certifié | Certifié | Certifié | Non |
| Windows Server 2008 32 bits | Non | Non | Non | Non | Non | Non | Certifié | Certifié | Certifié | Non |
| Windows Server 2003 | Non | Non | Non | Non | Non | Non | Certifié | Certifié | Certifié | Certifié |
| Windows Server 2000 | Non | Non | Non | Non | Non | Non | Non | Non | Non | Certifié |
| Mac OS X 10.15 | Certifié | Non | Non | Non | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.14 | Certifié | Certifié | Non | Non | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.13 | Certifié | Certifié | Certifié | Non | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.12 | | Certifié | Certifié | Non | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.11 | Non | Non | Certifié | Non | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.10 | Non | Non | Certifié | Certifié | Non | Non | Non | Non | Non | Non |
| Mac OS X 10.9 | Non | Non | Non | Certifié | Certifié | Certifié | Certifié | Non | Non | Non |
| Mac OS X 10.8 | Non | Non | Non | Certifié | Certifié | Certifié | Certifié | Certifié | Non | Non |
| Mac OS X 10.7 | Non | Non | Non | Non | Certifié | Certifié | Certifié | Certifié | Non | Non |
| Mac OS X 10.6 | Non | Non | Non | Non | Non | Non | Certifié | Certifié | Certifié | Non |
| Mac OS X 10.5 | Non | Non | Non | Non | Non | Non | Non | Compatible | Certifié | Certifié |
| Mac OS X 10.4 | Non | Non | Non | Non | Non | Non | Non | Non | Certifié | Certifié |
| Mac OS X 10.3 | Non | Non | Non | Non | Non | Non | Non | Non | Non | Certifié |
| Mac OS X 10.2 | Non | Non | Non | Non | Non | Non | Non | Non | Non | Compatible |

## Limites

* La plateforme 4D n'est pas destinée au développement d'applications de gestion visant à supporter plusieurs milliers d'utilisateurs concurrents intensifs.
* Le langage de programmation de 4D n'est pas orienté objet en natif mais commence à s'y ouvrir depuis la v17.
* 4D pour macOS est disponible en versions 32 et 64 bits à compter de la 15R5. 4D Server pour Windows est disponible en versions 32 et 64 bits depuis la version 12. Le 32 bit est désormais obsolète et ne doit être utilisé qu'au titre de la compatibilité ; 4D 17R5 qui préfigure 4D v18 n'est disponible qu'en 64 bit.
* Le langage 4D évolue à chaque version, mais n'offre pas nécessairement de compatibilité descendante. Ainsi, il n'est pas possible pour un programmeur de compiler une application pour une version antérieure de 4D. Si une application doit être développée pour plusieurs versions de 4D, elle devra donc être programmée et maintenue de façon indépendante dans chacune de ces versions. Cette limitation est particulièrement contraignante lorsqu'une application doit être disponible sous plusieurs systèmes d'exploitation (ex: Windows XP et Windows 8).