Jetpack Compose
Jetpack Compose (транскр. Џетпек Компоуз) је реактивни оквир за развој корисничког интерфејса отвореног кода који је развио Гугл (енгл. Google) за вишеплатформски развој у програмском језику Kotlin[1]. Прва верзија за преглед најављена је у мају 2019. године, а оквир је постао спреман за продукцијску употребу у јулу 2021. године. У овом оквиру, кориснички интерфејс се дефинише помоћу функција које су означене анотацијом @Composable познатих као састављиве (енгл. composable) функције, које дефинишу стање екрана. Jetpack Compose користи Kotlin компaјлерски додатак (енгл. compiler plugin) за трансформацију састављивих функција у елементе корисничког интерфејса.[2]
На пример, следећи код дефинише једноставан елемент корисничког интерфејса:
@Composable
fun Greeting(name: String) {
Text(text = "Hello $name")
}
Историја
Прва верзија за преглед Jetpack Compose оквира направљена је на конференцији Google I/O у мају 2019. године.[3] Развојна верзија за преглед објављена је у октобру исте године, а алфа верзија у августу 2020.[4][5] године. Jetpack Compose је ушао у бета фазу у фебруару 2021. године, а његово прво продукцијско издање објављено је у јулу исте године.[6]
Карактеристике
Jetpack Compose подржава Android 5.0 и новије верзије.[7] Користи програмски језик Kotlin и пружа реактивни програмски модел сличан другим оквирима за развој корисничког интерфејса, као што су Flutter, Vue.js и React Native.[3] Оквир је намењен да се лако уклопи са постојећим Android апликацијама и библиотекама, омогућавајући програмерима да постепено прилагоде своје апликације Jetpack Compose оквиру.[6]
Кориснички интерфејс се дефинише помоћу функција које су означене анотацијом <code>@Composable</code> познатих као састављиве функције, које дефинишу стање екрана.[8][9] Jetpack Compose компајлер користи ову анотацију за генерисање кода.[9] Када се стање ажурира, састављиве функције се поново позивају са новим подацима, због чега се виџети поново цртају. Овај процес познат је као рекомпоновање. Рекомпоновање се врши само за састављиве функције које је потребно ажурирати, што побољшава ефикасност корисничког интерфејса.[10]
Издање 1.0 увело је Compose Preview који је уграђен у Android Studio почевши од верзије Arctic Fox. Омогућава преглед састављивих елемената у различитим конфигурацијама без потребе за покретањем апликације на уређају.[11]
Jetpack Glance је оквир заснован на Jetpack Compose за развој виџета за Android.[12] Прво стабилно издање Jetpack Glance објављено је у септембру 2023. године.[13] У септембру наредне године, објављена је стабилна верзија 1.0 Jetpack Compose API-ја за изградњу адаптивних корисничких интерфејса за Material 3.[14]
Фазе
Jetpack Compose обрађује кориснички интерфејс кроз три главне фазе које се одвијају одређеним редоследом:
Прва фаза је композиција, у којој Compose извршава састављиве функције и гради структуру корисничког интерфејса у облику стабла. Ово стабло садржи све информације потребне за наредне фазе.
Друга фаза је распоред. У овој фази се одређује величина и положај сваког елемента у дводимензионалном простору. Ова фаза се одвија кроз три корака. Први корак јесте мерење поделемената - сваки елемент мери своје поделементе уколико их има. Затим, сваки елемент одређује своју сопствену величину на основу тих мерења. На крају, сваки поделемент се поставља у односу на положај свог родитељског елемента. По завршетку ове фазе, сваки елемент има додељену ширину и висину, као и координате на којима треба да буде исцртан. Важно је напоменути да се сваки елемент обилази само једном, што значи да време обиласка расте линеарно са повећањем броја елемената. Да је сваки елемент обилажен више пута, време обиласка би расло експоненцијално, што би значајно нарушило перформансе.
Трећу фазу представља цртање. У овој фази елементи корисничког интерфејса се исцртавају на екрану уређаја.
Редослед ових фаза је увек исти, омогућавајући једносмерни ток података - од композиције, преко распореда до цртања. Ради оптимизације перформанси, Compose прескаче фазе у којима није дошло до промена, чиме се смањује количина посла потребног за ажурирање корисничког интерфејса.[15]
Архитектура
У Jetpack Compose-у кориснички интерфејс је непроменљив, након што је исцртан, не постоји начин да се директно измени.[16] Уместо тога, када се стање корисничког интерфејса промени, Compose аутоматски поново креира само оне делове стабла корисничког интерфејса који су се променили.
Jetpack Compose заснован је на обрасцу једносмерног тока података (енгл. unidirectional data flow), у којем стање пролази кроз стабло елемената одозго надоле, док догађаји путују у супротном смеру.[16] Под догађајима се подразумевају све врсте корисничких акција као што су додири, прoмене текста, ажурирања из других делова апликације. Овај образац омогућава раздвајање елемената који приказују стање од делова апликације који то стање чувају и мењају.
Овај образац доноси неколико предности. Прво, олакшава тестирање јер су стање и кориснички интерфејс раздвојени. Друго, обезбеђује eнкапсулацију стања, пошто се стање може мењати само на једном месту, смањује се могућност грешака услед неконзистентних стања. Треће, осигурава конзистентност корисничког интерфејса, јер се све промене стања одмах одражавају на кориснички интерфејс.
Употреба
У тренутку објављивања Jetpack Compose 1.0, Гугл је изјавио да је у том тренутку већ преко 2000 апликација у Плеј продавници користило овај оквир, укључујући и саму апликацију Плеј продавнице.[8] Од октобра 2022. године, 16% од 1000 најпопуларнијих апликација на Плеј продавници користило је овај оквир, укључујући и апликације компанија као што су Airbnb, Lyft и Square.[17] До маја 2024. године, овај број је порастао на 40%.[18]
Гугл је 2022. године детаљно описао како је користио Jetpack Compose у оквиру поновног писања апликације Плеј продавнице, наводећи да ''писање корисничког интерфејса захтева знатно мање кода, понекад и до 50%'' и да су програмери успели да побољшају перформансе апликације.[19][20] Делови Android апликације Подешавања преписани су уз помоћ Jetpack Compose оквира у Android 14.[21]
Компанија Meta Platforms развила је своју друштвену мрежу Threads за 5 месеци користећи Jetpack Compose.[22][23] Instagram апликација за Android такође је написана користећи овај оквир.[24]
Compose Multiplatform
Compose Multiplatform је вишеплатформски оквир за развој корисничког интерфејса који је развио JetBrains, заснован на Jetpack Compose. Представља верзију Jetpack Compose оквира прилагођеној за рад на Windows, macOS, Linux и вебу.[25] [26][27] Верзија 1.0 алфа је објављена у августу 2021. године.[8] Подршка за IOS додата је у мају 2023. године.[28]
Референце
- ^ Jetpack | Android Developers”. Android Developers (на језику: енглески). Приступљено 2026-03-30.
- ^ Panjuta, Denis; Nwokike, Loveth (2023-12-12). Tiny Android Projects Using Kotlin (на језику: енглески) (1 изд.). Boca Raton: Chapman and Hall/CRC. ISBN 978-1-032-62253-8. doi:10.1201/9781032622538-9.
- ^ а б Lardinois, Frederic (2024). „Google launches Jetpack Compose, an open-source, Kotlin-based UI development toolkit”.
- ^ Protalinski, Emil (2019-10-23). „Google launches Jetpack Compose developer preview and Android Studio 4.0 Canary”. VentureBeat.
- ^ Bradshaw, Kyle (August 26, 2020). "Jetpack Compose reaches Alpha ahead of full release next year". 9to5Google. Archived from the original on March 30, 2023. Retrieved April 14, 2024.
- ^ а б Bradshaw, Kyle (2021-07-28), Google launches Jetpack Compose 1.0, making Android UI design easier w/ Kotlin
- ^ Jetpack Compose”. Android Developers.
- ^ а б в Tim, Anderson (2021-08-06). „Does the world need another cross-platform framework? Tough, here's JetBrains with Compose Multiplatform”. doi.org. Приступљено 2026-04-01.
- ^ а б Sinicki, Adam (2019-11-10). „An introduction to Jetpack Compose for quick Android UI designs”.
- ^ Jetpack Compose”. Android Developers. Приступљено 2026-04-01.
- ^ Krill, Paul (2021-07-30). „Jetpack Compose for Android turns GA”.
- ^ Jetpack Compose”. Android Developers. 2025-08-31. Приступљено 2026-04-01.
- ^ Jetpack”. Android Developers. Приступљено 2026-04-01.
- ^ Vanyo, Alex (2024-09-09). „Jetpack Compose APIs for building adaptive layouts using Material guidance now stable”. Android Developers Blog. Приступљено 2026-04-01.
- ^ „Jetpack Compose phases”. Android Developers.
- ^ а б „Architecture in Compose”. Android Developers.
- ^ Nikolov, Lazar (2023-04-19), Build better Jetpack Compose apps with Sentry
- ^ „Developer Keynote (Google I/O '24)”. youtube. 2024-05-14.
- ^ Flynn, Andrew; Boekenoogen, Jon (2022-03-10). „Play Time with Jetpack Compose”. Android Developers Blog. Приступљено 2026-04-01.
- ^ Li, Abner (2022-03-10). „Google rewrote the Play Store's UI with Jetpack Compose for up to 50% less code, faster rendering”.
- ^ Bradshaw, Kyle (2023-02-14). „Google is gradually rewriting Android's Settings app with Jetpack Compose”.
- ^ Evjen, Yasmine; Muntenescu, Florina (2023-10-27). „Meta built threads in only 5 months using Jetpack Compose”.
- ^ Li, Abner (2024), Google on how Meta sped up its Android 14 app updates
- ^ Hartig, Pascal (2025-01-24). „Bringing Jetpack Compose to Instagram for Android”.
- ^ „Compose Multiplatform – Beautiful UIs Everywhere”.
- ^ Kotlin Multiplatform”.
- ^ Kotlin Multiplatform
- ^ Krill, Paul (2023-05-19). „JetBrains adds iOS support to cross-platform UI framework”.
Спољашње везе
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.