Java

JavaがC++を追い抜く日

http://slashdot.jp/developers/article.pl?sid=05/12/06/0325201インターネットは究極のクロスプラットフォームな世界ですから、環境に依存するコンパイル型の言語はつらいんじゃないかと思います。最近では大学でJavaから教えるところも多いですし。自分が…

MonaでJava (9)

とうとう JMona から monalibc が消えました。いままで残ったいた依存性は以下のとおりです。 ファイルサーバー FDドライバー内で logprintf を使っていましたが、コメントアウトすることで依存性を解消。 PEサーバー MessageLoop 内で sprintf を使っていま…

MonaでJava (8)

FileInputStreamクラスを実装しました。これでJavaからファイル入力ができるようになります。「AUTOEXEC.MSH」を読み込むコードなら、 FileInputStream fis = new FileInputStream("/AUTOEXEC.MSH"); byte[] data = new byte[fis.available()]; fis.read(dat…

ロードマップ

JMonaのロードマップはこんな感じです1〜3ヶ月 monapiをどんどん小さくして最終的にはゼロにする(ある程度は完了) サーバーをJava化する(ある程度は完了) monalibcをどんどん小さくして最終的にはゼロにする 3〜10ヶ月 gcj さんのスレッド関連成果を取り…

MonaでJava (7)

マウスサーバー(マウスドライバー)とキーボードサーバー(キーボードドライバー)の Java化がとりあえずできました。シェルサーバー(シェル)は OS依存部分が多いので、現在鋭意移植中です。CNIに頼っているとはいえ、Javaで PS/2のドライバーが書けると…

MonaでJava (6)

gcjサポート第二段はサーバーをJavaで再実装します。手始めに Shell サーバーをいじってみました。以下実装途中のコードです。 import org.monaos.*; public class Main { public static final int KEY_MODIFIER_DOWN = 0x01; public static final int KEY_M…

MonaでJava (5)

ようやくFrameが動くようになりました。とはいえ、まだまだ不安定です。SimpleCanvas-Windows.cppを1行書き換えると淵なしウィンドウになります。これで実行するととても不思議な感じです。とりあえず次はFrameのイベント実装です。閉じるボタンを押して閉じ…

MonaでJava (4)

とりあえずフォントを読み込んで表示するところまでは動きました。instanceofとインターフェースメソッドの呼び出しを実装しないといけないようです・・。 Main.java import java.awt.*; public class Main { public static void main(String[] args) { int …

MonaでJava (3)

現在はBayGUIをjava.awtに移植中です。C++からJavaの移植では、 "->" を "." に変える "::" を "." に変える "*" を削除する デストラクタを削除する .h と .cpp を一つにまとめる Component.XXX() を super.XXX() に変える char が2バイト unsignedがない …

MonaでJava (2)

staticフィールドの自動登録ができるようになりました。これで、スレッドと例外以外は大体使えるようになったと思います。スレッドと例外が言語レベルで使えるのがJavaのメリットでもあるので、このあたりも整備したいところです。ただ System.out.println("…

MonaでJava

いまMonaでJavaがめちゃくちゃ熱いです。http://wiki.monaos.org/index.php?gcjJavaVMとしては私が以前移植した waba がありますが、こちらはJavaを言語として使おうという企画。つまりJavaで書いたコードがネイティブに変換されてそのまま実行できるという…

ネイティブメソッドを実装する

Javaからネイティブメソッドを呼ぶためには以下の方法があります。 JNI CNI JNI 一般的な方法です。 Javaファイルからヘッダーファイルを生成する そのヘッダーファイルを実装するDLLを作成する System.loadLibraryで実行時にDLLを読み込む CNI あまり知られ…