ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年05月10日

Java XML読み込み

objをOpenGL ESに都合の良い中間形式に変換するプログラムをJavaで書いているのだが、objをそのまま変換するだけでは使い勝手がよろしくない。
objは.xとかみたくアニメさせるのは至難のようだが、せめてテクスチャを切り替える程度のアニメは簡単に使えるようにしたい。
…なので、入力ソースとしてソースファイル群を記述するxmlを使えるようにしようと思った。

xmlならさんざん扱ってるから楽々〜と思っていたらXMLPullParserがandroidのクラスだった。だからPC等の汎用Javaでは使えない。

調べてみるといくつかXMLパース方法があったが、おおまかにSAXかDOMかという感じだった。
SAXはイベントドリブンとかで、そんな大した書式を扱いたいわけでもなし、なじみのあるDOMで行くことにした。

参考ソースをコピペしてきて、用途に合わせて修正。エラーのクラスをEclipseの機能でどんどんimport…
としてたら、どうしても "Element" のエラーがとれない。
確かにDocumentとかElementとかDOMのクラスは汎用名過ぎてimportだといかにもぶつかりそうだ。

調べてみたら、Eclipseのエラー箇所→右クリック→importでElementを
javax.lang.model.element.Element
にしてしまっていたことが原因だった。

Eclipseのこの機能はとっても便利だけど、クラスがエラーになってると内容をろくにみもしないでimportにする癖がついてるとこういうときに手間がかえって増えたりするので注意したい。

ほとんどの場合、この機能は一番上のimportでOKになるくらい優秀なのでこういうふうに希に失敗したときに「え?どうして」としばし戸惑うことになる。
posted by みこあいさ at 13:01| JAVA

2012年04月19日

Java アセンブラ Jasmine JVM Scala

今回は備忘録。

Javaは基本的に仮想マシンJVMで動くことが前提となっている。
javacコンパイラはソースコードをこのJVM用のマシンコードに置き換える仕事をするだけだ。
c++コンパイラなどと違ってコンパイルが速いのは、JVMマシンコードが比較的上級概念でてきているからだと思われる。
JVMというのは、レジスタのないスタック演算マシンだ。だから式などは逆ポーランド変換したあと、ほぼそのまま出すだけでいいはずだ。

このJVMマシンコードに興味がある。マシンコードはこんな感じ。
Java仮想マシン(Wiki)
このリストをみるとZ80あたりで機械語いじってた人たちはなんだかゾクゾクするのでは?

マシンコードがあるならアセンブラがあるはず、というんで調べてみたらあった。

Jasime Home page(公式)

Javaアセンブラ「Jasmin」を使おう(All about)

まだ試してないが興味津々。


Java、と一言で言われる仕様にはこのJVMの仕様が含まれているが、JVMにはJava言語の仕様は関係ない。
つまりJVMで動くものはなにもJavaでなくてもよい。

そういうことで、上述のアセンブラもそうだが、JVMで動くJava以外の言語というのがいくつか出てきている。
最近は Scala という言語がちょっと話題になったこともある。


なお、JVMは大概の環境で動くので開発環境はクロスプラットフォームとするためJavaアプリとして提供されることが多くなっている。EclipseやAndroid SDKもそうだ。

ASVAXもJavaでかいときゃよかった。
posted by みこあいさ at 16:15| JAVA