jvm_note_01

java编码至执行
javac 编译
java 运行
XX.java 代码
XX.class 字节码
ClassLoader 加载进内存
java类库
字节码解释器
JIT即时编译器
JIT即时编译器
OS 硬件
JDK JRE JVM

JDK = JRE + development kit
JRE = JVM + core lib
JVM

ClassLoader 加载进内存过程
  1. 周期: loading -> linking -> initializing -> GC
  2. XX.class 通过"loading"进JVM的ClassLoader
  3. linking包括verification, preparation 和 resolution, verification校验16进制的class文件开头cafebaby和0034(版本号)等信息
  4. preparation 将静态变量赋值默认值(如: 0 , 空串("")等)
  5. resolution将符号引用先转换成具体内存地址值
  6. initializing 将静态变量值进行赋值为定义值
  7. GC回收
ClassLoader 加载器

Bootstrap(加载lib/rt.jar charset.jar等核心类, C++实现)
Extension(加载扩展jar包jre/lib/ext/*.jar 或由-Djava.ext.dirs指定)
App(加载classpath指定内容)
Custom(自定义ClassLoader)

  1. JVM是按需动态加载, 采用双亲委派机制
  2. 自底向上检查该类是否已经加载(parent方向), 找到则返回"已加载"(到Bootstrap还未找到则走3.的步骤)
  3. 自顶向下进行实际查找和加载(child方向), 查找到当前加载器中可加载该class则返回"已加载(且缓存)", 若至Custom还未找到则报Class Not Found异常

为了安全, 避免自定义的class替换掉了java的核心类库, 比如使用三方自定义String类(加入发送用户名密码功能), 替换了项目本身的String就会泄露信息了
code可以通过(XXX.class.getClassLoader 获取, 例: String.class.getClassLoader(), 返回null, 因为Bootstrap由C++实现, java中无该类)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 您可以使用 Java 编译器来将 Note.js 转换为 Java。有许多可供选择的 Java 编译器,其中包括 Eclipse、IntelliJ IDEA 和 NetBeans。它们都是流行的集成开发环境(IDE),可以帮助您编写、调试和测试 Java 代码。 要将 Note.js 转换为 Java,您需要执行以下步骤: 1. 安装 Java 编译器: - 在 Eclipse 中,您可以通过从网站下载并安装 Eclipse IDE 来安装 Eclipse 编译器。 - 在 IntelliJ IDEA 中,您可以通过从网站下载并安装 IntelliJ IDEA 来安装 IntelliJ IDEA 编译器。 - 在 NetBeans 中,您可以通过从网站下载并安装 NetBeans 来安装 NetBeans 编译器。 2. 创建新项目: 打开编译器,然后创建一个新的 Java 项目。 3. 导入 Note.js 文件: 将您要转换的 Note.js 文件导入到 Java 项目中。 4. 编写转换代码: 使用 Java 语言编写代码来转换 Note.js 文件。这可能需要使用到第三方库或工具,例如 Rhino 或 Nashorn。 5. 编译并运行代码: 使用编译器编译您的 Java 代码,然后运行它来转换 Note.js 文件。 希望这些信息对您有帮助!如果您有其他问题,请随 ### 回答2: Node.js 和 Java 是两种不同的编程语言,它们具有不同的语法和运行环境。因此,不能直接将 Node.js 代码直接转换为 Java 代码。Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时环境,而 Java 是一种面向对象的编程语言。 如果你想将一个 Node.js 项目改写为 Java,并在 Java 环境中运行,你需要重写整个代码。这包括重新设计代码结构、修复语法差异和修改 API 调用,以适应 Java 编程语言和运行环境。你可以使用 Java 开发工具包(JDK)中的 Eclipse、IntelliJ IDEA 或 NetBeans 等集成开发环境(IDE)来进行 Java 代码的编写、调试和编译。 在重新编写代码时,你需要注意以下几个方面: 1. 语法差异:JavaScript 是一种解释性的脚本语言,而 Java 是一种编译型语言。因此,你需要了解 Java 的基本语法和编码规范,并用 Java 的方式编写代码。 2. API 调用:Node.js 和 Java 提供了不同的标准库和第三方库,所以你需要重新选择适当的 Java 库来进行相应的功能实现。 3. 异步操作:Node.js 最大的特点是其非阻塞式和事件驱动的编程模型,而 Java 并没有直接对应的机制。你可能需要使用 Java 的线程池和回调来模拟实现相似的异步操作。 总的来说,将 Node.js 代码转换为 Java 代码不是一项简单的工作,需要你具备一定的 Java 编程经验和对应用程序架构的理解。我建议你进一步学习 Java,并在实践中逐步改写代码,遵循 Java 的最佳实践和编码规范。 ### 回答3: Node.js本身是一个运行在服务器端的JavaScript运行环境,而Java是一种完全不同的编程语言。因此,Node.js无法直接转换为Java。 如果你想将Node.js应用程序转换为Java应用程序,可能需要进行重写。由于两种语言的语法和API有很大的差异,这可能需要一些时间和精力。 在重写时,你可以使用Java编译器(例如Javac)来编译你的Java代码。编译器将会将你的Java源代码编译成Java字节码,然后可以在Java虚拟机(JVM)上运行。 请注意,将Node.js应用程序转换为Java可能涉及到更多的工作和改变。因为两种语言的设计目标和用途不同,所以你可能需要重新设计你的应用架构,并对代码进行相应的调整和修改。 总的来说,Node.js和Java是两种不同的编程语言,不能直接转换。如果你需要将Node.js应用程序转换为Java,你可能需要对代码进行重写,并使用Java编译器来编译你的Java代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值