חדשות על מוצרים

חוגגים 5 שנים ל-Jetpack Compose

משך הקריאה: 4 דקות

היום אנחנו מציינים באופן רשמי חמש שנים מאז ההשקה של Jetpack Compose 1.0. מאז הגרסה 1.0, שהשקנו ב-28 ביולי 2021, ועד לגרסה האחרונה 1.11, ממשקי ה-API עברו שינויים משמעותיים במהלך השנים, ואנחנו רוצים לנצל את ההזדמנות הזו כדי לחגוג.

כשפרסמנו באופן רשמי את הגרסה 1.0, הבטחנו דרך פשוטה, מהירה ואינטואיטיבית יותר ליצירת ממשקי משתמש מקוריים ב-Android. במבט לאחור, אפשר לומר בבטחה ש-Compose לא רק עמד בהבטחה הזו, אלא גם שינה לחלוטין את הסביבה העסקית של Android. יותר מ-68% מ-1,000 האפליקציות המובילות משתמשות בו היום בסביבת הייצור. 

היסטוריה

בשנים האחרונות, השימוש ב-Compose גדל בהתמדה. בתחילת הדרך, הסברנו איך ליצור פריסות באמצעות הרכיבים הבסיסיים Box,‏ Row ו-Column. היום, הרחבנו את Compose כך שיפעל לא רק במכשירים ניידים, אלא גם בגורמי צורה אחרים, כמו Compose for TV,‏ WearOS,‏ Glance for Widgets, ואפילו במשקפיים עם תצוגה פנימית עם Jetpack Compose Glimmer. 

jetpack_compose_everywhere.png

הקלטנו פרק של Android Developers Backstage עם קלרה באיירי (Clara Bayarri), מנהלת הנדסה ב-Jetpack, ושני מנהלים לשעבר בצוות, רומן גאי (Romain Guy) וצ'ט האס (Chet Haase), יחד עם טור נורביי (Tor Norbye), מנהל הנדסה בכיר. בפרק הזה הם דנים בהיסטוריה של Compose ובימים הראשונים של הפיתוח.

timeline.png
יצירת סרטון עם רגעי השיא של השנים האחרונות

מבט לאחור

ההתחלה של התכונה 'יצירה' הייתה שונה מאוד ממה שאתם מכירים היום. שני פרויקטים התנהלו במקביל בצוות Android. 

באותו זמן, הצוות של Views Toolkit חשב על פיצול של UI Toolkit לספרייה כדי לשפר את מהירות הפיתוח, וכדי להקל על מפתחים לאמץ ולשלוט בעדכונים. בינתיים, צוות עבד על רעיון חדש ליצירת פריסות הצהרתיות על ידי הטמעת XML בתוך Kotlin, והתוצאה נראתה בערך כך:

jetpack_compose_early_code.png

שני המאמצים האלה התמזגו כדי ליצור את מה שאתם מכירים היום – ערכת כלים מלאה להצהרת ממשק משתמש, שמנצלת את היכולות של תוסף קומפיילר, זמן ריצה ו-Kotlin:

@Composable
fun Newsfeed(stories: List<Story>) {
    LazyColumn {
        items(stories) { story ->
            Card {
                val author = story.author
                Image(painterResource(author.profilePhoto),
                    contentDescription = author.name)
                Text(author.name)
                Text(story.content)
                if (story.hasCommentsEnabled()) {
                    for(comment in story.comments) {
                        Text(comment.mainContent)
                    }
                }
            }
        }
    }
}

ואתם, הקהילה, עזרתם לנו בשלב מוקדם מאוד! לפני 2021, ל-Compose היה שלב טרום-אלפא, שעזר לנו לוודא ש-Compose מתאים לפתרון הבעיות של המפתחים שלנו.

אחד מהזיכרונות האהובים עלינו הוא Android Dev Challenge. אתגרנו את הקהילה ליצור ארבע משימות שונות באמצעות Compose, והפידים שלנו התמלאו באפליקציות של גורים, שעונים ואפליקציות מזג אוויר. קיבלנו המון משוב ישיר שעזר לנו לעצב את הגרסה 1.0.

‫Compose המשיכה להתפתח, מהשקה עם קבוצה של רכיבי Material 2 ועד לתמיכה ב-Material 3 Expressive.

material2.png
חומר 2 ב-Compose

במבט קדימה

הגרסה האחרונה היא Compose 1.11, וגרסה 1.12 תושק בקרוב. הגרסאות האלה מציעות הרבה יותר מגרסה 1.0, שהושקה לפני 5 שנים. השנה השקנו ממשקי API יותר גמישים, כמו FlexBox,‏ Grid,‏ MediaQuery ו-Styles. ממשקי ה-API האלה מאפשרים לכם להתקדם לרמה הבאה של פיתוח ממשקי משתמש פרימיום דינמיים באמצעות Compose. 

בכנס Google I/O 2026, הודענו שאנחנו עוברים לגישה של Compose-first, כלומר כל פיתוח עתידי של ממשק המשתמש יתבצע רק ב-Compose, ואילו ערכת הכלים Views תעבור למצב תחזוקה. בנוסף, ההתמקדות של Material Design עוברת באופן מלא ל-Compose, מה שמסמן את סוף findViewById era. 

הקהילה היא הלב של Compose 

במהלך השנים קיבלנו מכם דוגמאות יצירתיות לשימוש בתכונה 'יצירת מוזיקה', ואנחנו רוצים להציג עוד כמה דוגמאות לשימוש מעניין שראינו. ‫JetBrains היא שותפה מצוינת של Google בפיתוח Compose. היא הרחיבה את השימוש ב-Compose כך שיפעל בפלטפורמות שונות באמצעות Compose Multiplatform, ומאפשרת למפתחים של אפליקציות למחשבים, ל-iOS ולאינטרנט ליהנות גם הם מהיתרונות של Compose.  

נהנינו מאוד לקרוא את הניוזלטרים האהובים עלינו, מ-JetpackCompose.app’s Dispatch,‏ AndroidWeekly ועד jetc, שעוזרים למפתחי Android להתעדכן בחידושים בעולם של Compose ו-Android. 

משתמש נוסף שתרם באופן משמעותי הוא sinasamaki. הם יצרו הרבה חוויות נעימות באמצעות Compose, כמו אפקט הסרט הכיפי הזה ואפקט התקלה:

ribbon_modifier_sinasamaki.gif

Saket Narayan תמיד היה מקור השראה ליצירת כלים שימושיים ל-Compose, כמו telephoto, ספרייה עם תמיכה במחוות של הזזה ושינוי גודל, ודגימת משנה אוטומטית של תמונות גדולות, או הספרייה האחרונה, Touch Robot, שמאפשרת לבדוק בקלות אנימציות של אינטראקציות:

paparazzi.gif(end = 3_000) {
  DebitCard(
    Modifier.testTag("card")
  )

  val touchRobot = rememberTouchRobot()
  LaunchedEffect(Unit) {
    touchRobot.onNode(hasTestTag("card")).performGesture {
      draw(
        path = createAndroidHeadPath(),
        duration = 3.seconds,
      )
    }
  }
}

/** A path drawing the Android head. */
fun createAndroidHeadPath(bounds: Rect): Path = TODO()
saket_touch_robot.gif

ג'ייק וורטון, שהשתמש ב-Compose בדרכים חדשניות (למשל molecule, ואפילו יצר ממשק משתמש באמצעות Compose לטרמינל עם mosaic). כריס ביינס, שבנה במהלך השנים ספריות רבות של Compose, כולל האהובה עלינו ביותר – Haze לטשטוש הרקע, ורבים ממומחי Google למפתחי Android כמו אקשיי קורדיה, הויין טו דאו וקייטי בארנט, שתרמו להצלחה של Compose. אבל אנחנו לא בוחרים אנשים ספציפיים – היו כל כך הרבה תורמים נהדרים לבסיס הקוד של Compose, ורבים מכם ממשיכים לתת לנו השראה עם דוגמאות, ספריות והרצאות מעמיקות. בלי הקהילה, Jetpack Compose לא היה מצליח כמו שהוא היום. 

כל הכבוד על 5 השנים הבאות, ועוד! 

‫Jetpack Compose התפתח מרעיון ניסיוני לסטנדרט לפיתוח ממשקי משתמש ל-Android. תודה לכל צוות Toolkit ב-Google, ולקהילת המפתחים העולמית המדהימה שכתבה ספריות, דיווחה על באגים והרחיבה את הגבולות של מה שאפשר לעשות עם ממשק משתמש הצהרתי. 

השבוע נחגוג את יום ההולדת עם כמה מסיבות יום הולדת פיזיות ברחבי העולם, ועם מסיבת יום הולדת בשידור חי בערוץ YouTube של Android Developers ב-30 ביולי בשעה 13:00 UTC. במהלך הזמן הזה, נהיה זמינים לשיחה, נדון בתכונה 'כתיבה בעזרת AI' ונענה על השאלות שלכם.

מאחלים לך עוד 5 שנים מוצלחות של יצירה!

להמשך קריאה