Sobes.tech
Middle

Mi a különbség a Dart különböző fordítási típusai között?

sobes.tech MI

Válasz az MI-től

A Dart több fordítási módot támogat a használati forgatókönyvtől függően:

  1. AOT (Ahead-Of-Time) fordítás:

    • natív, magas teljesítményű alkalmazások készítésére szolgál mobil (iOS, Android), asztali (Windows, macOS, Linux) és szerver platformokra.
    • A kód gépi kódra fordul mielőtt futna.
    • Gyors indítást és magas teljesítményt biztosít.
    • A kiadási verziók összeállításához használják (flutter build).
    • Nem támogatja a hot reload-ot.
  2. JIT (Just-In-Time) fordítás:

    • Fejlesztés közben gyors iterációs ciklushoz használják.
    • A kód futás közben fordul gépi kódra.
    • Támogatja a hot reload-ot és a hot restart-ot.
    • Gyors visszacsatolást biztosít fejlesztés közben.
    • Fejlesztés közben a flutter run-nal indítják az alkalmazásokat.
    • Lassabb, mint az AoT, mert futás közben fordít.
  3. Dart2js:

    • Egy fordító, amely Dart kódot optimalizált JavaScript fájlra alakít.
    • Webes alkalmazások készítéséhez használják, amelyek böngészőben futnak.
    • Nagy, de magas színvonalon optimalizált JS fájlt generál.
  4. Dart Dev Compiler (DDC):

    • Gyors inkrementális fordító, amely Dart kódot JavaScript-re alakít.
    • Webfejlesztés során gyors iteráció és hibakeresés céljából használják a böngészőben.
    • Több JS fájlt generál, amelyek könnyebben hibakereshetők, de kevésbé optimalizáltak, mint a Dart2js output.
    • Támogatja a Source Maps-t az eredeti Dart kód hibakereséséhez a böngészőben.

A fő különbségek táblázatban összefoglalva:

Jellemző AoT fordítás JIT fordítás Dart2js Dart Dev Compiler (DDC)
Alkalmazás Kiadás (Mobil/Asztali) Fejlesztés (Mobil/Asztali) Web (Kiadás) Web (Fejlesztés)
Fordítási idő Futás előtt Futás közben Futás előtt Futás előtt
Indítási sebesség Gyors Lassabb A JS-től függ Gyors
Teljesítmény Magas Alacsonyabb Magas Alacsonyabb
Kimenet mérete Optimalizált Kód + Virtuális gép Optimalizált Több fájl
Hot Reload Nem Igen Nem Részben (WebDev)
Kimenet Natív gépi kód Gépi kód (JIT) JavaScript JavaScript

A fordítási mód kiválasztása a célplatformtól és a fejlesztés szakaszától függ (fejlesztés vagy kiadás).