随手一篇 ,Java 怎么看 Native 以及基础规则

👈👈👈 欢迎点赞收藏关注哟

首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164...
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca...

一. 前言

之前有一段时间读底层编码时还看过这一块,但是时间长了方式又忘了,所以这一篇专门记录一下,也方便大家。

Native 源码

通常在阅读源码的时候会碰到这一类代码 ,IDEA 里面怎么点都看不到更底层的代码了 :

这一类代码叫本地方法,Java 是高级语言,但是对底层系统的调用是基于 C 语言的。当需要调用系统底层的时候,就会执行这个逻辑 : JVM 👉 Native Method 👉 C 代码 👉 底层系统

二. 怎么看 Native 代码

看 Native 源码其实就是看 C 语言的过程,方法也不难 , 不过前提是得看 OpenJDK 的代码 :

👉👉👉 jdk8/jdk8: log (openjdk.org) ,点击 ZIP 就可以下载

S1 : 找到 Native 对应 C 代码 , 一般当前 Java Class Name 即为 C Class Name

❗❗这里能看到,每个Java文件都对应了一个 .c 的文件

S2 : 找到对应的 方法

❗❗按照名字进行一一对应就行了

三. 有哪些 Native 代码值得一看

Native 里面有几大值得看的代码 ,这里我说一些我之前看过的 :

补充一 : OpenJDK 的源码结构

在上文步骤一里面我们可以看到好几个源码目录 ,他们分别代表不同模块的代码 :

  • corba : 一个应用之间互相通信的模块,主要是做对象请求代理的 ORB 功能,基本上可以不管
  • hotspot : JVM 相关的原生逻辑,例如线程的创建,我猜垃圾回收什么的应该也在里面(PS :JVM 和 Java 逻辑其实不是一套模块)
  • jaxp : Java中用于处理XML文档的API
  • jaxws : JAX-WS(Java API for XML Web Services)是Java平台上用于开发和部署Web服务的API
  • jdk : Open JDK 核心 API
  • Nashorn :Java平台上的一款JavaScript引擎 (还有这❓❓❓❓)

系列一 : Java Thread 系列

Java 多线程里面有些理论性的东西可能理解比较困难,但是一看源码就清清楚楚了,以线程的创建为例 ,这段代码主要在 JVM 代码里面,也就是 HotSpot 里面 (所以需要预先下载 HotSpot 的源码) :

  • 在这个里面会涉及到 jdk 和 hotspot 两套代码,所以都要下载结合来看
  • 可以看到,实际上的线程最后创建的就是系统线程

其他 :

  • Java 原生对象的一些源代码 (String ,Double) : \src\share\native\java\lang
  • Java IO 的一些代码 : \src\share\native\java\io

其实能看到,这些都涉及到用户态和内核态的一些调用,最终就会走 native 方法。

总结

关于 C 语言的一些用法我已经忘得差不多了,这一篇就不涉及到这一块了。

了解 Native 的原因在于一些底层的原理 。例如零拷贝,多线程实际上还需要这些代码辅助理解。

相关推荐
SL_staff36 分钟前
物模型三要素误用避坑指南:属性、事件、服务的正确建模逻辑
java
高频因子挖掘机40 分钟前
股票分红送转后价格“断层”:前复权、后复权和不复权该怎么选?
后端·github·api
一条泥憨鱼40 分钟前
【Redis | 黑马点评】短信登录功能 源码深度分析
java·redis·后端·session·黑马点评
威哥爱编程1 小时前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·spring boot·后端
威哥爱编程1 小时前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
java·spring boot·后端
小蒜学长1 小时前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·uni-app·家政服务
敲代码的彭于晏1 小时前
2026 K8s 零基础入门:手把手教你一步步搭建 Kubernetes 集群
java·运维·全栈
希洛兔1 小时前
状态模式详解:让对象随内部状态自动改变行为
java·设计模式·状态模式
需要8261 小时前
Spring Boot 启动流程:run() 里到底发生了什么
java·spring boot·后端
云絮.1 小时前
Mybatis(一)
java·数据库·mybatis