2012-03-03 39 views
14

Tôi mới đến Vala. Tôi không quen với GObject. Như tôi đã hiểu, GObject đã được tách khỏi dự án GLib từ GNOME. Đúng nếu tôi sai.Vala có thể được sử dụng mà không cần GObject?

Tôi thích cú pháp và thực hiện Vala rất nhiều, nhưng nó không phải là ý định của tôi để viết các ứng dụng máy tính để bàn cho GNOME.

Tôi cũng biết (nghĩ rằng tôi biết) rằng Vala không có thư viện chuẩn nào ngoài GObject. Vì vậy, câu hỏi của tôi là: Có thể sử dụng Vala mà không cần GObject và nếu nó có thể, có thể sử dụng được hay không (có thư viện cơ sở tối ưu và duy trì cho những thứ phổ biến như chuyển đổi loại, toán, thao tác chuỗi, bộ đệm, v.v.))?

+3

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

Trả lời

7

Có một số cấu hình Vala khác như Dova và Posix.

+0

Lưu ý rằng bạn không thể có các lớp trong hồ sơ Posix (hoặc ít nhất là các lớp '[Nhỏ gọn] ') – ptomato

3

Dưới đây là một cấu hình khác mà bạn có thể sử dụng Aroop. (Lưu ý nó vẫn còn dưới sự phát triển nặng nề). Những gì tôi hy vọng là nó là tốt nếu bạn cần hiệu suất cao. Vui lòng kiểm tra features here.

4

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.

Các vấn đề liên quan