# Jetpack Compose under the hood

DevFeed: [Jetpack Compose under the hood](<https://devfeed.tech/articles/jetpack-compose-under-the-hood-25851.md>)

Original publisher: [Read original article](<https://medium.com/@banmarkovic/jetpack-compose-under-the-hood-7bb88f08c47e?source=rss-8aced922ece------2>)

Author: Ban Markovic

Published: 2022-12-12T10:49:33Z

Content type: tutorial

Language: en

Sources: [Stories by Ban Markovic on Medium](<https://devfeed.tech/sources/stories-by-ban-markovic-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Android](<https://devfeed.tech/topics/android.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [SDK](<https://devfeed.tech/topics/sdk.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [sdk](<https://devfeed.tech/tags/sdk.md>), [ui](<https://devfeed.tech/tags/ui.md>)

## AI overview

This tutorial introduces Jetpack Compose by comparing it with Android's traditional View System. It explains how Android UI development evolved from findViewById and Butter Knife to Kotlin synthetics, ViewBinding, and DataBinding, and frames Compose as a response to increasing UI complexity and UX requirements.

## Source excerpt

The development of Android mobile apps is nothing new. We have been doing it since 2009, when the Android SDK was published. In the meantime, many APIs used for developing Android mobile apps were updated, but the general idea of app development remained. Looking at something as basic as accessing the UI elements and modifying them, we can see the constant need for improvement and change. We've started with findViewById, then we transferred to Butter Knife library. After we switched from Java to Kotlin, we were introduced to Kotlin synthetics, then it went deprecated soon enough, and it was replaced by ViewBinding. In the meantime, we also received a new support library, DataBinding, that enabled us to bind our UI components to data sources from our app. As we can see, even though the final goal was the same (accessing UI elements defined inside XML and modifying their values), the APIs for reaching our goal were changed quite drastically and quite often. Why so many changes? The constant need for polishing the UX of ours apps introduced a lot more complexity in our mobile app projects. Designers demand more and more from their developers, and developers constantly strive for making their code as flexible and reusable as possible. This is something that gets harder and harder to accomplish when your base is not particularly designed for handling new types of designers requirements. Motivation To better learn something new, we need to understand the differences between what we know (Android View System) and the new things that are introduced by the new system (Jetpack Compose). Sometimes this feels overwhelming, because at the beginning, most of it looks like magic as we don't know anything about it. By familiarizing ourselves with Jetpack Compose way of working, we are putting ourselves in a better position to utilize this new tool. Android View System The base for developing Android apps most of us are currently using is Android View System. It is here since 2009 a