Module Dart.1 – Introduction
Objectif
Comprendre pourquoi Dart, le Dart VM, l'écosystème Flutter, et les avantages de Dart pour développer des applications multiplateformes modernes.
Théorie
Pourquoi Dart ?
Dart est un langage de programmation développé par Google, conçu pour être productif, performant et portable.
Caractéristiques principales
1. Cross-platform
- Mobile : iOS et Android via Flutter
- Web : Compilé en JavaScript
- Desktop : Windows, macOS, Linux via Flutter Desktop
- Serveur : Applications backend avec Dart VM
2. Performance
- Compilé en code machine natif (AOT - Ahead Of Time)
- JIT (Just-In-Time) pour développement rapide
- Performance proche du natif
3. Typage fort optionnel
- Typage statique pour la sécurité
- Inférence de type automatique
- Null safety intégré
4. Syntaxe moderne
- Syntaxe claire et lisible
- Similaire à Java/C# (facile à apprendre)
- Fonctionnalités modernes (async/await, etc.)
5. Hot Reload
- Modifications visibles instantanément
- Développement ultra-rapide
- Pas besoin de redémarrer l'application
Cas d'usage
Applications mobiles :
- Applications natives iOS/Android
- Une seule base de code pour les deux plateformes
- Performance native
Applications web :
- Compilé en JavaScript optimisé
- Frameworks web modernes
Applications desktop :
- Applications natives Windows/macOS/Linux
- Interface moderne avec Flutter
Backend :
- Serveurs et APIs
- Scripts d'automatisation
Dart VM
Le Dart VM exécute le code Dart de différentes manières.
Modes d'exécution
1. JIT (Just-In-Time) - Développement
- Compilation à la volée
- Hot Reload activé
- Débogage facile
- Performance optimisée progressivement
2. AOT (Ahead Of Time) - Production
- Compilation préalable en code machine
- Performance maximale
- Taille réduite
- Démarrage rapide
3. Compilation JavaScript
- Compile Dart en JavaScript
- Pour applications web
- Compatible avec tous les navigateurs
Processus
Développement (JIT) :
Code Dart → Dart VM (JIT) → Code machine → Exécution
Production (AOT) :
Code Dart → Compilateur AOT → Code machine → Exécution
Web :
Code Dart → dart2js → JavaScript → Navigateur
Flutter overview
Flutter est le framework UI principal de Dart.
Qu'est-ce que Flutter ?
Framework open-source de Google pour créer des applications natives avec une seule base de code.
Avantages :
- Une seule base de code : iOS, Android, Web, Desktop
- Performance native : Compilé en code machine
- UI personnalisable : Contrôle total sur l'interface
- Hot Reload : Modifications instantanées
- Widgets riches : Bibliothèque complète de composants
Architecture Flutter
Widgets :
- Tout est un widget en Flutter
- Widgets composables et réutilisables
- Arbre de widgets hiérarchique
Rendering :
- Moteur de rendu propre (Skia)
- Pas de dépendance aux widgets natifs
- Performance optimale
Exemple simple :
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Mon App')),
body: Center(child: Text('Bonjour Flutter')),
),
);
}
}
Écosystème Dart
Outils de développement
Dart SDK :
- Compilateur Dart
- Dart VM
- Outils en ligne de commande
- Bibliothèques standard
IDEs :
- VS Code : Gratuit, extensions Dart/Flutter
- Android Studio : IntelliJ, excellent support Flutter
- IntelliJ IDEA : Support complet Dart/Flutter
Outils CLI :
dart: Exécute du code Dartdart compile: Compile en différents formatsdart format: Formate le codedart analyze: Analyse le code
Packages
pub.dev : Répertoire de packages Dart
- Des milliers de packages disponibles
- Gestion via
pubspec.yaml - Système de versions sémantiques
Exemples de packages populaires :
http: Requêtes HTTPjson_serializable: Sérialisation JSONshared_preferences: Stockage localprovider: Gestion d'état (Flutter)
Comparaison avec autres langages
Dart vs JavaScript
Dart :
- Typage statique
- Compilé en JavaScript optimisé
- Performance prévisible
- Null safety
JavaScript :
- Typage dynamique
- Interprété
- Plus flexible
- Écosystème énorme
Dart vs Java/Kotlin
Dart :
- Plus concis
- Hot Reload
- Cross-platform natif
- Syntaxe moderne
Java/Kotlin :
- Écosystème mature
- Plus de bibliothèques
- Performance éprouvée
- Principalement Android
Avantages et inconvénients
Avantages
✅ Cross-platform : Une base de code pour tout ✅ Performance : Code natif compilé ✅ Hot Reload : Développement rapide ✅ Null safety : Moins de bugs ✅ Syntaxe moderne : Code lisible ✅ Flutter : Framework UI puissant
Inconvénients
❌ Écosystème plus petit : Moins de packages que JavaScript/Java ❌ Courbe d'apprentissage : Flutter nécessite apprentissage ❌ Taille des apps : Peut être plus volumineux ❌ Communauté : Plus petite que JavaScript
Exercice
-
Installation Dart SDK
- Téléchargez Dart SDK depuis dart.dev
- Installez sur votre système
- Vérifiez avec
dart --version - Testez
dart --help
-
Premier programme
- Créez un fichier
hello.dart - Écrivez
void main() { print('Hello Dart'); } - Exécutez avec
dart hello.dart
- Créez un fichier
-
Exploration Flutter
- Installez Flutter SDK (si intéressé)
- Créez un projet Flutter :
flutter create mon_app - Explorez la structure générée
-
Comprendre l'écosystème
- Explorez pub.dev
- Identifiez 5 packages intéressants
- Comprenez leur utilité
-
Recherche
- Comparez Dart avec un autre langage
- Identifiez les cas d'usage de Dart
- Notez les avantages/inconvénients
Quiz
-
Qui a développé Dart ?
- Microsoft
-
Que signifie AOT ?
- Always On Time
- Ahead Of Time (compilation préalable)
- All Over The
-
Qu'est-ce que Flutter ?
- Un langage de programmation
- Un framework UI pour Dart
- Un éditeur de code
-
Que permet Hot Reload ?
- Compile plus vite
- Modifications visibles instantanément
- Optimise le code
-
Où trouver les packages Dart ?
- npm
- pub.dev
- Maven Central
Mini défi
Mission : Explorer l'écosystème Dart/Flutter complet
-
Installation complète
- Installez Dart SDK
- Installez Flutter SDK (optionnel mais recommandé)
- Configurez votre IDE (VS Code ou Android Studio)
- Vérifiez que tout fonctionne
-
Premier programme
- Créez un programme console Dart simple
- Testez différentes fonctionnalités de base
- Exécutez et observez les résultats
-
Flutter (si installé)
- Créez un projet Flutter
- Explorez la structure
- Modifiez le code et testez Hot Reload
-
Packages
- Explorez pub.dev
- Identifiez des packages utiles
- Comprenez comment les utiliser
-
Documentation
- Explorez la documentation officielle Dart
- Identifiez les ressources principales
- Notez les concepts importants
Objectif : Avoir une compréhension complète de Dart, son écosystème, et un environnement fonctionnel.
Validation : Vous pouvez passer au module suivant quand vous comprenez Dart, Flutter, et avez un environnement configuré.