אפליקציית Native או Hybrid והאם בכלל צריך לבחור?

React Native, טכנולוגיה חדשה מבית פייסבוק שמה לה למטרה לאפשר פיתוח אפליקציות Native בכלים מעולם ה-Web תוך קיצור משמעותי בזמני הפיתוח

 

startup laptop PD

מאת דורון פרל, מפתח בכיר.

נדמה שבזמן האחרון קשה שלא להתקל בבאזז ובגידול המרשים של קהילת המפתחים סביב React Native, והיא בהחלט מסתמנת כהבטחה גדולה. אפליקציית ניהול המודעות של Facebook אשר מבוססת כולה על React Native הוכיחה כי בעזרת הטכנולוגיה החדשה ניתן לקצר משמעותית את זמני הפיתוח, לשתף כ-85% מהקוד בין אפליקציית ה-iOS לבין אפליקציית ה-Android וכל זאת ללא אף מפתח Native. איך הם עשו זאת? כדי לענות על השאלה נסקור תחילה את האסכולות השונות לפיתוח אפליקצייות במובייל.

סוגי אפליקציות מובייל

על-מנת לבנות אפליקציית מובייל עומדות בפנינו מספר אפשרויות:

אפליקציות Hybrid

אפליקציות אשר משתמשות ברכיב דפדפן פנימי (WebView) ומאפשרות פיתוח בטכנולוגיות Web, כלומר HTML5, CSS ו-Javascript. ה-framework הפופולרי ביותר בתחום הוא PhoneGap (או Apache Cordova בגרסת ה- open-source) והוא מאפשר גישה לחלק מה- APIs של המכשיר יחד עם בניית UI דמוי Native בעזרת ספריות צד שלישי כדוגמת Ionic, jQuery Mobile ו-Sencha Touch. הפיתוח מאוד מהיר ויעיל, אבל החסרונות מתבטאים בזמני תגובה איטיים, גישה מוגבלת ליכולות המכשיר, ו-UI שאינו מרגיש כמו הדבר האמיתי.

אפליקציות Cross Platform

אפליקציות המציעות שיפור משמעותי בביצועים ובחווית המשתמש בזכות העובדה שה-UI נבנה תוך שימוש ברכיבי native, לעומת זאת הגישה ליכולות ורכיבי המכשיר כגון מצלמה, GPS, וכו׳ נעשית דרך API היוצר שכבת אבסטרקציה מעל ה-API של הפלטפורמה. דוגמאות ל-framework-ים פופלריים בתחום הן Xamarin ו-Titanium.

אפליקציות Native

אפליקציות המאפשרות גישה לכל יכולות המכשיר תוך שימוש ב-UI העדכני ביותר ושמירה על ביצועים אופטימליים. השילוב של כל היתרונות האלו מאפשר להגיע לחווית המשתמש האולטימטיבית. אבל בשביל כבוד צריך לעבוד, והפיתוח מורכב משמעותית מאחר ויש ללמוד, לפתח ולתחזק ״עולמות שונים״ (iOS ו-Android). כל פלטפורמה עושה שימוש בשפות תכנות וארכיטקטורות שונות, עובדה המקשה על שיתוף הקוד ומצריכה מפתחים בעלי התמחויות נפרדות.

השחקן החדש – React Native

React Native היא תשתית חדשה מבית פייסבוק אשר שוחררה כקוד פתוח בתחילת השנה. אפשר לשייך אותה לקטגוריית ה-Cross Platform ובבסיסה קוד JavaScript המבצע קריאות API לקומפוננטות native. עד כאן אין כל חידוש.

אז מה בכל זאת חדש? קחו לידכם אפליקציית React Native והיא תוכל לספק חווית משתמש מעולה תוך שמירה על ביצועים אופטימליים. איך היא עושה את זה? בבסיסן של כל אפליקציות ה-cross platform נמצא מעין ״גשר״ אשר תפקידו לתרגם את פקודות השפה העילית (כמו JavaScript) לרמת ה-native. כל מעבר על הגשר הזה הוא יקר מאוד מבחינת ביצועים. החידוש של React Native מתבטא ביכולת לצמצם למינימום את אותם מעברים, ולבצע אותם בצורה אסינכרונית – מה שמייצר בסופו של דבר חווית משתמש חלקה במיוחד.

startup PD

 

פייסבוק השכילה להכיר בהבדלים המהותיים שבין מערכות ההפעלה בהן האפליקציה תרוץ ולכן לא מתיימרת לעודד קוד משותף יחיד שיתאים לכל הפלטפורמות (“write once, run everywhere”). במקום זאת מאפשרת הסביבה קוד הכתוב באותה שפה ואותה ארכיטקטורה, כדי לבנות אפליקציות לכל פלטפורמה בנפרד ללא צורך להתמקצע בטכנולוגיות נפרדות (“learn once, write anywhere”). המתודולוגיה הזאת מאפשרת מצד אחד לשתף חלקים לא מבוטלים של הקוד (כגון, ה-business logic, עבודה מול השרת, וכו’) ומצד שני לבנות ממשקים וחוויות משתמש שונים בהתאם לפילוסופיה של כל פלטפורמה.

React Native בנוייה למעשה, כמו ששמה מרמז, על framework מצליח נוסף לפיתוח אתרי web מבית Facebook בשם ReactJS – אשר תפס מקום של כבוד במהלך השנתיים האחרונות. עובדה זו פותחת בפני המפתחים את כל היכולות המרשימות של React ובפרט את האפשרות לכתוב קומפוננטות מודולריות בצורה דקלרטיבית ושימוש בארכיטקטורות זרימת מידע ומצבים מתקדמות שהתפתחו בשנים האחרונות ע״י הקהילה (למשל Reflux ו-Redux). באופן כללי, React Native לא מכתיבה אילוצים רבים, דבר המאפשר לשלב באופן פשוט טכנולוגיות open source חמות ועדכניות מעולם ה-web.

בדומה לכמה מתשתיות ה-cross platform המובילות בשוק, גם בפייסבוק השכילו להבין שחשוב לאפשר הרחבה של התשתית, ומעבר לעובדה שכל הקוד הוא open source, התשתית בנויה באופן המאפשר ואף מעודד הרחבה. מעבר לקומפוננטות הבסיסיות המגיעות עם ה-framework ניתן להוסיף קומפוננטות native (ב-Objective-C או Java) ולחשוף אותן בקלות לשימוש בצד ה-JavaScript. יכולת זו מעשירה את הסביבה באופן כמעט בלתי מוגבל ולא כובלת את המפתח לתלות ב-API של צד שלישי.

אחד היתרונות הגדולים של React Native הוא האפשרות לאמץ את הטכנולוגיה באופן הדרגתי. גם באפליקציה קיימת, אין צורך לעצור ולכתוב הכל מחדש אלא ניתן להוסיף רכיבים חדשים כקומפוננטות React Native שיחיו לצד הרכיבים הקיימים. פייסבוק בעצמה משתמשת במתודולוגיה דומה במסגרת פיתוח אפליקציית Facebook Groups שנכתבה במקור כאפליקציית native וחלק מרכיביה בשנה האחרונה שוכתבו לרכיבים מבוססי React Native.

מעבר לכל היתרונות הללו, יש הטוענים שה-killer feature האמיתי שלא זוכה כמעט לסיקור הוא דווקא היכולת לעדכן קוד מרחוק. למרות החוקים הנוקשים שלה, מאפשרת אפל לאפליקציות לעדכן קוד JavaScript מרחוק ללא הצורך לעבור את תהליך האישור הארוך של ה-App Store (כל עוד האפליקציות אינן משנות את תכליתן כמובן). דבר זה מאפשר להוסיף פיצ’רים ולתקן באגים באופן מיידי וגורף ולאמץ תהליך של continuous deployment אמיתי גם במובייל, דבר אשר עומד בקנה אחד עם פילוסופיית הפיתוח שלנו. מספר חברות, ביניהן גם Microsoft, כבר זיהו את הפוטנציאל העסקי שטמון בעדכונים מרחוק והן מציעות כלים המאפשרים למפתחים לעדכן את הקוד שלהם בלחיצת כפתור.

הכל מושלם? (עדיין) לא.

למרות קהילת מפתחים הגדלה בקצב מדהים, והיכולת למצוא קומפוננטות React Native שפותרות בעיות שכיחות, נכון להיום נדמה שלא מעט מהן עדיין ״אפויות למחצה״. בהחלט מצאנו את עצמנו ״החלוצים״ אשר נאלצים לפתור מספר בעיות בסיסיות שקשה למצוא עבורן מענה או תיעוד הולם. מצד שני React Native אפשרה למפתחים שלא היה להם ניסיון וידע קודם בפיתוח אפליקציות להיות פרודוקטיבים תוך ימים בודדים. יחד עם זאת, React Native עצמה אינה בשלה במלואה, בפרט בכל הנוגע לסביבת בדיקות, מצאנו כי ה-framework לא מספק כלים אשר עומדים בסטנדנרטים שאנו מורגלים אליהם, עובדה אשר הצריכה מאתנו לא מעט עבודה כדי לייצר סביבת כלי בדיקה אוטומטים. בנוסף, בכל הנוגע לתמיכה באנדרואיד אשר נוספה אך לאחרונה, נראה כי עדיין קיימים פערים לא קטנים בין הפלטפורמות.

החדשות הטובות הן כי נראה שהפערים הולכים ונסגרים במהירות כך שאם תתחילו לכתוב את האפליקציה שלכם היום ב-React Native יתכן שעד שתושק, כותרת מאמר זה תהפוך ל-״אפליקציית Native או Hybrid: כבר לא צריך לבחור״.

הכתבה בחסות WIX

Wix היא פלטפורמה לפיתוח Online presence באינטרנט, עם למעלה מ-75 מיליון משתמשים ב-190 מדינות. באמצעות הפלטפורמה, מיליוני אנשים ברחבי העולם יכולים לנהל נוכחות ברשת בצורה המקצועית ביותר. תרבות הפיתוח שלנו מבוססת על חדשנות, יצירתיות ועל הצורך והרצון להמשיך לאתגר את עצמנו ואת גבולות הטכנולוגיה. אנו משתמשים בטכנולוגיות המתקדמות ביותר (Scala, Node, React, and Angular), בפלטפורמות מבוססות ענן (Google, Amazon and Azure) ובמתודולוגיות כגוןContinuous Delivery ו-Test Driven Development. אנחנו ב-Wix מקדישים זמן להתפתחות מקצועית ולמידה על בסיס שבועי ולוקחים גם את ההנאה שלנו באותה הרצינות. קשה להעביר את ה-vibe שלנו בכמה מילים אבל קל להרגיש אותו! בואו לעבוד איתנו

כתב אורח

אנחנו מארחים מפעם לפעם כותבים טכנולוגים אורחים, המפרסמים כתבות בתחומי התמחות שלהם. במידה ואתם מעוניינים לפרסם פוסט בשמכם, פנו אלינו באמצעות טופס יצירת קשר באתר.

הגב

7 תגובות על "אפליקציית Native או Hybrid והאם בכלל צריך לבחור?"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.

סידור לפי:   חדש | ישן | הכי מדורגים
דוד
Guest

נשמע מבטיח, במיוחד לאור העובדה שזה מגיע מפייסבוק שהצליחה לבנות קהילה מרשימה סביב React ב- Web והיא גם מובילה עולמית בתחום ה- mobile

אורי
Guest

אין כמו Native, ולא יהיה כמו Native.
על איכות משלמים.

Omri Ofir
Guest

מה עם haxe? מכניס את כולם לכיס הקטן. כותבים קוד אחד והא מקמפל את הקוד לנייטיב בכל פלטפורמה. גם קוד פתוח גם קהילה שגדלה כל הזמן וכל הזמן מוסיפים תמיכות. קוד אחד שמומר לjava, javascript,c++, c ,c# , objective c. ועוד הרבה. היום כבר כותבים שם אפליקציות לאנדרואיד, אפל, אקסבוקס ועוד. יש שם חסרונות כמו סיפריות של 3d שעוד לא סיימו אותן..אבל זה בפיתוח תמידי

c++ the 1&only cross-plat-lang
Guest
c++ the 1&only cross-plat-lang

haxe= רעיון טוב- ביצוע זוועתי=תמיד יהיה חובבני= מישהו באמת משתמש בזה במציאות?= שמח שלא השקעתי בזה

arik100
Guest

כתב אורח – זה כבר מתחיל להימאס הקטע הזה.
אולי גם יהיה נחמד אם הייתם מביאים לכמה דוגמאות לאפליקציות NATIVE HYBRID
בכל מקרה, דעתי היא שזה תלוי בפיתוח של הAPP, יש כאלה שבנויות טוב ומתאימות לHYBRID ויש כאלה שהם NATIVE אבל הם גרועות ממש

דורינה
Guest

בואו ללמוד קורס REACT.JS בנאיה אקדמי https://naya.academy/course/web-and-mobile-applications-with-facebooks-react-js-flux-redux/

איתן מוסקוביץ
Guest

היי
תודה רבה על המאמר המעשיר!

חיפשתי בגוגל ונתקלתי גם בהסבר של AppWEB על אפליקציות היברידיות ונייטיב:
https://www.appweb.technology/%D7%A4%D7%99%D7%AA%D7%95%D7%97-%D7%90%D7%A4%D7%9C%D7%99%D7%A7%D7%A6%D7%99%D7%95%D7%AA/

מעניין מה יהיה עוד כמה שנים..

wpDiscuz

תגיות לכתבה: