首页 > 编程语言 >Java初始

Java初始

时间:2024-07-25 11:10:49浏览次数:13  
标签:JRE Java JDK 编译 运行 JVM 初始

Java初始

1.JDK,JRE和JVM:

定义:

  1. JDK(Java Development Kit)
    • 定义:JDK是Java开发工具包,是Java开发者用于编写、编译、调试和运行Java程序的核心组件。
    • 包含内容:JDK包含了Java编译器(javac)、Java运行时环境(JRE)、Java开发工具(如调试器、打包工具等)以及Java标准库等。
    • 用途:主要用于Java程序的开发,提供了完整的开发环境和工具集。
  2. JRE(Java Runtime Environment)
    • 定义:JRE是Java运行时环境,用于运行Java程序。
    • 包含内容:JRE包含了Java虚拟机(JVM)和Java标准库(Java API),但不包含开发工具。
    • 用途:主要用于运行已经编译好的Java程序,不需要进行程序开发的用户只需安装JRE。
  3. JVM(Java Virtual Machine)
    • 定义:JVM是Java虚拟机,是Java程序运行的基础。
    • 功能:负责解释和执行Java字节码文件,将字节码翻译成特定操作系统能够理解的机器码。
    • 特点:JVM是Java跨平台的关键,因为它可以在不同的操作系统上运行Java程序,实现了Java的“一次编写,到处运行”的理念。

联系

  • 包含关系:JDK包含了JRE,而JRE包含了JVM。即JDK > JRE > JVM。这意味着安装JDK会自动包含JRE和JVM,而安装JRE则只包含JVM和Java标准库。
  • 功能互补:JDK提供了完整的Java开发环境,包括编译、调试和运行Java程序所需的所有工具;JRE提供了运行Java程序所必需的环境;JVM则是Java程序运行的核心,负责解释和执行Java字节码。
  • 共同目标:三者共同支持Java语言的跨平台特性,使得Ja2.va程序可以在不同的操作系统上运行而无需修改。

2.JDK的安装与配置

JDK安装:

目前JDK安装较为方便,秩序前往Oracle官网下载对应系统和Java版本的JDK安装包,下载完成后双击运行即可完成安装

JDK配置:

1. 配置环境变量(Windows)

注意:新版本的JDK可能已经自动配置了环境变量,因此可以首先尝试在命令提示符中输入java -version来检查JDK是否已正确安装并配置。如果未显示版本号,则需要手动配置环境变量。

  • 配置JAVA_HOME环境变量
    • 右键点击“此电脑”或“计算机”,选择“属性”。
    • 点击“高级系统设置”,在弹出的系统属性窗口中点击“环境变量”。
    • 在“系统变量”区域点击“新建”,创建名为JAVA_HOME的新变量,其值应设置为JDK的安装路径(如C:\Program Files\Java\jdk-18)。
  • 配置Path环境变量
    • 在“系统变量”中找到名为Path的变量,双击进行编辑。
    • 在Path变量的值列表末尾添加%JAVA_HOME%\bin(注意用分号;与其他值分隔)。
    • 点击“确定”保存更改。

注意:对于macOS和Linux用户,环境变量的配置方式会有所不同。通常,macOS用户可以通过修改~/.bash_profile~/.zshrc等文件来配置环境变量,而Linux用户则可能需要编辑/etc/profile/etc/environment等系统级配置文件。

2. 验证JDK安装与配置

  • 打开命令提示符(Windows)或终端(macOS/Linux)。
  • 输入java -version并回车,如果显示JDK的版本号,则说明JDK已正确安装并配置。
  • 可选地,还可以输入javac -version来检查Java编译器是否也已正确配置。

3.Java编译和运行的cmd命令

编译:Javac

javac 源代码文件名.java

注意:为编译确定编码格式:

javac -encoding UTF-8 文件名.java

运行:

java 文件名.class

4.Java的跨平台原理

Java的跨平台原理主要基于其独特的编译和执行方式,以及Java虚拟机(JVM)的存在。

一、编译方式

  1. 源代码编译:Java源代码(.java文件)首先被Java编译器(javac)编译成一种中间代码,即字节码(.class文件)。这种字节码是平台无关的,它不与任何特定的硬件或操作系统直接关联。

二、执行方式

  1. 字节码执行:编译后的字节码文件不是直接由硬件执行,而是由Java虚拟机(JVM)来执行。JVM是一个可以安装在不同操作系统上的软件层,它提供了一个统一的运行时环境,使得Java程序能够在各种平台上运行。
  2. JVM的作用:JVM负责将字节码翻译成当前操作系统能够理解的机器码,并执行这些机器码。由于JVM是平台相关的,即不同的操作系统有不同的JVM实现,但JVM向上提供的接口是统一的,因此Java程序能够在不同平台上运行而无需修改。

标签:JRE,Java,JDK,编译,运行,JVM,初始
From: https://www.cnblogs.com/tubby233/p/18322552

相关文章

  • Java————链表
    目录前言:1.链表的概念2.链表的结构2.1带头的和不带头的2.2单向和双向2.3循环和非循环3.链表的实现3.1双向不带头不循环链表:3.2单向不带头不循环链表:4.LinkedList的使用4.1什么是LinkedList4.2LinkedList的使用5.LinkedList的遍历5.1foreach遍历5.2使用迭代器遍......
  • 都4202年了为什么大厂程序员还在用java8?
    Java8新特性文章目录Java8新特性接口的默认方法(DefaultMethodsforInterfaces)Lambda表达式(Lambdaexpressions)函数式接口(FunctionalInterfaces)方法和构造函数引用(MethodandConstructorReferences)Lambda表达式作用域(LambdaScopes)访问局部变量访问字......
  • @Slf4j注解 - javaweb日志记录
    1.引言在现代的JavaWeb开发中,日志记录是一个非常重要的组成部分。良好的日志记录可以帮助开发者快速定位问题、监控系统运行状态以及进行性能调优。@Slf4j注解是Lombok库提供的一个便捷工具,用于简化日志记录的代码编写。本文将详细讲解@Slf4j注解的相关内容,包括其概念、......
  • 【React】箭头函数:现代 JavaScript 的高效编程方式
    文章目录一、箭头函数的基本语法二、箭头函数的特性三、在React中的常见用法四、最佳实践在现代JavaScript中,箭头函数(ArrowFunctions)是一种简洁的函数表达方式,并且在React开发中非常常见。箭头函数不仅简化了函数的语法,还带来了与普通函数不同的行为特性。本......
  • SvelteKit - 1. 初始化项目
    官方doc-createaproject1、基本环境(下面是我这里的环境,亲测用node14和16install会报错)node:20.9.0npm:10.1.02、初始化项目npmcreatesvelte@latestmy-appcdmy-appnpminstallnpmrundevcreate时的选择:其中第一步选择创建应用的类型,有三个可供选......
  • Java面向对象-04
    1.多态:多种形态向上造型/自动类型转换:超类型的引用指向派生类的对象能点出来什么,看引用的类型向下转型/强制类型转换,成功的条件只有如下两种:引用所指向的对象,就是该类型引用所指向的对象,实现了该接口或继承了该类强转时若不符合如上条件,则发生ClassCastException类......
  • Java中的多态性(Polymorphism)
    Java中的多态性(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许同一个接口或方法在不同对象上具有不同的实现方式。多态性极大地提高了代码的灵活性和可扩展性,使得程序能够以一种统一的方式处理不同类型的对象。以下是对Java中多态性的详细解释,包括其定义、实现方式、......
  • 错误“对于非平面校准装置,必须在函数‘cvCalibrateCamera2Internal’中指定初始固有矩
    我遇到的错误的完整跟踪:在stereo_calibrate中ret,cameraMatrix1,distCoeffs1,cameraMatrix2,distCoeffs2,R,T,E,F,perViewErrors,_,_=cv2.stereoCalibrateExtended(cv2.error:OpenCV(4.10.0)/io/opencv/modules/calib3d/src/calibration.cpp:1682:error:(-5:Badargument)......
  • javaWeb_JSP
    首先要对项目的pom.xml进行添加依赖点击查看代码<dependencies><!--Servlet依赖--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version>&l......
  • TestNG详解,Java自动化用例管理利器!
    TestNG是开源自动化测试工具,覆盖多类型测试:单元测试,功能测试,集成测试,它的功能非常强大支持多种类型的单元测试(异常测试,超时测试,依赖测试….)支持参数化 &提供了丰富的测试用例组织方式(Suite,Test,Method)生成测试报告,并支持测试报告扩展(Allure,ReportNG)......