Vala에 대하여

Vala 컴파일러인 valac는 셀프 호스팅 컴파일러로 Vala 소스코드를 C 소스 및 헤더 파일로 변환해 줍니다. valac는 Vala 소스코드 내에 선언된 클래스나 인터페이스를 생성하기 위해 GObject 시스템을 사용합니다.

Vala의 문법은 C#과 비슷하지만 GObject 시스템에 좀 더 적합한 형태로 수정되었습니다. Vala는 다음과 같이 현대적인 프로그래밍 언어의 기능들을 제공합니다:

  • 인터페이스
  • 프로퍼티
  • 시그널
  • Foreach
  • 람다식
  • 지역 변수에 대한 타입 추론
  • 제네릭
  • Non-null 타입
  • 지원형 메모리 관리
  • 타입 모듈 (플러그인)

Vala는 런타임 바인딩 없이 이미 작성된 C 라이브러리(특히 GObject 기반 라이브러리)에 액세스 할 수 있도록 설계되었습니다. Vala와 라이브러리를 함께 사용하기 위해 필요한 것은 단지 Vala 문법에 맞춰 클래스와 메소드 정의를 작성한 API 파일뿐입니다. Vala는 현재 GLib, GTK+ 및 GNOME 플랫폼의 많은 다른 라이브러리에 대한 바인딩을 함께 제공하고 있습니다.

Vala로 작성한 클래스나 메소드를 C에서 사용하는 것은 어렵지 않습니다. 자동으로 생성된 헤더 파일을 설치하기만 하면 C 어플리케이션은 일반적인 GObject 기반 API들을 통해 Vala 라이브러리에 액세스 할 수 있습니다. 또한 Vala 파서가 라이브러리 형태로 작성되어 바인딩 생성시에 컴파일 시점의 모든 정보를 사용할 수 있으므로 C# 등으로 작성된 어플리케이션에서 Vala 라이브러리에 액세스 하기 위한 바인딩을 작성하는 것은 매우 쉽습니다.

왜 Vala를 사용해야 할까요?

많은 개발자들은 상위 레벨 프로그래밍 언어로 GNOME 어플리케이션이나 라이브러리를 작성하길 원했습니다. 그러나 여러 이유로 C#이나 Java는 사용할 수 없었고, GObject 타입 시스템을 지원하는 문법이 없는 C를 계속 사용해왔습니다. Vala 컴파일러는 개발자들이 복잡한 객체지향 코드를 빠르게 작성하면서도 표준 C API 및 ABI를 유지하고 메모리는 적게 사용할 수 있게 해줍니다.

C#과 Java 라이브러리는 C나 다른 언어로 작성한 Native GObject 라이브러리처럼 사용할 수 없고 GNOME 플랫폼의 한 부분으로 포함될 수도 없습니다. 관리(Managed) 어플리케이션은 높은 메모리 사용량으로 인해 어떤 상황에서는 사용이 불가능 할 수도 있습니다.

valac는 개발자가 라이브러리나 어플리케이션을 직접 C로 짠 것처럼 Vala 소스 파일로부터 C로 작성된 소스 및 헤더 파일을 생성합니다. C 어플리케이션에서 Vala 라이브러리를 사용하는 것은 다른 GObject 기반 라이브러리를 사용하는 것과 다른 점을 찾기 어렵습니다. Vala 런타임 라이브러리가 없으므로 어플리케이션은 tarball을 제공할 때 생성된 C 코드를 배포할 수 있고 실행 또는 빌드 시점에 사용자에게 필요한 추가적인 의존성은 없습니다.

Projects/Vala/Korean/About (last edited 2017-08-21 15:34:54 by JeeyongUm)