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

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

قراءة لمدة 5 دقائق
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 لـ Android TV و WearOS و Glance للأدوات المصغّرة وحتى نظارات بشاشة عرض مع Jetpack Compose Glimmer

jetpack_compose_everywhere.png

سجّلنا حلقة من برنامج Android Developers Backstage مع كلارا بايارري، رئيسة فريق الهندسة في Jetpack، واثنين من الرؤساء السابقَين للفريق، وهما رومان غي وتشيت هاسي، بالإضافة إلى تور نوربي، مدير هندسة أول. في هذه الحلقة، يناقشون تاريخ Compose والأيام الأولى من التطوير.

timeline.png
أهم الأحداث في Compose على مرّ السنين

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

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

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

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

material2.png
Material 2 في Compose

في المستقبل

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

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

المنتدى هو أساس Compose

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

لقد استمتعنا حقًا بمتابعة نشراتنا الإخبارية المفضّلة من JetpackCompose.app’s Dispatch و 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 ناجحًا كما هو اليوم. 

تهانينا على السنوات الخمس القادمة، وأكثر!

نما Jetpack Compose من فكرة تجريبية إلى معيار تطوير واجهة مستخدم Android. نشكر فريق مجموعة الأدوات بالكامل في Google ومنتدى المطوّرين العالمي الرائع الذي كتب المكتبات ورصد الأخطاء وتجاوز حدود إمكانيات واجهة المستخدم التعريفية. 

سنحتفل هذا الأسبوع ببعض حفلات أعياد الميلاد الشخصية في جميع أنحاء العالم، وبحفل عيد ميلاد مباشر على قناة Android Developers على YouTube في 30 يوليو الساعة 13:00 بالتوقيت العالمي المنسّق. خلال هذا الوقت، سنقضي وقتًا ممتعًا ونناقش Compose ونجيب عن أسئلتك.

تهانينا على السنوات الخمس القادمة، ونتمنّى لك تجربة ممتعة في استخدام Compose.

بقلم:
متابعة القراءة