Middle
Dartda turli xil kompilyatsiya turlarining qanday farqi bor?
sobes.tech AI
AIdan javob
Dart foydalanish holatiga qarab bir nechta kompilatsiya rejimini qo'llab-quvvatlaydi:
-
AOT (Oldindan) Kompilyatsiya:
- Mobil (iOS, Android), ish stoli (Windows, macOS, Linux) va server platformalari uchun yuqori samarali mahalliy ilovalar yaratish uchun ishlatiladi.
- Kod ishga tushirishdan oldin mashina kodiga kompilyatsiya qilinadi.
- Tez ishga tushish va yuqori samaradorlikni ta'minlaydi.
- Ilovalar chiqarish versiyalarini qurishda (
flutter build) ishlatiladi. - Hot Reload (Yoqiladigan yangilash)ni qo'llab-quvvatlamaydi.
-
JIT (Just-In-Time) Kompilyatsiya:
- Rivojlantirish jarayonida tez iteratsiya sikli uchun ishlatiladi.
- Kod ish vaqtida mashina kodiga kompilyatsiya qilinadi.
- Hot Reload va Hot Restartni qo'llab-quvvatlaydi, holatni saqlab qoladi.
- Rivojlantirish davomida tezkor fikr-mulohaza beradi.
- Debug rejimida (
flutter run) ishga tushirilganda ishlatiladi. - AoT ga nisbatan kamroq samarali va ishga tushirish sekinroq bo'ladi, chunki kompilyatsiya ish vaqtida amalga oshiriladi.
-
Dart2js:
- Dart kodini optimallashtirilgan JavaScript fayliga aylantiradigan kompilyator.
- Brauzerda ishlaydigan veb-ilovalar yaratish uchun ishlatiladi.
- Katta, ammo yuqori darajada optimallashtirilgan JS faylini ishlab chiqaradi.
-
Dart Dev Compiler (DDC):
- Tez inkremental kompilyator, Dart kodini JavaScriptga aylantiradi.
- Brauzerda tez iteratsiya va debugging uchun ishlatiladi.
- Bir nechta JS fayllarini ishlab chiqaradi, ular debugging uchun osonroq, ammo Dart2js ga nisbatan kamroq optimallashtirilgan.
- Brauzerda asl Dart kodini debugging qilish uchun Source Mapsni qo'llab-quvvatlaydi.
Asosiy farqlar jadvalda qisqacha:
| Xususiyat | AoT Kompilyatsiya | JIT Kompilyatsiya | Dart2js | Dart Dev Compiler (DDC) |
|---|---|---|---|---|
| Qo'llanilishi | Release (Mobil/Desktop) | Rivojlantirish (Mobil/Desktp) | Veb (Release) | Veb (Rivojlantirish) |
| Kompilyatsiya vaqti | Ishga tushirishdan oldin | Ishga tushirish davomida | Ishga tushirishdan oldin | Ishga tushirishdan oldin |
| Ishga tushish tezligi | Tez | Sekinroq | JSga bog'liq | Tez |
| Samaradorlik | Yuqori | Pastroq | Yuqori | Pastroq |
| Chiqish hajmi | Optimallashtirilgan | Kod + Virtual mashina | Optimallashtirilgan | Bir nechta fayl |
| Hot Reload | Yo'q | Ha | Yo'q | Qisman (WebDev) |
| Chiqish | Nativ mashina kodi | Mashina kodi (JIT) | JavaScript | JavaScript |
Kompilyatsiya rejimini tanlash maqsadli platforma va rivojlantirish bosqichiga (rivojlantirish yoki chiqarish) bog'liq.