質問: Visual C++で作ったWindowsアプリケーションを元に、Androidのスマホアプリとしてリメイク版を作り始めました。できるだけC++の資産を生かしたいので、C++のソースコードをそのまま使えるところは使った方が楽なのでしょうか?全体的にはC++のソースコードを見ながら、ほぼJavaで作り直すつもりですが、C言語で作った関数をそのまま埋め込んで呼び出すこともできるようです。ただ、説明を読むとなんだか面倒くさい制約が色々ありそうで、高々100行程度の関数群ならJavaで作り直した方が早いのかなとも思っています。なお、その関数群はポインタ、union、memcpy、bit演算等を使ってメモリをぐちゃぐちゃしてる関数群です。今のJavaは、そういうことも出来るのでしょうか?Javaは昔少々かじっただけで、ブランクが20年くらいあります。20年前の携帯アプリ用のJavaにはポインタは無かったと記憶しています。 今後の方針に大きく関わるところなので、経験者のご意見を伺ってから始めたいと思います。 宜しくお願い致します。
回答: Javaのbit演算 Javaでもbit演算は出来ますが、符号有りbitシフトがありますのでクセで間違えるリスクはあります。 (個人的には>>が符号無しbitシフトなら混乱しなくて良かったのにと思います。) JNIに関するヒント AndroidStudioでしたらJNIを使用してC++をそのまま使えます。 但しJavaとC++で言語仕様が異なることから、値の受け渡しでstructが使えない等の制限が有ります。 (そもそもJavaにstructは無く、classで代用します。) Javaで書くかJNIを使用するかはケースバイケースですが、個人的にはポインタでぐちゃぐちゃした関数は可読性が悪いので、全てJavaで書いた方が良いと思います。