TLDR: Tôi khuyên bạn nên sử dụng Vala với GLib/GObject, vì nó được thiết kế trên đầu trang của chúng.
Mặc dù có thể có các cấu hình thay thế cho valac chúng chưa hoàn thành hoặc không dùng nữa.
Toàn bộ vấn đề của Vala là để giảm lượng soạn sẵn cần thiết để viết GLib và Gtk + ứng dụng trong C.
Nó cũng cho biết thêm một số cải tiến khác đẹp hơn C, giống như chuỗi và mảng là kiểu dữ liệu đơn giản thay vì lỗi dễ bị lỗi.
Nó chủ yếu là kết thúc tốt đẹp tất cả các khái niệm hiện diện trong GObject thích:
- lớp
- tính
- thừa kế
- đại biểu
- phương pháp async
- tham khảo đếm (mà là thủ công trong C + GObject và ARC tự động trong Vala)
- loại an toàn của các đối tượng
- Generics
- lẽ nhiều hơn nữa ...
Tất cả những khái niệm có thể được thực hiện mà không sử dụng GObject/GLib/Cần Giờ, nhưng điều đó sẽ có nghĩa là về cơ bản viết lại GObject/GLib/Gio mà không có ý nghĩa nhiều.
Nếu bạn không muốn viết ứng dụng GUI GLib có thể được sử dụng để viết các ứng dụng bàn điều khiển, sử dụng GIO hoặc GTK + là tùy chọn trong Vala, các ứng dụng hoạt động trên máy chủ không có đầu.
Tôi nghĩ rằng thậm chí có một số nỗ lực trong Qt để cuối cùng chuyển sang vòng lặp chính GLib, mà sẽ làm cho khả năng tương tác của Qt và GLib dễ dàng hơn nhiều.
Một ví dụ điển hình về khung công tác sử dụng GLib là GStreamer được sử dụng trên nhiều môi trường máy tính để bàn khác nhau.
Nói tóm lại:
- GLib là một ứng dụng đa nền tảng khuôn khổ cơ bản
- GObject là hệ thống đối tượng sử dụng bởi các hệ sinh thái GLib
- GIO là một I/O trừu tượng (mạng, hệ thống tập tin, vv .) dựa trên GLib + GObject
- GTK + là bộ công cụ giao diện người dùng đồ họa dựa trên GLib + GObject + GIO + khác
- GNOME là môi trường máy tính để bàn dựa trên tất cả các công nghệ "G"
- Vala là một ngôn ngữ lập trình bậc cao được thiết kế để giảm bớt tấm lò hơi được neded để sử dụng thư viện "G" từ ngôn ngữ C.
GTK + ban đầu đến từ GIMP và kể từ đó được chia thành các thư viện "G" khác nhau làm cơ sở cho GNOME hiện nay.
Vala cũng có các cơ chế ràng buộc rất mạnh giúp dễ dàng viết các tệp "VAPI" cho bất kỳ loại thư viện C nào ở đó.
Với các ràng buộc VAPI chính xác, bạn không phải lo lắng về quản lý bộ nhớ thủ công, con trỏ, không kết thúc chuỗi và mảng và một số thứ tẻ nhạt khác làm cho việc viết mã C chính xác trở nên khó khăn.
Nguồn
2016-09-22 10:53:52
Khuôn khổ GObject không bị ràng buộc với môi trường máy tính để bàn gnome. Bạn có thể sử dụng thư viện GObject trên hầu hết mọi dạng linux và thậm chí trên các cửa sổ. – Mindbane