クラスでこれを見つけましたが、System
これがどのように実装されているか知りたいです。
/**
* System properties. The following properties are guaranteed to be defined:
* <dl>
* <dt>java.version <dd>Java version number
* <dt>java.vendor <dd>Java vendor specific string
* <dt>java.vendor.url <dd>Java vendor URL
* <dt>java.home <dd>Java installation directory
* <dt>java.class.version <dd>Java class version number
* <dt>java.class.path <dd>Java classpath
* <dt>os.name <dd>Operating System Name
* <dt>os.arch <dd>Operating System Architecture
* <dt>os.version <dd>Operating System Version
* <dt>file.separator <dd>File separator ("/" on Unix)
* <dt>path.separator <dd>Path separator (":" on Unix)
* <dt>line.separator <dd>Line separator ("\n" on Unix)
* <dt>user.name <dd>User account name
* <dt>user.home <dd>User home directory
* <dt>user.dir <dd>User's current working directory
* </dl>
*/
private static Properties props;
private static native Properties initProperties(Properties props);
これはネイティブメソッドなので、すべての魔法を実行するCファイルがあると思います。Cのgetenv()を介して変数をロードするOS固有のファイルはありますか、それとも特定のプラットフォーム用にハードコーディングされていますか(動的である必要があるos.name、os.versionなどに関係なく)?
a
OSが行区切り文字または<foo>
パス区切り文字としての変更されたLinuxカーネルである場合はどうなりますか?..<foo>..<foo>native<foo>amd_xyz
パス区切り文字を知る前に、これらのネイティブファイルが下に格納されている場合、JVMはこれらのネイティブファイルを検索する場所をどのように知ることができますか?
実装を調べる方法はありますか?