Aller au contenu principal

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 Dart
  • dart compile : Compile en différents formats
  • dart format : Formate le code
  • dart 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 HTTP
  • json_serializable : Sérialisation JSON
  • shared_preferences : Stockage local
  • provider : 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

  1. Installation Dart SDK

    • Téléchargez Dart SDK depuis dart.dev
    • Installez sur votre système
    • Vérifiez avec dart --version
    • Testez dart --help
  2. Premier programme

    • Créez un fichier hello.dart
    • Écrivez void main() { print('Hello Dart'); }
    • Exécutez avec dart hello.dart
  3. Exploration Flutter

    • Installez Flutter SDK (si intéressé)
    • Créez un projet Flutter : flutter create mon_app
    • Explorez la structure générée
  4. Comprendre l'écosystème

    • Explorez pub.dev
    • Identifiez 5 packages intéressants
    • Comprenez leur utilité
  5. Recherche

    • Comparez Dart avec un autre langage
    • Identifiez les cas d'usage de Dart
    • Notez les avantages/inconvénients

Quiz

  1. Qui a développé Dart ?

    • Microsoft
    • Google
    • Facebook
  2. Que signifie AOT ?

    • Always On Time
    • Ahead Of Time (compilation préalable)
    • All Over The
  3. Qu'est-ce que Flutter ?

    • Un langage de programmation
    • Un framework UI pour Dart
    • Un éditeur de code
  4. Que permet Hot Reload ?

    • Compile plus vite
    • Modifications visibles instantanément
    • Optimise le code
  5. Où trouver les packages Dart ?

    • npm
    • pub.dev
    • Maven Central

Mini défi

Mission : Explorer l'écosystème Dart/Flutter complet

  1. 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
  2. Premier programme

    • Créez un programme console Dart simple
    • Testez différentes fonctionnalités de base
    • Exécutez et observez les résultats
  3. Flutter (si installé)

    • Créez un projet Flutter
    • Explorez la structure
    • Modifiez le code et testez Hot Reload
  4. Packages

    • Explorez pub.dev
    • Identifiez des packages utiles
    • Comprenez comment les utiliser
  5. 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é.