CHƯƠNG I: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về ngôn ngữ Dart 1.1 Khái niệm của Dart Dart là một ngôn ngữ lập trình hiện đại có mục đích chung, cấp cao, được phát triển ban đầu bởi Google. Đây là ngôn ngữ lập trình mới xuất hiện vào năm 2011, nhưng phiên bản ổn định của nó đã được phát hành vào tháng 6 năm 2017. Dart không quá phổ biến vào thời điểm đó, nhưng nó đã trở nên phổ biến khi được sử dụng bởi Flutter[1]. Dart là một ngôn ngữ lập trình động, dựa trên lớp, hướng đối tượng với phạm vi đóng và từ vựng.
Về mặt cú pháp, nó khá giống với Java, C và JavaScript. Nếu bạn biết bất kỳ ngôn ngữ lập trình nào trong số này, bạn có thể dễ dàng học ngôn ngữ lập trình Dart. Dart là một ngôn ngữ lập trình mã nguồn mở được sử dụng rộng rãi để phát triển ứng dụng di động, ứng dụng web hiện đại, ứng dụng máy tính để bàn và Internet of Things (IoT) bằng cách sử dụng khung Flutter. Nó cũng hỗ trợ một số khái niệm nâng cao như giao diện, mixin, lớp trừu tượng, tổng thể trường và giao diện kiểu.
Nó là một ngôn ngữ biên dịch và hỗ trợ hai loại kỹ thuật biên dịch[1]. - AOT (Ahead of Time) – Nó chuyển đổi mã Dart sang mã JavaScript được tối ưu hóa với sự trợ giúp của trình biên dịch dar2js và chạy trên tất cả các trình duyệt web hiện đại. Nó biên dịch mã tại thời điểm xây dựng[1].2 Lịch sử hình thành ngôn ngữ Dart Dart được tiết lộ lần đầu tiên trong hội nghị GOTO vào tháng 10 – 12 tháng 10 năm 2011 tại Aarhus, Đan Mạch. Ban đầu nó được thiết kế bởi Lars và Kespar và được phát triển bởi Google.0 đầu tiên của Dart được phát hành vào ngày 14 tháng 11 năm 2013, nhằm mục đích thay thế JavaScript.
Vào tháng 7 năm 2014, ấn bản đầu tiên của ngôn ngữ Dart đã được Ecma International thông qua tại Đại hội đồng lần thứ 107 của tổ chức này. Phiên bản đầu tiên đã bị chỉ trích do sự cố trên web và kế hoạch này đã bị loại bỏ vào năm 2015 với bản phát hành 1. Phiên bản thứ hai của Dart 2.0 được phát hành vào tháng 8, bao gồm một hệ thống âm thanh. Phiên bản gần đây Dart 2.7 Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản được bổ sung thêm phương thức mở rộng, cho phép người dùng thêm bất kỳ loại chức năng nào[1].3 Tại sao sử dụng ngôn ngữ Dart Dart là một ngôn ngữ độc lập với nền tảng và hỗ trợ tất cả các hệ điều hành như Windows, Mac, Linux, v.
Nó là một ngôn ngữ mã nguồn mở, có nghĩa là nó có sẵn miễn phí cho tất cả mọi người. Nó đi kèm với giấy phép BSD và được công nhận bởi tiêu chuẩn ECMA. Nó là một ngôn ngữ lập trình hướng đối tượng và hỗ trợ tất cả các tính năng của oops như kế thừa, giao diện và các tính năng kiểu tùy chọn. Dart rất hữu ích trong việc xây dựng các ứng dụng thời gian thực vì tính ổn định của nó.
Dart đi kèm với trình biên dịch dar2js để truyền mã Dart thành mã JavaScript chạy trên tất cả các trình duyệt web hiện đại. Máy ảo Dart độc lập cho phép mã Dart chạy trong môi trường giao diện dòng lệnh[2]. Mọi thứ trong Dart được coi như một đối tượng bao gồm, số, Boolean, hàm, v. giống như Python.
Tất cả các đối tượng kế thừa từ lớp Đối tượng. Công cụ Dart có thể báo cáo hai loại sự cố trong khi mã hóa, cảnh báo và lỗi. Cảnh báo là dấu hiệu cho thấy mã của bạn có thể có một số vấn đề, nhưng nó không làm gián đoạn quá trình thực thi của mã, ngược lại lỗi có thể ngăn chặn việc thực thi mã. Dart hỗ trợ gõ âm thanh.4 Tính năng của Dart Dart là một ngôn ngữ lập trình hướng đối tượng, mã nguồn mở, chứa nhiều tính năng hữu ích.
Đây là ngôn ngữ lập trình mới và hỗ trợ một loạt các tiện ích lập trình như giao diện, bộ sưu tập, lớp, kiểu gõ động và tùy chọn. Nó được phát triển cho máy chủ cũng như trình duyệt. Dưới đây là danh sách các tính năng quan trọng của Dart. Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản Hình 1: Tính năng của ngôn ngữ Dart Mã nguồn mở: Dart là một ngôn ngữ lập trình mã nguồn mở, có nghĩa là nó có sẵn miễn phí.
Nó được phát triển bởi Google, được phê duyệt bởi tiêu chuẩn ECMA và đi kèm với giấy phép BSD[2]. Nền tảng độc lập: Dart hỗ trợ tất cả các hệ điều hành chính như Windows, Linux, Macintosh, v. Dart có Máy ảo riêng được gọi là Dart VM, cho phép chúng tôi chạy mã Dart trong mọi hệ điều hành[2]. Hướng đối tượng: Dart là một ngôn ngữ lập trình hướng đối tượng và hỗ trợ tất cả các khái niệm oops như lớp, kế thừa, giao diện và các tính năng gõ tùy chọn.
Nó cũng hỗ trợ các khái niệm nâng cao như mixin, abstract, các lớp, hệ thống kiểu chung được sửa đổi và mạnh mẽ[2]. Đồng nhất: Dart là một ngôn ngữ lập trình không đồng bộ, có nghĩa là nó hỗ trợ đa luồng sử dụng Isolates. Các vùng cách ly là các thực thể độc lập có liên quan đến các luồng nhưng không chia sẻ bộ nhớ và thiết lập giao tiếp giữa các quá trình bằng cách truyền thông điệp. Thông điệp nên được nối tiếp nhau để tạo hiệu quả truyền thông.
Việc tuần tự hóa thông báo được thực hiện bằng cách sử dụng một ảnh chụp nhanh được tạo ra bởi đối tượng đã cho và sau đó truyền đến một vùng cách ly khác để giải mã[2]. Thư viện mở rộng: Dart bao gồm nhiều thư viện tích hợp hữu ích bao gồm SDK (Bộ phát triển phần mềm), lõi, toán học, không đồng bộ, toán học, chuyển đổi, html, IO, v. Nó cũng cung cấp cơ sở để tổ chức mã Dart thành các thư viện với không gian tên riêng. Nó có thể sử dụng lại bằng câu lệnh nhập.
Dễ học: Như chúng ta đã thảo luận trong phần trước, học Dart không phải là nhiệm vụ của Hercules vì cú pháp của Dart tương tự như Java, C #, JavaScript, Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản kotlin, v. nếu bạn biết bất kỳ ngôn ngữ nào trong số này thì bạn có thể học Dart dễ dàng. Biên dịch linh hoạt: Dart cung cấp sự linh hoạt để biên dịch mã và nhanh chóng. Nó hỗ trợ hai loại quy trình biên dịch, AOT (Ahead of Time) và JIT (Just-in-Time).
Mã Dart được truyền bằng ngôn ngữ khác có thể chạy trong các nhà sản xuất web hiện đại[2]. Nhập an toàn: Dart là ngôn ngữ an toàn kiểu, có nghĩa là nó sử dụng cả kiểm tra kiểu tĩnh và kiểm tra thời gian chạy để xác nhận rằng giá trị của một biến luôn khớp với kiểu tĩnh của biến, đôi khi nó được gọi là kiểu gõ âm thanh. Mặc dù loại là bắt buộc, nhưng chú thích loại là tùy chọn vì loại nhiễu. Điều này làm cho mã dễ đọc hơn.
Ưu điểm khác của ngôn ngữ an toàn kiểu chữ là khi chúng ta thay đổi phần mã, hệ thống sẽ cảnh báo chúng ta về sửa đổi mà chúng ta đã sửa trước đó. Các đối tượng: Dart coi mọi thứ như một đồ vật. Giá trị gán cho biến là một đối tượng. Các hàm, số và chuỗi cũng là một đối tượng trong Dart.
Tất cả các đối tượng kế thừa từ lớp Đối tượng. Hỗ trợ trình duyệt: Dart hỗ trợ tất cả các trình duyệt web hiện đại. Nó đi kèm với trình biên dịch Dart2JS để chuyển đổi mã Dart thành mã JavaScript được tối ưu hóa phù hợp với tất cả các loại trình duyệt web[2]. Cộng đồng: Dart có một cộng đồng lớn trên toàn thế giới.
Vì vậy, nếu bạn gặp vấn đề trong khi viết mã thì rất dễ dàng tìm được trợ giúp. Nhóm các nhà phát triển chuyên dụng đang làm việc để nâng cao chức năng của nó.2 Tổng quan về framework Flutter 1.1 Khái niệm của Flutter Flutter là một framework lập trình để xây dựng các ứng dụng di động đa nền tảng. Nguồn gốc của nó bắt nguồn từ Google Chrome và những nỗ lực của một nhóm chuyên tinh chỉnh cho web chạy nhanh hơn. Eric Seidel là người sáng lập dự án Flutter và trong cuộc phỏng vấn trên SE Daily, anh kể lại cách anh và một vài đồng nghiệp trong nhóm Chrome quyết định xem họ có thể làm Chrome tải các trang nhanh hơn.
Họ đã phát hiện ra rằng phần lớn code của Chrome đang làm chậm việc load trang web và chỉ có để cung cấp khả năng tương thích với một bộ phận các trang web rất nhỏ. Họ loại bỏ những bộ phận đó ra để xem có thể làm nó nhanh như thế nào. Nỗ lực này đã chứng minh rằng có rất nhiều tiềm năng trong việc tạo ra một framework giao diện người dùng đa nền tảng Báo cáo thực tập tốt nghiệp – Trịnh Nhật Hạ Vy & Nguyễn Đình Toản thực sự nhanh chóng. Không may, nếu Eric và nhóm của anh ấy muốn nhanh chóng đưa framework UI đa nền tảng vào tay các lập trình viên thì đó sẽ phải là một thứ gì đó không phải là web, vì họ nhận ra rằng web cập nhật rất chậm khi áp dụng các tiêu chuẩn mới.
Do đó, dự án Flutter ra đời[3]. Flutter là một SDK mới của Google dành cho các thiết bị di động giúp developers và designers xây dựng nhanh chóng ứng dụng dành cho các thiết bị di động (Android, iOS). Flutter là dự án mã nguồn mở đang trong giai đoạn thử nghiệm. Flutter bao gồm Reactive framework và công nghệ hiển thị 2D (2D rendering engine) và các công cụ phát trển (development tool).
Các thành phần này làm việc cùng nhau giúp ta thiết kế, xây dựng, test, debug ứng dụng. Không có gì ngạc nhiên khi Flutter giúp các nhà phát triển tạo ra các ứng dụng native đẹp mắt và giúp họ phát triển các ứng dụng đa nền tảng một cách dễ dàng[3]. Flutter thường bao gồm 2 thành phần chính quan trọng như sau: - Một SDK (Software Development Kit): Đây là một bộ sưu tập bao gồm các công cụ có thể hỗ trợ cho người dùng có thể phát triển được các ứng dụng nền của mình. Những điều này thường bao gồm các công cụ có trình để biên dịch mã thành các mã gốc dành riêng cho hệ điều hành iOS và Android[3].2 Kiến trúc của Flutter Hình 2: Kiến trúc của Flutter Vẽ pixel trên màn hình là mục tiêu của tất cả các framework UI.
Flutter khác với các framework nền tảng chéo khác ở chỗ nó hiển thị trực tiếp lên màn hình thông qua OpenGL.