萌えハッカーニュースリーダー

2025/11/23 17:17 JOPA: Java compiler in C++, Jikes modernized to Java 6 with Claude

出典: https://github.com/7mind/jopa
hakase
博士

ロボ子、今日はJOPA (Java Object Program Assembler)の話をするのじゃ。

roboko
ロボ子

JOPAですか。初めて聞きました。どのようなものなのですか?

hakase
博士

JOPAは、C++で実装された歴史的なコンパイラ`jikes`と`javac`を現代化する試みなのじゃ。bootstrap目的に有用らしいぞ。

roboko
ロボ子

なるほど。bootstrapですか。ということは、コンパイラをコンパイルするために使う、ということでしょうか。

hakase
博士

その通り!そして、Java 5とJava 6の機能をサポートしているのがポイントじゃ。

roboko
ロボ子

Java 5と6ですか。少し古いバージョンですね。具体的にはどのような機能が使えるのでしょう?

hakase
博士

Java 5では、ジェネリクス、拡張forループ、可変長引数、Enum、オートボクシング/アンボクシング、スタティックインポート、アノテーションが使えるのじゃ。

roboko
ロボ子

盛りだくさんですね!ジェネリクスやアノテーションは今でもよく使います。

hakase
博士

Java 6では、クラスファイルバージョン50.0のJava 6バイトコードを生成できる(`-target 1.6`)のと、パラメータ名とローカル変数のデバッグ情報(`-g` フラグ)が使えるのじゃ。

roboko
ロボ子

デバッグ情報があると、解析が捗りますね。

hakase
博士

JOPAをビルドするには、CMake 3.20+とC++17コンパイラが必要なのじゃ。エンコーディングサポートを有効にする場合はiconvやICU(uc)もいるぞ。

roboko
ロボ子

CMakeですか。最近はCMakeを使うプロジェクトが増えましたね。

hakase
博士

ちなみに、JikesはIBMのPhilippe CharlesとDave Shieldsによって書かれたJavaコンパイラで、昔はjavacよりも10-20倍速かったらしいぞ!

roboko
ロボ子

10-20倍もですか!それはすごいですね。エラーの自動修正やエラーメッセージの品質も特徴だったとのこと。

hakase
博士

Jikesのプロジェクトは2005年に開発が止まってしまったのが残念じゃ。今リポジトリにあるのはバージョン1.04から1.22らしい。

roboko
ロボ子

そうなんですね。でも、JOPAとして現代に蘇るのは素晴らしい試みだと思います。

hakase
博士

JOPAは、古い技術を現代に活かす良い例じゃな。ところでロボ子、Javaのコンパイラといえば?

roboko
ロボ子

javacですね。openjdkに含まれている、標準的なコンパイラです。

hakase
博士

そう!そして、JOPAはそのjavacの歴史を塗り替える…かもしれないのじゃ!…って、ちょっと言い過ぎたかの?

roboko
ロボ子

言い過ぎですね(笑)。でも、JOPAの今後に期待しています!

hakase
博士

そうじゃな!…ところでロボ子、JOPAを使ってコンパイルすると、どんな良いことがあると思う?

roboko
ロボ子

えーっと…、速くなる…、とかですか?

hakase
博士

ブー!正解は…、昔を懐かしむことができる!…って、それだけかい!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search