このブログの続きです:
16bit PC-DOS 向け Java (サブセット)コンパイラ&VM "dosjava"
先日上記ページで紹介した開発中の 16bit PC-DOS 向け Java である "dosjava" 、この後で開発を進め、実装内容やテストもある程度進んできたので、正式公開を宣言します!
https://github.com/dotnsf/dosjava

詳しくは上記 GiHub のページを参照いただきたいのですが、2026/05/26 時点で以下の機能を実装済みです:
・データ型
* int, long, float, boolean, String
* 配列(int, long, float, boolean のみ)
・制御構文
* if/else, while, for, switch, break, return
* try/catch/finally
・演算子
* 四則演算、関係(>, >=, <, <=, ==)、論理(&&,||,!)、代入、型キャスト
・特殊クラス
* File(テキストファイル入出力)
* Date(日付時刻演算)
* Math(算術演算)
以下の機能は現時点での制約事項です:
・1ファイル1クラス
・外部ファイル読み込み不可
また、以下の機能については今の時点では実装予定がありません:
・通常の class ファイルとの互換性
・マルチスレッド対応
・ネットワーク機能
samples\ フォルダ以下に動作確認済みのソースコードがあります。こちらを参考に PC-DOS と dosjava の環境を用意の上、以下の手順でコンパイルして実行してみてください。もちろん自分でソースコードを書いていただいても構いません:
本音をいうとネットワーク機能は実装したかったのですが(実際に挑戦したのですが)、16bit だととにかく メモリが足りないという問題に直面しました。それ以外でも利用するパケットドライバに依存してしまうので汎用性がなかったりして、、、ちょっとハードルが高すぎる機能だと判断しました。もしかすると将来的に、特定のパケットドライバに依存した上で HTTP クライアントくらいは・・・ と思っています。まあ、でもメモリ不足問題は時間が解決してくれるものではないので、ちょっと厳しいかなあ・・・
次に拡張しようと考えているのはバイナリファイルを扱えるようにすることと例外処理の強化です。今の時点でテキスト読み書き追加はできるのですが、バイナリファイルは未対応なのでその強化と、あと 実行中に Exeception が発生するパターンがまだ限られている(ゼロで割るとか、存在しないファイルを読みにいくとか)ので、その強化をしたいと思ってます。
16bit PC-DOS 向け Java (サブセット)コンパイラ&VM "dosjava"
先日上記ページで紹介した開発中の 16bit PC-DOS 向け Java である "dosjava" 、この後で開発を進め、実装内容やテストもある程度進んできたので、正式公開を宣言します!
https://github.com/dotnsf/dosjava

詳しくは上記 GiHub のページを参照いただきたいのですが、2026/05/26 時点で以下の機能を実装済みです:
・データ型
* int, long, float, boolean, String
* 配列(int, long, float, boolean のみ)
・制御構文
* if/else, while, for, switch, break, return
* try/catch/finally
・演算子
* 四則演算、関係(>, >=, <, <=, ==)、論理(&&,||,!)、代入、型キャスト
・特殊クラス
* File(テキストファイル入出力)
* Date(日付時刻演算)
* Math(算術演算)
以下の機能は現時点での制約事項です:
・1ファイル1クラス
・外部ファイル読み込み不可
また、以下の機能については今の時点では実装予定がありません:
・通常の class ファイルとの互換性
・マルチスレッド対応
・ネットワーク機能
samples\ フォルダ以下に動作確認済みのソースコードがあります。こちらを参考に PC-DOS と dosjava の環境を用意の上、以下の手順でコンパイルして実行してみてください。もちろん自分でソースコードを書いていただいても構いません:
(コンパイル) > djc hello.jav Compiled: hello.jav -> hello.djc (実行) > djvm hello.djc Hello World!
本音をいうとネットワーク機能は実装したかったのですが(実際に挑戦したのですが)、16bit だととにかく メモリが足りないという問題に直面しました。それ以外でも利用するパケットドライバに依存してしまうので汎用性がなかったりして、、、ちょっとハードルが高すぎる機能だと判断しました。もしかすると将来的に、特定のパケットドライバに依存した上で HTTP クライアントくらいは・・・ と思っています。まあ、でもメモリ不足問題は時間が解決してくれるものではないので、ちょっと厳しいかなあ・・・
次に拡張しようと考えているのはバイナリファイルを扱えるようにすることと例外処理の強化です。今の時点でテキスト読み書き追加はできるのですが、バイナリファイルは未対応なのでその強化と、あと 実行中に Exeception が発生するパターンがまだ限られている(ゼロで割るとか、存在しないファイルを読みにいくとか)ので、その強化をしたいと思ってます。









