أخبار المنتجات

الاحتفال بمرور 5 أعوام على إطلاق Jetpack Compose

مدّة القراءة: 4 دقائق
3 المؤلفون
Rebecca Franks, Nick Butcher, Loryn Hairston

نحتفل اليوم رسميًا بمرور خمس سنوات على إصدار Jetpack Compose 1.0. من الإصدار 1.0 الذي أعلنّا عنه في 28 تموز (يوليو) 2021 إلى أحدث إصدار 1.11، شهدنا تطورًا كبيرًا في واجهات برمجة التطبيقات على مر السنين، ونريد أن نحتفل بهذا الإنجاز.

عندما أعلنّا رسميًا عن الإصدار 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 مع كلارا بايارّي، رئيسة فريق الهندسة في Jetpack، واثنين من رؤساء الفريق السابقين، رومان غي وتشيت هاسي، بالإضافة إلى تور نوربي، مدير الهندسة الأول. في هذه الحلقة، يناقشان تاريخ Compose ومراحل التطوير الأولى.

timeline.png
إنشاء "ملخّص العام" على مرّ السنوات

نظرة إلى الماضي

كانت بداية Compose مختلفة تمامًا عمّا تعرفه اليوم. كان هناك مشروعان متوازيان داخل فريق Android. 

في ذلك الوقت، كان فريق أدوات Views يفكر في فصل 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". لقد طلبنا من المنتدى إنشاء أربع مهام مختلفة باستخدام Compose، ما أدى إلى ملء خلاصاتنا بتطبيقات تعرض صورًا لجِراء وساعات وتطبيقات طقس، وتلقّينا الكثير من الملاحظات المباشرة التي ساعدت في إطلاق الإصدار 1.0.

استمرّت Compose في التطور، بدءًا من إطلاقها مع مجموعة من مكوّنات Material 2 إلى إتاحة Material 3 Expressive الآن.

material2.png
Material 2 في Compose

في المستقبل

اعتبارًا من اليوم، أصبح الإصدار 1.11 من Compose هو الأحدث، وسيتم طرح الإصدار 1.12 قريبًا، وهو يقدّم مزايا أكثر بكثير من الإصدار 1.0 الذي تم طرحه قبل 5 سنوات. في هذا العام، طرحنا  المزيد من واجهات برمجة التطبيقات التكيّفية، مثل FlexBox وGrid وMediaQuery وStyles. تتيح لك واجهات برمجة التطبيقات هذه الانتقال إلى المستوى التالي من تطوير واجهات المستخدم المميّزة والمتكيّفة باستخدام Compose. 

في مؤتمر Google I/O 2026، أعلنّا أنّنا أصبحنا نركّز على Compose أولاً، ما يعني أنّ جميع عمليات تطوير واجهة المستخدم المستقبلية ستتم فقط في Compose، بينما ستدخل مجموعة أدوات Views في وضع الصيانة. يتم أيضًا نقل التركيز بالكامل إلى Compose في التصميم المتعدد الأبعاد، ما يشير إلى نهاية findViewById era. 

تُعدّ المشاركة في المنتدى أساسية في Compose 

على مرّ السنين، ألهمتنا بأمثلة إبداعية على كيفية استخدامك لأداة Compose، ويسرّنا أن نقدّم المزيد من الأمثلة على الأعمال الرائعة التي رأيناها. كانت JetBrains شريكًا رائعًا لـ Google في Compose، حيث وسّعت نطاق استخدام Compose ليشمل جميع الأنظمة الأساسية من خلال Compose Multiplatform، ما أتاح لمطوّري تطبيقات أجهزة الكمبيوتر وiOS والويب الاستفادة أيضًا من مزايا Compose.  

لقد استمتعنا كثيرًا بمتابعة نشراتنا الإخبارية الأكثر رواجًا، بدءًا من Dispatch من JetpackCompose.app وAndroidWeekly وصولاً إلى jetc، ما ساعد مطوّري تطبيقات Android في البقاء على اطّلاع على آخر الأخبار في عالم Compose وAndroid. 

من المساهمين البارزين الآخرين sinasamaki. لقد أنشأوا العديد من التجارب المبهجة باستخدام Compose، مثل أداة تعديل الشريط الممتعة هذه والمؤثر المتقطع:

ribbon_modifier_sinasamaki.gif

كان ساكيت نارايان أيضًا مصدر إلهام دائم عندما يتعلّق الأمر بإنشاء أدوات مفيدة لـ 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، ومنتدى المطوّرين العالمي الرائع الذي كتب المكتبات وأبلغ عن الأخطاء ووسّع حدود إمكانات واجهة المستخدم التعريفية. 

سنحتفل هذا الأسبوع بإقامة بعض حفلات أعياد الميلاد في مواقع مختلفة حول العالم، بالإضافة إلى "حفلة عيد ميلاد" مباشرة على قناة "مطوّرو تطبيقات Android" على YouTube في 30 تموز (يوليو) الساعة 13:00 بالتوقيت العالمي المتفق عليه.  خلال هذا الوقت، سنستضيف جلسة حوارية حول ميزة "إنشاء" وسنجيب عن أسئلتكم.

نتطلّع إلى السنوات الخمس القادمة، ونتمنّى لك التوفيق في تأليف المزيد من الأغاني.

من تأليف:
متابعة القراءة