Mar*_*ler 3 java operating-system jvm native properties
我在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);
Run Code Online (Sandbox Code Playgroud)
由于它是一种原生方法,我假设有一个C-File,它可以完成所有的魔术.是否有一个特定于操作系统的文件,它通过C中的getenv()加载变量,或者这是某种特定平台的硬编码(无论是os.name,os.version等,都必须是动态的)?
如果操作系统是具有aas行分隔符或<foo>路径分隔符的已修改Linux内核,该怎么办?如果..<foo>..<foo>native<foo>amd_xyz在知道路径分隔符之前将JVM存储在下面,JVM怎么能知道在哪里搜索这些本机文件?
有没有办法研究实施?
您可以查看OpenJDK中的所有源代码.JDK可以为您的IDE提供大部分源代码.
我认为你假设有更多的魔法.对于UNIX版本,file.separator可能会按照文档中的建议进行硬编码.
| 归档时间: |
|
| 查看次数: |
483 次 |
| 最近记录: |