"บทความนี้เป็น เนื้อหาที่ผมนำมาจากต้นฉบับหนังสือ Android Programming ของผมเอง ซึ่งกำลังดำเนินการเขียนอยู่ครับ และคิดว่าคงเป็นประโยชน์บ้าง ไม่มากก็น้อยสำหรับท่านที่สนใจ"
ในโลกของการติดต่อสื่อสารในปัจจุบันได้มีการพัฒนาที่ก้าวหน้าเป็นอย่างมาก โดยเฉพาะการสื่อสารแบบไร้สาย ที่ได้มีการพัฒนาความเร็วในการรับส่งข้อมูลที่สูงขึ้น จากเดิมที่มีการส่งได้เพียงข้อความสั้น(SMS :Short Message Service) และ MMS(Multimedia Messaging Service) ปัจจุบันสามารถทำการโทรศัพท์แบบเห็นหน้าคู่สนทนากันได้ (Video Call) แต่ต้องผ่านทางระบบของวายฟาย Wi-Fi (wireless fidelity) หรือ ระบบ 3G (Third Generation of Mobile Telephone)
ซึ่งสำหรับประเทศไทยแล้ว อุปกรณ์มือถือ และอุปกรณ์พกพา ส่วนมากในตลาดจะรองรับระบบการรับส่งข้อมูลความเร็วสูงเป็นที่เรียบร้อยแล้ว และได้รับความนิยมจากผู้ใช้งานเป็นจำนวนมาก โดยอุปกรณ์ส่วนใหญ่ที่มีอยู่ในท้องตลาด จะมีระบบปฏิบัติการเป็นของตัวเอง ที่ไม่เหมือนกับระบบปฏิบัติการที่อยู่บนคอมพิวเตอร์ส่วนบุคคล (PC :Personal Computer) ส่งผลให้แนวทางในการพัฒนาโปรแกรม เพื่อนำไปใช้งานบนอุปกรณ์เหล่านั้นยุ่งยาก และหลากหลายขึ้น
ระบบปฏิบัติการบนอุปกรณ์ดังกล่าว มีอยู่หลายตัวกันเช่น Android, iOS, Windows Phone, BlackBerry, Symbian, webOS, MeeGo และ QNX เป็นต้น โดยลักษณะของระบบปฏิบัติการข้างต้น ส่วนมากจะเป็นประเภทไม่เปิดเผยซอร์ฟแวร์ต้นฉบับ (Closed Source) ซึ่งหมายความว่า ระบบปฏิบัติการดังกล่าว ไม่สามารถนำมาศึกษา ดัดแปลงการทำงานของระบบปฏิบัติการเพื่อนำไปใช้งานตามที่ต้องการได้ ทำให้เกิดความไม่สะดวกในการพัฒนา และการพัฒนาจะถูกกำหนดทิศทางโดยบริษัทเจ้าของลิขสิทธิ์
[[รูป 1-1 : Mobile Operating System ]]
|
|
Android |
iOS |
|
|
|
|
webOS |
Symbian |
|
|
|
|
Windows Phone |
|
แอนดรอยด์ (Android) คือระบบปฏิบัติการแบบเปิดเผยซอร์ฟแวร์ต้นฉบับ (Open Source) โดยบริษัท กูเกิ้ล (Google Inc.) ที่ได้รับความนิยมเป็นอย่างสูง เนื่องจากอุปกรณ์ที่ใช้ระบบปฏิบัติการแอนดรอยด์ มีจำนวนมาก อุปกรณ์มีหลากหลายระดับ หลายราคา รวมทั้งสามาถทำงานบนอุปกรณ์ที่มีขนาดหน้าจอ และความละเอียดแตกต่างกันได้ ทำให้ผู้บริโภคสามารถเลือกได้ตามต้องการ
และหากมองในทิศทางสำหรับนักพัฒนาโปรแกรม (Programmer) แล้วนั้น การพัฒนาโปรแกรมเพื่อใช้งานบนระบบปฏิบัติการแอนดรอยด์ ไม่ใช่เรื่องที่ยาก เพราะมีข้อมูลในการพัฒนารวมทั้ง Android SDK (Software Development Kit) เตรียมไว้ให้กับนักพัฒนาได้เรียนรู้ และเมื่อนักพัฒนาต้องการจะเผยแพร่หรือจำหน่ายโปรแกรมที่พัฒนาแล้วเสร็จ แอนดรอยด์ก็ยังมีตลาดในการเผยแพร่โปรแกรม ผ่าน Android Market แต่หากจะกล่าวถึงโครงสร้างภาษาที่ใช้ในการพัฒนานั้น สำหรับ Android SDK จะยึดโครงสร้างของภาษาจาวา (Java language) ในการเขียนโปรแกรม เพราะโปรแกรมที่พัฒนามาได้จะต้องทำงานอยู่ภายใต้ Dalvik Virtual Machine เช่นเดียวกับโปรแกรมจาวา ที่ต้องทำงานอยู่ภายใต้ Java Virtual Machine (Virtual Machine เปรียบได้กับสภาพแวดล้อมที่โปรแกรมทำงานอยู่)
นอกจากนั้นแล้ว แอนดรอยด์ ยังมีโปรแกรมแกรมที่เปิดเผยซอร์ฟแวร์ต้นฉบับ (Open Source) เป็นจำนวนมาก ทำให้นักพัฒนาที่สนใจ สามารถนำซอร์ฟแวร์ต้นฉบับ มาศึกษาได้อย่างไม่ยาก ประกอบกับความนิยมของแอนดรอยด์ได้เพิ่มขึ้นอย่างมากใน โดยดูได้จากส่วนแบ่งการตลาด ดังรูป
[[รูป 1-2 : ส่วนแบ่งการตลาดของ Smart Phone ในปี 2010 ไตรมาสที่ 4 ข้อมูลจาก www.canalys.com ]]
เริ่มต้นระบบปฏิบัติการแอนดรอยด์ ถูกพัฒนามาจากบริษัท แอนดรอยด์ (Android Inc.) เมื่อปี พ.ศ 2546 โดยมีนาย แอนดี้ รูบิน (Andy Rubin) ผู้ให้กำเนิดระบบปฏิบัติการนี้ และถูกบริษัท กูเกิ้ล ซื้อกิจการเมื่อ เดือนสิงหาคม ปี พ.ศ 2548 โดยบริษัทแอนดรอยด์ ได้กลายเป็นมาบริษัทลูก ของบริษัทกูเกิ้ล และยังมีนาย แอนดี้ รูบิน ดำเนินงานอยู่ในทีมพัฒนาระบบปฏิบัติการต่อไป
ระบบปฏิบัติการแอนดรอยด์ เป็นระบบปฏิบัติการที่พัฒนามาจากการนำเอา แกนกลางของระบบปฏิบัติการลินุกซ์ (Linux Kernel) ซึ่งเป็นระบบปฏิบัติการที่ออกแบบมาเพื่อทำงานเป็นเครื่องให้บริการ (Server) มาพัฒนาต่อ เพื่อให้กลายเป็นระบบปฏิบัติการบนอุปกรณ์พกพา (Mobile Operating System)
ต่อมาเมื่อเดือน พฤศจิกายน ปี พ.ศ 2550 บริษัทกูเกิ้ล ได้ทำการก่อตั้งสมาคม OHA (Open Handset Alliance, http://www.openhandsetalliance.com) เพื่อเป็นหน่วยงานกลางในการกำหนดมาตรฐานกลาง ของอุปกรณ์พกพาและระบบปฏิบัติการแอนดรอยด์ โดยมีสมาชิกในช่วงก่อนตั้งจำนวน 34 รายเข้าร่วม ซึ่งประกอบไปด้วยบริษัทชั้นนำที่ดำเนินธุรกิจด้าการสื่อสาร เช่น โรงงานผลิตอุปกรณ์พกพา, บริษัทพัฒนาโปรแกรม, ผู้ให้บริการสื่อสาร และผู้ผลิตอะไหล่อุปกรณ์ด้านสื่อสาร
[[รูป 1-3 : สมาคม OHA (Open Handset Alliance)]]
หลังจากนั้น เมื่อเดือนตุลาคม ปี พ.ศ 2551 บริษัท กูเกิ้ล ได้เปิดตัวมือถือตัวแรกที่ใช้ระบบปฏิบัติการแอนดรอยด์ ที่ชื่อ T-Mobile G1 หรืออีกชื่อนึงคือ HTC Dream โดยใช้แอนดรอยด์รุ่น 1.1 และหลังจากนั้น ได้มีการปรับพัฒนาระบบปฏิบัติการเป็นรุ่นใหม่ มาเป็นลำดับ
[[รูป 1-4 : T-Mobile G1/HTC Dream]] [[01-04-01.bmp]]
ช่วงต่อมาได้มีการออกผลิตภัณฑ์จากบริษัทต่างๆ ออกมาหลากหลายรุ่น หลากหลายยี่ห้อ ตามการพัฒนาระบบปฏิบัติการแอนดรอยด์ ที่มีอยู่อย่างต่อเนื่อง ทำให้สินค้าของแอนดรอยด์ มีให้เลือกอยู่อย่างมากมาย
[[รูป 1-5 : Android Device]]
|
|
Samsung: Nexus S |
HTC: EVO 4G |
|
|
|
|
Motorola: Droid2 |
|
|
|
|
|
Motorola: XOOM |
HTC: Flyer |
การทำความเข้าใจโครงสร้างของระบบปฏิบัติการแอนดรอยด์ ถือว่าเป็นสิ่งสำคัญเพราะถ้านักพัฒนาโปรแกรม สามารถมองภาพโดยรวมของระบบได้ทั้งหมด จะให้สามารถเข้าใจถึงกระบวนการทำงานได้ดียิ่งขึ้น และสามารถนำไปช่วยในการออกแบบโปรแกรมที่ต้องการพัฒนา เพื่อให้เกิดประสิทธิภาพในการทำงาน
[[รูป 1-6 : Android Architecture]]
จากโครงสร้างของระบบปฏิบัติการแอนดรอยด์ จะสังเกตุได้ว่า มีการแบ่งออกมาเป็นส่วนๆ ที่มีความเกี่ยวเนื่องกัน โดยส่วนบนสุดจะเป็นส่วนที่ผู้ใช้งานทำการติดต่อโดยตรงซึ่งก็คือส่วนของ (Applications) จากนั้นก็จะลำดับลงมาเป็นองค์ประกอบอื่นๆตามลำดับ และสุดท้ายจะเป็นส่วนที่ติดต่อกับอุปกรณ์โดยผ่านทาง Linux Kernel
โครงสร้างของแอนดรอยด์ พอที่จะอธิบายเป็นส่วนๆได้ดังนี้
- Applications ส่วน Application หรือส่วนของโปรแกรมที่มีมากับระบบปฏิบัติการ หรือเป็นกลุ่มของโปรแกรมที่ผู้ใช้งานได้ทำการติดตั้งไว้ โดยผู้ใช้งานสามารถเรียกใช้โปรแกรมต่างๆได้โดยตรง ซึ่งการทำงานของแต่ละโปรแกรมจะเป็นไปตามที่ผู้พัฒนาโปรแกรมได้ออกแบบและเขียนโค้ดโปรแกรมเอาไว้
- Application Frameworkเป็นส่วนที่มีการพัฒนาขึ้นเพื่อให้นักพัฒนาสามารถพัฒนาโปรแกรมได้สะดวก และมีประสิทธิภาพมากยิ่งขึ้น โดยนักพัฒนาไม่จำเป็นต้องพัฒนาในส่วนที่มีความยุ่งยากมากๆ เพียงแค่ทำการศึกษาถึงวิธีการเรียกใช้งาน Application Framework ในส่วนที่ต้องการใช้งาน แล้วนำมาใช้งาน ซึ่งมีหลายกลุ่มด้วยกัน ตัวอย่างเช่น
- Activities Manager เป็นกลุ่มของชุดคำสั่งที่จัดการเกี่ยวกับวงจรการทำงานของหน้าต่างโปรแกรม(Activity)
- Content Providers เป็นกลุ่มของชุดคำสั่ง ที่ใช้ในการเข้าถึงข้อมูลของโปรแกรมอื่น และสามารถแบ่งปันข้อมูลให้โปรแกรมอื่นเข้าถึงได้
- View System เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับการจัดการโครงสร้างของหน้าจอที่แสดงผลในส่วนที่ติดต่อกับผู้ใช้งาน (User Interface)
- Telephony Manager เป็นกลุ่มของชุดคำสั่งที่ใช้ในการเข้าถึงข้อมูลด้านโทรศัพท์ เช่นหมายเลขโทรศัพท์ เป็นต้น
- Resource Manager เป็นกลุ่มของชุดคำสั่งในการเข้าถึงข้อมูลที่เป็น ข้อความ, รูปภาพ
- Location Manager เป็นกลุ่มของชุดคำสั่งที่เกี่ยวกับตำแหน่งทางภูมิศาตร์ ที่ระบบปฏิบัติการได้รับค่าจากอุปกรณ์
- Notification Manager เป็นกลุ่มของชุดคำสั่งที่จะถูกเรียกใช้เมื่อโปรแกรม ต้องการแสดงผลให้กับผู้ใช้งาน ผ่านทางแถบสถานะ(Status Bar) ของหน้าจอ
- Libraries เป็นส่วนของชุดคำสั่งที่พัฒนาด้วย C/C++ โดยแบ่งชุดคำสั่งออกเป็นกลุ่มตามวัตถุประสงค์ของการใช้งาน เช่น Surface Manage จัดการเกี่ยวกับการแสดงผล, Media Framework จัดการเกี่ยวกับการการแสดงภาพและเสียง, Open GL | ES และ SGL จัดการเกี่ยวกับภาพ 3มิติ และ 2มิติ, SQLlite จัดการเกี่ยวกับระบบฐานข้อมูล เป็นต้น
- Android Runtime จะมี Darvik Virtual Machine ที่ถูกออกแบบมา เพื่อให้ทำงานบนอุปกรณ์ที่มี หน่วยความจำ(Memmory), หน่วยประมวลผลกลาง(CPU) และพลังงาน(Battery)ที่จำกัด ซึ่งการทำงานของ Darvik Virtual Machine จะทำการแปลงไฟล์ที่ต้องการทำงาน ไปเป็นไฟล์ .DEX ก่อนการทำงาน เหตุผลก็เพื่อให้มีประสิทธิภาพเพิ่มขึ้นเมื่อใช้งานกับ หน่วยประมวลผลกลางที่มีความเร็วไม่มาก
ส่วนต่อมาคือ Core Libraries ที่เป็นส่วนรวบรวมคำสั่งและชุดคำสั่งสำคัญ โดยถูกเขียนด้วยภาษาจาวา (Java Language)
- Linux Kernel เป็นส่วนที่ทำหน้าที่หัวใจสำคัญ ในจัดการกับบริการหลักของระบบปฏิบัติการ เช่น เรื่องหน่วยความจำ พลังงาน ติดต่อกับอุปกรณ์ต่างๆ ความปลอดภัย เครือข่าย โดยแอนดรอยด์ได้นำเอาส่วนนี้มาจากระบบปฏิบัติการลินุกซ์ รุ่น 2.6 (Linux 26. Kernel) ซึ่งได้มีการออกแบบมาเป็นอย่างดี
หลังจากที่บริษัท กูเกิ้ล ได้ซื้อบริษัท แอนดรอยด์ และได้มีการก่อตั้งสมาคม สมาคม OHA (Open Handset Alliance) เป็นที่เรียบร้อย ทางกูเกิ้ลก็ได้มีการพัฒนาระบบปฏิบัติการแอนดรอยด์ ขึ้นมาเป็นลำดับ โดยพอสังเขป ได้ดังนี้
- รุ่น 1.0 , 23 กันยายน 2551
- รุ่น 1.5 (Cupcake), 30 เมษายน 2552
- รุ่น 1.6 (Donut), 15 กันยายน 2552
- รุ่น 2.0 (Éclair), 26 ตุลาคม 2552
- รุ่น 2.2 (Froyo), 20 พฤษภาคม 2553
- รุ่น 2.3 (Gingerbread), 6 ธันวาคม 2553
- รุ่น 3.0 (Honeycomb), 22 กุมภาพันธ์ 2554
[[รูป 1-7 : Android Logo]]
|
|
|
V1.5 Cupcake |
V1.6 Donut |
V2.0 Eclari |
|
|
|
|
|
|
V2.2 Froyo |
V2.3 Gingerbread |
V3.0 Honeycomb |
และภายในปี พ.ศ 2554 นี้ ทางบริษัทกูเกิ้ล มีแผนจะออกรุ่นใหม่อีก 1 รุ่น นับว่าเป็นการพัฒนาการ
ของแอนดรอยด์ที่มีอยู่อย่างต่อเนื่อง แต่หากมองในส่วนของจำนวนผู้ใช้ต่อรุ่นแล้วนั้น จากการเก็บรวบรวมข้อมูลจาก Android Market จะพบได้ว่า รุ่นที่มีการใช้งานมากที่สุด (ข้อมูล ณ 15 มีนาคม 2554) จะเป็นรุ่น 2.2 (Froyo)
[[รูป 1-8 : Current Distribution]] [[01-08-01.bmp]]
เนื่องจากระบบปฏิบัตการแอนดรอยด์มีการเจริญเติบโตอย่างรวดเร็ว และมีส่วนแบ่งตลาดของอุปกรณ์ด้านนี้ ขึ้นทุกขณะ ทำให้กลุ่มผู้ใช้งาน และกลุ่มนักพัฒนาโปรแกรม ให้ความสำคัญกับระบบปฏิบัติการแอนดรอยด์เพิ่มมากขึ้น
เมื่อมองในด้านของกลุ่มผลิตภัณฑ์ บริษัทที่มีการพัฒนาผลิตภัณฑ์รุ่นใหม่ ได้มีการนำเอาระบบปฏิบัติการแอนดรอยด์ไปใช้ในสินค้าของตนเอง พร้อมทั้งยังมีการปรับแต่งให้ระบบปฏิบัติการมีความสามารถ การจัดวาง โปรแกรม และลูกเล่นใหม่ๆ ที่แตกต่างจากคู่แข่งในท้องตลาด โดยเฉพาะอย่างยิ่ง กลุ่มสินค้าที่เป็น มือถือรุ่นใหม่ (SmartPhone) และอุปกรณ์จอสัมผัส (Touch Screen) โดยมีคุณลักษณะแตกต่างกันไป เช่นขนาดหน้าจอ ระบบโทรศัพท์ ความเร็วของหน่วยประมวลผล ปริมาณหน่วยความจำ แม้กระทั่งอุปกรณ์ตรวจจับต่างๆ(Sensor)
หากมองในด้านของการพัฒนาโปรแกรม ทางบริษัท กูเกิ้ล ได้มีการพัฒนา Application Framework ไว้สำหรับนักพัฒนาใช้งาน ได้อย่างสะดวก และไม่เกิดปัญหาเมื่อนำชุดโปรแกรมที่พัฒนาขึ้นมา ไปใช้กับอุปกรณ์ที่มีคุณลักษณะต่างกัน เช่นขนาดจออุปกรณ์ ไม่เท่ากัน ก็ยังสามารถใช้งานโปรแกรมได้เหมือนกัน เป็นต้น
ในบทนี้เราได้ทำความรู้จักกับระบบปฏิบัติการแอนดรอยด์ ทั้งในเรื่องของประวัติ โครงสร้าง และความน่าสนใจ ทำให้เข้าใจได้ว่าระบบปฏิบัติการนี้ได้รับความนิยมอย่างแพร่หลายมากยิ่งขึ้นได้อย่างไร จึงเป็นโอกาสให้นักพัฒนาที่สนใจ ได้ศึกษาวิธีการเขียนโปรแกรมบนระบบปฏิบัติการแอนดรอยด์นี้ และสามารถพัฒนาระบบ แล้วแจกจ่ายหรือจำหน่าย ผ่านทาง Android Market ในบทต่อไป
สำหรับข้อมูลในบทความนี้ ผมก็หวังว่าคงเป็นประโยชน์ไม่มากก็น้อย สำหรับเพื่อนๆนักพัฒนาทุกท่าน แล้วพบกันใหม่กับ 9'M |