inflearn logo
inflearn logo

[Phần UI Dự án Thực tế Java] Xây dựng ứng dụng thông tin phim dựa trên Spring Core + JavaFX

Trong khóa học [Dự án thực tế Java - Phần UI], chúng ta sẽ cùng xây dựng một ứng dụng cung cấp thông tin phim hoạt động thuần túy bằng công nghệ Java thông qua việc sử dụng JavaFX. Khóa học này được thiết kế để giúp bạn hiểu sâu về "cấu trúc kết nối giữa màn hình và logic" bằng cách trực tiếp triển khai xử lý sự kiện UI, logic bất đồng bộ và luồng tương tác người dùng bằng Java trước khi chuyển sang phát triển Web và ứng dụng điện thoại thông minh. Bạn sẽ được rèn luyện tư duy cấu trúc để tách biệt logic nghiệp vụ và UI thông qua việc liên kết với Spring Core, đồng thời hiểu được cách giải quyết vấn đề giảm hiệu suất UI có thể xảy ra trong quá trình lấy thông tin phim từ API bên ngoài bằng xử lý bất đồng bộ. Thông qua đó, bạn có thể hiểu rõ nguyên lý của luồng dữ liệu, trình lắng nghe sự kiện (event listener), xử lý bất đồng bộ dựa trên luồng (thread), và nâng tầm hiểu biết về chính ngôn ngữ Java lên một bậc mới. Nói cách khác, khóa học này là "giai đoạn thực hành để trải nghiệm bản chất của UI và cốt lõi của xử lý bất đồng bộ bằng Java trước khi tiến tới lập trình Web". Đừng quên rằng đây không phải là một lớp học chỉ để gõ theo mã nguồn, mà là một trải nghiệm học tập giúp bạn tự mình lĩnh hội nguyên lý kết nối giữa UI và logic.

5 học viên đang tham gia khóa học này

Độ khó Cơ bản

Thời gian Không giới hạn

Java
Java
JavaFX
JavaFX
Web API
Web API
Movie
Movie
spring-framework
spring-framework
Java
Java
JavaFX
JavaFX
Web API
Web API
Movie
Movie
spring-framework
spring-framework

Bạn sẽ nhận được điều này sau khi học.

  • Cách sử dụng kết hợp Interface và Abstract Class trong Java để loại bỏ mã trùng lặp

  • Cách trừu tượng hóa dịch vụ HTTP bằng cách kết hợp HTTP Client, Adapter và Factory

  • Cách kết nối giao diện JavaFX với logic nghiệp vụ bằng cách sử dụng API thông tin phim bên ngoài

  • Khả năng thiết kế và triển khai xử lý sự kiện UI, cập nhật màn hình và luồng nhập liệu của người dùng.

  • Cách cải thiện hiệu suất UI bằng cách sử dụng các cuộc gọi bất đồng bộ (Thread, CompletableFuture, Task, Platform.runLater, v.v.)

  • Cách tích hợp lớp UI JavaFX trong môi trường Spring Core

  • Cách áp dụng mô hình MVC (Model-View-Controller) trong môi trường JavaFX

  • Tách biệt vai trò giữa thiết kế UI dựa trên FXML và mã Controller

  • Rèn luyện tư duy mở rộng sang phát triển giao diện Web thông qua kiến trúc ứng dụng JavaFX

  • Làm quen với các khái niệm cốt lõi dẫn dắt đến Web (Event Loop, luồng bất đồng bộ, quản lý trạng thái) thông qua Java UI.

⭐ [Dự án thực tế Java phần UI] Xây dựng ứng dụng thông tin phim dựa trên Spring Core + JavaFX

“Dự án thực tế giúp bạn tự tay xây dựng ứng dụng UI bằng Java, đồng thời nắm vững từ việc kết nối API bên ngoài đến tối ưu hóa UI bằng lập trình bất đồng bộ!”


Khóa học này là khóa học dự án thực tế, nơi bạn sẽ trực tiếp xây dựng một ứng dụng máy tính để cung cấp thông tin phim bằng cách sử dụng Java, Spring Core và JavaFX.


Trước khi chuyển sang giao diện web hay di động, khóa học này được thiết kế để bạn có thể trải nghiệm luồng UI và xử lý sự kiện, cấu trúc bất đồng bộ, cũng như render màn hình dựa trên API chỉ với Java.

Mục tiêu của khóa học này không phải là để nắm vững chuyên sâu các kỹ năng JavaFX, mà là nhanh chóng nâng cao các khái niệm cốt lõi và khả năng triển khai thực tế để mở rộng sang các công nghệ UI với tư cách là một nhà phát triển Java.


Nếu ở phần 2 bạn đã thực hiện hệ thống đặt hàng trên console tập trung vào domain, thì ở phần 3 này bạn sẽ được trực tiếp trải nghiệm bản chất của ứng dụng UI như liên kết API bên ngoài, chuyển đổi màn hình, tối ưu hóa tải hình ảnh và xử lý bất đồng bộ.

Trong khóa học này, bạn có thể triển khai ứng dụng máy tính để cung cấp thông tin phim của riêng mình bằng cách sử dụng Spring Core và JavaFX.

⭐ Tại sao phần 3 của dự án nhỏ Java lại sử dụng JavaFX?

JavaFX không được sử dụng rộng rãi trong thực tế.
Mặc dù vậy, lý do chọn JavaFX trong bài giảng lần này là rất rõ ràng.


👉 “Ở giai đoạn mới bắt đầu trở thành nhà phát triển Java, việc học cả công nghệ UI web và di động cùng một lúc là không hiệu quả.”


Các framework frontend như React, Vue.js, Next.js có
độ dốc học tập cao, và sẽ là gánh nặng lớn đối với một nhà phát triển Java khi phải học chúng cùng lúc với việc học Java.

Tuy nhiên, nếu không có kinh nghiệm về luồng UI web, bạn rất dễ trở thành một nhà phát triển Java "nửa vời".

Tôi nghĩ JavaFX là công nghệ tuyệt vời nhất để học hỏi luồng xử lý phía UI này trong giai đoạn bắt đầu trở thành một nhà phát triển Java.


✔ Nắm vững cốt lõi của thiết kế cấu trúc UI bằng Java

  • Cấu trúc chuyển đổi màn hình

  • Xử lý sự kiện (Event Handling)

  • Xử lý bất đồng bộ

  • Quản lý trạng thái

  • Luồng vẽ màn hình (Rendering)

Tất cả những điều này đều được sử dụng tương tự trong giao diện người dùng web (Web UI).
Chỉ có công nghệ là khác biệt, còn "khái niệm" vẫn giữ nguyên.


Trực tiếp giải quyết các vấn đề phát sinh khi phát triển UI dựa trên API bên ngoài

Trải nghiệm kịch bản dịch vụ thực tế phản ánh dữ liệu phản hồi nhận được thông qua giao tiếp API bên ngoài vào giao diện người dùng (UI) thực tế.


✔ Trưởng thành từ quá trình tối ưu hóa những công nghệ bất tiện

JavaFX không tiện lợi như các framework UI hiện đại dùng trên web, và hiệu năng cũng không thực sự vượt trội.
Chính vì vậy, nó lại giúp chúng ta hiểu rõ hơn về việc:
“Tại sao bất đồng bộ lại quan trọng trong UI?”
“Tại sao việc tải hình ảnh cần phải được tách riêng ra các luồng (thread)?”


Bạn sẽ hiểu sâu sắc hơn về những phần bản chất này.

Đây chính là lý do cốt lõi khiến tôi thực hiện phần 3 của dự án nhỏ Java này.

🎁 Cuối cùng bạn sẽ sở hữu những năng lực nào?

  • ⭐ Bạn sẽ nắm vững kỹ thuật chung hóa để loại bỏ mã trùng lặp bằng cách sử dụng kết hợp giữa interface và abstract class trong Java.

  • ⭐ Bạn sẽ hiểu được lý do và cách thức xử lý bất đồng bộ trong UI bằng cách sử dụng CompletableFuture và các công cụ khác.

  • Trước khi học các công nghệ Web UI, bạn sẽ được tìm hiểu trước bằng Java về khái niệm "UI là gì?".

  • Khi hoàn thành UI bằng JavaFX, việc mở rộng sang các công nghệ UI khác như React, Android UI, HTML/CSS/JS sẽ trở nên dễ dàng hơn nhiều. such as React, Android UI, and HTML/CSS/JS.

  • Trải nghiệm toàn bộ luồng ứng dụng của sự kết hợp giữa Spring Core + UI để tiến lên cấp độ tiếp theo của một nhà phát triển thực thụ.


🧱 Đặc điểm khóa học

  • Thực hành dựa trên dự án:
    Không chỉ đơn thuần là làm theo, mà là cấu trúc tập trung vào thực hành, nơi học viên phải tự suy nghĩ và triển khai trước dựa trên các yêu cầu được đưa ra.

  • Tiến hành theo phương thức Học trước → Trực tiếp triển khai → Giải thích triển khai:
    Nếu có kỹ thuật cần thiết trong bài giảng, khái niệm sẽ được nắm bắt trước qua một buổi học riêng,
    sau khi học viên tự triển khai trước, sẽ tiến hành học so sánh với mã nguồn và giải thích từ phía giảng viên.

  • Thiết kế hướng thực tế:
    Toàn bộ quá trình từ phân tích yêu cầu đến cấu trúc hóa, triển khai và kiểm thử được xây dựng để bạn có thể trải nghiệm theo đúng quy trình làm việc thực tế.

🧰 Stack công nghệ sử dụng

  • Java 17+

  • Spring Framework Core

  • JavaFX 21


  • Framework kiểm thử JUnit


  • Cấu trúc kiến trúc phân lớp (Layered Architecture)

👨‍🏫 Đề xuất cho những đối tượng sau

✔ Mặc dù đã học cú pháp Java và Spring Core nhưng

Những người chưa từng có kinh nghiệm tự mình tạo ra một ứng dụng có giao diện người dùng (UI)


✔ Trước khi chuyển sang các công nghệ Frontend

Những người muốn trải nghiệm cấu trúc UI và luồng sự kiện bằng Java trước


✔ Những ai muốn biết tại sao xử lý bất đồng bộ lại quan trọng trong ứng dụng UI


✔ Vừa tạo ra ứng dụng UI thực tế dựa trên API vừa

Nhà phát triển Java muốn nâng cao năng lực triển khai dự án


✔ Sau khi học xong Java Mini Project 2 và

Những ai muốn tạo ra một ứng dụng "thân thiện với người dùng" hơn.

❤️ Tâm huyết của giảng viên

Khóa học này được chuẩn bị nhằm giúp bạn thoát khỏi việc chỉ đơn thuần là ‘chép lại mã code’, để bạn có được trải nghiệm tự mình thiết kế, triển khai và hoàn thiện ứng dụng của riêng mình.

Tôi nghĩ rằng dù công nghệ có tốt đến đâu, nếu bản thân không thể tự mình suy ngẫm và vận dụng thì cũng giống như việc 'chỉ biết ngẩn ngơ ngắm nhìn lễ hội pháo hoa rực rỡ mà không thể diễn tả được cảm xúc cảm động đó ra bên ngoài'.


Tôi sẽ hỗ trợ các bạn đến cùng để đây có thể là bước đệm đầu tiên giúp các bạn không chỉ dừng lại ở việc nhìn vào mã nguồn, mà thực sự trở thành “người có khả năng tự mình viết code” trong thực tế.

Đừng từ bỏ ước mơ trở thành nhà phát triển Java, tôi sẽ luôn ủng hộ và mong rằng bạn sẽ nỗ lực hết mình đến cùng để chắc chắn có thể bắt đầu sự nghiệp với tư cách là một nhà phát triển!

✅ Bạn có thắc mắc gì không?

Hỏi: Tôi chưa học các bài giảng phần 1 và phần 2, liệu chỉ học riêng khóa học này có ổn không?

Có thể.

Tuy nhiên, khác với môi trường console ở phần 1 và phần 2, khóa học này bao gồm các kỹ thuật UI/UX và nhiều nội dung liên quan đến tính đồng thời (concurrency) trong Java, vì vậy sẽ rất tốt nếu bạn tìm hiểu trước về Thread trong Java.

Hỏi: Tôi cần biết bao nhiêu về JavaFX để có thể thực hiện dự án trong khóa học này?

Trong khóa học lần này, chúng ta không triển khai các giao diện UI quá phức tạp bằng JavaFX.

Vì vậy, tôi nghĩ rằng chỉ cần học cách sử dụng JavaFX cơ bản là bạn hoàn toàn có thể theo kịp phần UI.

Hỏi: Bạn đã nói rằng JavaFX không được sử dụng trong thực tế phát triển, vậy tại sao lại sử dụng JavaFX làm công nghệ UI?
Đó là bởi vì tôi tập trung vào việc nâng cao năng lực Java bằng cách chỉ chú trọng vào những kiến thức cơ bản của ngôn ngữ Java.

Mục tiêu khi tôi lần đầu tiên thực hiện bài giảng này cũng là 'giúp bạn xây dựng nền tảng vững chắc về ngôn ngữ quan trọng nhất là Java'. Ngay cả trong thời điểm hiện tại khi mô hình phát triển đang thay đổi nhanh chóng (sang mô hình phát triển sử dụng các công cụ AI...), tôi nghĩ rằng các kỹ năng cơ bản về Java - ngôn ngữ có thể coi là nguồn gốc của hướng đối tượng - cần phải vững chắc hơn nữa, vì vậy tôi đã loại bỏ các công nghệ hoặc ngôn ngữ khác ở phía UI.

Tôi nghĩ rằng bằng việc sử dụng JavaFX, mình có thể trải nghiệm các mô hình phát triển UI, đồng thời vì chỉ sử dụng duy nhất ngôn ngữ Java nên có thể củng cố vững chắc hơn năng lực Java cơ bản của bản thân. ^^

Hỏi: Tôi có thể sử dụng AI để thực hiện dự án này không?
Việc sử dụng AI để xây dựng ứng dụng hiện đã trở thành một phương thức được các doanh nghiệp chấp nhận một cách tự nhiên, vì vậy tôi nghĩ rằng việc không sử dụng các AI như ChatGPT hay Gemini mới là điều lạ lẫm.

Tuy nhiên, tôi cho rằng việc dựa vào tài liệu yêu cầu trong bài giảng rồi yêu cầu AI "hãy làm thế này cho tôi" vẫn không phải là một hướng đi đúng đắn.

Tôi nghĩ rằng hầu hết những người muốn tham gia khóa học này đều là những người mới bắt đầu hoặc ở trình độ sơ cấp. Trong tình trạng bạn vẫn chưa tự tin vào tư duy lập trình và khả năng hiện thực hóa của bản thân, nếu quá phụ thuộc vào AI, tôi nghĩ bạn có thể đối mặt với tình huống mà nó thực sự làm mòn đi năng lực của chính mình.

💡 Lưu ý trước khi khóa học bắt đầu

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS)

    • Nếu là hệ điều hành của môi trường PC thì bất kể hệ điều hành nào cũng đều không thành vấn đề.

    • Tuy nhiên, bạn cần phải cài đặt được JDK 17 trở lên, và tốt nhất là máy tính nên có cấu hình (CPU, bộ nhớ, v.v.) đủ mạnh để chạy IntelliJ IDE một cách mượt mà trong quá trình thực hành.

  • Công cụ sử dụng

    • JDK 17 (Cấu hình tối thiểu)

    • JavaFx 2.1 trở lên

    • IntelliJ IDE

      • Phiên bản IntelliJ IDE được sử dụng trong bài giảng là bản Ultimate, nhưng việc sử dụng bản Community (miễn phí) cũng hoàn toàn không có vấn đề gì.

      • Ngay cả khi không phải là IntelliJ IDE, nếu bạn có công cụ chỉnh sửa mã nguồn nào mà bạn sử dụng thành thạo (như Visual Studio Code, v.v.) thì vẫn có thể sử dụng mà không có vấn đề gì.

    • Spring Boot 3.x trở lên

      • Trong bài giảng đang sử dụng Spring Boot phiên bản 3.5.7, và nếu bạn sử dụng Spring phiên bản 3.x thì việc theo dõi bài giảng sẽ không có vấn đề gì.


    • Gradle 7.3 (yêu cầu tối thiểu) trở lên

      • Vì phiên bản Gradle tương thích với JDK 17 là 7.3 nên tôi đã điều chỉnh phiên bản giữa cả hai cho phù hợp.

      • Nếu phát sinh vấn đề do khả năng tương thích của phiên bản, bạn nên tham khảo Java Compatibility và cố gắng điều chỉnh các phiên bản cho khớp với nhau nhất có thể.

    • JUnit 5 (yêu cầu tối thiểu) trở lên

🎓 Tài liệu học tập

Lưu ý

  • Nếu bạn muốn sử dụng tài liệu học tập và mã nguồn được sử dụng trong bài giảng trên không gian cá nhân như blog, vui lòng ghi rõ tiêu đề bài giảng, tên giảng viên và đính kèm link bài giảng. Ngoài ra, xin vui lòng thông cảm rằng việc phân phối trái phép là không được phép.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người đã nắm vững cú pháp Java và các cú pháp cơ bản, nhưng còn thiếu kinh nghiệm về luồng sự kiện UI và xử lý bất đồng bộ.

  • Những người đã học cú pháp Java và Spring Core nhưng chưa có kinh nghiệm trực tiếp tạo ra một ứng dụng có giao diện người dùng (UI).

  • Những người muốn tìm hiểu nguyên lý hoạt động của UI và cấu trúc tương tác người dùng bằng Java trước khi bắt đầu phát triển web.

  • Những bạn muốn trải nghiệm phát triển giao diện người dùng (UI) cho máy tính để bàn thông qua JavaFX và rèn luyện tư duy về front-end.

  • Những người đã học Spring Core nhưng muốn thực hành cấu trúc kết nối giữa tầng UI và logic nghiệp vụ (business logic)

  • Những người đã hoàn thành bài giảng phần 2 (Kiosk xe tải đồ ăn) và muốn thực hiện một dự án thực tế mở rộng sang môi trường UI.

  • Những ai muốn trực tiếp trải nghiệm lập trình bất đồng bộ bằng mã Java

  • Những người muốn thấu hiểu bản chất của luồng UI·UX trước khi bắt đầu trở thành nhà phát triển Web Front-end hoặc Java trong tương lai.

  • Nhà phát triển Java muốn nâng cao năng lực triển khai dự án thông qua việc xây dựng ứng dụng UI thực tế dựa trên API.

Cần biết trước khi bắt đầu?

  • Cú pháp Java và các khái niệm cơ bản về lập trình hướng đối tượng (OOP)

  • Kinh nghiệm sử dụng cơ bản Spring Core (Đăng ký Bean, DI, các lớp cấu hình, v.v.)

  • Hiểu biết cơ bản về việc gọi REST API và xử lý dữ liệu JSON

  • Khái niệm cơ bản về luồng xử lý đa luồng (Thread) hoặc bất đồng bộ (Async)

  • Sự quan tâm đến lập trình GUI

  • Đã từng tham gia khóa học Phần 2 (Kiosk xe đồ ăn) hoặc có kinh nghiệm thực hiện dự án console tương tự.

Xin chào
Đây là Kevin

6,482

Học viên

256

Đánh giá

109

Trả lời

4.8

Xếp hạng

8

Các khóa học

- Ngôn ngữ hoặc công nghệ chủ chốt: Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- Hoạt động với tư cách là Senior Educational Software Engineer (Backend) tại Codestates Co., Ltd. (https://www.codestates.com)
(Từ 03/2022 đến 31/01/2024)

- Hoạt động với tư cách là nhà phát triển tự do và giảng viên (Từ 2024.02)

- Tác phẩm (Sách đã xuất bản)

Xin chào, mình là Kevin. ^^

Rất vui được gặp gỡ các bạn với tư cách là giảng viên trên Inflearn.

Dù ở bất kỳ lĩnh vực nào cũng vậy, nhưng tôi nghĩ đặc biệt đối với một nhà phát triển phần mềm, cách duy nhất để tồn tại chính là không ngừng mài giũa bản thân để không bị tụt hậu so với những xu hướng luôn thay đổi. Tôi là một trong những nhà phát triển đang tận hưởng việc phát triển phần mềm với thái độ luôn luôn học hỏi.

Tôi bắt đầu các khóa học trên Inflearn với hy vọng rằng những kiến thức và kinh nghiệm của mình có thể giúp ích được phần nào cho mọi người.

Trong tương lai, tôi sẽ tiếp tục gặp lại các bạn học viên thông qua nhiều khóa học đa dạng mang lại những trợ giúp thực tế. Xin cảm ơn.

Mọi câu hỏi hay ý kiến đóng góp luôn được chào đón, vì vậy hãy thoải mái liên hệ với tôi qua email (it.village.host@gmail.com) nhé.

Chúng tôi sẽ tiếp tục gặp lại các bạn qua nhiều khóa học đa dạng khác. Xin cảm ơn. Mọi câu hỏi hay ý kiến đóng góp luôn được chào đón, vì vậy hãy thoải mái liên hệ qua email (it.village.host@gmail.com) nhé.

Thêm

Chương trình giảng dạy

Tất cả

36 bài giảng ∙ (6giờ 29phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của Kevin

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn, kết thúc sau 7 ngày ngày

19 ₫

29%

708.216 ₫