Primary AIR Technologies
From Blognone
เทคโนโลยีพื้นฐานของ AIR
มีเทคโนโลยีสามชนิดหลักๆ ที่ถูกใช้สำหรับ AIR ซึ่งเราแบ่งได้เป็น 2 ประเภท คือ เทคโนโลยีด้านแอพพลิเคชัน และเทคโนโลยีด้านเอกสาร
Contents |
เทคโนโลยีด้านแอพพลิเคชัน
AIR ประกอบด้วยเทคโนโลยีที่ใช้สร้างแอพพลิเคชันหลักๆ 2 ชนิดคือ HTML และ Flash ซึ่งสามารถใช้สร้างแอพพลิเคชันสำหรับ AIR ได้ทั้งสองวิธี
HTML/JavaScript
เทคโนโลยีตัวแรกของ AIR คือ HTML และ JavaScript โดยในรันไทม์มีตัวแสดงผล HTML (rendering engine) ที่สนับสนุนมาตรฐานดังนี้
- HTML
- JavaScript
- CSS
- XHTML
- Document Object Model (DOM)
คุณไม่จำเป็นต้องใช้ Flash ในการสร้างแอพพลิเคชันสำหรับ AIR ซึ่งทำให้นักพัฒนาหลายคนที่ติดตามข่าวของ AIR มาตั้งแต่ต้นต้องประหลาดใจ ในเมื่อ AIR เป็นรันไทม์ที่จับตลาดนักพัฒนาเว็บ ดังนั้นจะมีเทคโนโลยีอื่นใดที่เหมาะสมสำหรับเว็บมากกว่า HTML และ JavaScript งั้นหรือ?
AIR ใช้ตัวแสดงผล HTML แบบโอเพนซอร์สชื่อ WebKit ซึ่งใช้ในเว็บเบราว์เซอร์หลายตัว เช่น Konqueror และ Safari ของ Mac OS X
Flash
เทคโนโลยีตัวถัดมาคือ Flash Player โดย AIR นั้นใช้ Flash Player 9 ที่สนับสนุน ActionScript 3 เป็นฐานในการพัฒนา รวมไปถึง virtual machine แบบโอเพนซอร์สที่ชื่อ Tamarin (ในอนาคตจะใช้จัดการกับ JavaScript ใน Firefox รุ่นถัดๆ ไป)
Tip: คุณสามารถหาข้อมูลเพิ่มเติมของ Tamarin ได้จาก http://www.mozilla.org/projects/tamarin
AIR ไม่เพียงแต่มี API มาตรฐานของ Flash Player เท่านั้น แต่ API บางตัวยังถูกปรับปรุงให้มีความสามารถมากขึ้น ความสามารถบางส่วนที่ AIR เรียกใช้จาก Flash Player มีดังนี้
- Just-in-time Interpreted ActionScript engine ซึ่งช่วยเพิ่มประสิทธิภาพของแอพพลิเคชัน
- ความสามารถด้านเครือข่ายครบครัน รวมถึง HTTP, RTMP และซ็อคเก็ตทั้งแบบไบนารีและ XML
- API สำหรับแสดงผลและวาดกราฟฟิกแบบเวกเตอร์
- การสนับสนุนมัลติมีเดียทั้งภาพแบบบิตแมป, เวกเตอร์, เสียง และวิดีโอ
Tip: คุณสามารถเรียกใช้ API ของ Flash Player และ ActionScript ผ่านทาง JavaScript ใน AIR ได้
เฟรมเวิร์ค Flex 2 RIA นั้นถูกพัฒนาบน ActionScript 3 นั่นแปลว่าคุณสามารถเรียกใช้ความสามารถของ Flex ใน AIR ได้เช่นกัน
เทคโนโลยีด้านเอกสาร
เทคโนโลยีด้านเอกสารของ AIR ช่วยให้แสดงผลและทำงานกับเอกสารอิเล็คทรอนิกส์ได้ง่ายขึ้น ซึ่ง AIR ใช้ PDF และ HTML เป็นเทคโนโลยีหลักด้านเอกสาร
Portable Document Format (PDF) เป็นเทคโนโลยีด้านเอกสารที่ได้รับความนิยมบนเว็บ ความสามารถของ PDF จำเป็นต้องเรียกใช้ผ่าน Adobe Reader 8.1 ซึ่งถ้ามีติดตั้งไว้ในเครื่อง AIR จะสามารถเรียกใช้ความสามารถของตัว Reader แบบเดียวกับที่ใช้ผ่านเว็บเบราว์เซอร์ได้
HTML
ในตอนแรกสุด HTML ถูกออกแบบขึ้นมาเพื่อแสดงผลเอกสาร และปัจจุบันมันก็ถูกพัฒนาให้มีความสามารถด้านการจัดรูปแบบ (layout) และสไตล์ (style) มากขึ้น เราสามารถใช้ HTML เป็นเทคโนโลยีด้านเอกสารใน AIR ได้ ทั้งแอพพลิเคชันแบบ HTML และแบบ Flash
แอพพลิเคชันแบบ AIR ใช้อะไรได้บ้าง?
ตอนนี้เรารู้แล้วว่ามีเทคโนโลยีอะไรบ้างใน AIR ต่อไปเราก็มาสนใจว่าเทคโนโลยีเหล่านี้นำมาประกอบกันเป็นแอพพลิเคชันสำหรับ AIR ได้อย่างไร
แอพพลิเคชันของ AIR สามารถเกิดจากชุดเทคโนโลยีเหล่านี้
- เฉพาะ HTML/JavaScript
- HTML/JavaScript โดยใช้ Flash ทำเนื้อหา
- Flash อย่างเดียว (รวม Flex)
- โปรแกรมเป็น Flash โดยเนื้อหาเป็น HTML
- ชุดเทคโนโลยีทุกแบบสามารถเรียกใช้ PDF ได้
Tip: AIR รุ่นเบต้ายังไม่สนับสนุนการเขียนแอพพลิเคชันด้วย HTML และใช้ Flash ทำเนื้อหา ความสามารถนี้จะเพิ่มเข้ามาใน AIR 1.0 รุ่นจริง
(ภาพ)
การเชื่อมเทคโนโลยีและสคริปต์เข้าด้วยกัน
ในตัวรันไทม์มีทั้ง WebKit และ Flash Player ซึ่งทำงานร่วมกันในระดับล่าง (low-level) ตัวอย่างเช่น เมื่อเรารวม HTML เข้าไปในเนื้อหาแบบ Flash การทำงานที่เกิดขึ้นคือ HTML จะถูกแสดงผลในไปป์ไลน์ของ Flash ซึ่งแปลว่าคุณสามารถเรียกใช้ความสามารถด้านบิตแมปต่างๆ ของ Flash (ทำเบลอ, หมุน, transform) กับ HTML ได้ด้วย
การประสานงานที่ระดับล่างนี้ยังรวมถึงเอนจินของสคริปต์ต่างๆ ซึ่งใน AIR มีทั้ง JavaScript และ ActionScript โดย AIR ได้มีตัวเชื่อมระหว่างสคริปต์ (script bridging) ระหว่างสองภาษานี้ ซึ่งส่งผลให้เราสามารถ:
- ใช้โค้ด JavaScript เรียก API ของ AIR, Flash Player และ ActionScript
- ใช้โค้ด ActionScript เรียก API ของ JavaScript
- ใช้โค้ด ActionScript เข้าถึง DOM ของ HTML ได้โดยตรง
- ทำ event registration ได้จากทั้ง ActionScript และ JavaScript
การทำงานร่วมกันระหว่างสคริปต์นี้ใช้วิธีส่งตำแหน่งอ้างอิง (Pass by Reference) ในการส่งวัตถุจาก ActionScript ไปยัง JavaScript (และในทางกลับกันด้วย) การเปลี่ยนแปลงค่าของ instance ในภาษาหนึ่ง จะส่งผลไปยัง instance ของอีกภาษาด้วย นี่จึงทำให้เรียกใช้ Flash Player API โดยตรงจาก JavaScript ได้
การทำงานร่วมกันที่ระดับล่างนี้ช่วยให้นักพัฒนาสามารถสร้างแอพพลิเคชันที่มีทั้ง HTML และ Flash ได้ง่ายขึ้น
Tip: ดูรายละเอียดการเรียกใช้ ActionScript และ API ของ AIR ได้ในบทที่สาม
ข้อสรุปแบบง่ายๆ คือถ้าคุณเป็นนักพัฒนาที่ใช้ทั้ง HTML และ JavaScript นั่นแปลว่าคุณไม่ต้องฝึกทักษะอะไรเพิ่มในการสร้างแอพพลิเคชันบน AIR
ความสามารถของ AIR
ลำพังถ้า AIR เป็นแค่วิธีการเรียกใช้เว็บแอพพลิเคชันบนเดสก์ท็อป มันก็คงไม่มีอะไรดึงดูดใจมากนัก แต่ความจริงแล้ว AIR มีชุด API ที่ครบครัน เช่นเดียวกับความใกล้ชิดกับเดสก์ท็อป ซึ่งช่วยให้นักพัฒนาใช้ประโยชน์จากการที่แอพพลิเคชันรันอยู่บนเดสก์ท็อปของผู้ใช้ได้มากยิ่งขึ้น
Adobe AIR Programming APIs
นอกจาก API ของ Flash Player และ WebKit แล้ว AIR ยังมี API เพิ่มเติมดังนี้
Tip: API ของ AIR นั้นเรียกใช้ได้จากทั้ง JavaScript และ ActionScript
- API สำหรับ file I/O
- API สำหรับการจัดการหน้าต่างแบบ native
- API สำหรับเมนูแบบ native (เฉพาะ Mac ในเวอร์ชันเบต้า)
- API สำหรับตรวจสอบว่า Offline/Online
- ความสามารถในการควบคุมแก้ไขโครง (chrome) ของแอพพลิเคชันได้ทั้งหมด
- API สำหรับ local storage/settings
- API สำหรับการแจ้งเตือนของระบบ โดยใช้วิธีการของแต่ละระบบปฏิบัติการ (ยังไม่มีในเวอร์ชันเบต้า)
- API สำหรับอัพเดตแอพพลิเคชัน
- ฐานข้อมูล SQLite ในตัว
หมายเหตุ: ความสามารถเหล่านี้ถูกพัฒนาขึ้นทั้งในตัว AIR เอง หรือไม่ก็ในระดับเฟรมเวิร์ค (Flex และ JavaScript) ความสามารถบางอันใช้ทั้งสองวิธีประกอบกัน
การทำงานร่วมกับเดสก์ท็อป (Desktop Integration)
อย่างที่เราเสนอไปแล้วข้างต้นว่าแอพพลิเคชันภายในเว็บเบราว์เซอร์ไม่สามารถให้ความรู้สึกต่อผู้ใช้ได้เท่ากับแอพพลิเคชันบนเดสก์ท็อป ผู้ใช้จึงอาจรู้สึกไม่สะดวกในการใช้งานแบบที่คุ้นเคยในเดสก์ท็อป
แอพพลิเคชันของ AIR นั้นเป็นแอพพลิเคชันสำหรับเดสก์ท็อป ดังนั้นมันจึงสามารถให้การตอบสนองได้แบบเดียวกับเดสก์ท็อป ความสามารถต่างๆ มีดังนี้:
- วิธีการติดตั้งและถอดถอนโปรแกรมแบบเดสก์ท็อป
- จุดเรียกใช้งานบนเดสก์ท็อป (เช่น ช็อตคัต)
- สนับสนุนการลากแล้ววาง (drag-and-drop):
- ระหว่างระบบปฏิบัติการกับแอพพลิเคชัน AIR
- ระหว่างแอพพลิเคชัน AIR ด้วยกัน
- ระหว่างแอพพลิเคชันปกติกับแอพพลิเคชัน AIR
- สนับสนุนคลิปบอร์ด
- การแจ้งเตือนของระบบ
- ไอคอนแบบ native
เมื่อติดตั้งเสร็จแล้ว แอพพลิเคชัน AIR จะมีสถานะเทียบเท่าแอพพลิเคชันทั่วไป ซึ่งแปลว่าระบบปฏิบัติการและตัวผู้ใช้สามารถติดต่อกับแอพพลิเคชันแบบ AIR ได้เช่นเดียวกับแอพพลิเคชันแบบปกติ ตัวอย่างเช่น การทำ prefetch ในระดับ OS และการสลับงานระหว่างแอพพลิเคชันสามารถใช้กับแอพพลิเคชัน AIR ได้เช่นกัน
เป้าหมายสุดท้ายคือผู้ใช้ไม่จำเป็นต้องรู้ว่ากำลังใช้แอพพลิเคชันปกติ หรือแอพพลิเคชันแบบ AIR อยู่ ผู้ใช้สามารถทำงานกับแอพพลิเคชัน AIR ได้เหมือนแอพพลิเคชันธรรมดา
ความปลอดภัย
ถึงแม้ AIR จะมีฟีเจอร์ด้าน API และเดสก์ท็อปครบครัน แต่แง่มุมสำคัญที่ลืมไม่ได้คือความปลอดภัย ในเมื่อ AIR สามารถเข้าถึงทรัพยากรภายในเครื่องได้ มันก็มีโอกาสเป็นช่องโหว่ได้หรือไม่?
สิ่งแรกที่ต้องบอกให้ชัดคือ AIR นั้นรันอยู่บนระบบรักษาความปลอดภัยของระบบปฏิบัติการ ดังนั้นไม่มีทางที่จะสามารถเลี่ยงระบบรักษาความปลอดภัยนี้ได้ เพราะแอพพลิเคชัน AIR ทุกตัวจะมีสิทธิ์เข้าถึงได้เท่าที่ระบบปฏิบัติการอนุญาตเท่านั้น
การใช้งานแอพพลิเคชัน AIR ผู้ใช้จะต้องดาวน์โหลดไฟล์มายังเดสก์ท็อป และติดตั้งตามขั้นตอนปกติ จากนั้นจึงเรียกใช้แอพพลิเคชัน ขั้นตอนเหล่านี้ไม่ต่างอะไรกับการดาวน์โหลดและติดตั้งเดสก์ท็อปแอพพลิเคชันทั่วไป ซึ่งนี่เป็นความตั้งใจในการออกแบบ แอพพลิเคชัน AIR นั้นรันอยู่ในระบบรักษาความปลอดภัยที่ต่างจากแอพพลิเคชันในเว็บเบราว์เซอร์ เทียบแล้วมันใกล้เคียงกับแอพพลิเคชันแบบ native มากกว่า
เว็บเบราว์เซอร์นั้นจะถูกจำกัดความสามารถในการเข้าถึง I/O ด้วยเหตุผลด้านความปลอดภัย ซึ่งรวมไปถึงการเข้าถึงทรัพยากรภายในเครื่อง, การใช้งานเครือข่าย และจำกัดส่วนติดต่อผู้ใช้ด้วย เว็บเบราว์เซอร์จะอนุญาตให้แอพพลิเคชันติดต่อกับข้อมูลที่อยู่บนเซิร์ฟเวอร์ (ซึ่งอยู่บนโดเมนใดโดเมนหนึ่ง) เท่านั้น และเบราว์เซอร์จะมีส่วนติดต่อผู้ใช้เพียงแบบเดียวสำหรับควบคุมแอพพลิเคชันทุกประเภทที่รันอยู่ในเบราว์เซอร์ โมเดลแบบนี้พอเพียงสำหรับแอพพลิเคชันที่ติดต่อกับเซิร์ฟเวอร์แห่งเดียว และเก็บข้อมูลทุกอย่างไว้บนเซิร์ฟเวอร์นั้น
นักพัฒนาเว็บบางกลุ่มจึงพบกับขีดจำกัดในการดึงข้อมูลจากเซิร์ฟเวอร์หลายแห่ง และส่วนติดต่อผู้ใช้ของตัวเบราว์เซอร์ ดังนั้นแอพพลิเคชันบางตัวจึงต้องใช้ปลั๊กอินภายนอกที่ให้ความสามารถที่เบราว์เซอร์ไม่มี วิธีการเหล่านี้ช่วยให้นักพัฒนาสามารถสร้างแอพพลิเคชันที่ทรงพลังมากขึ้น แต่ในขณะเดียวกันก็ก่อให้เกิดช่องว่างด้านความปลอดภัยเช่นกัน
แทนที่ AIR จะขยายความสามารถของเบราว์เซอร์ให้เป็นทั้งเบราว์เซอร์และรันไทม์สำหรับแอพพลิเคชัน AIR เลือกวิธีการทำตัวเป็นรันไทม์สำหรับสร้างแอพพลิเคชันโดยใช้เทคโนโลยีเว็บแทน AIR อนุญาตให้นักพัฒนาสร้างแอพพลิเคชันที่ดึงข้อมูลได้จากหลายแหล่ง และสร้างส่วนติดต่อผู้ใช้ของตัวเองได้โดยไม่ถูกจำกัดจากเบราว์เซอร์ การที่แอพพลิเคชัน AIR จำเป็นต้องติดตั้งลงในเดสก์ท็อปและต้องการการอนุญาตจากผู้ใช้ก่อน ทำให้แอพพลิเคชันเหล่านี้สามารถเข้าถึงทรัพยากรได้มากขึ้นแต่ก็ปลอดภัยไปพร้อมๆ กัน ซึ่งแอพพลิเคชันในเว็บเบราว์เซอร์ไม่สามารถมีสิทธิ์เข้าถึงแบบเดียวกันได้ ถ้าเบราว์เซอร์ยังยึดหลักว่าต้องมอบความปลอดภัยให้กับผู้ใช้เสมออยู่
โมเดลความปลอดภัยของ AIR มีประโยชน์ทั้งกับผู้ใช้และผู้พัฒนา สำหรับนักพัฒนาแล้ว เนื้อหาภายใต้แอพพลิเคชัน AIR ซึ่งติดตั้งอยู่ในเครื่องของผู้ใช้เข้าถึง จะต้องไม่เปิดเผยตัวต่อเนื้อหาที่ไม่น่าเชื่อถือ (เช่น ไฟล์จากเว็บ) ตัวรันไทม์เองมีฟีเจอร์ที่ช่วยให้นักพัฒนาสร้างแอพพลิเคชันที่คำนึงถึงความปลอดภัยสูงสุด
ดังนั้นผู้ใช้ไม่ควรติดตั้งแอพพลิเคชัน AIR ที่ดาวน์โหลดมาจากแหล่งที่คิดว่าไม่น่าเชื่อถือเพียงพอ ซึ่งแนวคิดนี้ไม่ต่างอะไรกับการดาวน์โหลดแอพพลิเคชันทั่วไปและปลั๊กอินสำหรับเบราว์เซอร์ แอพพลิเคชันหลายตัวจำต้องใช้ปลั๊กอิน (เช่น Flash Player หรือ Quicktime) ส่วนเบราว์เซอร์ Firefox สามารถติดตั้ง extension เพื่อขยายความสามารถของเบราว์เซอร์ อย่างไรก็ตาม ไม่ว่าจะเป็นแอพพลิเคชัน ปลั๊กอิน หรือ extension ก็อาจเป็นอันตรายได้ และจำต้องใช้การตัดสินใจของผู้ใช้ว่าจะเชื่อแหล่งที่มาของมันหรือไม่
ความสามารถหนึ่งที่จะเพิ่มมาใน AIR 1.0 คือการตรวจสอบที่มาของผู้สร้างแอพพลิเคชัน ผู้ใช้ควรระมัดระวังที่มาของแอพพลิเคชันที่จะติดตั้ง โดยเฉพาะอย่างยิ่งแอพพลิเคชันนั้นไม่มีลายเซ็นดิจิทัลจากผู้พัฒนามาด้วย
ชุดเครื่องมือในการพัฒนา AIR
ปัจจัยหนึ่งที่ทำให้เว็บแอพพลิเคชันประสบความสำเร็จ คือนักพัฒนาสามารถสร้างแอพพลิเคชันที่ไม่ขึ้นกับแพลตฟอร์มได้ง่าย ไม่ว่าจะเป็นแมค วินโดวส์ ลินุกซ์ โซลาริส หรือแม้กระทั่งโทรศัพท์มือถือ
แต่นอกจากการทำงานบนหลายแพลตฟอร์มแล้ว วิธีการพัฒนาแบบข้ามแพลตฟอร์มก็ยังเป็นอีกปัจจัยของความสำเร็จนี้ด้วย เพราะว่านักพัฒนาสามารถสร้างแอพพลิเคชันจากแพลตฟอร์มใดก็ได้ โดยไม่ขึ้นกับระบบปฏิบัติการ
AIR ก็ยังคงจุดเด่นนี้ไว้เช่นกัน ไม่เพียงแค่ AIR จะทำงานข้ามแพลตฟอร์มได้เท่านั้น แต่การสร้างแอพพลิเคชัน AIR ก็สามารถพัฒนาบนระบบปฏิบัติการใดก็ได้
การสร้างแอพพลิเคชัน AIR ใช้เทคโนโลยีเว็บอย่าง HTML และ Flash ดังนั้นคุณสามารถใช้เครื่องมือที่คุณเคยใช้สร้างเว็บมาสร้างแอพพลิเคชัน AIR ได้ด้วย ชุด SDK ของ AIR ยังเพิ่มเครื่องมือแบบคอมมานด์ไลน์ซึ่งช่วยสนับสนุนการทดสอบ ดีบั๊ก และทำแพกเกจของ AIR อีกเช่นกัน
- ADL - ไว้รันแอพพลิเคชัน AIR เพื่อทดสอบโดยไม่ต้องติดตั้ง
- ADT - สร้างแพกเกจ AIR สำหรับแจกจ่ายให้ผู้ใช้ดาวน์โหลด
ถึงแม้ว่า Adobe จะเพิ่มความสามารถในการสร้างแอพพลิเคชัน AIR ไว้ในชุดเครื่องมือของตน แต่นั่นไม่ได้หมายความว่าคุณถูกบังคับให้ใช้เครื่องมือของ Adobe ในการสร้างแอพพลิเคชัน คุณสามารถพัฒนาแอพพลิเคชันจากเครื่องมือใดก็ได้ และเมื่อนำมาประกอบกับเครื่องมือคอมมานด์ไลน์ของ AIR (ซึ่งแจกฟรี) คุณก็จะได้แอพพลิเคชัน AIR โดยไม่ต้องเสียเงินและใช้สิ่งที่คุ้นเคยอยู่แล้ว
Tip: รายละเอียดของขั้นตอนการพัฒนาจะอยู่ในบทที่ 2
AIR มาแทนเว็บแอพพลิเคชันในเว็บเบราว์เซอร์หรือไม่?
มาถึงจุดนี้แล้วคุณอาจจะรู้สึกว่า AIR นั้นเยี่ยมมาก และไม่มีเหตุผลอะไรที่คนจะสร้างเว็บแอพพลิเคชันในเบราว์เซอร์อีกต่อไป คำถามก็คือ AIR จะทำให้คนเลิกสร้างเว็บแอพพลิเคชันหรือเปล่า?
คำตอบก็คือไม่
ถึงแม้ว่า AIR แก้ไขปัญหาหลายประการของการใช้งานแอพพลิเคชันในเบราว์เซอร์ อย่างไรก็ตามการใช้แอพพลิเคชันผ่านเบราว์เซอร์ก็ยังมีข้อดีของตัวเองอยู่ จำนวนเว็บแอพพลิเคชันที่มากมายมหาศาลในปัจจุบันแสดงให้เห็นว่าข้อดีของเบราว์เซอร์สามารถชดเชยข้อเสียที่เรากล่าวถึงไปตั้งแต่ต้นได้
แต่ AIR ไม่ใช่การเข้ามาแทนที่เว็บเบราว์เซอร์ การที่ AIR ใช้เทคโนโลยีเว็บแบบเดียวกับเบราว์เซอร์ ดังนั้นแอพพลิเคชันที่คุณพัฒนาขึ้นเพื่อเบราว์เซอร์ก็สามารถแปลงมาเป็น AIR ได้ง่าย คุณสามารถมีแอพพลิเคชันเวอร์ชันสำหรับเบราว์เซอร์ และเวอร์ชันสำหรับ AIR ไปพร้อมๆ กันได้ ซึ่งทั้งสองเวอร์ชันใช้เทคโนโลยี ภาษาโปรแกรม และฐานของโค้ดชุดเดียวกัน ในบรรดาแอพพลิเคชันยุคแรกๆ ของ AIR ที่ได้รับความนิยม เช่น FineTune หรือ eBay Desktop ต่างก็พัฒนามาจากเว็บแอพพลิเคชันทั้งสิ้น
Tip: คุณสามารถหาข้อมูลเพิ่มเติมของ Finetune Desktop ได้จาก http://www.finetune.com/desktop/ และ eBay "San Dimas" จาก http://blogs.ebay.com/projectsandimas
AIR เป็นส่วนเติมเต็มของเว็บแอพพลิเคชัน ไม่ได้มาแทนกันแต่อย่างใด