目录
Java开发环境搭建

本文为环境大件课程的笔记,课程地址后台开发常用的开发环境搭建

环境搭建都是很简单的,这个文章记录一下,方便大家找到下载的地址

关于java

Java 的发展历史

Java 是一门历史比较悠久的编程语言,最早由 Sun Microsystems(Sun 公司) 开发。

Java 项目开始于 1991 年,最初由 James Gosling(詹姆斯·高斯林)等人在 Sun 公司内部开发。当时这门语言主要面向电视、机顶盒等嵌入式设备,最初的名字叫做 Oak。

后来随着互联网的发展,Sun 公司发现 Java 非常适合开发跨平台的网络应用,于是在 1995 年正式发布 Java。

Java 有一个非常重要的设计理念:

Write Once, Run Anywhere(一次编写,到处运行)

Java 程序并不是直接编译成某个操作系统能够执行的机器代码,而是先编译成 Java 字节码(Bytecode),再由不同平台上的 **JVM(Java Virtual Machine,Java 虚拟机)**负责执行。

因此,只要对应的平台安装了 JVM,同一份 Java 程序通常就可以运行在 Windows、Linux、macOS 等不同操作系统上。

从 Sun 到 Oracle

Java 最初属于 Sun 公司。2010 年,Oracle(甲骨文)完成了对 Sun Microsystems 的收购,Java 也因此进入 Oracle 时代。

不过 Java 并不等于 Oracle JDK。

Java 的主要开源实现是 OpenJDK,现在我们使用的很多 JDK 发行版实际上都是基于 OpenJDK 构建的,例如 Oracle JDK、Eclipse Temurin、Amazon Corretto 等。

Java 版本的发展

Java 发展至今已经发布了很多版本,其中比较有代表性的版本包括:

  • JDK 1.0:1996 年发布,Java 的第一个正式版本。
  • Java 5:加入泛型、注解、枚举等重要特性。
  • Java 8:加入 Lambda 表达式、Stream API 等,是影响非常大的一个版本。
  • Java 9:引入模块化系统,同时 Java 开始采用更快的版本发布节奏。
  • Java 11:长期支持版本(LTS),在企业项目中得到广泛使用。
  • Java 17:长期支持版本,也是目前很多 Java 项目升级时的重要选择。
  • Java 21 / Java 25:后续的长期支持版本,Java 仍然在持续更新和发展。

虽然 Java 已经诞生三十多年,但目前仍然是主流的编程语言之一,在后端服务、企业级应用、大数据等领域都有非常广泛的应用。

了解完 Java 的基本历史之后,接下来我们就可以正式开始搭建 Java 开发环境了。

为什么要讲上面的内容呢?就是要说明下载地址,和商业授权的事情,决定我们怎么下载。

官方地址

前面提到sun公司,所以www.sun.com也是一个入口,但是这个入口会自动跳转到[www.oracle.com](http://www.java.com/)

现在最快的方式就是www.java.com了,直接跳转到主页

点击开发人员下载,就跳转到下载页面了

但是,看到锁了吗?是的,需要登录才可以的。关于java版本的授权参考如下:

OTN 到底意味着什么?它允许很多场景免费使用,例如:

  • 个人使用;
  • 开发;
  • 测试;
  • 原型开发;
  • Demo / 演示;
  • 一些特定 Oracle 产品相关场景。

所以,个人开发是没有问题的,那么不想注册账号登录,怎么搞呢?

OpenJDK,看一下OpenJDK和ORACLE JDK的区别

OpenJDK下载,https://jdk.java.net/archive/

关于版本的选择

Java 主要版本介绍

Java 发展至今已经经历了很多版本。对于普通开发者来说,并不需要了解每一个版本,重点关注 Java 8、Java 11、Java 17、Java 21 和 Java 25 即可,这几个版本都是具有代表性的 LTS(Long-Term Support,长期支持)版本。

Java 8

Java 8 发布于 2014 年,可以说是 Java 发展历史上影响最大的版本之一。

它带来了很多现在已经习以为常的功能,例如:

  • Lambda 表达式;
  • Stream API;
  • 函数式接口;
  • 方法引用;
  • 接口 Default Method;
  • <span>Optional</span>;
  • 全新的日期时间 API,例如 <span>LocalDateTime</span>。

例如 Java 8 之后,我们可以使用 Lambda:

plaintext
复制代码
list.forEach(item -> System.out.println(item));

也可以使用 Stream 对集合进行处理:

plaintext
复制代码
List<String> result = list.stream()
        .filter(item -> item.startsWith("A"))
        .collect(Collectors.toList());

Lambda 和 Stream 的引入让 Java 开始拥有更加完善的函数式编程能力。

Java 8 在企业项目中的影响非常大,即使到了今天,仍然能够看到大量基于 Java 8 开发的老项目。


Java 11

Java 11 发布于 2018 年,是 Java 8 之后非常重要的一个 LTS 版本。

从 Java 9 开始,Java 改为了大约 每 6 个月发布一个新版本,因此 Java 8 → Java 11 中间实际上还经历了 Java 9 和 Java 10。

这一阶段比较重要的变化包括:

  • Java 9 引入 模块化系统 JPMS(Project Jigsaw);
  • JShell;
  • Java 10 引入局部变量类型推断 <span>var</span>;
  • Java 11 正式提供新的 HTTP Client;
  • 可以直接运行单个 <span>.java</span> 源文件;
  • 对字符串、文件等常用 API 进行了增强;
  • Java EE、CORBA 等一些历史模块从 JDK 中移除。

例如:

plaintext
复制代码
var name = "Java";

System.out.println(name);

需要注意的是,<span>var</span> 并不是把 Java 变成了动态类型语言,变量依然具有确定的类型,只是由编译器帮助我们进行类型推断。

Java 11 可以看作 Java 从早期版本逐渐进入现代 Java 的一个重要节点。


Java 17

Java 17 发布于 2021 年,同样是一个非常重要的 LTS 版本。

从 Java 11 到 Java 17,又陆续加入了很多现代 Java 语言特性,其中比较值得关注的包括:

  • Text Blocks 文本块;
  • Switch Expressions;
  • Record;
  • <span>instanceof</span> 模式匹配;
  • Sealed Classes;
  • 更完善的垃圾收集器和 JVM 性能优化。

例如传统的数据对象可能需要写很多代码:

plaintext
复制代码
public class User {

    private String name;
    private Integer age;

    // constructor
    // getter
    // setter
    // equals
    // hashCode
    // toString
}

使用 <span>record</span> 可以简化为:

plaintext
复制代码
public record User(String name, Integer age) {
}

Java 17 还正式加入了 Sealed Classes,可以限制哪些类允许继承某个类或实现某个接口。

Java 17 是目前很多从 Java 8 / Java 11 升级的企业项目会遇到的重要版本。


Java 21

Java 21 发布于 2023 年,是 Java 17 之后的 LTS 版本。

这一阶段 Java 继续向现代语言特性和高并发方向发展,比较值得关注的功能包括:

  • Virtual Threads(虚拟线程);
  • Record Patterns;
  • Pattern Matching for <span>switch</span>;
  • Sequenced Collections;
  • Generational ZGC;
  • String Templates(Preview);
  • Scoped Values(Preview);
  • Structured Concurrency(Preview)。

其中最受关注的功能之一就是 虚拟线程(Virtual Threads)。

传统 Java 服务通常使用平台线程:

plaintext
复制代码
Thread thread = new Thread(() -> {
    // 执行业务
});

thread.start();

Java 21 可以创建非常轻量的虚拟线程:

plaintext
复制代码
Thread.startVirtualThread(() -> {
    // 执行业务
});

虚拟线程由 JVM 进行调度,可以以更低的线程成本处理大量并发任务,尤其适合大量任务处于 I/O 等待状态的服务器程序。Virtual Threads 在 Java 21 中正式成为标准功能。

Java 21 还进一步完善了模式匹配,例如 Record Patterns 和 <span>switch</span> Pattern Matching,使 Java 在处理不同类型的数据时更加简洁。


Java 25

Java 25 发布于 2025 年,是继 Java 21 之后的新一个 LTS 版本。

Java 25 继续完善现代 Java 的语言特性、并发模型以及 JVM,其中比较值得关注的变化包括:

  • Module Import Declarations;
  • Compact Source Files;
  • Instance <span>main</span> Methods;
  • Scoped Values;
  • Structured Concurrency;
  • Flexible Constructor Bodies;
  • Primitive Types in Patterns 等功能的继续演进;
  • Virtual Threads、GC 和 JVM 性能继续优化。

例如 Java 25 正式加入了 Module Import Declarations,可以直接导入一个模块导出的包:

plaintext
复制代码
import module java.base;

从而减少大量单独的 <span>import</span>。

同时 Java 25 进一步降低了编写简单 Java 程序的门槛。对于一些简单程序,不再一定需要从传统的:

plaintext
复制代码
public class Main {

    public static void main(String[] args) {
        System.out.println("Hello Java");
    }
}

这种完整结构开始学习 Java,而可以使用更加简洁的程序结构。

这些变化对大型企业项目的代码结构影响可能没有 Java 8 的 Lambda 或 Java 21 的虚拟线程那么明显,但可以看出 Java 正在逐渐降低语言本身的入门门槛。


主要版本对比

简单总结一下:

Java 版本 发布时间 代表性变化
Java 8 2014 Lambda、Stream、新日期 API、Optional
Java 9 2017 模块化系统 JPMS、JShell
Java 10 2018 <span>var</span>
Java 11 2018 HTTP Client、单文件运行、API 增强
Java 12~16 2019~2021 Switch 表达式、Text Blocks、Record、模式匹配等逐步加入
Java 17 2021 Sealed Classes,并汇集 Record、Text Blocks 等现代特性
Java 18~20 2022~2023 Virtual Threads、模式匹配等功能持续预览和完善
Java 21 2023 Virtual Threads、Record Patterns、Switch Pattern Matching
Java 22~24 2024~2025 并发、语言语法、FFM API 等继续演进
Java 25 2025 Module Import、Compact Source Files 等,继续完善现代 Java

如果只是从学习 Java 和开发企业级项目的角度来看,可以重点记住:

Java 8 → Java 11 → Java 17 → Java 21 → Java 25

其中 Java 8 是现代 Java 的一个重要起点;Java 11 是 Java 8 之后的重要过渡版本;Java 17 开始大量使用更加现代的 Java 语言特性;Java 21 的虚拟线程对服务端并发编程具有重要意义;Java 25 则是目前最新一代 LTS 版本。

现在主要是用Java17的多,为什么这里会强调版本呢?一是考虑到第三方库,要求是高的版本了。当然,如果全用Java8是没问题的,配套的库支持就行。

安装示例

安装是很简单的,直接下载,傻瓜式安装就好。

这里以Java17为例子,我从OpenJdk下载页面

shell
复制代码
https://jdk.java.net/archive/

下载完就去安装吧,我晚点再补充,我这个电脑上已经有了,我又不想卸载。我用另外一个电脑安装给大家看。

安装完以后,在命令行执行:

这样子,java就有了。如果没有这个输出,出现未找到命令之类的,就是环境变量没有配置好。

也就是告诉系统我们的java安装在了哪个目录。

本文由 拉大锯 原创发布于 阳光沙滩 , 未经作者授权,禁止转载
评论
0 / 1024
推荐文章
Java开发环境搭建
本文是一篇关于Java开发环境搭建的详细笔记,涵盖了Java的发展历史、版本演进以及如何选择和安装合适的Java版本。对于开发者来说,这是一份实用的技术指南,帮助快速上手Java开发。
Vue3.js项目的创建
本文详细介绍了如何使用Vue3创建项目,包括Node.js的安装和配置,以及项目的初始化过程。适合初学者学习如何快速搭建Vue3开发环境,并推荐了相关课程供进一步学习。
Network Tools : 您的运维“助手”升级了
Network Tools是一款专为解决运维难题而设计的软件,集设备管理、配置备份、性能监控和告警处理于一体。通过统一的工作台,帮助运维人员更高效地管理资产、定位故障并提升团队协作效率。无论是设备在线状态还是具体问题排查,都能得到全面支持。
Ubuntu 软件安装与彻底卸载指南
本文详细介绍了在 Ubuntu 系统中如何规范安装和彻底卸载 .deb 格式软件,包括依赖修复、残留清理以及图形化工具推荐,适合需要维护系统环境的用户。
JavaWeb开发客户程序更新特殊环境下的骚操作
本文分享了在无外网环境下,如何利用Docker和docker-compose实现高效部署的实战经验。通过基础镜像和本地jar包挂载的方式,解决了内网环境下的依赖问题,适合需要灵活部署方案的技术人员参考。
Linux 防火墙完全指南:从原理到多发行版实战
本文全面解析Linux防火墙的底层原理与主流工具配置,涵盖UFW、firewalld、iptables、nftables等方案,适合不同发行版用户。从基础概念到生产环境加固建议,助你掌握核心安全策略,确保服务器与网络的安全运行。
水上派对英语单词篇
探索FLOATOPIA水上派对的完整指南,涵盖签到流程、场地指引、安全须知、活动安排及夜场舞会等实用英语词汇与对话。无论是初学者还是老手,都能轻松掌握关键术语,享受完美水上体验。
麒麟操作系统下使用 virt-customize 重置虚拟机 root 密码实战
本文详细介绍了在麒麟操作系统环境下使用 virt-customize 工具重置 KVM 虚拟机 root 密码的完整流程,包含安装步骤、常见问题及解决方案,帮助运维人员高效处理密码遗忘或批量初始化场景,避免数据丢失。
浅析JS预编译-函数篇
本文详细讲解了JavaScript中函数的预编译过程,包括AO对象的创建、变量和函数声明的提升,以及执行阶段的变化。适合初学者了解JS执行机制,帮助深入理解代码运行逻辑。
访问Github的另一种姿势
本文介绍了如何通过Watt ToolKit等工具加速访问Github,适合对网络技术感兴趣的读者。内容涵盖工具介绍、下载和使用方法,以及一些实用技巧,值得一看。
使用Gulp压缩JS
本文详细介绍了如何使用Gulp压缩JavaScript文件,特别是支持ES6语法的处理方法。通过实际操作和效果对比,帮助开发者提升代码性能,适合对前端自动化工具感兴趣的读者。
使用Gulp压缩CSS
本文详细介绍了如何使用Gulp工具对CSS文件进行压缩,提升网页加载速度。适合需要优化静态资源的开发者,提供清晰的步骤和示例,帮助快速上手。
从0部署Nuxtjs项目
本文详细介绍了如何将Nuxt.js项目部署到公网,涵盖Node.js安装、环境配置、源码上传及使用PM2启动服务的全过程,适合开发者学习和实践。
Linux 命令行美化利器:tree 命令完全指南(安装 + 全部参数详解)
掌握 Linux 下的 `tree` 命令,快速直观地查看目录结构。本文详细讲解安装方法、参数含义及实战场景,适合开发者和系统管理员提升工作效率。
Linux常用命令(一)
本文详细介绍了Linux基础命令,包括文件操作、系统显示、网络状态、软件包管理等,适合初学者学习和查阅,是掌握Linux系统的实用指南。
大模型推理参数解码:温度、Top-p 与核采样如何塑造生成文本的灵魂
探索大语言模型的采样参数如何塑造生成内容,从温度到Top-p,从惩罚机制到熵控制,揭示背后的信息论原理与实践策略。了解如何通过参数调优,让AI既保持知识的严谨,又拥有创造力的自由。
记从0使用Claude code写代码
本文介绍了如何使用Claude Code搭配DeepSeek进行编程,详细讲解了安装Node.js、全局安装Claude、配置模型以及使用方法。对于开发者来说,这是一份实用的技术教程,尤其适合对AI编程工具感兴趣的读者。
Android-Studio-Gradle同步失败-Library为null的通用排查指南
遇到 Android Studio Gradle Sync 失败时,不要轻易删除全局缓存。本文详细解析了错误原因,并提供了一系列精准的排查步骤和解决方案,帮助开发者快速定位并解决问题,提升开发效率。
PHP实现密码加密
本文详细介绍了Bcrypt密码加密技术及其在PHP中的应用,帮助开发者提升用户密码的安全性。通过实际代码示例,展示了如何使用password_hash和password_verify函数进行密码加密与验证,是学习网络安全知识的实用指南。
WordCloud效果,滚动标签
本文详细介绍了如何在Vue项目中集成WordCloud组件,包括依赖安装、属性配置和使用方法。适合开发者学习如何实现数据可视化功能,提升项目交互体验。
从0使用WordPress搭建一个优美的网站
本文详细介绍了如何使用WordPress搭建一个美观的网站,从安装到主题配置和功能拓展,为读者提供了实用的操作指南。无论是初学者还是有一定经验的开发者,都能从中获得有价值的参考。
JS实现在网站底部添加运行时间
想知道如何在网站底部显示运行时间?本文详细讲解了通过JavaScript实现这一功能的方法,包括时间计算逻辑和代码实现。适合前端开发者学习参考,轻松为网站添加实用功能。
在Vercel上部署Hexo博客
本文详细介绍了如何在Vercel上快速部署Hexo博客,无需后端服务即可实现高效发布。相比传统方式,省去了手动生成和上传静态文件的步骤,更加便捷。适合想要搭建个人博客的开发者参考。
从0搭建一个Hexo博客
本文详细介绍了Hexo博客框架的使用方法,从安装到部署全流程讲解,适合想快速搭建个人博客的技术爱好者。内容清晰易懂,是入门Hexo的理想指南。
离线设备激活方案:古老的 Windows 光盘激活,离线算法授权等
本文深入解析了离线激活的核心原理与实现方式,从历史案例到现代技术,全面剖析了如何在无网络环境下确保软件授权的安全性。通过设备指纹、授权文件校验等手段,为开发者提供了可复用的架构设计思路,适用于工业、医疗等对网络依赖较低的场景。
Hexo实现生成站点地图
想为你的Hexo博客添加站点地图功能吗?本文详细介绍了如何通过安装插件和配置文件来实现,适合没有内置该功能的新主题或自定义主题的用户。简单步骤助你提升搜索引擎优化效果。
Hexo实现代码压缩
本文分享了如何通过Hexo插件优化博客性能,详细介绍了安装和配置过程,帮助提升网页加载速度。适合对网站优化感兴趣的开发者阅读。
记一次 GitHub 幽灵协作者大清洗:强制重写 Git 历史与穿透 CDN 缓存实践
本文详细讲解了如何解决GitHub上出现的‘幽灵协作者’问题,通过重写Git历史和穿透CDN缓存,彻底清理错误提交记录。适合开发者学习如何高效管理项目历史与优化仓库信息。
从一行 `native` 堆栈追到 InstallReferrer:一次主线程 ANR 的排查全过程
本文详细记录了一次主线程ANR的排查过程,从一行native堆栈追踪到InstallReferrer服务调用。通过分析堆栈、源码和系统调用,揭示了归因SDK在主线程同步调用Play商店服务导致的ANR问题,并提供了多维度的解决方案。对于Android开发者来说,是一篇深入浅出的技术实践指南。
Linux从 HelloWorld 到数据库服务注册
本文详细解析了Linux系统中服务注册的概念与实现,通过一个简单的Hello World示例,帮助读者理解如何将程序注册为systemd服务,并掌握相关操作命令。无论是数据库还是其他应用,了解服务注册机制都是系统管理的重要基础。