Chào bạn, thường thì học lập trình Java căn bản các bạn sẽ làm trên cửa sổ đen đen của Windows, hay còn gọi là Console hay ứng dụng Console.
Nó rất nhàm chán về mặt tương tác, hôm nay mình sẽ giới thiệu các bạn về lập trình GUI trong Java và một số Tài liệu học lập trình GUI tốt nhất.
Tài liệu học lập trình GUI trong Java tốt nhất
Trước tiên thì hãy cùng tìm hiểu một chút...
1. GUI trong Java là gì?
GUI là viết tắt của từ Graphic User Interface là giao diện người dùng đồ họa. Đối với Console là giao diện cửa sổ dòng lệnh.
Một hệ thống GUI là sự kết hợp của các công nghệ, thiết bị để cung cấp cho người dùng một nền tảng cho phép người sử dụng có thể tương tác với nó.
Một chuỗi các thành phần của GUI tuân theo một ngôn ngữ trực quan (visual language) để biểu diễn thông tin được lưu trữ trong các máy tính.
Thông dụng nhất khi kể đến sự kết hợp các thành phần như vậy là mô hình WIMP (Window, Icon, Menu, Pointing device) trong các máy tính cá nhân.
Các bạn có thể thấy một số phần mềm GUI như là Eclipse, NetBeans, hay bộ Office của Microsoft đều là những phần mềm GUI.
Hiểu nôm na phần mềm GUI là phần mềm cho phép người dùng tương tác trên giao diện trực quan, chứ không phải thông qua các dòng lệnh loằn ngoằng phức tạp.
Java hỗ trợ các Framework để các lập trình viên có thể lập trình giao diện GUI cho ứng dụng một cách tiện lợi và dễ dàng nhất.
2. Các Framework hỗ trợ lập trình GUI trong Java? Nên chọn framework nào?
Hiện tại có 3 Framwork phổ biến hỗ trợ lập trình GUI trong Java. Mình sẽ nói rõ hơn về 3 Framework này, nó là gì và nó hoạt động ra sao?
2.1. AWT (Abstract Windowing Toolkit)
Thằng này thì xuất hiện đầu tiên từ khi Java ra đời năm 1995. Đây là thuở sơ khai nên còn khá nhiều khuyết điểm.
Kể đến như AWT cung cấp một lớp trừu tượng cho các hệ điều hành khác nhau, khi viết chương trình thì nó sẽ có giao diện như chương trình gốc của hệ điều hành đó.
Ví dụ như chương trình AWT sẽ gọi đến các lệnh gốc của hệ điều hành để tạo giao diện.
Giao diện của Windows sẽ không giống giao diện của Mac OS hoặc trên các nhánh của Linux cũng sẽ khác nhau.
Hiểu đơn giản như chương trình được viết bằng GUI AWT sẽ giống như phần mềm Microsoft Windows khi chạy trên Windows, sẽ giống như các ứng dụng của Apple Macintosh khi chạy trên các máy Mac,....
Tuy nhiên một số nhà phát triển không thích điều này. Họ muốn các giao diện phải giống nhau trên từng hệ điều hành.
GUI AWT có gì?
Container
Container là một thành phần trong AWT có thể chứa các thành phần khác như button, textfield, label, v.v ... Các lớp mở rộng lớp Container được gọi là container như Frame, Dialog và Panel.
Window
Cửa sổ là container không có borders và menu bars. Bạn phải sử dụng khung, hộp thoại hoặc cửa sổ khác để tạo cửa sổ.
Panel
Panel là một container nhưng không chứa các thành phần như title bar và menu bars. Có có thể có các thành phần khác.
Frame
Frame là một container chứa các thành phần title bar và có thể chưa menu bars. Nó cũng có thể chứa các thành phần khác.
2.2. Swing
Java Swing thì ra đời sau AWT và được xem như là cải tiến và sửa lỗi của AWT.
Java Swing là một phần của Oracle’s Java Foundation Classes (JFC). Là một Framework cho lập trình viên lập trình giao diện trên Java.
Swing được phát triển để cung cấp các thành phần GUI phức tạp hơn, nhiều hơn so với bộ công cụ AWT.
Swing cung cấp giao diện mô phỏng giao diện của một số nền tảng. Điểm khác so với AWT đó là các ứng dụng GUI sẽ không liên quan đến nền tảng bên dưới mà sẽ chạy trực tiếp bằng máy ảo của Java.
Nó có các thành phần mạnh mẽ hơn AWT.
Ngoài các thành phần cơ bản như button, textfield, label... Swing cũng cung cấp một số thành phần nâng cao như table panel, scroll panes, trees, table và lists.
Không giống các thành phần của AWT, các thành phần của Swing không được triển khai theo mã dành riêng cho nền tảng.
Thay vào đó, chúng được viết hoàn toàn bằng Java và do đó nó độc lập với nền tảng. Thuật ngữ “lightweight” (nhẹ) được sử dụng để mô tả nó.
2.3 JavaFX
Năm 2008, Sun Microsystem đã phát hành Framework dựa trên CSS/ FXML mà nó được cho là sẽ kế thừa Swing.
Đó là JavaFX.
JavaFX nó cung cấp giao diện đẹp hơn, trau chuốt hơn, do dựa trên CSS / FXML nhưng cũng phức tạp hơn so với Swing.
JavaFX là một tập hợp các packages và phương tiện cho phép các nhà phát triển thiết kế, kiểm tra, gỡ lỗi và triển khai các ứng dụng client một cách phong phú và hoạt động nhất quán trên các nền tảng khác nhau.
JavaFX được cải tiến hơn so với hai thằng anh trước đó vì những đặc điểm sau:
-
JavaFX là một thư viện Java bao gồm các lớp và các giao diện được viết bằng mã Java gốc.
-
FXML là một ngôn ngữ khai báo dựa trên XML để xây dựng một giao diện người dùng trong ứng dụng JavaFX.
-
Lập trình viên có thể sử dụng JavaFX Scene Builder để thiết kế giao diện đồ họa GUI.
-
JavaFX có thể được tùy biến giao diện thêm sinh động bằng cách sử dụng css.
-
JavaFX còn hỗ trợ đồ họa 2D và 3D cũng như hỗ trợ cả âm thanh và video.
-
JavaFX còn có WebView dựa trên trình duyệt Webkit, vì vậy bạn có thể nhúng các trang web hoặc các ứng dụng web vào bên trong JavaFX.
Có nhiều GUI Framework như vậy thì nên chọn cái nào để học?
Thật sự thì, tùy nhu cầu mà mình sẽ học Framework nào.
Nếu bạn thích lập trình đơn giản ứng dụng Windows Form, với giao diện đẹp đủ dùng thì bạn có thể chọn Swing (AWT thì bây giờ ít xài vì Swing được cải tiến hơn).
Nếu bạn muốn một giao diện đẹp, một công cụ mạnh mẽ để lập trình phần mềm, nhiều chức năng, có thể lập trình được cho cả web và mobile. Thì JavaFX là lựa chọn tốt cho bạn.
Hoặc bạn có thể tìm hiểu về Java Swing để hiểu cơ bản cách viết một ứng dụng GUI ra sao rồi sau đó học JavaFX để phát triển sự nghiệp (nếu thích theo mảng này).
Giới thiệu một số tài liệu tự học lập trình GUI trong Java
Về tài liệu lập trình GUI trong Java thì có rất nhiều tài liệu trên Internet, thậm chí rất nhiều tutorials hướng dẫn từ A - Z.
Bạn có thể tham khảo:
Hướng dẫn thì bạn Google sẽ ra cả đống.
Vì thế, dưới đây mình sẽ giới thiệu thêm các bạn những cuốn sách, tài liệu lập trình GUI trong Java mà mình thấy tốt hoặc đã từng đọc để bạn có thể tham khảo.
Java Swing thì bạn sẽ có các tài liệu như sau:
#1. Swing Tutorial
Swing Tutorial
Quyển này sẽ cho bạn biết những điều cơ bản nhất của Swing, các thành phần có trong Swing và các phương thức và hàm trong Swing.
> Tải sách PDF free tại đây.
#2. Java Swing, Second Edition
Java Swing
Về quyển này bạn sẽ học tât tần tật, tuốt tuồn tuột về JavaSwing. Một quyển sách khá hay dành cho những bạn nào muốn học về Java Swing nghiêm túc.
> Tải sách PDF free tại đây.
JavaFX thì bạn tham khảo 2 quyển sau:
#3. Learning JavaFX
Learning JavaFX
Quyển này khá hay bạn sẽ học những thứ cơ bản về JavaFX. Hơn thế nữa bạn sẽ viết được một chương trình JavaFX cũng ra gì và này nọ đấy.
> Tải sách PDF free tại đây.
#4: JAVA 14: Development of applications with JavaFX
Development of applications with JavaFX
Quyển này thì khá nâng cao, quyển này sẽ hướng dẫn phát triển phần mềm với JavaFX, bạn sẽ phải có những kiến thức cơ bản về Java và JavaFX.
> Tải sách PDF free tại đây.
Kết luận
Để học Lập trình GUI trong Java thì có nhiều Framework và nhiều tài liệu hỗ trợ khác nhau.
Mảng lập trình GUI này mặc dù bị cạnh tranh mạnh bởi C# Winform (thực tế thì C# thị phần của C# vượt trội hơn nhiều) nhưng nếu bạn muốn theo đuổi Java, sử dụng nó làm ngôn ngữ chính thì cũng không ngại gì cả.
Các hệ thống lớn kết nối từ App di động, Web cho tới Desktop App vẫn có nhiều đất diễn cho Java.
Và để trở thành Pro Java thì đây là một phần không thể thiếu được.
Nếu bạn mới bắt đầu, có thể đọc thêm 2 bài nhập môn lập trình GUI bằng Java Swing với 2 IDE phổ biến:
> Lập trình giao diện GUI với Netbeans
> Lập trình giao diện GUI với Eclipse
Còn nếu bạn chỉ định hướng đi về Java Web luôn thì cũng không cần phải học lập trình GUI. Chỉ cần học Java cơ bản rồi đi tiếp về JSP & Servlet và sau đó là học Spring Framework là được.
> Tham gia ngay KHÓA HỌC JAVA WEB nếu bạn muốn định hướng đi ngay vào web. Học nhanh hơn, đi làm sớm hơn.
Chúc các bạn thành công.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python