04/07/2011
0

Nền tảng nào: iOS hay Android

Điện thoại thông minh (smartphone), các ứng dụng di động vẫn là cách tiếp cận mới cuốn hút các nhà phát triển, trong đó nổi bật hơn cả là hai nền tảng Android và iOS.

Chúng ta sẽ lướt qua “hạ tầng” cũng như một vài đặc điểm nổi bật của hai nền tảng Android và iOS đang được các nhà phát triển tập trung cho các ứng dụng của họ.

Android đa lĩnh vực

Android là một nền tảng nguồn mở, gồm hệ điều hành (HĐH), phần mềm lớp giữa (middleware) và các ứng dụng dành riêng cho việc phát triển các thiết bị di động. Tiềm năng của Android khá lớn vì có thể góp mặt trên nhiều thiết bị khác nhau. Thực tế, Android là một khung tổ chức ứng dụng nằm phía trên lớp Linux nên dễ dàng được triển khai trên các lĩnh vực khác. Hầu hết mã nguồn của Android đều thông qua việc cấp phép của Apache, cho phép nhà phát triển có thể thêm những giá trị khác biệt vào nguồn Android mà không cần công bố nguồn đó.

Chỉ vài năm sau khi tiếp quản Android (năm 2005), Google tung ra chiếc điện thoại Android đầu tiên, đồng thời công bố mã lệnh Android là nguồn mở. Từ đó, nền tảng Android không chỉ dừng lại trên thiết bị cầm tay, nhiều nhà phát triển đã nhìn thấy cơ hội lớn hơn để phát triển Android trên các thiết bị trong lĩnh vực viễn thông, tự động hóa, y khoa và thiết bị gia dụng… Tất cả đều là những lĩnh vực có thể “săn” Android.

Kiến trúc Android gồm 4 lớp thành phần: 

Lớp dưới cùng là “nhân” Linux kernel (phiên bản Linux 2.6) với khoảng 115 bản vá cung cấp các chức năng cơ bản như theo dõi luồng tiến trình và quản lý bộ nhớ cũng như bảo mật. 

Phía trên lớp Linux kernel là bộ thư viện (librabries). Trong đó hai thành phần quan trọng là bionic (Google libc) và Dalvik. Libc hỗ trợ đa phương tiện (âm thanh và hình ảnh, đồ họa và cơ sở dữ liệu với dung lượng nhỏ). Đây là kho để lưu trữ và chia sẻ dữ liệu ứng dụng. Trong khi đó, một thành phần quan trọng khác của hệ thống Android là máy ảo Dalvik – được thiết kế cho Android với 2 nhiệm vụ: giúp chạy nhiều luồng xử lý đồng thời và đóng vai trò là một bộ nhớ hiệu quả. Ngoài ra, thông qua Linux, máy ảo Dalvik còn quản lý bộ nhớ và các đa tiểu trình. 

Kế tiếp là lớp khung tổ chức ứng dụng (Applications Framework) chứa nhiều dịch vụ ở cấp độ cao hơn dành cho các ứng dụng hình thành từ các lớp Java. Nhiệm vụ quan trọng của lớp này là chia sẻ hàm. Mỗi ứng dụng có thể xuất hàm nào đó để dùng cho những ứng dụng khác trong hệ thống, nhờ đó mà các phần mềm có thể được sử dụng lại và thân thiện với người dùng hơn.

Phản hồi của các nhà phát triển

Lớp phía trên cùng là lớp ứng dụng (Applications). Một số thành phần của lớp này được chuẩn hóa và mỗi ứng dụng đều có một số hàm dùng cho các ứng dụng khác. Ví dụ, một thông điệp gửi qua ứng dụng SMS cũng có thể được dùng cho ứng dụng khác để gửi tin nhắn. 

Mặc dù có một số tùy chọn khác, nhưng các ứng dụng Android thông thường sẽ được triển khai trên Java thông qua máy ảo Dalvik. Bên cạnh đó, nhiều nhà phát triển cũng muốn ứng dụng của họ viết bằng ngôn ngữ C/C++ chạy trên thiết bị dùng HĐH Android. 

Đến thời điểm này, không ai có thể phủ nhận sức lan tỏa và vị trí vững chắc trên thị trường toàn cầu của HĐH Android. Hiện tại các nhà phát triển vẫn tiếp tục đưa Android vào các loại thiết bị khác và các ứng dụng nhúng, tuy nhiên vẫn còn đó những thách thức dành cho Android trong việc làm thế nào để có thể tương thích với các loại thiết bị khác ngoài thiết bị di động.

iOS độc bước

iOS (vào trước tháng 6 năm 2010, iOS được biết đến với tên là HĐH iPhone) là HĐH trên thiết bị di động của Apple như iPhone, iPod Touch và iPad. Apple không cấp phép việc cài đặt HĐH iOS cho hãng thứ 3. Giao diện người dùng của iOS dựa trên khái niệm vận dụng điều hướng (direct manipulation) thông qua sử dụng cử động đa chạm. Các thành phần giao diện gồm dạng trình diễn (slider), chế độ chuyển đổi và các nút. iOS kế thừa từ Mac OS X, gồm có 4 lớp: lớp Core OS, lớp Core Services, lớp Media và lớp Cocoa Touch.

Vào tháng 2/2008, Steve Jobs, Giám đốc điều hành của Apple, thông báo bộ phát triển phần mềm (Software development kit – SDK) đã sẵn sàng cho các nhà phát triển của hãng thứ 3. SDK cho phép các nhà phát triển tạo ứng dụng cho iPhone và iPod Touch, tuy nhiên để ứng dụng có mặt trên các thiết bị của Apple thì nhà phát triển phải trả phí thành viên trong chương trình iPhone Developer Program. Từ khi Apple giới thiệu Xcode 3.1 – môi trường phát triển cho SDK của iOS, các ứng dụng được viết bằng ngôn ngữ Objective-C, đây là ngôn ngữ này phổ biến hơn C. Objective-C được mở rộng từ ngôn ngữ C, gọn, mềm dẻo và linh động, bất kỳ chương trình ngôn ngữ C nào cũng có thể biên dịch trong trình biên dịch của Objective-C, đồng thời nhà phát triển cũng có thể viết code C trong lớp Objective-C. 

Phản hồi của các nhà phát triển

Tuy nhiên, qua nhiều năm, một số bộ công cụ và các nền tảng phát triển mới đã xuất hiện nên giúp các lập trình viên có thể tạo ứng dụng trên nền iOS mà không cần biết nhiều về ngôn ngữ Objective-C. Ví dụ, một số bộ công cụ như Rhodes của Rhomobile, PhoneGap của Nitobi, Titanium của Appcelerator và Corona của Ansca. Đây là các công cụ dùng để tạo các ứng dụng tương đối đơn giản chạy trên nền tảng iOS hay BlackBerry, Windows Mobile, Symbian và Android.

 Khác biệt giữa iOS và Android

- Các nhà phát triển ưa chuộng Android vì đây là nền tảng phát triển mở, trong lúc đó iOS là nền tảng độc quyền của Apple. 

- Nhà phát triển có thể thâm nhập vào thiết bị phần cứng Android hay có thể tạo các ứng dụng định vị bằng cách truy cập vào GPS hay thiết lập nhắc nhở người dùng các sự kiện thông báo và đưa thông tin khác để theo dõi trạng thái của thiết bị…Trong lúc, HĐH iOS sẽ giới hạn việc gửi các thông điệp dạng pop-up và chỉ cho phép một ứng dụng xuất hiện trong một thời điểm.

- Hãng Apple cung cấp thông tin cho các nhà phát triển ứng dụng iPhone ở dưới nhiều hình thức, cụ thể Apple đã công bố các hướng dẫn nhờ vào phương tiện đa truyền thông, nội dung bên trong có thể là các khái niệm quan trọng mà Apple muốn chia sẻ. Tuy nhiên những đoạn video hướng dẫn của Apple thường kéo dài đến vài giờ mới có thể tìm thấy thông tin cần thiết thay vì chỉ mất khoảng vài phút. Còn với Android, các ứng dụng nguồn mở được trình bày thành những dạng mẫu ứng dụng hay thành dạng chương trình nên dễ nắm bắt.

- Apple cũng có cung cấp giao diện lập trình ứng dụng mở dành cho các nhà phát triển không thích được đánh giá và công nhận từ App Store. Các nhà phát triển này có thể gói ứng dụng lên trang web riêng của họ và hướng dẫn người dùng tải và cài đặt. Tuy nhiên, nếu triển khai ứng dụng iPhone theo cách trên, nhà phát triển mất một nguồn thu lớn thay vì đưa ứng dụng của họ lên App Store. Ngược lại, Android Market không giới hạn các ứng dụng ngôn ngữ được viết hay không sở hữu bất cứ ứng dụng nào. Nhà phát triển có thể gửi cùng một ứng dụng nào đó vào một kho ứng dụng khác mà không bị hạn chế. 

- Nói đến ứng dụng dành cho doanh nghiệp, nền tảng BlackBerry vẫn chiếm ưu thế hơn. Tuy nhiên, Apple đã tạo ra nhiều cải tiến đáng để iPhone và iPad trở nên thân thiện hơn với môi trường doanh nghiệp, trong khi đó Android vẫn chưa thể hiện rõ nét ở mảng các ứng dụng cho doanh nghiệp. 

- Giao diện trên Apple được nhiều người dùng ưa chuộng và tất cả mọi hoạt động trên thiết bị đều có tính liên kết cao. Tuy nhiên, nếu bạn muốn kiểm soát hay tùy biến giao diện thì Android là lựa chọn tốt hơn.

- Khi mua các thiết bị di động của Apple thì bạn phải mua đúng một giá chuẩn do hãng quy định, trong lúc các điện thoại dùng HĐH Android có nhiều lựa chọn hơn vì do nhiều nhà cung cấp đưa ra ở nhiều mức giá khác nhau. 

- Về yếu tố bảo mật, do Android là nguồn mở nên những kẻ tấn công trên mạng "lăm le" và muốn tấn công vào HĐH này bất cứ lúc nào. Trong lúc các hệ thống khác cũng dễ bị thâm nhập, thì đến hiện giờ các ứng dụng trên HĐH iOS vẫn được “siết chặt” và được xem là nơi an toàn nhất.

Sơ lược về 4 thành phần trong ứng dụng Android

Một ứng dụng sẽ gồm 4 thành phần: hoạt động (activity), dịch vụ (service), thông báo sự kiện (broadcast receiver) và cung cấp nội dung (content provider). 

Activity: một hàm của ứng dụng, có thể được gọi bởi một hoạt động khác. Một activity có thể được gán mặc định và thực thi trực tiếp bởi người dùng.

Service: tương tự như activity, nhưng có điểm khác là chạy trên nền tảng mà không cần chạy trên giao diện người dùng. Ví dụ, một service trình nghe nhạc có thể hoạt động trong lúc người dùng thực hiện một tác vụ khác.

Broadcast receiver: phát tán những thông điệp được gửi đến từ các ứng dụng khác hay từ hệ thống. Ví dụ, nó có thể là thành phần hữu ích cho ứng dụng để nhận biết lúc nào một bức ảnh được chụp xong.

Content provider: cung cấp dữ liệu từ ứng dụng này đến ứng dụng khác theo yêu cầu. Các yêu cầu sẽ được xử lý bởi phương thức của lớp ContentResolver, dữ liệu có thể được lưu trữ trong hệ thống tập tin hay cơ sở dữ liệu.

Ví dụ dưới đây là tập tin XML có tên AndroidManifest.xml được lưu trong thư mục gốc của hệ thống tập tin ứng dụng mô tả từng activity tên MyActivity:

<?xml version="1.0" encoding="utf-8"?>
<manifest . . . >
<application . . . >
<activity android:name="com.example.project.MyActivity" ... >
</activity>
. . .
</application>
</manifest>

Theo PCWorld VN

Đăng nhập