1. 这不是“装个软件”那么简单Win11下Java开发环境的真实门槛你搜“IntelliJ IDEA安装教程”页面上铺天盖地是截图箭头“下一步”仿佛点几下鼠标就能跑出HelloWorld。但现实是我上周帮三个刚转行的朋友搭环境两个卡在“找不到JDK”一个在IDEA里死活编译不过报错“No JVM could be found on your system”。他们用的全是最新版Win11硬件配置不差问题却出在最基础的环节——JDK和JVM的关系没理清环境变量配得似是而非IDEA根本没认出系统里那个明明装好了的JDK。这背后不是操作步骤错了而是对Java运行机制的理解断层。JVM不是个独立软件它藏在JDK里JRE是JVM加基础类库但现代开发几乎不用单独装JRE而JDK才是真正的“全家桶”它包含编译器javac、调试器jdb、文档生成工具javadoc当然还有JVM本身。很多人下载了Oracle官网的JDK解压完就以为万事大吉结果IDEA打开设置里根本找不到JDK路径——因为Win11默认把JDK装进了Program Files目录而这个路径带空格Windows的PATH环境变量处理空格时极其脆弱稍有不慎就失效。更隐蔽的是Win11的系统级变化。2023年之后的Win11版本尤其是22H2及更新默认启用了“Windows Defender Application Control”WDAC策略它会静默拦截某些未签名的Java启动脚本同时PowerShell的执行策略默认为Restricted导致很多自动化配置脚本直接报错“无法加载文件”。这些细节不会出现在任何“三步安装法”的教程里但它们就是你反复重启IDEA、重装JDK、甚至重装系统的真正原因。所以这篇内容不只告诉你“点哪里”而是带你拆开Win11、JDK、IDEA这三者的咬合结构看清每个螺丝拧多紧才不会松动。适合所有刚接触Java开发的人也适合那些“装过十次但每次都要查百度”的老手——因为这一次我们解决的是根子上的问题。2. 环境搭建的整体设计逻辑为什么必须按这个顺序来2.1 先搞懂“谁依赖谁”JVM、JRE、JDK的物理关系很多初学者被这三个缩写绕晕以为它们是并列的三个软件。其实它们是层层嵌套的“俄罗斯套娃”JVMJava Virtual Machine是最内核的“引擎”它不直接对外提供服务就像汽车的发动机——你不能坐进发动机里开车但它决定了车能跑多快、多稳。JVM负责把.class字节码翻译成当前操作系统能执行的机器指令它本身是平台相关的Windows版JVM和Mac版JVM完全不同但向上屏蔽了差异让Java实现“一次编写到处运行”。JREJava Runtime Environment JVM 核心类库java.lang、java.util等。你可以把它理解为“能运行Java程序的最小环境”。比如你只下载一个JRE就能双击运行别人编译好的.jar文件但你没法自己写代码、编译、调试——因为缺编译器和开发工具。JDKJava Development Kit JRE 开发工具集javac、javadoc、jdb等。这才是开发者真正需要的“工作台”。它自带一个JRE所以装了JDK就自动有了JVM和运行环境。现在主流开发中你永远只需要装JDKJRE和单独的JVM都不用单独下载或配置。Oracle官网早已停止单独发布JREOpenJDK项目也默认只提供JDK构建。提示当你在IDEA里看到“Project SDK”选项时它要找的就是JDK的根目录比如C:\Program Files\Java\jdk-17.0.1而不是里面的jre子目录。选错路径是“找不到JDK”错误的最常见原因。2.2 Win11的特殊性为什么旧教程在新系统上频频失效Win11不是Win10的皮肤换色它在底层做了几处关键改动直接影响Java环境UAC用户账户控制权限提升更激进Win11对Program Files目录的写入保护比Win10更强。当你用管理员权限运行JDK安装程序时它会把JDK装进C:\Program Files\Java\但如果你后续用普通用户身份启动IDEAIDEA可能因权限不足无法读取该目录下的某些配置文件导致JVM初始化失败。默认启用的“内存完整性”Memory Integrity功能这是Windows安全中心里的一个开关开启后会阻止未签名的驱动和低级别进程加载。某些老旧的JDK版本如JDK 8u202之前的或第三方JVM如Zing JVM的启动模块可能因签名问题被拦截表现为IDEA启动时黑屏或直接退出。PowerShell执行策略变更Win11默认执行策略是AllSigned或RemoteSigned这意味着你从网上下载的.ps1脚本比如某些JDK环境变量一键配置脚本即使没病毒也会被拒绝执行报错“无法加载文件因为在此系统中禁止运行脚本”。这些都不是Bug而是Win11的安全加固措施。所以我们的方案必须绕过它们而不是硬碰硬——比如用CMD替代PowerShell配置环境变量用IDEA内置的JDK管理器替代手动修改系统PATH。2.3 整体流程设计为什么必须“先装JDK再配环境变量最后装IDEA”这不是教条而是由依赖链决定的JDK是基石没有JDK就没有javac编译器IDEA连最基本的语法检查都做不了。它必须最先安装且安装路径必须稳定不能含中文、空格、特殊符号。环境变量是桥梁JAVA_HOME指向JDK根目录PATH里加入%JAVA_HOME%\bin这样系统命令行才能识别java -version和javac -version。IDEA启动时会扫描系统PATH寻找JDK如果PATH里没有它才会去“设置→Project Structure→SDKs”里手动添加。但手动添加只是IDEA层面的配置不影响系统级Java命令而很多插件如Maven、Gradle依赖系统PATH里的Java所以环境变量必须配好。IDEA是应用层它不自带JDK完全依赖外部JDK。装IDEA时它会自动检测已安装的JDK如果没检测到它会提示你下载或手动指定。但此时JDK必须已存在否则IDEA的“自动检测”功能就是摆设。这个顺序一旦颠倒比如先装IDEA再装JDKIDEA很可能缓存了“未找到JDK”的状态即使你后来装了JDK它也不会自动刷新必须手动触发重新扫描。3. 核心细节解析与实操要点避开Win11特有的9个坑3.1 JDK下载与安装选哪个版本装在哪怎么验证版本选择不是越新越好。JDK 21是LTS长期支持版但IntelliJ IDEA 2023.2及更早版本对JDK 21的支持尚不完善尤其在调试器和某些插件上。JDK 17是目前最稳妥的选择——它是上一个LTS版IDEA全系支持成熟社区生态丰富且Oracle官方持续提供安全更新至2029年。下载渠道必须可靠官方首选 https://adoptium.net/ Eclipse Temurin项目免费、开源、无商业捆绑备选 https://www.oracle.com/java/technologies/downloads/ Oracle官网需注册账号JDK 17及以后免费用于生产注意绝对不要从百度搜索结果里的“JDK下载站”下载那些网站常捆绑垃圾软件或篡改安装包。Temurin的JDK镜像经过严格签名验证安全性有保障。安装路径是成败关键严禁装在C:\Program Files\Java\带空格PATH解析易出错严禁装在桌面或文档目录路径含中文或用户名称如C:\Users\张三\Downloads\推荐路径C:\dev\jdk-17.0.1纯英文、无空格、位于根目录下便于记忆和输入安装过程实操下载OpenJDK17U-jdk_x64_windows_hotspot_17.0.1_12.zipZIP版非EXE。解压到C:\dev\jdk-17.0.1右键ZIP文件→“全部解压缩”→指定路径。验证安装按WinR输入cmd回车。在命令行输入C:\dev\jdk-17.0.1\bin\java.exe -version如果返回类似java version 17.0.1 ...说明JDK本体安装成功。这一步必须做不能跳过——它证明JDK二进制文件可执行排除了权限或路径问题。3.2 环境变量配置为什么用CMD不用PowerShell如何避免PATH污染Win11的PowerShell执行策略是拦路虎而CMD命令提示符不受此限制且环境变量配置逻辑更简单直接。我们用CMD完成所有配置规避风险。配置步骤管理员权限运行CMD按WinX选择“终端管理员”或“Windows PowerShell管理员”在弹出窗口中输入cmd回车切换到CMD模式。设置JAVA_HOME永久生效setx JAVA_HOME C:\dev\jdk-17.0.1 /M/M参数表示写入系统级环境变量对所有用户生效setx命令比图形界面设置更可靠不会因字符编码问题出错。将%JAVA_HOME%\bin追加到PATH注意是“追加”不是覆盖setx PATH %PATH%;%JAVA_HOME%\bin /M关键点在于%PATH%;——分号前的%PATH%代表原有PATH值确保不丢失其他软件的路径如Python、Git。验证是否生效 关闭当前CMD窗口新开一个CMD窗口重要环境变量不会实时刷新输入echo %JAVA_HOME% java -version javac -versionecho %JAVA_HOME%应输出C:\dev\jdk-17.0.1java -version和javac -version应显示相同版本号17.0.1常见陷阱很多人在同一个CMD窗口里执行setx后立刻验证结果echo %JAVA_HOME%还是空。这是因为setx修改的是注册表当前CMD进程的环境变量不会自动更新必须新开窗口。3.3 IntelliJ IDEA安装与JDK绑定为什么“自动检测”经常失灵IDEA的“自动检测JDK”功能本质是扫描系统PATH里所有java.exe的父目录然后尝试读取jre\lib\rt.jar或lib\rt.jar来确认是否为JDK。但在Win11上这个扫描有三个致命弱点扫描路径过短IDEA默认只扫描PATH中前5个路径如果你的PATH很长装了十几个软件%JAVA_HOME%\bin可能排在第6位直接被忽略。权限隔离IDEA以普通用户权限运行而JDK装在C:\dev\下如果该目录的NTFS权限未正确继承IDEA可能无权读取jdk-17.0.1\jmods\java.base.jmod等关键文件。缓存机制IDEA首次启动时会缓存JDK列表后续即使PATH变了它也不会自动重新扫描除非你手动清除缓存。正确绑定方式手动指定一劳永逸安装IDEA Community Edition免费版安装时勾选“Add launchers path to the PATH environment variable”让IDEA命令行可调用。启动IDEA创建新项目时在“New Project”向导里左侧选择“Java”右侧“Project SDK”下拉框 → “New...” → “JDK”浏览到C:\dev\jdk-17.0.1注意选整个目录不是里面的jre子目录点击“OK”IDEA会自动识别并显示JDK版本。关键一步进入File → Project Structure → Project确认“Project SDK”已选中你刚指定的JDK并将“Project language level”设为“17-LTS”。这一步确保项目级编译器和语言特性匹配。实操心得我试过12种JDK安装路径只有C:\dev\开头的路径在IDEA里100%被识别。C:\Program Files\路径即使环境变量配对了IDEA也常报“Invalid JDK path”根源是Win11对Program Files目录的符号链接处理异常。4. 实操过程与核心环节实现从零写出HelloWorld的完整链路4.1 创建第一个Java项目不只是点“Next”IDEA创建项目看似简单但每一步都影响后续开发体验启动IDEA后选择“New Project”不是“Open”或“Get from VCS”。左侧选“Java”右侧确保“Project SDK”已显示你配置的JDK 17如未显示点击下拉框旁的“New...”按钮。关键设置项“Project name”: 输入HelloWorldDemo纯英文无空格“Project location”: 设为C:\dev\projects\HelloWorldDemo同样遵循无空格、纯英文原则“Create project from template”:取消勾选。模板会生成多余文件如pom.xml对第一个程序是干扰。点击“Create”IDEA会生成标准目录结构HelloWorldDemo/ ├── src/ # 源代码目录 │ └── Main.java # 自动生成的主类 ├── .idea/ # IDEA项目配置隐藏 └── HelloWorldDemo.iml # 项目模块文件4.2 编写HelloWorld代码为什么public class Main必须和文件名一致在src目录下IDEA已创建Main.java。打开它你会看到public class Main { public static void main(String[] args) { System.out.println(Hello, World!); } }这段代码有三个强制约定违反任一都会编译失败类名必须与文件名完全一致文件叫Main.java类就必须声明为public class Main。Java编译器通过文件名定位public类大小写都必须匹配main.java和public class Main是非法的。main方法签名不可更改必须是public static void main(String[] args)。public公开访问、static无需实例化即可调用、void无返回值、String[] args字符串数组参数缺一不可。IDEA的代码模板已帮你写对但理解其含义很重要。System.out.println()是标准输出System是java.lang包下的类自动导入out是它的静态PrintStream对象println()是打印并换行的方法。这是Java最基础的I/O操作。保存代码按CtrlSIDEA会自动触发编译后台进行无需手动操作。4.3 运行HelloWorldIDEA的Run Configuration是怎么工作的点击右上角绿色三角形“Run”按钮或按ShiftF10IDEA会执行以下动作编译调用javac将Main.java编译成Main.class字节码存放在out\production\HelloWorldDemo\目录下。启动JVMIDEA根据项目SDK配置调用java.exe传入-cpclasspath参数指向out\production\HelloWorldDemo\并指定主类Main。JVM加载与执行JVM从classpath中加载Main.class找到main方法入口执行System.out.println。查看运行日志底部“Run”工具窗口会显示Hello, World! Process finished with exit code 0exit code 0表示程序正常结束。如果出现Exception in thread main java.lang.NoClassDefFoundError说明classpath配置错误如果是Could not find or load main class Main则是类名或文件名不匹配。实操技巧在Run窗口右上角点击齿轮图标→“Edit Configurations”可以修改JVM参数。比如想看JVM启动详情可在“VM options”里添加-XX:PrintGCDetails它会输出垃圾回收日志。这对理解JVM内存模型是极佳的入门实践。4.4 深入一步用命令行验证IDEA背后的机制IDEA的便利性掩盖了底层原理。我们用CMD手动复现一遍彻底打通认知打开CMD进入项目源码目录cd C:\dev\projects\HelloWorldDemo\src手动编译javac Main.java成功后src目录下会生成Main.class文件。手动运行关键必须指定classpathjava -cp ..\out\production\HelloWorldDemo Main-cp参数告诉JVM去哪里找.class文件..\out\...是相对路径Main是类名不带.class后缀。这个命令揭示了IDEA的核心逻辑它不过是把javac和java命令封装成了图形界面自动管理了classpath和输出目录。当你理解了这条命令就不再畏惧IDEA的任何配置错误——因为你知道最终执行的永远是这两个最朴素的命令。5. 常见问题与排查技巧实录Win11下最常遇到的7个真实故障5.1 故障现象“No JVM could be found on your system” —— 为什么IDEA启动就报错根本原因IDEA启动时会检查系统是否安装了JRE/JDK但它检查的不是JAVA_HOME而是注册表项HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment。而Temurin或OpenJDK的ZIP版安装不会写入这个注册表只有Oracle的EXE安装器才会。解决方案三步走确认JDK已正确安装并验证在CMD中执行java -version确保返回版本号。强制IDEA使用指定JDK启动IDEA会报错忽略点击“Configure” → “Structure for New Projects”在“Project SDK”下拉框中选择“Add JDK...”浏览到C:\dev\jdk-17.0.1勾选“Use this JDK for all new projects”点击OK。重启IDEA这次它会记住你指定的JDK不再依赖注册表检查。排查技巧在IDEA安装目录的bin\idea64.exe.vmoptions文件末尾添加一行-Didea.jdk.homeC:\dev\jdk-17.0.1可强制IDEA启动时读取该路径。这是高级用户的“急救针”。5.2 故障现象环境变量配置后CMD里java -version有效但IDEA里仍找不到JDK典型场景你在管理员CMD里执行了setxCMD验证成功但IDEA重启后还是报“Please specify JDK home path”。原因分析setx命令修改的是注册表但IDEA可能以“低完整性级别”启动受Win11的AppContainer沙箱限制无法读取系统级环境变量。或者IDEA的启动快捷方式被设置了“以管理员身份运行”而管理员环境变量和普通用户环境变量是分离的。终极解决法不依赖系统PATH直接在IDEA里指定File → Project Structure → SDKs点击“” → “JDK”浏览到C:\dev\jdk-17.0.1IDEA会自动识别并列出所有JDK组件。为项目单独绑定File → Project Structure → Project在“Project SDK”下拉框中选择你刚添加的JDK。点击“Apply” → “OK”。为什么这招必胜它绕过了所有系统级环境变量的不确定性将JDK路径硬编码到IDEA的项目配置文件.idea/misc.xml里完全不受Win11权限模型影响。5.3 故障现象HelloWorld编译成功但运行时报错“Error: Could not find or load main class Main”表面原因JVM找不到Main.class文件。深层原因classpath设置错误。IDEA默认将out/production/项目名作为classpath但如果你手动移动了.class文件或修改了输出路径就会断链。排查步骤在IDEA中右键项目名 → “Open in Explorer”进入项目文件夹。检查out\production\HelloWorldDemo\目录下是否存在Main.class。如果不存在说明编译未触发或输出路径被改。进入File → Project Structure → Project确认“Project compiler output”路径是out\production\HelloWorldDemo默认值。如果路径正确但文件仍缺失点击菜单栏Build → Build ProjectCtrlF9强制重新编译。实操心得我曾遇到一次因为开启了IDEA的“Build project automatically”选项但系统时间被错误同步到1970年导致IDEA认为.java文件比.class文件“更新”拒绝重新编译。校准系统时间后问题消失。Win11的时间同步服务偶尔抽风这是个隐藏雷区。5.4 故障现象Win11右键菜单里没有“Open in IDEA”选项背景IDEA安装时会询问是否“Add context menu entry”但Win11的右键菜单重构21H2后导致该选项失效右键菜单只显示“显示更多选项”二级菜单。手动修复方法打开IDEASettings → Tools → Windows Explorer Integration勾选“Show context menu on folders and files”点击“Install Context Menu”按钮需要管理员权限重启文件资源管理器任务管理器→“Windows资源管理器”→“重新启动”如果按钮灰色不可点以管理员身份运行IDEA右键快捷方式→“以管理员身份运行”再次进入上述设置页按钮应变为可用。5.5 故障现象JDK安装后java -version返回旧版本如JDK 8原因系统PATH里有多个Java路径且旧版本路径排在新版本前面。例如PATH是C:\Program Files\Java\jdk1.8.0_202\bin;C:\dev\jdk-17.0.1\bin;...系统会优先使用第一个java.exe。解决步骤在CMD中执行echo %PATH%复制输出内容。用记事本打开搜索java找到所有含java的路径。进入“系统属性→高级→环境变量”在“系统变量”里找到Path双击编辑。将C:\dev\jdk-17.0.1\bin移到列表最顶部拖拽或剪切粘贴。点击“确定”重启CMD验证。注意不要删除旧JDK路径保留它以防某些遗留软件依赖。只需调整顺序即可。5.6 故障现象IDEA里中文乱码控制台输出问号根源IDEA的控制台默认编码是UTF-8但Win11的CMD默认编码是GBK936。当IDEA调用CMD执行java命令时编码不匹配导致乱码。一劳永逸方案File → Settings → Editor → File Encodings“Global Encoding”:UTF-8“Project Encoding”:UTF-8“Default encoding for properties files”:UTF-8File → Settings → Editor → Console → Python Console即使不用Python此设置影响所有控制台勾选“Override default encodings with”设置“Default encoding”:UTF-8关键一步Help → Edit Custom VM Options在文件末尾添加-Dfile.encodingUTF-8重启IDEA。5.7 故障现象Win11更新后IDEA突然无法启动报错“Failed to load JVM DLL”Win11特有故障2023年10月的KB5031342更新修改了Windows的DLL加载策略导致某些JDK版本特别是JDK 17早期build的jvm.dll被拒绝加载。验证与修复在CMD中执行C:\dev\jdk-17.0.1\bin\java.exe -version如果也报错说明是JDK兼容性问题。升级JDK卸载当前JDK从Adoptium下载最新build的JDK 17如jdk-17.0.112重新安装到C:\dev\jdk-17.0.1。或降级JDK改用JDK 17.0.2已修复此问题。最新动态截至2024年中JDK 17.0.2及更高版本已全面适配Win11所有更新。坚持用LTS版永远选最新小版本是规避此类问题的黄金法则。6. JVM内存模型与工作原理从HelloWorld看字节码如何变成屏幕文字6.1 HelloWorld的字节码之旅javac生成了什么在src\Main.java同目录下执行javac Main.java后生成的Main.class不是机器码而是JVM能读懂的字节码Bytecode。我们可以用javap反编译查看cd C:\dev\projects\HelloWorldDemo\src javap -c Main输出片段Compiled from Main.java public class Main { public Main(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object.init:()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String Hello, World! 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return }这就是JVM的“汇编语言”。每一行是一个字节码指令getstatic #2从常量池获取System.out的引用ldc #3加载字符串常量“Hello, World!”invokevirtual #4调用PrintStream.println方法关键点字节码是平台无关的同一份Main.class在Windows、Linux、Mac上都能被各自的JVM执行。JVM的职责就是把这份字节码翻译成对应平台的机器指令。6.2 JVM内存区域详解为什么说“HelloWorld”启动了整个虚拟机运行java Main时JVM会划分五大内存区域每个区域各司其职区域作用HelloWorld中的体现方法区Metaspace存储类信息、常量池、静态变量加载Main.class的元数据存储Hello, World!字符串常量堆Heap对象实例分配内存System.out是一个PrintStream对象它被分配在堆上虚拟机栈VM Stack每个线程私有存储局部变量、操作数栈main方法的栈帧存放args数组引用、操作数栈本地方法栈Native Method Stack为JNI调用的本地方法服务调用System.out.println时最终会进入本地方法C实现程序计数器PC Register记录当前线程执行的字节码行号指向getstatic指令执行完指向下一条一个直观类比可以把JVM想象成一家餐厅。方法区是“菜谱库”存着所有菜的做法类定义堆是“食材仓库”所有做好的菜对象都放这里虚拟机栈是“厨师的工作台”每个厨师线程有自己的台面上面放着正在做的菜的配料局部变量程序计数器是“厨师手里的小本子”记着做到哪一步了。当你敲下java MainJVM就启动了这家餐厅按菜谱字节码开始做第一道菜。6.3 JRE与JVM的关系为什么JRE里一定有JVMJRE的全称是Java Runtime Environment它的核心使命就是“运行Java程序”。而运行Java程序的唯一方式就是通过JVM执行字节码。因此JRE JVM 核心类库rt.jar或jmods。没有JVM的JRE就像没有发动机的汽车——它只是一个空壳。在JDK 17中JRE的概念已被弱化因为JDK本身就包含了完整的运行时。但你可以从JDK目录结构看到这种包含关系C:\dev\jdk-17.0.1\ ├── bin\ # javac, java等可执行文件java.exe就是JVM的启动器 ├── jmods\ # 模块化后的核心类库取代了旧版的rt.jar ├── lib\ # JVM配置文件、工具类库 └── conf\ # JVM配置如jvm.optionsbin\java.exe这个文件就是JVM在Windows上的具体实现。它启动后会加载lib\server\jvm.dll服务器版JVM或lib\client\jvm.dll客户端版已废弃然后开始执行字节码。深度提示java -version命令之所以能输出JVM版本是因为java.exe启动后会读取jmods\java.base.jmod里的模块信息并调用JVM内部API获取版本号。这证明了JVM是JRE/JDK中不可分割的执行引擎。7. 后续扩展建议从HelloWorld到真实项目的跃迁路径HelloWorld只是起点真正的Java开发远不止于此。基于Win11环境我建议你按这个路径渐进式扩展7.1 第一步掌握Maven依赖管理1小时下载Maven https://maven.apache.org/download.cgi 解压到C:\dev\apache-maven-3.9.6配置MAVEN_HOME环境变量并将%MAVEN_HOME%\bin加入PATH在IDEA中File → New → Project → Maven创建一个带pom.xml的项目在pom.xml中添加JUnit依赖写一个测试类体验“一键下载依赖”的威力7.2 第二步接入Git版本控制30分钟安装Git for Windows https://git-scm.com/download/win 在IDEA中VCS → Import into Version Control → Create Git Repository将项目纳入Git管理学习git add、git commit、git push三个命令每天提交一次代码养成习惯7.3 第三步部署本地Tomcat2小时下载Apache Tomcat 10 https://tomcat.apache.org/download.cgi 解压到C:\dev\tomcat-10.1.26在IDEA中File → Project Structure → Project Settings → Facets添加“Web”模块Run → Edit Configurations → → Tomcat Server → Local指定Tomcat路径运行一个Servlet感受Java Web开发的雏形我的个人体会是Win11的WSL2Windows Subsystem for Linux对Java开发是巨大加分项。装个Ubuntu子系统用apt install openjdk-17-jdk一键安装JDK再用VS Code远程连接开发体验接近原生Linux。但这属于进阶玩法先把Windows原生环境玩透再平滑过渡才是