Java 环境配置 -- Java 语言的安装、配置、编译与运行

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 002 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自己的技术栈的同学。与此同时,本专栏的所有文章,也都会准备充足的代码示例和完善的知识点梳理,因此也十分适合零基础的小白和要准备工作面试的同学学习。当然,我也会在必要的时候进行相关技术深度的技术解读,相信即使是拥有多年 Java 开发经验的从业者和大佬们也会有所收获并找到乐趣。

上一篇的内容中我们介绍了 Java 语言的概述,明白了它是什么,有什么特点,并且有着怎样的过去和会有怎样的未来。而在这篇文章中,首先,我们将会先聊一聊 Java 的体系、环境、和版本,因为如果是刚入门的小伙伴,没有去特意了解的话,确实会存在相关的困惑(现在网上大多数文章对相关内容的介绍已经过时了);然后,我们会进行真正的开始,即 Java 语言的安装、配置、编译与运行;在最后,我们再了解一下,当下最为流行的 Java 开发 IDE 工具 – IntelliJ IDEA!

最后在前言的末尾我补充一下,如果这篇文章,对大家有所帮助或收获一定的乐趣和想法,那么非常欢迎大家能够,点赞、评论、收藏、订阅。这些也将是我持续更新的最大动力。


文章目录

      • 1、Java 体系&环境
        • 1.1、Java 三大体系
        • 1.2、Java 三大环境
        • 1.3、Java 两大版本
      • 2、Java安装&配置
        • 2.1、Java下载
        • 2.2、Java 安装
        • 2.3、Java 配置
        • 2.4、Java 验证
      • 3、Java 编译&运行
        • 3.1、Java 的运行过程
        • 3.2、Java 编译/解释型语言
        • 3.3、Java 编译执行 Demo
      • 4、Java 开发工具:IDEA
        • 4.1、IDEA 简介
        • 4.2、IDEA 下载和安装


1、Java 体系&环境

1.1、Java 三大体系

1999 年 Sun 公司根据应用的领域不同把 Java 技术划归为三个平台,当时分别称为 J2SE、J2EE 和 J2SE,后改名为 Java SE、Java EE 和 Java ME。近些年来,对于新接触 Java 这门语言的同学们来说,Java 三大体系平台,总是会在入门的时候提及到,但是在后续的应用使用时却没发现需要根据不同场景进行细分,这是为什么呢?

首先,这里我们简单先回顾一下 Java 三大体系的概念:

  • Java SE(Java Platform,Standard Edition):Java 平台标准版,它是 JavaEE 和 JavaME 的基础,提供了 Java 的核心功能。它包含了 Java 语言基础库、Java 虚拟机 JVM 和一些基础的工具,主要用于开发桌面应用和商用应用;
  • Java EE(Java Platform,Enterprise Edition):Java 平台企业版,建立在 Java SE 的基础之上,是支持企业级应用的 Java 平台,提供了一套完整的企业级应用解决方案,包括 Web 应用服务器、EJB、Servlet、JSP 等;
  • Java ME(Java Platform,Micro Edition):Java 平台微型版,是一个针对移动设备和嵌入式设备的 Java 平台。Java ME 包含了一套轻量级的 API 和一个专为小型设备优化的 JVM,主要用于开发手机、电视、工业控制等嵌入式设备的应用。

然而现在基本上 Java EE 和 Java ME 官方都基本上没有更新了。只有 Java SE 还在每半年更新一个大版本。基本上现在我们说的 Java,JavaSDK,Java 开发工具包其实都指的就是 Java SE。

image-20240523165342867

那为什 么Java EE 和J ava ME 现在基本上都没了呢?

  • Java ME 没了很好理解,时代的弃子,因为自从有了智能手机和 Android 的出现,世上再无 ME。因为智能手机的内存已经可以和 PC 相当了,所以不需要一个精简版的 Java ME 了。而是一个更需要支持智能手机的开发工具包,所以 Google 就魔改了 Java。

  • Java EE 没了是因为 Java EE 提供的东西太有限了,服务器开发需要大量软件库的支持。例如各种类和对象的管理,高性能网络 IO的支持,各种中间件的支持,这些 Java EE 提供的东西都太弱了,或者说不如 Java SE + 其他开源框架的方式。

    所以大家都没有直接再用 Java EE 了,而是用 Java SE 加上一些开源的框架和第三方库来做服务器端的开发,例如 Spring,MyBatis 啥的。当然 Java EE 的规范没有被摒弃掉,可以说当前主流的 Web 应用框架能力是在 Java EE 基础上提供的。

所以 Java 刚入门的同学其实只需要学好 Java SE 就行了,EE 和 ME 面试和工作时基本都用不到了,只进行基本的了解即可。

1.2、Java 三大环境

了解了 Java 三大体系之后,我们再来了解一下 Java 三大环境。

JDK(Java Development Kit)、JRE(Java Runtime Environment)和 JVM(Java Virtual Machine)都是 Java 语言生态中的重要组件,它们之间的关系密不可分。

这三个组件的定义:

  • JDK(Java Development Kit):JDK 是 Java 开发工具包,是用于开发 Java 应用程序的开发环境。它包括了Java 编译器(javac)、Java 运行时环境(JRE)以及其他一些用于开发、调试和测试的工具,我们本篇接下来进行的安装就是 JDK;
  • JRE(Java Runtime Environment):JRE 是 Java 运行时环境,它包含了运行 Java 程序所需要的环境。也就是说,只要你的机器上安装了 JRE,就可以运行编译后的 Java 字节码程序;
  • JVM(Java Virtual Machine):JVM 是 Java 虚拟机,它是一种可以执行 Java 字节码的虚拟计算机。JVM 是 JRE 的一部分,它负责解释和执行 Java 字节码,使得 Java 程序可以在任何支持 JVM 的平台上运行。

接下来,我们来看看它们之间的关系:

JDK、JRE 和 JVM 的关系可以理解为:JDK 包含了 JRE 和开发工具,JRE 包含了 JVM 和运行 Java 程序所需的环境,而 JVM 则是运行 Java 程序的核心部分。三者共同构成了完整的Java开发与运行环境。

image-20240523205415543

  • JDK 包含了 JRE,也就是说,如果你安装了 JDK,那么你也已经安装了 JRE。同时,JDK 也包含了编译 Java 程序的工具,例如编译器和调试器(JDK = JRE + 开发工具集)。

  • JRE 则包含了 JVM,也就是说,只要你的机器上安装了 JRE,那么你也已经安装了 JVM。JVM 是 JRE 的核心部分,它使得 Java 程序可以在任何平台上运行(JRE = Jvm + JavaSE 标准类库)。

1.3、Java 两大版本

在 2006 年 11 月 13 日的 JavaOne 大会上,Sun 公司宣布计划将开源 Java,并建立了 Open JDK 社区,随后 Sun 在 GPL 下陆续发布了 Java 类库的源代码(除了一些被第三方授权给 Sun 且 Sun 无法根据 GPL 重新授权的受限部分之外);

此时的 JDK 即为 OpenJDK。OpenJDK 是 Java SE 的开源实现,他由 Sun 和 Java 社区提供支持,2009 年 Oracle 收购了 Sun 公司,自此 Java 的维护方之一的 Sun 也变成了 Oracle。

OpenJDK 和 OracleJDK 是 Java 开发和运行环境的两种实现,它们的主要区别在于许可证和一些特性:

  1. OpenJDK:OpenJDK 是 Java SE 的开源实现,由 Sun 公司和 Java 社区提供支持。OpenJDK 的许可证是 GPL v2,这意味着你可以自由地使用和修改源代码,但如果你分发修改后的版本,必须以同样的许可证开源;

  2. OracleJDK:OracleJDK 是 Oracle 公司基于 OpenJDK 源代码构建的 JDK,它的许可证是 Oracle 二进制代码许可协议。这意味着你可以免费使用 OracleJDK,但如果你想用于商业用途,可能需要付费。

技术上,OracleJDK 和 OpenJDK 没有重大的差异,但 OracleJDK 提供了一些额外的性能优化和商业特性。此外,Oracle 对 OracleJDK 提供商业支持,而 OpenJDK 则主要依赖社区支持。

本质上,OracleJDK 也是 OpenJDK 的发行版之一目前使用最多的 Java builds 仍旧是 OracleJDK,但其后分别还有 AdoptOpenJDK、Oracle’s OpenJDK、Amazon Corretto、Azul Zulu,以及国内的 Alibaba Dragonwell、Huawei bisheng JDK、Tencent Kona 等;

如果你是开发开源项目或者个人使用,OpenJDK 是一个很好的选择。如果你需要商业支持或者 OracleJDK 的特定特性,那么你可能需要选择 OracleJDK。


2、Java安装&配置

2.1、Java下载

Java 官方下载地址:https://www.oracle.com/java/technologies/downloads/

点击上方链接即可跳转到官网下载界面,根据需要选择对应配置进行下载!

image-20230401170409163

2.2、Java 安装

对于 Windows 和 MacOS 来说,Java 的安装步骤很简单,我们可以选择对应的安装程序(.exe / .dmg)然后根据步骤来进行安装:

  • Mac 系统的默认安装路径为下述地址:
 ~/Library/Java/JavaVirtualMachines/
  • Windows 在安装时注意指定好安装路径即可
  • 对于 Linux 系统来说,下载好二进制安装包后,解压到指定位置即可,例如:
tar -zxvf jdk-8u251-linux-x64.tar.gz
2.3、Java 配置

对于 Linux 和 MacOS 来说,配置 $JAVA_HOME 环境变量,找到以下三个配置文件中的任意一个:

~/.bash_profile
~/.bashrc
~/.zshrc

添加下面这行代码,之后使用 source 更新即可:

# 以 Java8 举例,其中 "JAVA_HOME=" 后面是 Java JDK 的安装地址
export JAVA_HOME=/Users/liziheng/Library/Java/JavaVirtualMachines/corretto-1.8.0_332
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

对于 windows 系统:

  1. 打开系统设置,点击高级系统设置,打开环境变量以后点击系统变量的新建:新建 JAVA_HOME 变量(单词大写,符合是英文),如果是用默认安装路径可以直接复制使用;

  2. 找到系统变量中的 Path 变量,选中然后点击编辑,然后点击新建,这里都一样,可以直接复制使用:

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
  1. ClassPath 环境变量:点击系统变量新建然后在新建系统变量框里面输入下面内容即可
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.4、Java 验证

打开终端,输入 java -version,查看安装版本:

> java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment Corretto-1.8.0_332 (1.8.0_332_b08)
OpenJDK 64-Bit Server VM Corretto-1.8.0_332 (build 25.302-b08, mixed mode)

3、Java 编译&运行

3.1、Java 的运行过程

Java 程序的运行必须经过编写、编译和运行 3 个步骤。

  1. 编写:在 Java 开发环境中编写程序代码,形成后缀名为 .java 的 Java 源文件。
  2. 编译:使用 Java 编译器(javac 命令)对源文件进行编译,如果源代码中没有语法错误,编译器会生成后缀名为 .class 的字节码文件。这个字节码文件是跨平台的,可以在任何安装了 Java 运行环境(JRE)的机器上运行。
  3. 运行:使用 Java 解释器(java 命令)对字节码文件进行解释运行,将字节码翻译成机器代码并执行,最后显示运行结果。

这个过程中,Java 的跨平台特性得到了充分体现,即"一次编写,到处运行"。

Java 程序运行流程如图所示:

image-20230401174120624

Java 字节码和 Java 虚拟机(JVM)是实现 Java 跨平台特性的关键。

Java 字节码:Java 字节码是一种中间代码,是 Java 源文件经过 Java 编译器编译后生成的。它是一种二进制文件,既不依赖于具体的硬件环境,也不依赖于具体的操作系统环境。Java 字节码需要由 Java 解释器进行解释执行,因此 Java 是一种在编译基础上进行解释运行的语言。

Java 虚拟机(JVM):JVM 是运行 Java 程序的软件环境,Java 解释器是 JVM 的一部分。JVM 负责将 Java 字节码翻译成具体硬件环境和操作系统平台下的机器代码并执行。这样,Java 程序就可以在任何安装了 JVM 的机器上运行,无需考虑当前的硬件平台和操作系统环境,也无需考虑字节码文件是在何种平台上生成的。

JVM 把这种不同软、硬件平台的具体差别隐藏起来,从而实现了真正的二进制代码级的跨平台移植。JVM 是 Java 平台架构的基础,Java 的跨平台特性正是通过在 JVM 中运行 Java 程序实现的。

3.2、Java 编译/解释型语言

Java 是编译型语言还是解释性语言?Java 语言既有编译型语言的特性,也有解释型语言的特性,它结合了两者的优点。

首先,编译型语言的特性:Java 程序需要先被编译成字节码(.class 文件),这个过程是编译过程。编译可以在编程阶段发现和修复一部分错误,提高程序的运行效率。

其次,解释型语言的特性:Java 字节码并不是可以直接运行的机器代码,它需要由 JVM 进行解释执行。这个过程使得 Java 程序具有了跨平台的能力,即 “一次编写,到处运行”。

因此,Java 既是编译型语言,也是解释型语言。但由于其跨平台的特性,通常我们更倾向于将 Java 归类为解释型语言。

3.3、Java 编译执行 Demo

我们可以通过一个简单的 “Hello World” Demo 程序来了解 Java 的编译和执行过程。

首先,我们编写一个简单的 Java 程序:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

将以上代码保存为 HelloWorld.java 文件。

然后,我们使用 Java 编译器 javac 对源文件进行编译:

javac HelloWorld.java

编译成功后,会在当前目录下生成一个 HelloWorld.class 文件,这就是我们的字节码文件。

最后,我们使用 Java 解释器 java 来运行这个字节码文件:

java HelloWorld

运行成功后,控制台会输出 “Hello, World!”,这就是我们的程序运行结果。

以上就是 Java 程序的编译和执行过程,通过这个过程,我们可以看到 Java 程序是如何从源代码变为可以运行的程序的。


4、Java 开发工具:IDEA

4.1、IDEA 简介

IDEA 全称 IntelliJ IDEA,是 Java 编程语言的集成开发环境。IntelliJ 在业界被公认为最好的 Java 开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(GIT、SVN 等)、JUnit、CVS整合、代码分析、 创新的 GUI 设计等方面的功能可以说是超常的。

IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持 HTML,CSS,PHP,MySQL,Python 等。免费版只支持 Java、Kotlin 等少数语言

4.2、IDEA 下载和安装

下面就带大家来安装一下 IDEA 旗舰版。

进入官网,点击下载::https://www.jetbrains.com//idea/download/

版本选择参考:

  • 如果你是学生或者高校老师,可以免费申请使用旗舰版,不过这个需要验证你的身份,大概7天左右,那我们可以直接使用旗舰版,因为他30天免费使用,等到认证成功,我们可以免费使用;
  • 学生如何申请免费IDEA,如果你们学校没有配置邮箱,可以到学信网下载文件,选择官方文件;
  • 如果对功能要求不是很高,也可以使用社区版,比较方便,一些基础的功能都是有的;
  • 如果想使用旗舰版,建议使用正版软件(不过太贵了,一年好几千);也可以去网站上找一些版本(你懂得),但不要进行商业使用。

下载后我们双击安装包,按照提示安装即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693280.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

未来AI大模型的发展趋势

大家好,我是小悟 未来AI大模型的发展趋势无疑将是多元化、高效化、普及化以及人性化。随着技术的飞速进步,AI大模型将在各个领域中展现出更加广泛和深入的应用,成为推动社会进步的重要力量。 多元化是AI大模型发展的重要方向。随着数据量的…

vue26:vue的环境搭建

vue环境安装配置 在点击上方链接前,注意!!!!!!!! 下方的红字!!!!!!!!&am…

在 Qt Creator 上创建 ROS 项目并新建/导入 ROS 包

0、引言 ⚠️ 在开始之前,您需要确保您已经为 Qt 配置好了 ROS 开发环境了。如果您还没有配置好,可以参考这篇文章 本文将着手探讨如何在 Qt Creator 上编辑 ROS 项目(工作空间)。 1、本教程使用到的相关软件或产品 Ubuntu 20.0…

【AI基础】第四步:保姆喂饭级-langchain+chatglm2-6b+m3e-base

在第三步手动安装chatglm2-6b时,已经可以通过web进行交互。langchain重新封装了一下AI框架,提供更加友好的开发功能,类似于AI届的spring框架。langchain的安装过程也类似于上一步说的:【AI基础】第三步:纯天然手动安装…

github异常问题总结

问题1: gitgitlab.gz.cvte.cn: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.解决方法: 这个错误表示 GitLab 服务器拒绝了你的 SSH…

【MySQL】(基础篇二) —— MySQL初始用

MySQL初始用 目录 MySQL初始用基本语法约定选择数据库查看数据库和表其它的SHOW 在Navicat中,大部分数据库管理相关的操作都可以通过图形界面完成,这个很简单,大家可以自行探索。虽然Navicat等图形化数据库管理工具为操作和管理数据库提供了非…

【小白专用24.6.8】c#异步方法 async task调用及 await运行机制

await是C#中用于等待异步操作完成的关键字。它通常用于异步方法内部,使得在等待异步操作期间,线程可以继续执行其他操作,从而保持程序的响应性。 在使用await时,需要注意以下几点: 1. async修饰符: 使用…

PgSQL技术内幕 - psql与服务端连接与交互机制

PgSQL技术内幕 - 客户端psql与服务端连接与交互机制 简单来说,PgSQL的psql客户端向服务端发起连接请求,服务端接收到请求后,fork出一个子进程,之后由该子进程和客户端进行交互,处理客户端的SQL等,并将结果返…

用HAL库改写江科大的stm32入门-输入捕获原理图示

原理与接线: (输入捕获的结构) cubeMx: PA11:

【复现】含能量路由器的交直流混合配电网潮流计算

目录 1 主要内容 2 理论及模型 3 程序结果 4 下载链接 1 主要内容 程序复现《含能量路由器的交直流混合配电网潮流计算》,主要是对算例4.1进行建模分析,理论和方法按照文献所述。能量路由器(ER)作为新兴的电力元器件&#xff…

应用matplotlib.animation.FuncAnimation绘制摆线

上次尝试了用matplotlib.animation.ArtistAnimation绘制摆线,实际上也可以用matplotlib.animation.FuncAnimation实现同样的功能。 导入相关文件 引用的库包括numpy,matplotlib,代码如下: import numpy as np import matplotli…

字符串形成树形

字符串形成树形 有的时候我们形成树形不是以ID的关系进行匹配的而是以字符串进行形成 数据 CREATE TABLE `contract_main_org_info` (`id` bigint(20) NOT NULL COMMENT 组织单位id,`parent_id` int(11) NULL DEFAULT NULL COMMENT 父组织单位id,`org_name` varchar(255) CHA…

mysql数据库密码破解

一、Mysql数据库密码破解 ①一旦获取了网站一定的权限后,如果能够获取MSQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。 ②MySQL数据库用户密码跟其它…

jmeter的infludb+grafana实时监控平台

目的:可以实时查看到jmeter拷机信息 框架:将 Jmeter 的数据导入 InfluxDB ,再用 Grafana 从 InfluxDB 中获取数据并以特定的模板进行展示 性能监控平台部署实践 一、influxDB 官网:https://www.influxdata.com/downloads/ wget h…

第一篇红队笔记-百靶精讲之W1R3S-john

https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 主机发现 nmap端口扫描及思路 扫描某个网段 扫描单个ip所有端口 重复扫描单个ip具体端口 udp协议再来一次 漏洞扫描 FTP渗透 尝试匿名登陆 防止文件损坏 识别加密方式-hash-identifier base64 Web目录爆破…

CAN协议简介

协议简介 can协议是一种用于控制网络的通信协议。它是一种基于广播的多主机总线网络协议,常用于工业自动化和控制领域。can协议具有高可靠性、实时性强和抗干扰能力强的特点,被广泛应用于汽车、机械、航空等领域。 can协议采用了先进的冲突检测和错误检测…

Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想

文章目录 1.下载并安装Vue2.使用Vue2.1 创建Vue以及挂载Vue2.2 模板语句的数据来源:data2.3 template配置项详解2.4 Vue实例和容器的关系 3.安装devtools4.MVVM分层思想5.通过vm可以访问哪些属性 1.下载并安装Vue (1)Vue是一个基于JavaScrip…

vs - vs2013中编译sqlite3.44.2

文章目录 vs - vs2013中编译sqlite3.44.2概述笔记工程输出归档END vs - vs2013中编译sqlite3.44.2 概述 以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译) 现在准备将手头的vs2019工程改为vs2013的,自然要将sqlite也编译为vs2013版本的。 按…

使用LabVIEW进行大数据数组操作的优化方法

针对大数据量数组操作,传统的内存处理方法可能导致内存不足。通过LabVIEW的图像批处理技术,可以有效地进行大数据数组操作,包括分块处理、并行处理和内存优化等。这种方法能显著提高处理效率和系统稳定性。 图像批处理的优势 内存优化&#…

Qt Designer 生成的 .ui 文件转为 .py 文件并运行

1. 使用使用 PyUIC将 .ui 转 .py (1)打开命令行终端(可以用cmd,或pycharm 下面的 Terminal)。 (2)导航到包含.ui文件的目录。 cd 你的ui文件路径 (3)运行以下命令来…