0

64ビットJDKを使用している場合、またはJavaの世界でこれが可能である場合にのみコンパイルされるJavaコード構造はありますか?

4

3 に答える 3

1

Java は、32 ビットか 64 ビットかに関係なく、プラットフォームのワード長などからユーザーを保護するように特別に設計されています。一般に、これに敏感な言語で何かを構築することは不可能です。

したがって、Java で記述されたすべてのコードは、どのプラットフォームでもコンパイルする必要があります。

さらに、コンパイラは任意のプラットフォームで実行できる必要がありますが、ネイティブ コードで記述できるため、特定のプラットフォームでの実行を妨げるバグが発生する可能性が技術的にあります。

JNI (Java Native Interface) を使用すると、いくつかの問題が発生する可能性がありますが、これは通常、Java から呼び出しおよび呼び出される C/C++ コードにあります。

于 2012-11-30T09:45:12.243 に答える
1

間違いなくコンパイルレベルではありません。Java コンパイラーは、それが実行される JVM の種類を認識しておらず、.class ファイルに JVM 固有のものは何もありません。経験する唯一の違いは実行時ですが、ここでも、Java コンストラクトはそれを識別できません。アーキテクチャ システム プロパティを読み取ることができますが、それはあなたが目指しているものではないと確信しています。

コメントの「次の質問」については、JDK は、ソース コード、コンパイルされたバイトコード、および JVM を含む完全な Java スタックを提供します。32 ビット JDK と 64 ビット JDK の違いは、すでにお察しのとおり、JVM 部分にあります。

于 2012-11-30T09:40:56.240 に答える
0

Java コンパイラは、基礎となるハードウェアを認識しません。

Java ソース ----> Java コンパイラ ------>バイトコード (ハードウェアに依存しない)

バイトコード ------> Java ランタイム -------->マシン レベル コード (プラットフォーム/ハードウェアに依存)

したがって、あるハードウェアで実行される Java コードが別のハードウェアで動作しないということはあり得ません。

2 番目の質問に対する答えは、バイトコードのマシン レベルのコードを作成するために、ランタイムは基盤となるハードウェアでサポートされている操作を認識している必要があるということです。

32 ビット マシンと 64 ビット マシンの手順は異なります。

于 2012-11-30T09:44:45.670 に答える