[iOS - Android] So sánh lập trình iOS và Android

Tác giả Lubos Mikusiak là người Hà Lan sống ở Amsterdam, là lập trình viên nhiều kinh nghiệm, có thể lập trình nhiều ngôn ngữ và có nhiều app cho iOS và Android

1. Giới thiệu
Năm 2011, tôi có viết vài app trên nền tảng iOS nó trở nên khá nổi, tôi nhận được nhiều câu hỏi là khi nào thì có bản cho Android, Vào tháng 11 năm 2012 tôi bắt đầu chuẩn bị vài tuần học Android và và mất vài tháng để chuyển các app của tôi sang nên tảng này.

Trong khi lập trình tôi đã rút ra được một số kinh nghiệm tôi sẽ chia sẻ với các bạn trong bài viết này. Tôi sẽ trung vào việc phân tích cách lập trình native Objective C trên iOS và Java trên Android. Thực ra tôi thích lập trình trên iOS hơn và tôi cũng sẽ xem xét 1 số khía cạnh để lập trình Android tốt hơn.

2. Về môi trường phát triển
Bạn sẽ cần thiết bị iOS và android như iPhone, iPad, android phone..., PC hoặc laptop. Nếu bạn chỉ có ý định học tập nghiên cứu thì PC/laptop với IDE và SDK là đủ, nếu có ý định phát triển app và đưa lên store thì bạn phải có mobile device.

Apple và Apple

Nếu muốn lập trình cho iOS bạn phải có máy Mac. IDE cho lập trình iOS là Xcode cùng với SDK và simulator chỉ chạy trên máy Mac, cho đến tháng 4-2011 thì chỉ có mỗi thứ này là có thể dùng để lập trình trên iOS, sau này có thêm AppCode của JetBrains nhưng mà nó cũng chỉ chạy trên Mac

Android và nhiều OS

bạn có thể lập trình Android trên Windows, MacOS hoặc Linux. Việc dễ nhất để bắt đầu lập trình Android là download Android Development Tools, IDE cho lập trình Android bạn có thể chọn Eclipse hoặc Intelij Idea của Jet Brains. Intelij Idea bản commmunity là quá đủ để lập trình android.

3. Hiều về Platform


iOS - Cổ xưa hơn bạn nghĩ


iOS là một platform hoàn thiện, nó được dựa trên hệ thống NeXTStep của những năm 90 thế kỷ trước (Nếu bạn biết về iOS API bạn có thể nhận thấy có rất nhiều class có tên bắt đầu bằng NS). Platform NeXTStep sau đó phát triển thành Mac OS, iOS là một phiên bản rút gọn của Mac OS. iOS được phát triển nhanh và liên tục có những version mới, API cũng thay đổi theo từng version.

Android - đang đi đến đích

Bản alpha release của Android xuất hiện năm 2007, các giao diện của nó đã trải qua khá nhiều biến đổi cho đến ngày nay. Các phiên bản alpha đầu tiên được lấy cảm hứng từ một phần của Blackberry, các phiên bản sau giống hơn với iOS. Android 3.0 dường như được lấy cảm hứng từ Windows Metro với rất nhiều không gian đen/trắng góc cạnh. Android 3.0 cũng bỏ đi 4 nút điều hướng cứng mà thay vào đó là 4 nút mềm trên màn hình cảm ứng. Các phiên bản của Android đã có những cải tiến quan trọng, điều này đặt gánh nặng lên các lập trình viên, muốn tận dụng được phần cứng và trải nghiệm mới cho người dùng phần mềm phải được cập nhật liên tục.

4. Về phần cứng


iPhone

iPhone ban đầu được tung ra với CPU ARM 412MHz, 128MB RAM và 4GB bộ nhớ flash và cho đến gần đây iPhone 5 với Dual core 1.3GHz Apple A6 CPU, 1GB RAM và 16GB bộ nhớ tối thiểu flash. Khi lập trình iOS bạn phải nhớ rằng bộ nhớ không phải là vấn đề, bạn có thể mở nhất nhiều view trong phần mềm của bạn và chúng sẽ chiếm bộ nhớ kể cả lúc không hiện ra, khi bộ nhớ đầy, hệ điều hành sẽ tự dọn dẹp khi đầy để tránh việc rò rỉ bộ nhớ.

Một GPU hỗ trợ OpenGL đã mặt định trong iPhone, có nghĩa là hình ảnh động có thể tận dụng lợi thế của OpenGL. Đó là lý do tại sao hình ảnh động trên iPhone luôn mượt mà và trơn tru.

Android phone

Các yêu cầu ban đầu cho các thiết bị Android trong năm 2008 như sau: CPU 200MHz, RAM 32MB và 32MB bộ nhớ flash. Yêu cầu tối thiểu cho Android 3.0 và cao hơn là CPU 1GHz, RAM 256MB và 512MB bộ nhớ flash. Mặc dù yêu cầu phần cứng tăng đáng kể, Android vẫn cư xử như những hạn chế bộ nhớ từ năm 2008. Nó giới hạn số lượng dữ liệu, trong đó các ứng dụng có thể giữ trong bộ nhớ. Khi một view không được hiện, Android sẽ deallocate tất cả các yếu tố giao diện người dùng của view đó khỏi bộ nhớ. Tiếp theo khi view được hiển thị, các yếu tố giao diện được tái tạo lại một lần nữa, lúc này các lập trình viên phải viết code để lưu trữ các trạng thái giao điện để nó còn được thể hiện ở các lần sau đó. OpenGL không phải là một yêu cầu phần cứng ngay từ đầu, các hình ảnh động trên các thiết bị Android được render bằng CPU làm cho hình ảnh thể hiện không được mượt mà bằng iOS.

5. Emulator và Simulator

Android Emulator – Vẫn còn chặng đường dài phía trước

Android Emulator là một máy ảo giả lập chạy trên máy chủ, chạy được trên cả Windows, Mac OS và Linux. Emulator có cả mặt tốt và mặt hạn chế, mặt tốt là một bản dịch của phần mềm có thể chạy được trên cả Emulator và Android phone, mặt hạn chế là nó chạy rất chậm do phải dịch lại, mỗi lệnh chạy trên CPU máy ảo phải được dịch lại để chạy trên CPU máy chủ. Hầu hết các tùy biến trên Emulator được thực hiện thông qua console bởi telnet, từ console này bạn có thể config network, mô phỏng cuộc gọi hay SMS, GPS.... Ngoài ra còn có một tập phong phú các phím tắt kích hoạt các sự kiện khác nhau của Emulator như quay số, gác máy, tăng giảm volume, xoay điện thoại...

Mỗi khi bạn chạy thử phần mềm trên Emulator, phải mất 1-5 phút để Emulator khởi động tùy thuộc vào tốc độ của CPU máy bạn, điều này làm tôi rất bực mình, nếu Emulator mà lại treo giữa chừng hoặc SDK bị crash khi đang debug thì lại phải khởi động lại Emulator, và lại phải chờ đợi rất mệt mỏi. Để cải thiện nhược điểm này, người ta có thể có tùy chọn là lưu lại trạng thái của máy ảo trong bộ nhớ (giống hibernate ở Windows) nhưng cũng không khá hơn là mấy vì đôi khi Emulator không restore lại được từ trạng thái hibernate và bạn lại phải khởi động lại. Thường thì người ta cứ để Emulator chạy liên tục trong lúc debug chương trình để đỡ mất thời gian khởi động.

Tài liệu hướng dẫn cài đặt Android khuyến cáo tăng cách tốc máy ảo để CPU Intel có thể tậ dụng được các phần mở rộng của CPU ảo hóa, các tài liệu cũng cho rằng đây chỉ là tính năng thử nghiệm và có thể có nhiều lỗi. Tôi cài cài này trên Macbook pro và cứ mỗi khi khởi động máy ảo là máy thật lại bị treo và phải dùng uninstall.sh để gỡ bỏ nó. Chúng ta hi vọng nó sẽ được cải thiện tốt hơn trong tương lai.

iOS Simulator – Trải nghiệm mượt mà

iOS Simulator được tích hợp trong phần mềm soạn thảo Xcode, bạn có thể giả lập cả iPhone và iPad. Mỗi phiên bản Xcode chứa iOS SDK của phiên bản hiện tại và một phiên bản trước đây, bạn cũng có thể tải về cài đặt các phiên bản cũ hơn. Xcode biên dịch các ứng dụng mô phỏng cho chipset Intel. Việc này có ưu điểm và cũng có nhược điểm. Ưu điểm là các ứng dụng được mô phỏng nhanh chóng nó chạy như một ứng dụng desktop chạy trong một container mô phỏng. Nhược điểm là bản dịch này khác với bản dịch cho iDevice CPU (kiến trúc ARM). Apple khuyến cáo sử dụng các Simulator như một công cụ kiểm tra sơ bộ để tăng tốc độ lập trình và không phải là một sự thay thế của các thử nghiệm trên thiết bị. Cá nhân, tôi tìm thấy vài lỗi trên thiết bị, mà tôi đã không phát hiện trên simulator

*******

Một số tài liệu và khoá học bổ ích dành cho bạn: 

# Giáo trình: Lập Trình Android [Click để xem]

# Khoá học online:  Lập trình Android toàn tập [Click để xem]

Theo ZiiZapp