お知らせ †
開発はCaffeLatte:gcjに移行しました。
C/C++はもううんざり。そうだ、gcjを使おう。
- 環境としてのJava(Write Once, Run Anywhere)ではなく、言語としてのJavaを使う。
- gcjはネイティブコンパイルされるので、最小限のサポートライブラリを開発してlibgcjの代わりにリンクすれば、VMなしで動かせるはず。
情報 †
アプリケーション †
新しい順
アプリケーションについて †
- これからはアプリを作りながら足りないライブラリを埋めていく段階に入ったと思います。実際に作業をしていけば「言語仕様のサポートがないのは痛い」といった問題が出てくるでしょうけど、そういったものはその都度修正していけばよいでしょう。 -- gcj
- CNIもあることですし、Pure Javaに拘らなければ(無理にライブラリを整備しようとしなければ)大抵のことはすぐにできると思います。 -- gcj
ログ †
- gcjの使い方
- クラスメソッド
- インスタンス生成
- インスタンスメソッド
- メンバ変数
- クラスライブラリ再定義
- クラスライブラリ実装方針
- 数値出力
- 文字列出力
- 配列
- GC
- gcjのヘッダ
- java.lang.Object#toString
- オブジェクトの配列
- コンスタントプール
- staticフィールド
- StringBuffer
- GCの最適化
- UTF-8
- ここまでのまとめ
- スタックトレース
- 日付を取得する
- こんにちわ、世界
- instanceof
- インターフェースメソッドの呼び出し
ログについて †
- 単にgcjが使えるようにすることだけが目的なら、ここに書いているようなことは黙って勝手にやっていればいいようなことです。もともと私がこんなこと(試行錯誤過程の連載)を始めたのは、コンパイラの吐き出すアセンブリをリバースエンジニアリングするということの実例を示したかったからです。この手の作業に興味があっても切り込み方がよく分からないという人には、それなりに面白い読み物になるのではないかと期待しています。ここにはコンパイラを作ってみたいという人もいらっしゃると思いますが、既存のコンパイラをいじり倒してみるのも良い経験になると思いますから、C/C++に飽き足らない人はgobjc(Objective-C)やgpc(Pascal)やgdc(D言語)をいじってみると面白いと思います。 -- gcj
コメント †
※整理のため適宜振り分けます。予めご了承ください。
- gcjはBinary2.0に興味ないの?思いっきり普通の奴の下を行ってるじゃん。 --
- うーん、こういうの流行ってるんでしょうか(汗。私の場合、低レベルプログラミングマニアというより、どっちかっていうと高級言語マニアなんですよね。本命はOCamlだったりするのは内緒です(w。 -- gcj
- Windows CE用のJVMを作っているので、興味あります。がんばってください。 -- freebeans
- ありがとうございます。JVM開発とはすごいですね。Monaに移植できたら面白いかもしれませんね、と言ってみるテスト(汗 -- gcj
- 私自身の目標は、言語としてC++の代わりに使える状態にまで持っていくことです。そこに到達するまで(今やっているようなこと)と、そこに到達した以降の作業(ライブラリ書き)とは性質がまったく異なります。決して今のような調子(アセンブリを解析したり)でずっと続くわけではありません。後者(ライブラリ書き)が可能である、ということを示すことができれば、所期の目標は達成したことになります。その後はどんどんC++を置き換えていけば良いと思いますが、どのように進めるかは検討の余地があります。 -- gcj
- こんな面倒くさいことするなら素直にWaba使いますから(汗)MonAPIにGCが実装されたら考えます(他人任せでスマソ) -- bayside
- と思ったのですが、せっかくなのでMonaで実行してみました->gcj/08 -- bayside
- お疲れ様です。ご指摘のように、後はある程度のStringの処理とGCを実装すれば、実用上最低限の言語仕様はサポートできるのではないかと思います。 -- gcj
- おっと。ものすごく唐突ですがおもしろい。baysideさんがよろこびそう。 -- ひげぽん
- Java好きな人が多いみたいなのに今まで誰も手を付けてなかったのは不思議・・・ --