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

نحتفل بمرور 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 for Widgets وحتى نظارات بشاشة عرض مع Jetpack Compose Glimmer

jetpack_compose_everywhere.png

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

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

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

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

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

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