JavaプログラマーからみたVala (1) ソースコード
******************************
最近なにかの拍子にVala言語に興味を持ってしまいました。Web上のドキュメントは限られているものの、Java言語との比較など平易なドキュメントもありましたので、学習をかねて稚拙な翻訳を載せていこうと思います。
原典は、“Vala for Java Programmers”(2011年3月13日取得)です。
- JavaプログラマーからみたVala (1) ソースコード
- JavaプログラマーからみたVala(2) 型
- JavaプログラマーからみたVala (3) クラス
- JavaプログラマーからみたVala (4) クラス②
- JavaプログラマーからみたVala(5) 通知
- JavaプログラマーからみたVala(6) 引数
- JavaプログラマーからみたVala(7) その他
- WindowsでValaを動かす
******************************
コンパイル
Javaの場合: JVMバイトコード(.classファイル)にコンパイルされます。
$ javac SourceFile1.java SourceFile2.java
Valaの場合: C言語ソースコードに翻訳されたのち、ネイティブコードにコンパイルされます。
$ valac source1.vala source2.vala -o program
Vala言語における標準オブジェクトシステムはGOjectであり、コンパイルされたValaライブラリは、有効なC言語ライブラリとなります。
ライブラリの使用
Javaの場合: .jarファイルを指定します。
$ javac -classpath foo-1.0.jar;bar-3.0.jar SourceFile.java
Valaの場合: パッケージを指定します(.vapiファイルを介してCライブラリにアクセスします)
$ valac --pkg foo-1.0 --pkg bar-3.0 source.vala
命名規約
Javaの場合:
- クラス、インターフェース、列挙型: キャメルケース(パスカルケース)。
- メソッド、ローカル変数、フィールド: ローワーキャメルケース。
- 定数、列挙型インスタンス(enum values): アッパーケース(アンダーバーで結合)。
Valaの場合:
ソースコードの組織化
ソースコード・ファイルについて
Javaの場合: 1つのファイルにつき、トップレベルのクラス(toplevel class。内部クラスでなく、パブリックなもの)は1つだけです。ファイル名はクラス名と一致します。
Valaの場合: 1つのファイルには複数のクラスを記述できます。ファイル名はクラス名と一致している必要はありません。
ヒエラルキーについて
Javaの場合: パッケージ概念があります。パッケージはディレクトリ構造によりあらわされます。またドメイン名を反転させた書式で構造化されます。
import javax.swing.*; package org.foo.bar; // ...
Valaの場合: 名前空間(namespaces)があります。ディレクトリ構造とは関係ありません。反転ドメイン名書式もとりません。
using Gtk; namespace Foo.Bar { // ... }
Valaの名前空間内には、所属クラスのないメソッドも存在します。これらは暗黙の静的メンバー(implicitly static)です。