原典は、“Vala for Java Programmers”(2011年3月13日取得)です。
******************************
JavaプログラマーからみたVala (1)
ソースファイル
Javaの場合: *.java
Valaの場合: *.vala
コンパイル
Javaの場合: JVMバイトコード(.classファイル)にコンパイルされます。
$ javac SourceFile1.java SourceFile2.javaValaの場合: C言語ソースコードに翻訳されたのち、ネイティブコードにコンパイルされます。
$ valac source1.vala source2.vala -o programVala言語における標準オブジェクトシステムはGOjectであり、コンパイルされたValaライブラリは、有効なC言語ライブラリとなります。
ライブラリの使用
Javaの場合: .jarファイルを指定します。
$ javac -classpath foo-1.0.jar;bar-3.0.jar SourceFile.javaValaの場合: パッケージを指定します(.vapiファイルを介してCライブラリにアクセスします)
$ valac --pkg foo-1.0 --pkg bar-3.0 source.vala
Javaの場合:
- クラス、インターフェース、列挙型: キャメルケース(パスカルケース)。
- メソッド、ローカル変数、フィールド: ローワーキャメルケース。
- 定数、列挙型インスタンス(enum values): アッパーケース(アンダーバーで結合)。
- クラス、インターフェース、構造体、列挙型、デリゲート型、名前空間: キャメルケース(パスカルケース)。
- メソッド、ローカル変数、フィールド、プロパティ、シグナル: ローワーケース(アンダーバーで結合)。
- 定数、列挙型インスタンス: アッパーケース(アンダーバーで結合)。
ソースコードの組織化
ソースコード・ファイルについて
Javaの場合: 1つのファイルにつき、トップレベルのクラス(toplevel class。内部クラスでなく、パブリックなもの)は1つだけです。ファイル名はクラス名と一致します。
Valaの場合: 1つのファイルには複数のクラスを記述できます。ファイル名はクラス名と一致している必要はありません。
ヒエラルキーについて
Javaの場合: パッケージ概念があります。パッケージはディレクトリ構造によりあらわされます。またドメイン名を反転させた書式で構造化されます。
import javax.swing.*;Valaの場合: 名前空間(namespaces)があります。ディレクトリ構造とは関係ありません。反転ドメイン名書式もとりません。
package org.foo.bar;
// ...
using Gtk;Valaの名前空間内には、所属クラスのないメソッドも存在します。これらは暗黙の静的メンバー(implicitly static)です。
namespace Foo.Bar {
// ...
}
デフォルトで読み込まれる名前空間について
Javaの場合: java.langパッケージ配下のクラスがデフォルトで読み込まれています。
Valaの場合: Glib名前空間がデフォルトで読み込まれています。
エントリーポイント
Javaの場合: public static void main(String[] args)
Valaの場合: static int main (string[] args)
mainメソッドは、クラス外部で定義されても、privateアクセス修飾子が添えられていても、あるいは終了コード(exit code)としてintを返してもよいのです。その上argsはオプションです。
******************************
JavaプログラマーからみたVala (2)につづく──
0 件のコメント:
コメントを投稿