>>242
Javaは、OSのC言語のAPIとJavaとの橋渡しを、run.jarの中で行っており、
JNI と呼ばれる仕組みを使って、C言語の用のOSのAPIを他のJavaで書かれた
関数から呼び出せるようにしている。
run.jar は、Java言語で書かれており、通常は、OSへの移植はそんなに
難しくない。ランタイム速度を重視すれば違ってくるが、速度を重視しなければ、
移植する量も少なくできる。
ところが、run.jarは、Andoridでは、android.jarなどが担当しており、
その中に良く似たクラス名や関数名のものが沢山入ってしまっている。
しかし、完全移植ではないので、本当のrun.jarにはある関数が、入って
いなかったりする。ここが恐らく一番の問題。
run.jarさえ移植できてしまえば、ほとんど全てのjavaライブラリ
何もしなくてもそのまま動いて、結果としてjavaアプリもそのまま動いていたはずだった。
ところが、android.jarが変な移植の仕方をしてしまったので、本家のOracleも、
run.jarを移植するのが非常に困難になってしまった。
Android OSは、ベースがLinuxであるが、Linuxは、run.jar は完全な形で移植されている。
ところが、android.jarが邪魔をして、そのrun.jarは、Andoridでは動かせないし、
移植すら困難になっている。