Jetpack — apa itu, komponen arsitektur

Penulis: IT Sectr Diterbitkan: 2026-05-01 Waktu membaca: 9 mnt

Jetpack — adalah kumpulan pustaka Android dari Google yang menyederhanakan pengembangan dan mempercepat pembuatan aplikasi yang stabil. Komponen seperti ViewModel, Room dan Navigation memecahkan tugas-tugas umum: manajemen siklus hidup, penyimpanan data dan navigasi. Menurut Android Developers (2026), Jetpack mencakup lebih dari 50 pustaka, yang masing-masing kompatibel mundur dengan Android 5.0 (API 21) melalui AndroidX — pustaka kompatibilitas yang menggantikan Support Library.

Poin Utama

  • Android Jetpack — kumpulan 50+ pustaka yang mempercepat pengembangan aplikasi Android dan menyediakan kompatibilitas mundur melalui AndroidX.
  • ViewModel bertahan dari rotasi layar dan menyimpan data saat Activity dibuat ulang, mencegah hilangnya input pengguna.
  • Room — lapisan ORM di atas SQLite dengan pemeriksaan kueri SQL pada tahap kompilasi dan dukungan korutin.
  • Navigation Component mengelola transisi antar layar melalui graf navigasi dengan argumen type-safe.
  • Lifecycle memungkinkan bereaksi terhadap peristiwa siklus hidup Activity/Fragment tanpa kode boilerplate di kontroler.

Apa itu Android Jetpack?

Android Jetpack — adalah kumpulan pustaka, alat dan rekomendasi arsitektur dari Google, yang diperkenalkan pada tahun 2018 di Google I/O. Jetpack menggantikan Support Library dan Android Architecture Components, menggabungkannya menjadi satu ekosistem. Sebelum Jetpack, setiap pustaka Android diperbarui secara independen, yang menyebabkan konflik versi. Jetpack menyinkronkan versi di bawah satu pengenal AndroidX dan memperkenalkan model versi utama yang stabil dengan patch minor.

Pustaka Jetpack dibagi menjadi empat kategori: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Setiap kategori menyelesaikan tugas dari lapisan aplikasi tertentu — dari manajemen data hingga antarmuka pengguna.

Filosofi Jetpack

Google mempromosikan tiga prinsip Jetpack: accelerate development (lebih sedikit boilerplate, lebih banyak logika bisnis), eliminate boilerplate (ViewModel menghilangkan penyimpanan status manual, Room — penulisan SQLiteOpenHelper) dan build with confidence (setiap pustaka menjalani 15+ ribu tes sebelum rilis). Menurut Android Developers (2026), aplikasi di Jetpack memiliki 30% lebih sedikit crash terkait siklus hidup.

AndroidX sebagai dasar

Semua pustaka Jetpack didistribusikan di bawah pengenal AndroidX (artefak berbentuk androidx.*). AndroidX menggantikan Support Library (artefak com.android.support.*), membagi pustaka monolitik menjadi artefak modular dengan versi independen. Migrasi ke AndroidX dilakukan melalui opsi android.useAndroidX=true di gradle.properties — Android Studio secara otomatis mengonversi impor.

Komponen Arsitektur: ViewModel, Lifecycle, LiveData

ViewModel — komponen pusat arsitektur Jetpack yang menyimpan data UI. Tidak seperti Activity yang dihancurkan saat rotasi layar, ViewModel tetap di memori. Pengguna mengisi formulir, memutar telepon — data tidak hilang. ViewModel secara otomatis dibersihkan ketika LifecycleOwner (Activity atau Fragment) mengakhiri siklus hidupnya untuk selamanya (finish).

kotlin
class ProfileViewModel : ViewModel() {

    private val _userName = MutableLiveData<String>()
    val userName: LiveData<String> = _userName

    fun loadProfile(userId: String) {
        viewModelScope.launch {
            val user = repository.getUser(userId)
            _userName.value = user.name
        }
    }
}

@OptIn(ExperimentalLifecycleApi::class)
class MyObserver : LifecycleObserver {
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        println("Layar dimulai")
    }
}

LiveData — wadah yang dapat diamati untuk data yang mempertimbangkan siklus hidup. Jika layar tidak terlihat (onStop), LiveData tidak mengirim pembaruan — ini mencegah kebocoran memori dan crash saat mencoba memperbarui Activity yang tidak ada. Lifecycle — kelas yang menyimpan status saat ini (CREATED, STARTED, RESUMED) dan memungkinkan komponen lain berlangganan perubahan status. Bersama-sama, ViewModel, LiveData dan Lifecycle membentuk fondasi arsitektur reaktif Android.

ViewModelScope dan korutin

viewModelScope — CoroutineScope bawaan yang terikat pada siklus hidup ViewModel. Semua korutin yang dijalankan dalam scope ini secara otomatis dibatalkan saat ViewModel dibersihkan. Ini menghilangkan manajemen manual Disposable dan CompositeDisposable di setiap ViewModel. Untuk bekerja dengan viewModelScope, diperlukan dependensi androidx.lifecycle:lifecycle-viewmodel-ktx.

Room: bekerja dengan database di Android

Room — adalah pustaka ORM Jetpack yang menyediakan lapisan abstrak di atas SQLite. Alih-alih menulis kueri SQL mentah dan mengonversi Cursor secara manual ke objek, pengembang mendeklarasikan Entity (tabel), DAO (Data Access Object) dan Database (titik masuk). Room memeriksa kueri SQL pada tahap kompilasi melalui anotasi @Query — jika tabel atau kolom tidak ada, build gagal dengan pesan error yang jelas.

kotlin
@Entity
data class User(
    @PrimaryKey val id: String,
    val name: String,
    val email: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM User WHERE id = :userId")
    suspend fun getUser(userId: String): User?

    @Insert
    suspend fun insertUser(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Entity User mendeskripsikan tabel dengan tiga kolom. DAO mendeklarasikan fungsi suspend untuk bekerja dengan korutin — kueri dijalankan secara otomatis di latar belakang. Room mendukung migrasi melalui anotasi @Migration: pengembang mendeskripsikan skrip SQL transisi antar versi, dan Room menjalankannya tanpa kehilangan data. Jika tidak ada migrasi, Room melempar IllegalStateException — dengan cara ini proyek dilindungi dari kehilangan data yang tidak disengaja saat memperbarui skema.

TypeConverters dan relasi

Room hanya menyimpan tipe primitif dan wrapper-nya. Untuk menyimpan daftar, Date atau objek kustom, digunakan @TypeConverter — metode statis yang mengonversi tipe menjadi String (JSON) atau Long (timestamp). Relasi antar tabel dimodelkan melalui objek bersarang dengan anotasi @Relation dan kelas POJO pembantu dengan @Transaction untuk kueri join yang efisien.

Navigation Component — pustaka Jetpack untuk mengelola transisi antar layar. Alih-alih memanggil FragmentTransaction secara manual, pengembang membuat graf navigasi (file XML dengan node tujuan), dan sistem menghasilkan kelas Directions dengan metode transisi type-safe. Navigation Component menjamin pengoperasian back stack, deep links dan pengiriman argumen antar layar yang benar.

kotlin
// nav_graph.xml
// <fragment android:id="@+id/profileFragment"
//     android:name=".ProfileFragment">
//     <argument android:name="userId"
//         android:defaultValue="-1"
//         app:argType="integer" />
// </fragment>

// Dalam kode fragmen:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        loadProfile(args.userId)
    }
}

Argumen userId dikirimkan dalam graf navigasi dengan menentukan tipe (integer) dan nilai default. Kelas ProfileFragmentArgs dihasilkan secara otomatis oleh plugin Navigation Safe Args — berisi semua argumen dengan tipe Kotlin yang benar. Tautan dalam dikonfigurasi di graf: app:deepLink="app://profile/{userId}". Navigation Component sendiri mengurai URL dan membuat tumpukan balik seolah-olah pengguna telah menavigasi melalui antarmuka.

Bottom Navigation dan Conditional Navigation

Navigation Component terintegrasi dengan BottomNavigationView melalui NavController: setiap item menu terikat ke tujuan dalam graf. Transisi antar tab tidak membuat ulang fragmen — Navigation Component menyimpan status melalui NavBackStackEntry. Untuk navigasi bersyarat (menampilkan login jika tidak diautentikasi), gunakan navController.navigate(condition) dengan pemeriksaan di onCreate.

AndroidX: Support Library Generasi Baru

AndroidX — adalah arsitektur Support Library yang didesain ulang, di mana setiap pustaka menerima artefaknya sendiri dengan versi independen. Alih-alih satu com.android.support:appcompat-v7:28.0.0, AndroidX menawarkan androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 dan seterusnya. Ini menghilangkan masalah ketika dependensi yang berbeda menarik versi Support Library yang berbeda, menyebabkan konflik.

Migrasi ke AndroidX dilakukan secara otomatis di Android Studio 3.2+ melalui menu Refactor → Migrate to AndroidX. Studio mengganti semua impor di file Java/Kotlin, manifes dan sumber daya. Kompatibilitas mundur — keunggulan utama AndroidX: pustaka berfungsi di Android 5.0 (API 21) dan lebih tinggi, mencakup 97% perangkat aktif menurut Google Play Console (2025).

Artefak utama AndroidX

Artefak yang paling sering digunakan: appcompat (tema gelap, Material Design pada API lama), recyclerview (daftar adaptif dengan ViewHolder), constraintlayout (wadah fleksibel dengan hierarki datar), cardview (kartu Material Design), preference (layar pengaturan dengan gaya Material). Setiap artefak memiliki versi independen, mempercepat penerimaan perbaikan tanpa memperbarui seluruh paket.

Pustaka Penting Jetpack Lainnya

Selain Architecture dan AndroidX, Jetpack mencakup banyak pustaka khusus untuk tugas-tugas pengembangan mobile yang umum. WorkManager — untuk tugas latar belakang dengan eksekusi terjamin (sinkronisasi, unggah log), mendukung tugas periodik dan tertunda, serta batasan jaringan dan baterai. DataStore — pengganti SharedPreferences berbasis korutin, mendukung properti bertipe (Preferences DataStore) dan Protocol Buffers (Proto DataStore).

  • Hilt — framework DI berbasis Dagger, menyederhanakan injeksi dependensi melalui anotasi @HiltViewModel, @Inject, @Module. Integrasi bawaan dengan ViewModel dan Navigation.
  • Paging 3 — pustaka untuk memuat data secara halaman dari jaringan/DB dengan dukungan RemoteMediator (jaringan + cache), StateFlow dan Compose.
  • CameraX — API untuk bekerja dengan kamera, mengabstraksi perbedaan produsen (Samsung, Xiaomi, Honor) melalui antarmuka CameraController yang seragam.
  • Security Crypto — enkripsi data melalui EncryptedSharedPreferences dan EncryptedFile berbasis AES-256 dengan kunci utama di Android Keystore.

Setiap pustaka memiliki SDK minimal dan artefaknya sendiri. Google merilis versi utama setahun sekali (bertepatan dengan rilis Android) dan patch keamanan — setiap triwulan. Rekomendasi — hubungkan hanya pustaka yang diperlukan agar tidak meningkatkan ukuran APK. Jetpack secara keseluruhan (semua artefak) berbobot lebih dari 20 MB, tetapi aplikasi tipikal menggunakan 5-7 pustaka, menambahkan 3-5 MB ke APK.

Pertanyaan yang Sering Diajukan

Apakah perlu migrasi dari Support Library ke AndroidX?

Ya, Google menghentikan dukungan Support Library pada tahun 2019. Semua pustaka Jetpack dan Google Play Services baru memerlukan AndroidX. Migrasi dilakukan dalam 30-60 menit melalui Android Studio.

Bisakah Jetpack digunakan dengan Java atau hanya dengan Kotlin?

Jetpack sepenuhnya kompatibel dengan Java. Namun, banyak fitur (viewModelScope, korutin, Compose) hanya tersedia di Kotlin. Google merekomendasikan Kotlin untuk proyek baru.

Apa perbedaan ViewModel dengan onSaveInstanceState?

ViewModel menyimpan objek di memori dan bertahan dari rotasi. onSaveInstanceState hanya cocok untuk primitif yang dapat diserialisasi (Bundle). ViewModel tidak disimpan saat proses dihentikan — untuk itu diperlukan SavedStateHandle.

Kapan menggunakan WorkManager alih-alih korutin?

WorkManager — untuk tugas yang harus dijalankan bahkan setelah aplikasi ditutup: sinkronisasi, unggah log, pengiriman analitik. Korutin — untuk tugas yang terikat pada layar.

Bagaimana cara migrasi dari SharedPreferences ke DataStore?

Ganti impor SharedPreferences dengan DataStore<Preferences>. Membaca melalui dataStore.data.first() (suspend), menulis melalui dataStore.edit { ... }. DataStore asinkron dan terlindung dari ANR.

Ringkasan

  • Android Jetpack — kumpulan 50+ pustaka untuk pengembangan Android, disatukan di bawah AndroidX dengan kompatibilitas mundur hingga API 21.
  • ViewModel bertahan dari rotasi layar dan menyimpan data UI, dan Lifecycle memberi tahu komponen tentang perubahan status Activity/Fragment.
  • Room — ORM type-safe di atas SQLite dengan pemeriksaan kueri saat kompilasi, migrasi dan dukungan korutin.
  • Navigation Component mengelola transisi melalui graf dengan argumen type-safe dan deep link otomatis.
  • WorkManager menjamin eksekusi tugas latar belakang bahkan setelah aplikasi ditutup, DataStore menggantikan SharedPreferences.
  • Jetpack dibagi menjadi empat kategori: Architecture, UI, Behavior, Foundation — masing-masing mencakup lapisan aplikasinya sendiri.
  • Aplikasi di Jetpack memiliki 30% lebih sedikit crash terkait siklus hidup dan lebih cepat dikembangkan berkat solusi arsitektur yang siap pakai.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga