Flutter מול React Native- פיתוח מובייל חוצה פלטפורמות¶
פעם, כדי לבנות אפליקציית מובייל, הייתם צריכים לכתוב אותה פעמיים - פעם ב-Swift או Objective-C לאייפון, ופעם ב-Kotlin או Java לאנדרואיד. שני פרויקטים נפרדים, שני צוותים, ולפעמים אפילו שני באגים שונים לאותה תכונה. Flutter ו-React Native נולדו כדי לפתור בדיוק את זה - לכתוב פעם אחת, ולהריץ בשתי הפלטפורמות.
React Native - JavaScript שמדבר עם המכשיר¶
React Native, שנבנה בפייסבוק, לוקח את הרעיונות של React - קומפוננטות, state, props - ומאפשר לכם להשתמש בהם כדי לבנות אפליקציית מובייל אמיתית. הקסם שלו הוא שהוא לא רץ בתוך דפדפן מוטמע כמו אפליקציות web רגילות, אלא מתרגם את הקומפוננטות שלכם לרכיבים אמיתיים של המערכת - Button שכתבתם ב-React Native הופך בפועל לכפתור אנדרואיד אמיתי או לכפתור iOS אמיתי, לא לחיקוי שלו.
היתרון הגדול של React Native הוא שאם אתם כבר מכירים React מעולם ה-web, המעבר אליו קרוב ומהיר - אותה חשיבה, אותו תחביר JSX, ורוב הידע שלכם ב-JavaScript עובר כמעט אחד לאחד. זו הסיבה שהרבה מפתחי frontend נכנסים לפיתוח מובייל דרך React Native ולא דרך שפה נייטיבית חדשה.
Flutter - שפה חדשה, אבל שליטה מלאה¶
Flutter, של גוגל, הולך בכיוון שונה. הוא לא משתמש ב-JavaScript אלא בשפה בשם Dart, שרוב המתכנתים לא מכירים כשהם מתחילים. במקום לתרגם קומפוננטות לרכיבים נייטיביים של המערכת, Flutter מצייר את כל הממשק בעצמו, פיקסל אחר פיקסל, על גבי מנוע רינדור משלו. זה נשמע כמו חיסרון, אבל בפועל זה נותן ל-Flutter יתרון גדול - עקביות מוחלטת בין אנדרואיד לאייפון, כי אתם לא תלויים ברכיבים הנייטיביים השונים של כל מערכת הפעלה, וכן ביצועים חלקים במיוחד, כי הרינדור לא עובר דרך שכבות תיווך נוספות.
אז מה ההבדל המעשי¶
אם כבר יש לכם רקע ב-JavaScript ו-React, React Native הוא בחירה טבעית - העקומת למידה קצרה בהרבה. אם אתם מתחילים מאפס לגמרי, Flutter נחשב לרוב לחוויית פיתוח נעימה יותר, עם תיעוד מסודר וכלים חזקים, אבל אתם לומדים שפה חדשה - Dart - שלא שימושית כמעט בשום מקום אחר מחוץ לעולם Flutter, בניגוד ל-JavaScript שרלוונטי לכל עולם הפרונטאנד וגם חלק גדול מהבקאנד.
מבחינת שוק העבודה, שתי הטכנולוגיות מבוקשות, אבל React Native נהנה מיתרון קטן בישראל בזכות הקרבה לעולם ה-JavaScript שכבר נפוץ מאוד בהייטק המקומי.
מה עם פיתוח נייטיבי אמיתי¶
חשוב להיות כנים - Flutter ו-React Native הם פשרה. הם נותנים לכם אפליקציה אחת שרצה בשתי הפלטפורמות, אבל לפעמים במחיר ביצועים או גישה לתכונות מתקדמות מאוד של המערכת שקשה להשיג בלי לרדת לקוד נייטיבי אמיתי. לרוב המוצרים, הפשרה הזאת משתלמת בענק בזמן פיתוח שחוסכים. לאפליקציות שדורשות ביצועים קיצוניים או גישה עמוקה לחומרה, פיתוח נייטיבי נפרד עדיין המקום.
מאיפה מתחילים אם מובייל מעניין אתכם¶
אנחנו לא מלמדים כאן פיתוח מובייל נייטיבי או Flutter, וזה לא תחום ההתמחות שלנו. אבל אם אתם רק בתחילת הדרך ולא בטוחים אם מובייל הוא הכיוון שלכם, הדרך הכי חכמה להתחיל היא בסיס תכנותי חזק בכיוון פרונטאנד - במיוחד React - כי הוא נותן לכם בסיס שממנו React Native הוא קפיצה קצרה, ולא עוד התחלה מאפס.
קורס צד-לקוח שלנו מלמד את היסודות האלה - קומפוננטות, state, ועבודה מול API - בעברית ובחינם, כבסיס טוב לכל כיוון שתבחרו בהמשך, כולל מובייל.
מתלבטים בין הכיוונים? יש בקהילה שלנו אנשים שעברו את הדרך הזאת ויכולים לשתף מניסיון אמיתי.