מהן התכונות החשובות ביותר בבחירת ספריית פיתוח לאנדרואיד?
אילו קריטריונים כדאי לקחת בחשבון לפני שבוחרים את הספרייה? ואיזו פלטפורמת הזרקת תלויות היא הטובה ביותר? ● טור שני בסדרה
ספריות רבות מיועדות לפיתוח בסביבת אנדרואיד (Android). בטור הקודם נתתי מבוא קצר לתחום. השבוע אני מבקש להתחיל לרדת לעומקם של דברים.
השאלה שעולה מיידית היא איזו ספריה כדאי לבחור ומהם הקריטריונים שעל פיהם רצוי לעשות זאת.
בבואי לבחור ספריה, אני מחפש בה ארבע תכונות עיקריות:
• שתיתן פתרון יציב, יעיל ואיכותי לבעיה אמיתית, שלא ניתנת לפתרון טריוויאלי בשורות קוד מעטות.
• שתציע API פשוט ככל האפשר. הספריות האיכותיות באמת בדרך כלל דורשות לימוד מועט להפתיע.
• שתהיה אגנוסטית, כדי שלא אדרש לשינויים משמעותיים בארכיטקטורת הפתרון הכוללת שלי.
• שבסיס המשתמשים שלה יהיה רחב, ובעדיפות – קהילת מפתחים פעילה.
שלוש התכונות הראשונות הן החשובות ביותר עבורי. אם אני לא מוצא כלי שמקיים אותן, ברוב המקרים אקודד את הפיתרון בעצמי. שימו לב: מעטות ההחלטות המסוגלות לפגוע בתהליך פיתוח כמו שימוש בכלים לא מתאימים.
הספריות שאציג בטור זה ובבאים אחריו עברו את כל ארבעת שלבי הסינון, ויותר מכך – קיימת הסכמה רחבה בקהילת מפתחי האנדרואיד שהן מהטובות שפותחו לסביבה זו. אני ומפתחים רבים אחרים השתמשנו בספריות אלה לקיצור דרסטי של זמני הפיתוח בעבור מערכות שבלעדיהן היו דורשות עוד חודשי פיתוח רביםֿ.
הרשימה שאציג הפעם ובשבועות הקרובים מכילה:
• שתי ספריות להזרקת תלויות (Dependency injection), קישור של Layout-to-Java ושימוש באובייקטי דמה (Mock objects) לביצוע בדיקות מערכת.
• ספריה לתקשורת בין רכיבי האפליקציה, המשתמשת במודל pub/sub.
• שכבת תקשורת HTTP בטיחותית, יעילה ובעלת יכולת התאוששות עצמית.
• ספריית ניהול טעינת תמונה: הורדה מהרשת, מטמון מקומי (Local Cache), התאמת גודל וטעינה לזיכרון.
• ספריה להזרמת וידיאו בזמן אמת מהמכשיר החוצה.
• כלי לאיתור זליגות זיכרון (Memory-leaks) בשכבת ה-UI של האפליקציה.
ButterKnife: פלטפורמת הזרקת התלויות האולטימטיבית
הספרייה הראשונה שאני מציג בפניכם היא ButterKnife. זוהי ספריית הזרקת התלויות (dependency injection) הפופולרית ביותר בקרב מפתחי אנדרואידֿ – ובצדק רב. היא פשוטה, יציבה, מהירה מאוד – היא לא אינה משתמשת ב-Reflection, כפי שעושים פתרונות הזרקה אחרים – והיא תחסוך לכם חלק משמעותי מהקוד החוזר על עצמו (Boilerplate code), שמאפיין אפליקציות אנדרואיד כה רבות. נתקלתי במקרים שבהם המעבר לשימוש ב- ButterKnife חסך עד 30% מגודל הקוד הנדרש למשימה.
אחרי שימוש קצר ב-ButterKnife תבינו כמה זמן בזבזתם על יצירת קישורים ואתחולי פרמטרים אותם יכולה הייתה הספרייה לבצע עבורכם בשבריר מזמן הפיתוח אותו השקעתם.
עם ButterKnife אין צורך לקשר בקוד את ה-Views שבכל ה-Activities שלכם באמצעות קריאות מרובות ל-findViewById. במקום זאת, תיוג (Annotation) פשוט של ה-Views יעשה את העבודה באופן אוטומטי וקריא הרבה יותר. הספרייה גם מונעת מכם את הצורך בקידוד ידני של אירועי UI, כדוגמת onClick ו-OnTouch, ובמקום – היא מאפשרת הגדרת פונקציות מאזינות אירוע (Event Listener) בתיוג פשוט.
לסיום, הנה כמה מהקודים הרלוונטיים:
קישור View לשדה (View-field Binding):
קישור משאבים (Resource binding):
קישור אירועי משתמש (UI-event binding):
הטור הבא יעסוק בספריות AndroidAnnotations, שמציעה הזרקת התלויות מבוססת שמות (Naming Convention), ו-EventBus, שמציעה את הדרך הפשוטה למימוש תקשורת בין רכיבית (Cross Component).
הכותב הינו מפתח אנדרואיד עצמאי ומנכ"ל Mobile edge software solutions.
ספרייה שימושית אבל צריך להשתמש בה לפרוייקטים גדולים מסיבה שהיא משמעותית מגדילה זמן קומפיליציה בגלל ה annotation.
בהחלט מקצר מעולה את העבודה, גם יותר טוב מהשאר שאני מכיר. מחכה לטור הבא.
במילה אחת - וואו
כתבה מעולה גלעד. מחכה לשאר.
ללא ספק, הרחבת לי את האופקים בהרבה, בעצם זה שהבאת דוגמא פשוטה לספריה שמייעלת את העסק בהרבה. אני מחכה לכתובות הבאות...