אפליקציות Web & Mobile

‏ • HackerU ‏ • 10 ביולי, 2013

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

ומושג "אפליקציה" נשמע בתדירות גדולה בהקשרים שונים.

ניתן לסווג את האפליקציות ל-2 סוגים:

אפליקציות WEB – המופעלות ע"י דפדפן שניגש אליה באמצעות כתובת IP של השרת

ואפליקציות המותקנות על המכשיר עצמו, הפועלות ללא תלות בדפדפן.

כל אפליקציה תלויה במספר גורמים:
1.  חומרה – מכשיר המסוים שעליו היא רצה, למשל:
1.1  מחשב נייח
1.2 טאבלט
1.3  סמארטפון
*או כל מכשיר אחר (ברמת העיקרון ניתן לפתח אפליקציה גם למכונת כביסה, כמובן

2. מערכת הפעלה – (של סמארטפונים) קיים מספר גדול של מערכות הפעלה שונות ומספר עצום של גירסאות של כל מערכת הפעלה, העיקריות היום (היום הכוונה למרץ 2013) הן:
2.1 מערכת Android
2.2 מערכת IOS
2.3 מערכת Windows Phone
2.4 מערכת BlackBerry

לא כל מערכת הפעלה מתאימה לכל מכשיר, אך קיימות מערכות הפעלה כגון Android שניתנות להתקנה על מכשירים שונים רבים מכאן גם ההצלחה של המערכות הנ"ל. שבמשך שנים אחרונות לקחו את רוב נתח השוק של מכשירי סמארטפונים בכל העולם!!! 

Android  – היא מערכת ההפעלה שפותחה ע"י חברת גוגל העולמית.
iOS – זו מערכת הפעלה של חברת אפל.
Windows Phone  – זו מערכת הפעלה שפותחה במייקרוסופט. (מערכת חדשה יחסית(
BlackBerry  – פותחה על ידי חברה RIM הקנדית. 

אפליקציות WEB

אפליקציות WEB מבוססות HTML כאשר הגרסה החדשה ביותר היא HTML5. הדפדפן המותקן על המכשיר ניגש לשרת המרוחק בשימוש פרוטוקול HTTP ומוריד אליו את קבצי האפליקציה בעזרת כתובת האינטרנט, ומתרגם אותה במחשב.  לכן המתכנתים שמפתחים את האפליקציית WEB מתאימים את הקוד לטכנולוגיות צד לקוח רלוונטיות שהן   JS HTML  וCSS .

בנוסף לצד השרת,  שפועל על תשתיות שונות הפופולאריות Microsoft ו Linux ובהתאם לכך שפות תכנות צד שרת שלהן ASP ו- PHP בהתאמה.

HTML –  שפת סימון, שמהווה את התבנית (שבלונה) של הGUI. מסמך הHTML  מהווה סטרוקטורה של תגיות בסדר היררכי מובנה אשר יוצר VIEW הרלוונטי לאפליקציה.

CSS –  שפת הזרמת (Cascade) סגנון, שהיא פיתוח מתוחכם יותר של הSTYLE  של הHTML  ובעצם נותנת מאפיינים PROPERTIES לתצוגת האלמנטים בשימוש ירושות רלוונטיות. 

JS –  שפת סקריפט שרצה בצד הלקוח, JS היא בעצם אוסף של פקודות היוצרות פונקציונליות הנדרשת להתקיים בדפדפן. לרוב משתמשים בJS  בכתיבת קוד מונחה אירועים ומונחה עצמים (Event Oriented & Object Oriented)  להפשטת תהליך הפיתוח. שפה זו היא אולי הפופולרית ביותר כאשר מדובר בפיתוח לצד הלקוח של אפליקציות ווב ולכן קיימות בה סביבות פיתוח רבות וספריות עזר שימושיות מאוד.   

ראוי לציין את Framework  jQuery Mobileשזוהי ספריית Javascript המותאמת במיוחד למכשירי מובייל הנפוצים ביותר.  ולכן חוסכת המון זמן פיתוח של האפשרויות הסטנדרטיות הנדרשות מאפליקציה היום (שמופעלת בדפדפן). בגלל שהאפליקציה רצה על הדפדפן, הפיתוח מתבצע בהתאמה לדפדפני היעד. גרסת Mobile  jQuery  החדשה ביותר (היום) היא 1.3.0

אפליקציות Nativ

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

השפות העיקריות הן:

למכשירים עם מערכות אנדרויד: JAVA

דוגמת תוכנית בשפת JAVA המדפיסה: Hello World

***

public class Example {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

למכשירים עם מערכות iOS: Objective C

דוגמה לתוכנית בשפת Objective C המדפיסה Hello World

int main( int argc, const char *argv[] ) {
    printf( "Hello Worldn" );
    return 0;
}

למכשירים עם מערכת ווינדוס פון: C#,

דוגמה לתוכנית בשפת C# המדפיסה: Hello World

public class Example {
    public static void Main() {
        System.Console.WriteLine("Hello World");
    }
}

Android Applications

נכון לנתונים האחרונים להיום (מרץ 2013), רוב נתח השוק העולם בסמארטפונים היא למערכת האנדרויד שהגיע מעל 70% בסוף 2012, כפי שפורסם ב: http://techcrunch.com ולכן באופן הגיוני ביותר – גדל הביקוש במפתחי אפליקציות לאנדרואיד יותר ויותר..

כמו שצויין קודם, הפיתוח לאנדרואיד יכול להתבצע במספר דרכים שונות, כאשר הנפוצה ביותר היום היא בשפת JAVA עםIDE של אקליפס שפיתחו במיוחד בשבילו ADT מותאם וניתן להורדה ישירות מאתר האנדרואי.

Android Development Tools – הינו תוסף (פלאגין) לIDE (במקרה הזה אקליפס) שיוצר סביבה משולבת לפיתוח אפליקציות אנדרואיד בצורה מהירה ואפקטיבית. גרסה אחרונה נכון להיום (מרץ2013): ADT 21.1.0

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

Frameworkמושג סביבת עבודה (בתכנות) מתייחס לספריות ואו תוכנה אוניברסאלית המהווה תשתית פיתוח ע"י שימוש חוזר (ספריות וכלים) לפיתוח אפליקציות ותוכנות שונות. בפיתוח אנדרואיד – מושג זה מתייחס לIDE+SDK+ADT ואו כל ספריות נוספות הרלוונטיות לפיתוח מוצר ספציפי.

פיתוח לאנדרואיד נהיה כל כך נוח וידידותי שהיום קל מאוד לעבור לסביבה זו, לדוגמא – אם בעבר המפתח שרצה לכתוב אפליקציה בסיסית לאנדרואיד היה צריך לאסוף מספר חלקים (של פאזל הפיתוח) כגון IDE ומתאים SDK .

Integrated Development Environment– סביבת פיתוח משולבת – תוכנה שנועדה לשרת את המתכנת ע"י מתן סביבת עבודה נוחה לפיתוח תוכנות ואפליקציות, למשל אקליפס. חלק מIDE משלבים גם קומפיילר ואינטרפרטר (מפרש) כמו במקרה של אקליפס המאפשרים לעלות על חלק מהבאגים עוד בזמן כתיבת הקוד קומפילציה והרצת התוכנית.

Software Development Kitערכה לפיתוח תוכנה – ספריות וכלים שניתנים בחבילה אחת העוזרת לפיתוח מכוון מטרה מסוימת. למשל במקרה של אנדרויד מדובר בהרבה מחלקות שנכתבו על ידי מהנדסי גוגל שאותן מפתח האפליקציה יכול לייבא ובכך לקצר את עבודה בהרבה.

אם פעם היה צורך בחיפוש ואיתור הכלים הנ"ל המותאמים לגרסת האנדרואיד היעד (שאליו האפליקציה מיועדת), איתור קלאסים הרלוונטיים וכו'.. אז היום ניתן להוריד הכל בחבילה אחת יחד עם הSDK המעודכן שמכיל את כל הגרסאות של מערכת האנדרואיד האחרונות.

להלן הלינק: http://developer.android.com/sdk/index.html

כמובן שזה לא אומר שמפתחי NB ( Net Beans IDE של Oracle בעלי הJAVA ( לא יכולים לעבוד גם עם ה SDK של אנדרואיד, זה רק אומר שIDE אחרים פחות נוחים לאנדרואיד לדעתי לפחות.

פיתוח האפליקציה לאנדרואיד

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

האפליקציות יכולות להשתמש (ע"י הגדרת הרשאות מתאימות) בסרווסים שונים של המערכת (טלפון, GPS וכו'..) ומציגות (VIEW) באמצעות הXML – זוהי גם שפת סימון (שפה זו פותחה מצורך ההרחבה של HTML ).

בשימוש ה SDK המתוחכם של אנדרואיד ניתן לבדוק את תפקוד האפליקציה באמולטור המדמה את מכשיר בעל מערכת הפעלה שאליו מפותחת האפליקציה – או אפילו מספר מכשירים שונים בו זמנית

זה חוסך המון משאבים לבדיקות בסיסיות של האפליקציה. היות ורק היום ישנן 17 רמות API לאנדרואיד. גרסה הפופולארית ביותר היא רמת API 10 Gingerbread Android 2.3.3

פיתוח האפליקציה של אנדרואיד בדומה לJS הוא מונחה עצמים ומונחה אירועים, האירועים הם מאירועי משתמש כגון: Touch, Click, Scroll וכו'

ואירועי מחזור חיי האקטיביטי Activity Life Cycle events : שהם:

onCreate – אירוע היווצרות האקטיביטי – מתרחש בפתיחה ראשונית של אקטיביטי – מיועדת להגדרות ואתחולים ראשוניים (של אקטיביטי(

onStart – מעבר בין CREATE לRUN או מעבר מSTOP לRUN – מיועד להגדרות הדורשים אתחול בכל הפעלת אקטיביטי (לא בהכרח ראשונית(

onResume – מעבר מPAUSE לRUN – מיועד להמשך הפעלה של אקטיביטי ללא עצירה מלאה – דוגמא במשחק כשלוחצים PAUSE ואז חוזרים לשחק

onPause – מעבר מRUN לPAUSE – מיועד ל"הקפאת" נתונים מסוימים באקטיביטי, על מנת שאפשר יהיה לחזור אליהם בRESUME

onStop – מעבר מRUN או מעברPAUSE לSTOP (בד"כ ביציאה מאקטיביטי) – מיועד למשל לשמירת נתונים חשובים בעצירת אקטיביטי, שאותם ניתן יהיה לשחזר בSTART

onDestroy – השמדת אקטיביטי – בסגירה טוטלית של אקטיביטי.

אירועים הללו מאפשרים מעבר בין 4 מצבי אקטיבטי בסיסיים: 

Running  – האקטיביטי רצה

Paused – אקטיביטי במצב פואז (הקפאה(

Stopped – אקטיביטי במצב עצירה (יציאה מאקטיביטי לפני השמדה(

Destroy – אקטיביטי נסגר לחלוטין

כפי שמתואר בתמונה הבאה:

http://4.bp.blogspot.com/-iAh-GvmfHU0/UMnUEcPv2cI/AAAAAAAAALk/cZlh4kMEzNo/s1600/activity_lifecycle.png

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

למשל בפתיחת פרויקט ג'אווה רגיל – נוצרים 5 קבצי (כברירת מחדל)

לעומת זאת בפתיחת פרויקט ג'אווה אנדרואיד נוצרים 33 קבצים ו27 תיקיות (כברירת מחדל)

כלומר לראשות המפתח עומדים כלים רבים מההתחלה, הוא רק צריך לדעת להשתמש בהם כראוי

באפליקציות סמארטפון בגלל סיבות טריוויאליות (נוחות משתמש, גודל המסך וכו' )

חשיבות GUI היא מעל הכל

GUI- Graphic User Interface

ממשק גרפי עם משתמש – חייב להיות מצד אחד יפה ומושך ומצד שני מאוד נוח וברור

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

מלבד האלמנט החומרה, אפליקציית אנדרואיד מושתת על-4 שכבות:

שכבת בסיס -Kernel LINUX -> מטרתה ניהול החשמל והדרייברים של המכשיר, כגון: מצלמה, ווי פיי, קול, זיכרון וכו'…

שכבת ספריות והרצה Android RT +libraries -> מלבד ספריות ליבה כגון:  SQLite, מדיה, SSL, webKit  וכו'. JAVA של אנדרואיד רצה על DVM שזה דומה לJVM הרגילה, רק מיועדת לאנדרואיד.

שכבת סביבה עבודה – Framework של האפליקציה (רמת תכנות של אפליקציה עצמה) ->   שבה מגדירים את האובייקטים, האקטיביטיס וה VIEWS של האפליקציה. 

שכבת אפליקציות – Applications -> האפליקציות כפי שרואה אותן  משתמש -> אנשי קשר, טלפון, דפדפן ועוד.

תגיות: , ,

ניקיטה קורטין

מתכנת Web &Mobile במרכז ללימודי מחשבים והשמה בתחום ההיי-טק- HackerU

תגובות בפייסבוק