当前位置: 首页 > 网络应用技术

带您掌握不同平台下JDK源代码所需的本机方法

时间:2023-03-07 13:16:00 网络应用技术

  摘要:要探索JDK的核心底部源代码,您必须掌握本机用法。该文章将以“系统的默认时区”为例,以介绍如何查看本机的相应方法的源代码。

  探索欲望的学生应该像我一样。查看JDK源代码时,本机方法将出现在末尾,类似于以下方法

  看到这个本地人,这意味着它已经被挖到了核心。在此步骤中,尚不清楚如何获得系统的默认时区。我应该怎么办?JDK代码只能在此处遵循。

  返回到OpenJDK,源代码下载方法:https://gitee.com/mirrrs/openjdk

  本机是计算机函数,本机方法是Java调用非Java代码接口。该方法的实现是通过非Java语言实现的,例如C或C ++。

  以**私有静态字符串getSystemtimeZoneId(StringJavahome)**为例

  如图所示,在timezone.c下找到getSystemTimeZoneID方法

  要点:调用不同平台相关的映射功能

  在寻找Findjavatz_md方法时,发现Solaris和Windows中有两个目录。

  检查这两个目录之间的区别:

  因为在OpenJDK中,在Java标准库和某些工具的源代码(JDK目录)中,BSD和Linux平台相关的源代码位于Solaris Directory.originally中,Sun JDK源代码与Sun JDK源代码相关的目录从Sun JDK源代码开始。Solaris和Windows的两个目录。后来,将UNIX系列的平台相关代码放置在Solaris目录中,并且大多数代码已共享。

  作者:RednaxLafx

  链接:https://www.zhihu.com/question/58982441/answer/170264788

  资料来源:Zhihu

  简单的理解是:

  在窗口系统下,JDK代码在Windows目录中编译

  在UNIX系统下,JDK代码在Solaris目录中编译

  该评论清楚地写了,当前时区是“时区”注册表中的

  时区的设置:

  该地区的选择价值从何处获取?

  打开注册表:regedit->

  清晰编写了Findjavatz_md()方法的注释:平台时区ID映射为Java时区ID

  步:

  1.使用< Java home>/lib/tzmappings.如果找不到“ TZ”变量,请转到步骤2

  2. tz = getPlatformTimeZoneId();执行Linux特定映射,如果找到它,请返回时区ID,否则返回NULL

  [linux] CentOS7修改系统时区时区法:

  修改时区

  3.比较/etc/localtime以及“/usr/share/Zoneinfo目录”中的文件,如果相同

  4.返回GMT

  本文分享了华为云社区的诚意,作者:xiaowuzhu。