00. 认识 Java 语言与安装教程
认识 Java
Java 在 20 多年发展过程中,与时俱进,为了适应时代的需要,经历过两次重大的版本升级,一个是 Java 5,它提供了泛型等重要的功能。另一个是提供了 Lambda 表达式等重要的功能的 Java 8。
一些重要的 Java 的版本 JDK 1.2(新增集合类), JDK5(新增泛型), JDK8(LTS版本,新增 lamda 表达式,方法引用), JDK11(LTS 版本 local variable syntax ofr lambda parameters), JDK17(LTS 版本 sealed types, always-strict floating-point semantics), JDK21(LTS 版本)。

Java SE 中提供了 Java 应用程序开发需要的基本的和核心的类库,这些类库:字符串、集合、输入输出、网络通信和图形用户界面等。事实上学习 Java 就是在学习 Java 语法和类库的使用。
Java 安装
mac 环境
手动安装
1. 去官网下载并安装
https://www.oracle.com/technetwork/java/javase/downloads/index.html
2. 双击 dmg 安装包, 点击下一步就行安装就行。安装完成后找到默认的 Java 安装路径, 例如我的是 /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk。如果是普通压缩包,则需要将其解压并移动至 /Library/Java/JavaVirtualMachines 目录中。

3. 配置环境变量
使用 open -e .bash_profile 进行打开, 如果打开失败则先 touch .bash_profile 后重试一次, 拷贝以下内容
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
最后使用 source .bash_profile 刷新使配置生效。
进行验证是否安装对应版本,请键入 java -version 或者 java -version 。
brew 方式安装
- 去 HomeBrew 官网安装 HomeBrew。然后打开 shell 窗口,执行 brew update 以确保 HomeBrew 升级到最新版本。
- 打开 shell 窗口,输入
brew cask install java
linux 环境
可以使用包管理器进行安装,这里详细介绍手动安装。
目前 Java 官网下载需要注册账号了, 很恶心。可以选择三方的阿里的 dragonwell-jdk。
wget https://dragonwell.oss-cn-shanghai.aliyuncs.com/8/8.4.4-GA/Alibaba_Dragonwell_8.4.4-GA_Linux_x64.tar.gz# 解压对应的 tar.gz 或者 zip 文件
tar xf Alibaba_Dragonwell_8.4.4-GA_Linux_x64.tar.gz
复制到命令行后按下回车键执行追加写入命令。
cat >> ~/.bashrc << EOF
export JAVA_HOME=/path/to/<java>
export $JAVA_HOME/bin:PATH=$PATH
EOF
执行以下命令重新加载 .basbrc 文件(也可使用全局功能的 /etc/profile 文件)。
source ~/.bashrc
windows 环境
去官网下载并安装
https://www.oracle.com/technetwork/java/javase/downloads/index.html。
下载后直接双击 exe 进行安装,设置 PATH 和 JAVA_HOME 配置到系统环境变量

注:CLASSPATH 环境变量在大于等于 JDK 5 以后可不用手动配置了。
快捷脚本
setx /M JAVA_HOME "C:\Progra~1\Java\<java>"
setx /M PATH "C:\Progra~1\Java\<java>\bin;%PATH%"echo %PATH%
echo %JAVA_HOME%java -version
配套 Java IDE
IntelliJ IDEA
https://www.jetbrains.com/idea/
社区版免费, 企业版试用固定天数后收费。
Eclipse
下载地址 https://www.eclipse.org/downloads/

可按需选择 for Java Developer 或 Java EE 企业级开发版本。
VS Code
VS code 对 java 的支持良好,部分国外程序员正在使用它。
Netbeans
https://netbeans.org/ 国外用的较多,国内不太推荐
加餐
JDK 的多种选择
JDK Builds from Oracle
https://jdk.java.net/
毕昇 JDK 目前只支持基于 OpenJDK。
bishengjdk-8: Bisheng JDK 8 is a high-performance, production-ready distribution of OpenJDK 8.
https://gitee.com/openeuler/bishengjdk-8
Alibaba Dragonwell 是一款免费的, 生产就绪型 Open JDK 发行版,提供长期支持,包括性能增强和安全修复。
alibaba/dragonwell8: Alibaba Dragonwell8 JDK
https://github.com/alibaba/dragonwell8
Kona 是由腾讯专业 JVM 技术团队维护开发的,基于 OpenJDK 的,提供长期支持并按季度更新的 JDK 发行版本。Kona 目前作为默认 JDK 应用于腾讯云业务场景及其他 Java 应用场景。Kona 基于 OpenJDK,同时提供了更多的功能拓展及维护。通过腾讯 Kona,用户可以获得更为先进的功能及性能优化,提高用户和开发者的使用体验。目前,腾讯 Kona 仅支持 Linux x86-64 位系统。
Liberica 是一个 100% 开源 Java 实现。它是由 BellSoft 贡献的 OpenJDK 构建的,经过了彻底的测试,并通过了 OpenJDK 许可下 提供的 JCK。Standard 为常规用途,full版本包含 JavaFX,lite 为精简的 OpenJDK。文件体积 Full > Standard > lite。
Download OpenJDK builds of Liberica JDK, Java Linux, Windows, macOS | BellSoft Java
https://bell-sw.com/pages/downloads/
Amazon Corretto 是开放 Java 开发工具包 (OpenJDK) 的免费、多平台、生产就绪型发行版。Corretto 提供长期支持,其中包括性能增强和安全修复。亚马逊在内部的数千种生产服务上运行 Corretto,并且 Corretto 已被证明能够兼容 Java SE 标准。借助 Corretto,您可以在常用操作系统(包括 Linux、Windows 和 macOS)上开发和运行 Java 应用程序。
https://aws.amazon.com/cn/corretto/
下载 Microsoft Build of OpenJDK | Microsoft Learn
https://docs.microsoft.com/zh-cn/java/openjdk/download
下载 Azul Zulu Builds of OpenJDK
https://www.azul.com/downloads/?package=jdk
GraalVM JDK 是一个高性能的 JDK 发行版,它旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,同时还为 JavaScript、Python、基于 LLVM 的语言(如 C 和 C++)以及许多其他流行编程语言提供运行时。此外,GraalVM 为编程语言之间提供了高效互操作性,并将 Java 应用程序提前编译为本机可执行文件,从而加快启动时间并降低内存开销。
https://www.graalvm.org/downloads
记录
linux 下 Java 编码环境的设置
如果运行某些 linux 工具软件出问题(因为对中文编码支持有问题),可以尝试如下切换编码。
# 切换为中文编码
export LANG=zh_CN.GBK# 切换为英文编码
export LANG=en_US# 切换为 UTF-8 编码
export LANG=zh_CN.UTF-8
各种 OPTIONS 的区别
也许你经常遇到 JAVA_OPTS、_JAVA_OPTIONS 和 JAVA_TOOL_OPTIONS,那么他们有什么不同呢?
- JAVA_OPTS:常用于一些应用的配置,如 Tomcat,但它一般不作为环境变量,也不能被 JVM 识别的,是那些应用的自定义配置;
- _JAVA_OPTIONS:也是作为环境变量来替代命令行参数的,但它是 JVM 厂家自定义的,可以覆盖 JAVA_TOOL_OPTIONS,但各厂家的不同,_JAVA_OPTIONS 是 Oracle 的 JVM,而 IBM 的则是用 IBM_JAVA_OPTIONS。
- JAVA_TOOL_OPTIONS:是标准的,所有虚拟机都能识别和应用的。
所以一般情况下使用 JAVA_TOOL_OPTIONS 即可。
有些应用不方便设置 JVM 参数,如命令行应用、通过 JNI(Java Native Interface)API 调用虚拟机的应用、脚本嵌入虚拟机中的应用等。这种情况环境变量 JAVA_TOOL_OPTIONS 就非常有用了,它会被 JNI API 的 JNI_CreateJavaVM 函数使用。
例如可以在系统环境变量中增加一个变量,变量名为: JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8,保存,重新打开命令提示符,现在,再运行一次刚刚的程序即可。
JAVA_TOOL_OPTIONS 的经典用法是指定默认语言和默认区域设置,用于解决命令行导致中文乱码,
切换为中文环境
export JAVA_TOOL_OPTIONS="-Duser.language=zh -Duser.region=CN"
切换为英文环境
export JAVA_TOOL_OPTIONS="-Duser.language=en -Duser.region=US"
问答
Error:java: 无效的标记: --release
我目前使用的是版本 8,当我改成 11 后就 ok 了。
NetBeans 安装提示 neatbeans cannot find java 1.8 or higher
去 netbeans\etc 目录下的 netbeans.conf 配置文件里面配置 Java 路径
netbeans_jdkhome="C:\Program Files\jdk_11"
参考
- 丁振凡编著,《Java 语言程序设计(第 2 版)》华东交大版,2014.9
- 免费公开课_传智播客和黑马程序员免费公开课 http://yun.itheima.com/open
- Java 从小白到大牛-图书-图灵社区 http://www.ituring.com.cn/book/2480
- openjdk 官网 http://openjdk.java.net/
- Java Downloads | Oracle https://www.oracle.com/java/technologies/downloads/
相关文章:
00. 认识 Java 语言与安装教程
认识 Java Java 在 20 多年发展过程中,与时俱进,为了适应时代的需要,经历过两次重大的版本升级,一个是 Java 5,它提供了泛型等重要的功能。另一个是提供了 Lambda 表达式等重要的功能的 Java 8。 一些重要的 Java 的…...
数据结构-栈-004
1链栈 1.1栈结点结构体定义 /*定义一个数据结构*/ typedef struct student {char name[32];char sex;int age; }DATA_TYPE;/*定义一个栈结点*/ typedef struct stack_node {DATA_TYPE data;//数据域struct stack_node *pnext;//指针域 }STACK_NODE;1.2栈顶结点结构体定义 /*…...
(第76天)XTTS 升级:11GR2 到 19C
参考文档: 11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 1389592.1)V4 使用跨平台增量备份减少可传输表空间的停机时间 (Doc ID 2940565.1)前言 XTTS(Cross Platform Transportable Tablespaces,跨平台迁移表空间)是…...
修改网站源码,给电子商城的商品添加图片时商品id为0的原因
修改网站源码,给电子商城的商品添加图片时商品id为0的原因。花了几个小时查找原因。后来,由于PictureControl.class.php是复制CourseControl.class.php而来,于是对比了这两个文件,在CourseControl.class.php找到了不一样的关键几条…...
ffmpeg开发异步AI推理Filter
ffmpeg开发异步AI推理Filter 1.环境搭建、推理服务及客户端SDK2.编译原版ffmpeg3.测试原版ffmpeg的filter功能4.准备异步推理filter5.修改点6.重新编译ffmpeg7.测试异步推理filter本文旨在阐述如何开发一个FFmpeg Filter,该模块利用gRPC异步通信机制调用远程视频处理服务。这一…...
python与excel第七节 拆分工作簿
一个工作簿中多个工作表拆分为多个工作簿 假设一个excle工作簿中有多个工作表,现在需要将每个工作表拆分为单独的工作簿。 例子: import xlwings as xw# 设置生成文件的路径path D:\\TEST\\dataIn# 源文件的路径workbook_name D:\\TEST\\dataIn\\产…...
JS08-DOM节点完整版
DOM节点 查找节点 父节点 <div class="father"><div class="son">儿子</div></div><script>let son = document.querySelector(.son)console.log(son.parentNode);son.parentNode.style.display = none</script>通过…...
【python】python3基础
文章目录 一、安装pycharm 二、输入输出输出 print()文件输出:格式化输出: 输入input注释 三、编码规范四、变量保留字变量 五、数据类型数字类型整数浮点数复数 字符串类型布尔类型序列结构序列属性列表list ,有序多维列表列表推导式 元组tu…...
计算机三级网络技术 选择+大题234笔记
上周停去准备计算机三级的考试啦,在考场上看到题目就知道这次稳了!只有一周的时间,背熟笔记,也能稳稳考过计算机三级网络技术!...
智能合约 之 ERC-721
ERC-721(Non-Fungible Token,NFT)标准 ERC-721是以太坊区块链上的一种代币标准,它定义了一种非同质化代币(Non-Fungible Token,NFT)的标准。NFT是一种加密数字资产,每个代币都具有独…...
== 和 equals 的区别是什么?
和 equals() 在 Java 中都是用于比较两个对象,但它们之间存在显著的差异: 比较的内容: :这是 Java 中的基本比较运算符,对于基本数据类型(如 int, char, double 等),它比较的是值&a…...
VUE:内置组件<Teleport>妙用
一、<Teleport>简介 <Teleport>能将其插槽内容渲染到 DOM 中的另一个位置。也就是移动这个dom。 我们可以这么使用它: 将class为boxB的盒子移动到class为boxA的容器中。 <Teleport to".boxA"><div class"boxB"></div> &…...
ruoyi-nbcio-plus后端里mapstruct-plus和lombok的使用
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码:…...
企业如何选择一个开源「好」项目?
开源 三句半 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规! 显然,开源已成为一股不可阻挡的洪流,企业拥抱开源,积极参与开源项目不仅是响应技术潮流的必然选择,更是实现自身技术创新、市场拓…...
c++算法学习笔记 (14) 并查集
1.合并集合 一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。 现在要进行 m 个操作,操作共有两种: M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,…...
import * as的使用
import * as 是将一个模块的所有导出内容作为一个命名空间对象导入到当前模块中,其中 * 表示导入该模块中的所有导出内容,而 as 则用于指定导入的命名空间对象的名称。 例如:在 formatter 文件中有两个方法导出 const a () > {console.…...
微服务(基础篇-003-Nacos)
目录 Nacos注册中心(1) 认识和安装Nacos(1.1) Nacos快速入门(1.2) 服务注册到Nacos(1.2.1) Nacos服务分级存储模型(1.3) 配置集群(1.3.1) 根据集群修改…...
java数据结构与算法刷题-----LeetCode215. 数组中的第K个最大元素
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路:时间复杂度O( n n n),空间复杂度…...
Springboot 整合 Knife4j (API文档生成工具)
目录 一、Knife4j 介绍 二、Springboot 整合 Knife4j 1、pom.xml中引入依赖包 2、在application.yml 中添加 Knife4j 相关配置 3、打开 Knife4j UI界面 三、关于Knife4j框架中常用的注解 1、Api 2、ApiOperation 3、ApiOperationSupport(order X) 4、ApiImplici…...
C语言---------strlen的使用和模拟实现
字符串是以‘\0’作为结束标志,strlen函数的返回值是‘\0’前面的字符串的个数(不包括‘\0’) 注意 1,参数指向的字符串必须以‘\0’结束 2,函数的返回值必须以size_t,是无符号的 使用代码 #include<stdio.…...
LLM测试工程师必看,Claude E2E测试架构设计,从用例生成、黄金样本构建到回归基线告警闭环
更多请点击: https://codechina.net 第一章:LLM测试工程师必看,Claude E2E测试架构设计,从用例生成、黄金样本构建到回归基线告警闭环 核心架构概览 Claude端到端测试架构采用三层解耦设计:输入层(动态用…...
修复 PowerShell 7 下 conda activate 报错的指南
修复 PowerShell 7 下 conda activate 报错的指南 适用场景:升级到 PowerShell 7.x 后,conda activate 突然报错,但 Windows PowerShell 5.1 正常。 发布日期:2026-05-24 适用版本:conda 23.x PowerShell 7.x 一、问题…...
基于概率随机森林的天文测光数据尘埃恒星自动分类实践
1. 项目概述:当机器学习遇见尘埃恒星处理海量天文数据,尤其是从像斯皮策空间望远镜(Spitzer)的SAGE巡天这类项目中获取的多波段测光数据,一直是个既让人兴奋又头疼的活儿。传统的光谱分类方法虽然精准,但面…...
MPC Video Renderer技术解析:DirectShow硬件加速渲染器的实现原理与深度剖析
MPC Video Renderer技术解析:DirectShow硬件加速渲染器的实现原理与深度剖析 【免费下载链接】VideoRenderer Внешний видео-рендерер 项目地址: https://gitcode.com/gh_mirrors/vi/VideoRenderer MPC Video Renderer是一款基于GPL v3协…...
SSH 远程连接效率提升:5个你可能不知道的实用技巧
SSH 是后端开发中最常用的远程连接工具之一。但大多数人只用 ssh userhost 连上去就完了,其实 SSH 还有很多隐藏技巧可以大幅提升效率。1. 使用配置文件简化连接每次敲一长串 ssh user192.168.1.100 -p 2222 太麻烦了。只需在 ~/.ssh/config 里加上:Host…...
从‘调参苦手’到‘一击即中’:实战解读glmnet中lambda.min与lambda.1se到底怎么选
从‘调参苦手’到‘一击即中’:实战解读glmnet中lambda.min与lambda.1se到底怎么选 在机器学习的世界里,LASSO回归就像一位精明的裁缝,能够为数据量身定制最合身的模型。而glmnet包中的lambda.min和lambda.1se,则是这位裁缝手中的…...
数据预处理实战:缺失值、噪声与归一化处理的核心技术与Python实现
1. 项目概述:为什么数据预处理是模型成败的“胜负手” 在数据科学和机器学习的实战中,我见过太多团队将80%的精力投入到模型调参和算法选型上,却对数据预处理草草了事。结果往往是,一个理论上精妙的模型,因为“喂”进去…...
使用taotoken cli工具,一键为团队开发环境配置多模型api密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用taotoken cli工具,一键为团队开发环境配置多模型api密钥 在团队协作开发中,统一管理多个大模型API的密…...
pi.dev 域名获赠,一文了解 Pi Agent Harness 项目开发、贡献等全方面信息
pi.dev 域名由 exe.dev 慷慨捐赠新贡献者提交的新问题和拉取请求(PR)默认会自动关闭。维护者会每天审核自动关闭的问题,详情请参阅 CONTRIBUTING.md。Pi Agent Harness 单仓库这里是 pi agent harness 项目的主页,其中包含我们可自…...
城通网盘解析工具:3分钟获取直连地址的完整高效解决方案
城通网盘解析工具:3分钟获取直连地址的完整高效解决方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 城通网盘解析工具 ctfileGet 是一款专为破解城通网盘下载限制而设计的开源工具&…...
