Java的认识
一、Java 的历史Java 的诞生可以追溯到 20 世纪 90 年代初期。当时Sun Microsystems 公司后来被 Oracle 收购的 James Gosling 及其团队启动了一个名为 “Green Project” 的项目。这个项目旨在开发一种能够在各种消费类电子产品上运行的编程语言和平台以满足当时交互式电视等设备的编程需求。最初Java 被设计成一种面向对象、可移植、分布式且健壮的语言它借鉴了 C 和 C 的许多语法特性但摒弃了其中一些复杂和容易出错的部分比如指针运算和多重继承。1995 年Java 正式对外发布凭借其 “一次编写到处运行”Write Once, Run Anywhere的特性迅速在互联网编程领域崭露头角。Java 的出现极大地简化了跨平台应用程序的开发使得开发人员可以编写一次代码就能在不同操作系统和硬件平台上运行这一特性对互联网的发展产生了深远影响。随着时间的推移Java 不断发展和完善推出了多个版本如 Java 1.0、Java 2、Java 5 等每个版本都引入了新的特性和功能进一步增强了 Java 的功能和应用场景。如今Java 已经成为全球最受欢迎的编程语言之一广泛应用于企业级应用开发、移动应用开发、大数据处理、云计算等众多领域。二、Java 的环境要开发和运行 Java 程序需要搭建相应的 Java 环境主要包括以下几个关键组件一JDKJava Development KitJDK 是 Java 开发工具包它是开发 Java 程序的基础。JDK 包含了 Java 编译器javac、Java 虚拟机JVM以及一系列的类库。Java 编译器用于将 Java 源文件.java编译成字节码文件.class字节码文件是一种与平台无关的中间代码它可以在任何安装了 Java 虚拟机的系统上运行。在安装 JDK 时需要根据操作系统的类型如 Windows、Linux、Mac OS 等选择对应的版本进行下载和安装。安装完成后还需要配置环境变量将 JDK 的 bin 目录路径添加到系统的 PATH 变量中这样在命令行中才能正确执行 Java 相关的命令。二JREJava Runtime EnvironmentJRE 是 Java 运行时环境它是运行 Java 程序所必需的。JRE 包含了 Java 虚拟机和 Java 核心类库。如果只是希望运行已有的 Java 程序而不需要进行开发那么安装 JRE 即可。JRE 可以看作是 JDK 的一个子集它不包含开发工具如编译器等。在实际应用中当我们发布 Java 应用程序时通常会提供对应的 JRE 版本以确保用户能够在他们的系统上顺利运行程序。三、Java 如何实现一次编写到处运行Java“一次编写到处运行” 的特性主要得益于 Java 虚拟机JVM。Java 程序的开发过程是首先使用文本编辑器编写 Java 源文件然后通过 Java 编译器将源文件编译成字节码文件。字节码文件并不是针对特定操作系统或硬件平台的机器码而是一种中间格式的代码。当需要运行 Java 程序时JVM 会加载字节码文件并对字节码进行解释执行。JVM 在不同的操作系统和硬件平台上都有相应的实现版本例如针对 Windows 系统有 Windows 版的 JVM针对 Linux 系统有 Linux 版的 JVM 等。这些不同版本的 JVM 在底层会屏蔽掉操作系统和硬件平台的差异为字节码文件提供一个统一的运行环境。因此无论在何种平台上编写的 Java 程序只要将其编译成字节码文件就可以在安装了对应版本 JVM 的任何其他平台上运行从而实现了 “一次编写到处运行” 的目标。四、初识 Java 虚拟机Java 虚拟机是 Java 实现跨平台运行的核心。它就像是一个虚拟的计算机有自己的一套指令集和运行时数据区。JVM 的运行时数据区主要包括以下几个部分一堆Heap堆是 JVM 中最大的一块内存区域用于存储对象实例和数组。所有通过 new 关键字创建的对象都存放在堆中。堆内存是被所有线程共享的垃圾回收器Garbage Collector主要负责管理堆内存回收不再被使用的对象所占用的内存空间以避免内存泄漏。二栈Stack每个线程都有自己独立的栈空间。栈用于存储方法调用时的局部变量、操作数栈、动态链接等信息。当一个方法被调用时会在栈中创建一个栈帧用于保存该方法的相关信息。方法调用结束后对应的栈帧会从栈中弹出。栈的操作速度非常快因为它是基于后进先出LIFO的原则进行管理的。三方法区Method Area方法区用于存储已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。它也是被所有线程共享的。在方法区中存储了类的结构信息如类的字段、方法、构造函数等这些信息在类加载时被加载到方法区中。四程序计数器Program Counter Register程序计数器是一块较小的内存空间每个线程都有自己的程序计数器。它用于记录当前线程所执行的字节码指令的地址。当线程执行 Java 方法时程序计数器记录的是正在执行的字节码指令的地址当线程执行本地方法Native Method时程序计数器的值为 undefined。通过以上对 Java 虚拟机运行时数据区的管理Java 虚拟机能够有效地执行字节码文件实现 Java 程序的运行。同时Java 虚拟机还提供了诸如垃圾回收、类加载机制、即时编译等一系列重要功能这些功能共同保证了 Java 程序的高效、稳定运行。Java 凭借其丰富的历史底蕴、强大的环境支持以及独特的虚拟机机制在编程语言的舞台上始终保持着重要地位为广大开发者提供了便捷、高效的开发工具和平台。无论是初学者还是经验丰富的开发者深入了解 Java 的这些基础知识都将有助于更好地掌握和运用 Java 进行软件开发。

相关新闻

变量的数据类型

变量的数据类型

数据类型——变量 代码中的变量 变量名: 完成逻辑,给自己看的 给其他人看的 变量值: 用于具体运算的 存储的 变量的存储: 第一个结构: (符号表) 存储代码中的变量信息 (类型 名称 长度 值存储地址) 第二个结构&#xf…

2026/10/4 9:26:04 阅读更多 →
游戏数据修改器原理与应用:从内存扫描到脚本编写的实用指南

游戏数据修改器原理与应用:从内存扫描到脚本编写的实用指南

1. 从“作弊”到“创造”:游戏数据修改器的本质与边界 “最实用的游戏数据修改器”——这个标题背后,是无数玩家在游戏旅程中,面对重复枯燥的“刷刷刷”、遥不可及的顶级装备、或是某个卡关的Boss时,内心深处最直接、最朴素的需求…

2026/10/2 11:20:42 阅读更多 →
Unity游戏实时汉化实战:XUnity.AutoTranslator原理、安装与配置详解

Unity游戏实时汉化实战:XUnity.AutoTranslator原理、安装与配置详解

1. 项目概述:当Unity游戏遇上语言壁垒 如果你是一个热爱独立游戏的玩家,或者是一个需要研究海外Unity项目案例的开发者,那么语言问题绝对是你绕不开的一座大山。面对Steam上琳琅满目、创意十足但只有英文或日文界面的独立游戏,那种…

2026/10/2 0:48:25 阅读更多 →

最新新闻

MRAM取代Flash与EEPROM:STM32掉电数据保存实战方案

MRAM取代Flash与EEPROM:STM32掉电数据保存实战方案

做工业设备的嵌入式开发,最绕不开的老大难就是数据掉电保存。EEPROM写寿命有限,Flash要先擦后写又慢得让人心焦,特别是处理高频参数记录和故障瞬间保存这种需求,总得在容量、寿命、速度之间反复妥协。这两年我在几个项目里改用 Ev…

2026/10/4 18:08:09 阅读更多 →
把 AI Agent 托管到家里电脑:UU远程端口映射与CLI实测记录

把 AI Agent 托管到家里电脑:UU远程端口映射与CLI实测记录

起因:Agent 跑在本地,人却不在本地 我手上这套 Agent 不复杂,就是一个用 LangGraph 串起来的小流程:接收任务 → 调用本地 Ollama 做推理 → 需要检索时走一次向量库 → 返回结构化结果。模型是本地跑的,数据不出机器&…

2026/10/4 18:08:09 阅读更多 →
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张

LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张

为什么值得把 LLaMA 的架构单独拎出来看 现在做 Agent、RAG、微调,绕不开开源权重模型。而开源权重模型里,LLaMA 系列的架构几乎成了事实上的"公共底座":Qwen、Baichuan、InternLM、DeepSeek 早期的很多设计,都能看到 L…

2026/10/4 18:08:09 阅读更多 →
AI工程从零实践:分层定位、上下文工程与评测闭环

AI工程从零实践:分层定位、上下文工程与评测闭环

做了几年AI应用开发,我一直觉得,AI工程最值钱的能力不是手速,而是判断力。网上“从零入门大模型应用”的文章多如牛毛,但绝大多数只教你如何更快地调用模型接口,不教你当系统输出不符合预期时,问题到底出在…

2026/10/4 18:08:09 阅读更多 →
从“事后诸葛亮”到HER:后见之明偏差与强化学习中的经验回放

从“事后诸葛亮”到HER:后见之明偏差与强化学习中的经验回放

Hindsight这个词,很多人第一反应是“事后诸葛亮”,多少带着点贬义。我这些年带项目、做技术复盘,又花了不少时间啃强化学习,对这个词的态度却彻底变了:hindsight不只是一个思维陷阱,更是一套能拿来用的方法…

2026/10/4 18:08:09 阅读更多 →
OpenRig:开源模块化拍摄系统搭建指南

OpenRig:开源模块化拍摄系统搭建指南

1. 项目概述1.1 核心需求解析在过去几年里,我花了不少时间在折腾各种拍摄设备和支架方案,从最开始的三脚架加手机夹,到后来的微型云台、稳定器,再到自己动手改装的模块化支架。说实话,市面上成熟的产品确实不少&#x…

2026/10/4 18:07:09 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →