Phần mở đầu chiếm ưu thế với khoảng 86% thị phần[3]. Cũng theo một thống kê khác thì trung bình mỗi người dành 7 tiếng trong một ngày để sử dụng Smartphone[4]. Nắm bắt được nhu cầu và xu hướng hiện nay, nhóm chúng em quyết định chọn đề tài Xây dựng ứng dụng luyện thi TOEIC trên Android làm đề tài khóa luận tốt nghiệp. MỤC TIÊU Qua đề tài này, chúng em sẽ tìm hiểu được các kiến thức sau: Tìm hiểu tài liệu về Firebase trên Android.
Tìm hiểu về các thư viện Java có sẵn để phát triển giao diện trên Android. Tìm hiểu về JavaFX để xây dựng ứng dụng Windows Application. Từ các kiến thức tìm hiểu được, nhóm chúng em sẽ xây dựng ứng dụng luyện thi TOEIC trên trên nền tảng Android: Với giao diện thân thiện, nội dung đơn giản, dễ sử dụng Tạo một môi trường vừa học vừa chơi cho những người đang luyện thi TOEIC và đang muốn nâng cao kiến thức tiếng Anh của mình mọi lúc, mọi nơi. Đồng thời, cung cấp cho quản trị viên một ứng dụng trên Windows để có thể truy cập đến dữ liệu của ứng dụng.
Qua đó quản trị viên có thể thêm hoặc sửa các dữ liệu liên quan đến ứng dụng. [3] Thùy An, “iOS và Android "nuốt chửng" thị trường hệ điều hành trên smartphone”, Báo điện tử VTV, 27/2/2018, URL: https://vtv.vn/cong-nghe/ios-va-android-nuot-chung-thi-truong-he-dieu-hanh-tren- smartphone- htm [4] Thành Lương, “Người Việt bỏ ra 7 tiếng / ngày để sử dụng Internet”, Zing.vn, 6/12/2018, URL: https://news.vn/nguoi-viet-bo-ra-7-tiengngay-de-su-dung-internet-post898063.html 16 do an Chương 1: Cơ sở lý thuyết CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. TỔNG QUAN VỀ ANDROID[5] 1. Android là gì? Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng Linux.
Trước đây, Android được phát triển bởi công ty liên hợp Android (sau đó được Google mua lại vào năm 2005). Theo thống kê thì Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 2 năm 2017, với tổng cộng 2 tỷ thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày. Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động trong tương lai.
Từ giữa năm 2017, Google đã phát triển ngôn ngữ lập trình mới có tên là Kotlin để phát triển ứng dụng trên Android. Tuy vậy, Java vẫn là ngôn ngữ lập trình Android phổ biến nhất hiện giờ. Cấu trúc cơ bản của hệ điều hành Android Hình 1: Cấu trúc của hệ điều hành Android [5] Không rõ tác giả, “Giới thiệu sơ lược về hệ điều hành Android”, Programming Android, 21/8/2014, URL: https://androidseriestutorial.com/2014/08/gioi-thieu-so-luoc-ve-he-ieu-hanh.html 17 do an Chương 1: Cơ sở lý thuyết Android gồm 5 phần chính sau được chứa trong 4 lớp: Linux Kernel: Đây là nhân nền tảng mà hệ điều hành Android dựa vào nó để phát triển. Đây là lớp chứa tất cả các thiết bị giao tiếp ở mức thấp dùng để điều khiển các phần cứng khác trên thiết bị Android.
Libraries: Chứa tất cả các mã nguồn mở, cung cấp những tính năng chính của hệ điều hành Android, kiểu như ví dụ mã nguồn có trong tầng thư viện này thì SQLite là thư viện cung cấp việc hộ trợ làm việc với database dùng để chứa dữ liệu, hoặc Webkit là thư viện cung cấp những tính năng cho trình duyệt Web. Android Runtime: Là tầng cùng với lớp thư viện Android runtime cung cấp một tập các thư viện cốt lõi để cho phép các lập trình viên phát triển viết ứng dụng bằng việc sử dụng ngôn ngữ lập trình Java. Android Runtime bao gồm máy ảo Dalvik (ở các version < 4.4, hiện tài là phiên bản máy ảo ART được cho là mạnh mẽ hơn trong việc xử lý biên dịch). Là cái để điều khiển mọi hoạt động của ứng dụng Android chạy trên nó (máy ảo Dalvik sẽ biên dịch ứng dụng để nó có thể chạy (thực thi) được, tương tự như các ứng dụng được biên dịch trên máy ảo Java vậy.
Ngoài ra máy ảo còn giúp tối ưu năng lượng pin cũng như CPU của thiết bị Android Android Framework: Là phần thể hiện các khả năng khác nhau của Android (kết nối, thông báo, truy xuất dữ liệu) cho nhà phát triển ứng dụng, chúng có thể được tạo ra để sử dụng trong các ứng dụng của họ. Application: Tầng ứng dụng là tầng bạn có thể tìm thấy chuyển các thiết bị Android như liên lạc, trình duyệt…Và mọi ứng dụng bạn viết đều nằm trên tầng này. 18 do an Chương 1: Cơ sở lý thuyết 1. LẬP TRÌNH ANDROID VỚI NGÔN NGỮ LẬP TRÌNH JAVA[6] 1.
Ngôn ngữ lập trình Java Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995 (Java 1. Tính đến thời điểm này (tháng 5/2019) phiên bản mới nhất của Java Standard Edition (JSE) là 12. Với ưu thế về đa nền tảng (multi platform), Java càng lúc càng được ứng dụng rộng rãi trên nhiều thiết bị từ máy tính đến di động và nhiều thiết bị phần cứng khác… Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của các ngôn ngữ hướng đối tượng là: trừu tượng, đa hình, kế thừa và đóng gói. Bên cạnh đó Java còn có một số tính năng khác như: độc lập nền, đơn giản, bảo mật, đa luồng, hiệu suất cao và linh hoạt.
Lợi ích của việc lập trình Android bằng Java Đơn giản: Java được thiết kế để dễ sử dụng, viết, biên dịch, gỡ lỗi và học hơn các ngôn ngữ lập trình khác. Hướng đối tượng: Cho phép bạn tạo các chương trình mô-đun và mã có thể tái sử dụng. Không phụ thuộc vào nền tảng: Khả năng di chuyển dễ dàng từ hệ thống máy tính này sang hệ thống khác Công cụ và thư viện: Có lượng API, công cụ và thư viện hỗ trợ phong phú Bảo mật: Ngôn ngữ Java, trình biên dịch, trình thông dịch và runtime environtment đều được phát triển với sự chú trọng về bảo mật. Cộng đồng lớn mạnh: Java được xem là ngôn ngữ phổ biến nhất trên thế giới, nên cộng đồng lập trình viên về Java cũng mạnh mẽ, do đó việc lập trình cũng sẽ hiệu quả hơn.
Hồ Sỹ Hùng, “Java là gì? Tại sao bạn nên học lập trình Java?”, Techmaster, 10/3/2016, [6] URL: https://techmaster.vn/posts/33794/java-la-gi-tai-sao-ban-nen-hoc-lap-trinh-java 19 do an Chương 1: Cơ sở lý thuyết 1. Rủi ro và hạn chế của việc lập trình Android bằng Java Cùng với những lợi thế, bạn sẽ luôn gặp phải những nhược điểm của bất kỳ nền tảng nào, Java cũng không ngoại lệ. Có một số nhược điểm mà bạn sẽ tìm thấy trong quá trình sử dụng. Đây là một số nhược điểm của việc sử dụng Java: Trình biên dịch Java chưa được tối ưu hóa tốt so với C ++.
Không có sự tách biệt đặc điểm kỹ thuật khi triển khai. Quản lý bộ nhớ, với Java, là khá tốn kém. Việc thiếu các template có thể hạn chế khả năng của Java để tạo ra các cấu trúc dữ liệu chất lượng cao. Người ta có thể tìm thấy một số lỗi trong các chương trình ví dụ.
Tổng kết Với những lợi ích kể trên thì việc phát triển ứng dụng Android bằng Java sẽ dễ dàng hơn rất nhiều cho các lập trình viên. Từ đó sẽ mang lại sự hiệu quả cho các ứng dụng Android và giúp người dùng hài lòng hơn với các sản phẩm từ Android với ngôn ngữ lập trình Java. TỔNG QUAN VỀ FIREBASE Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. Đây là một nền tảng rất tuyệt vời để phát triển nhanh các ứng dụng.
Các chức năng chính của Google Firebase 1. Realtime Database – Cơ sở dữ liệu thời gian thực Firebase lưu trữ dữ liệu dưới dạng JSON và thực hiện đồng bộ cơ sở dữ liệu tới tất cả các client theo thời gian thực. Cụ thể hơn là ta có thể xây dựng được client đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung 1 cơ sở dữ liệu đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong cơ sở dữ liệu được thêm mới hoặc sửa đổi. 20 do an Chương 1: Cơ sở lý thuyết Tự động tính toán quy mô ứng dụng của bạn: khi ứng dụng của bạn muốn phát triển, bạn không cần lo lắng về việc nâng cấp máy chủ.
Firebase sẽ xử lý việc tự động cho bạn. Các máy chủ của Firebase quản lý hàng triệu kết nối đồng thời và hàng tỉ lượt truy vấn mỗi tháng. Các tính năng bảo mật lớp đầu: tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048-bit. Cơ sở dữ liệu truy vấn và việc xác nhận được điều khiển tại một cấp độ chi tiết sử dụng theo một số các quy tắc mềm dẻo (security rules language).
Tất cả các logic bảo mật dữ liệu của bạn được tập trung ở một chỗ để dễ dàng cho việc cập nhật và kiểm thử. Làm việc ngoại tuyến: ứng dụng Firebase sẽ duy trì tương tác bất chấp một số các vấn đề về Internet xảy ra. Trước khi bất kỳ dữ liệu được ghi đến server thì tất cả dữ liệu lập tức sẽ được viết vào một cơ sử dữ liệu Firebase ở local. Ngay khi có thể kết nối lại, client đó sẽ nhận bất kỳ thay đổi mà nó thiếu và đồng bộ hoá nó với trạng thái hiện tại server.
Firebase Authentication – Hệ thống xác thực của Firebase Với Firebase, ta có thể dễ dàng tích hợp các công nghệ xác thực của Google, Facebook, Twitter,… hoặc một hệ thống xác thực mà bạn tự mình tạo ra vào trong ứng dụng của bạn ở bất kì nền tảng nào như Android, iOS hoặc Web. Những lợi ích từ việc sử dụng Google Firebase 1. Triển khai ứng dụng cực nhanh Với Firebase bạn có thể giảm bớt rất nhiều thời gian cho việc viết các dòng lệnh để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase. Không chỉ có vậy, Firebase còn hỗ trợ đa nền tảng nên bạn sẽ càng đỡ mất thời gian rất nhiều khi ứng dụng bạn muốn xây dựng là ứng dụng đa nền tảng.