当前位置: 首页 > news >正文

抛弃内存毒瘤IDEA,AI编码时代轻量编辑器zed开发调试java教程

简介zed 界面内存占用对比这是打开项目代码但未进行run/debug时的内存占用对比。(zed进行run/debug的话额外加了500多mb的jdk进程占用)文章目录简介zed 界面内存占用对比前言趋势性能和功能问题寻找轻量替代体验评价正文**指定zed的java_home****安装java lsp语言支持服务相关插件****信任项目****debug配置**launch方式直接启动配置attach方式启动配置 推荐**查看lsp运行状态****debug****补充不同项目目录使用不同的jdk、maven**linux下使用direnvwindows下使用mise**已知问题**前言趋势随着 AI 原生开发的流行IDEA 多少是有些跟不上时代了。许多 AI 开发插件要么只支持 VSCode要么在JetBrains 上提供的是半成品。各大AI ide也都是基于vscode改造而来JetBrains 本身推出的 AI 智能体和组件在社区评价上也是一言难尽。而随着 Claude Code 以及 OpenAI 的 Codex 流行手写代码的古法编程时代正在慢慢过去新的趋势就是代码开发越来越不需要依赖 IDE。开发者的角色越来越从手工敲击键盘编写大部分代码转向把关AI 编码结果的审核者。性能和功能问题IDEA 在 AI 时代的落后是一方面对远程ssh开发的支持不佳、每一个版本都在疯狂增大的内存占用是另一个方面难以想象 32GB 内存的电脑打开 IDEA 2026.1 能够经常性地遇到UI冻结以及点击卡顿。现在的 IDEA 已经是不折不扣的内存毒瘤。寻找轻量替代既然如此何不寻找其他能阅读代码的轻量替代呢VSCode 本身是代码编辑器但是看到网上反馈的安装语言 LSP 和各种插件后动不动也是几个 G 的内存占用对于代码审核来说还是太重了所以这个方案也被 pass 了。同时了解到很多开发者转向使用 AI轻量编辑器Zed非基于vscode架构而且它支持登陆自己的ChatGPT官方订阅账号进行AI开发无需向zed额外付费AI开发的部分不在本文介绍。虽然寻找的是轻量编辑器作为开发者还是期望他能支持代码跳转以免每一次查看调用的实现都要对项目进行全局文本搜索。 如果还能支持项目的启动甚至断点调试那就更加完美了。恰好Zed 本身也是支持常见编程语言插件及 LSP编程语言支持服务以及debug的。对比了其他几款工具的优缺点、上手难度最终决定用 Zed 作为审核 AI 交付代码的编辑器。体验评价经过试验目前几乎可以完美解决审阅代码及大规模减少内存占用和断点调试的需求。目前体验下来就三个字超丝滑。PS经过一系列尝试发现对于 Git 的可视化方面在审阅处理他人的多个 Git commit、代码的冲突解决上目前还是 IDEA 上的支持最为良好。因此IDEA 这个内存毒瘤还是暂时有它的用武之地一旦未来找到更好的 Git 可视化软件或者 Zed 能加强这块IDEA 可能就会永久沉睡在硬盘上面了。不过迁移到Zed的话对比 IDEA 是有一些上手门槛的。下面就把我踩过坑后的使用教程分享给各位。正文指定zed的java_home在 ~\AppData\Roaming\Zed\settings.json指定zed的java_home需要jdk21以上,如果不设置到操作系统的环境变量的话{ lsp: { jdtls: { settings: { java_home: G:\\microsoft-jdk-21.0.1110, }, }, }, }安装java lsp语言支持服务相关插件java代码跳转、运行、debug等java支持需要安装zed 的java插件同时还要安装jdtl eclipse维护的java语言服务器以及新版本jdtl正常启动需要的python这三个东西。如果未装python的话百度一下怎么安装(超简单,略安装java插件安装完然后等待zed自己下载jdtl装好java插件左下角会提示下载jdtl中。ps截图中第二个Java with Eclipse JDTLS 会到github下载jdtl但github会禁止非登录下载所以不装这个插件或者离线下载好jdtl的tar.gz不区分系统后并解压将jdtl的bin目录放入到系统path再到zed扩展中安装java插件以免zed自己去下载jdtljdtl包下载地址此步最好具备良好访问国外网络的网络环境https://download.eclipse.org/jdtls/milestones/操作系统中安装python。不知道如果由zed自动安装jdtl是否会自动安装python但手动安装最新版jdtljdtl.bat启动里面是需要调用python的。没有python的话zed中jdtl服务无法启动然后再安装java插件信任项目首次打开的项目需要信任项目才能加载已安装的lsp服务、保存项目设置和使用MCP等点击左上角“Restricted Mode”在弹出的框中点 trust.或者勾选设置zed默认信任所有打开的新项目。debug配置在java项目的项目目录下建立.zed文件夹其中新建debug.jsonlaunch方式直接启动配置debug看不到变量但可以用日志断点看暂不推荐这种启动方式增加如下配置[ { adapter: Java, request: launch, label: Debug CySupportBpApp, mainClass: com.yunmai.CySupportBpApp, cwd: $ZED_WORKTREE_ROOT, vmArgs: -Dfile.encodingUTF-8 , }, ]attach方式启动配置 推荐示例{ adapter: Java, request: attach, label: Attach Java 5005, hostName: 127.0.0.1, port: 5005, },java项目在powershell启动脚本如下 G:/jdk-1.8/bin/java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -Dfile.encodingUTF-8 -cp target/classes;target/dependency/* com.exapmle.admin.Application // 此处替换为java项目主类全路径mvn编译target执行mvn compile首次编译及依赖改变后需要执行mvn dependency:copy-dependencies拷贝三方jar包到target/dependency/ 方便java使用target/classes进行启动后续代码和资源文件改变使用mvn compile即可查看lsp运行状态安装java插件和jdtl lsp后从新打开的项目需要打开java文件才会启动jdtl lsp。zed中lsp是按项目加载的。需要查看当前项目jdtl lsp状态为running才能进行java语言支持及项目启动等点击左下角⚡标志查看lsp状态。starting代表启动中running才是启动完毕debug 启动了jdtl lsp才能run/debug 启动java项目点击debug面板的new session或号然后选择配置debug.json启动项目补充不同项目目录使用不同的jdk、maven如果你的项目jdk不是zed所需的jdk21或者你不同的项目有不同的jdk、maven则看这里。linux下使用direnv在每个项目目录下建立不同.envrc的文件并安装direnv软件。在不同的.envrc可以指定不同的JAVA_HOME何MAVEN_HOME。具体百度或AI安装不难安装后需要在你的 shell 配置文件里启用 direnv比如 bash 或 zsh#根据你用的bash选一个执行 # Bash echo eval $(direnv hook bash) ~/.bashrc # Zsh echo eval $(direnv hook zsh) ~/.zshrc # Fish echo eval (direnv hook fish) ~/.config/fish/config.fish然后然后重启 shell 或执行#根据你用的bash选一个执行 source ~/.bashrc / source ~/.zshrc source ~/.config/fish/config.fish建立.envrc,例如export JAVA_HOME/usr/lib/jvm/java-21 export PATH$JAVA_HOME/bin:$PATH export MAVEN_HOME/opt/maven-3.8.7 export PATH$MAVEN_HOME/bin:$PATH首次在目录中建立.envrc文件需要让direnv信任#让direnv信任当前目录.envrc direnv allowwindows下使用miseAI说direnv在win下有bug似乎会造成环境混乱强烈建议安装微软的powershell7具体百度超简单。推荐将powershell7设为终端默认shell在powershell7中安装使用misewin自带的powershell5.x需要每次进入目录都执行mise引入变量的命令似乎需要先去掉系统环境变量配置的JAVA_HOME、MAVEN_HOME等软件变量以及path中引入的对应软件路径否则mise引入软件的变量会冲突导致当前目录配置未生效激活mise hookcd进入目录时自动对信任过的mise.toml切换软件环境#mise.exe替换为你的mise.exe路径F:\devTools\mise-v2026.5.13-windows-x64\mise\bin\mise.exeactivate pwsh|Out-String|Invoke-Expression建议使用以下命令自动加载mise hook以免每次重启shell都都要手动激活mise hook.# 如果 $PROFILE 文件不存在先创建if(!(Test-Path$PROFILE)){New-Item-ItemTypeFile-Path$PROFILE-Force}# 在 $PROFILE 中追加 activate 命令(F:\devTools\mise-v2026.5.13-windows-x64\mise\bin\mise.exe替换为你的mise.exe路径)Add-Content$PROFILEnF:\devTools\mise-v2026.5.13-windows-x64\mise\bin\mise.exeactivate pwsh|Out-String|Invoke-Expression在每个项目目录下建立不同mise.toml,并编辑mise.toml[tools]javapath:G:/jdk-17.0.18.8-hotspotmaven3.6.3-projectA//3.6.3-projectA 为注册的别名便于使用不同的maven当前目录首次生成的toml文件需要让mise信任命令是mise trustps: mise 不是单纯的环境变量管理它会将软件包加入PATH变量。如果要安装不再mise默认注册中心注册的、本地已安装的软件包需要先注册。比如maven示例格式miselink软件名别名 软件路径 miselinkmaven3.6.3-projectA G:/apache-maven-3.6.3-projectA miselinkmaven3.6.3-projectB G:/apache-maven-3.6.3-projectB对于mise默认注册中心拥有的软件可以不用使用link命令。比如java直接在toml文件中用path引入软件根路径软件名path:具体路径//win下使用左斜杠避免需要转义右斜杠\需要\\转义刷新修改的toml配置时用mise hook-env 刷新当前目录软件环境或离开当前目录再次进入在当前项目目录下检查当前配置是否生效# 检查 JDKjava-version# 检查 Mavenmvn-version已知问题lunch启动无法查看debug时的变量但是断点可以停留也支持日志断点就是断点上写日志表达式把要看的变量打印出来。attach到win或wsl2启动的项目反而能看到变量很奇怪。怀疑是lunch编译时的jdk版本不匹配项目因为zed要求必须jdk21但lunch方式启动时没法单独指定jdk另外win下命令行的maven编译时默认只能使用系统变量的java_home可能这里和项目所需jdk不一样。还可能是系统有多个maven的情况等等除此之外说不定是当前版本的java插件、jdtl本身的问题所以不推荐用lunchzed自带的debug terminal没有查找快捷键可设置咱不知道怎么改他的debug终端编码他用的gbk。两种方式一种本地debug时配置输出到日志文件另一种用系统终端启动java项目zed用attach方式启动
http://www.zskr.cn/news/1403612.html

相关文章:

  • AI收录底层机制拆解:为什么企业需要系统化GEO矩阵运营
  • 5步构建你的智能无人机:STM32飞控实战指南
  • 2026年,昆明当地人常吃的美食商家究竟该选哪家?
  • 使用Taotoken后我的团队月度AI调用成本下降了百分之三十
  • 哈尔滨推荐李晓伟律师|成功处理众多保险拒赔纠纷,专业靠谱获客户认可 - 行路心安
  • 基于FPGA的低功耗神经信号采集系统设计:从架构到实现
  • 从《Project Hail Mary》到星际导航:当科幻照进现实的技术图谱
  • 腾讯文档裁员风波:大厂“降本增效”背后的技术团队生存法则
  • 微信AI机器人终极指南:5分钟打造你的智能聊天助手
  • 深度解析NVMe管理工具:揭秘nvme-cli架构设计的5大关键要素
  • Windows性能优化终极指南:如何用AtlasOS轻松提升系统速度30%
  • 【ChatGPT品牌命名黄金法则】:20年命名顾问亲授5大不可破的AI时代命名铁律
  • 仅剩最后217份|《ChatGPT婚礼策划辅助黄金提示词矩阵》V3.2内部版泄露:含酒店谈判话术、彩礼博弈模型、家族关系图谱生成器
  • 为什么你的ChatGPT总漏买酱油?揭秘购物清单生成失败背后的3层语义断层与修复方案
  • 3小时重构攻略生产力:用ChatGPT+本地知识库+游戏API实现动态攻略实时生成(含Unity/Unreal双引擎接入方案)
  • 基于蚁群优化的无线传感器网络可靠部署策略:平衡成本与可靠性
  • 基于硬件辅助提取的模拟光子链路数字线性化技术
  • 终极指南:如何高效打包Windows全平台虚拟化驱动
  • 2026年央国企求职不用愁!为你推荐服务超棒的求职机构
  • 混合模拟数字大规模MIMO信道估计:基于聚类稀疏贝叶斯学习的解决方案
  • 基于Flutter与Arduino的乌尔都语盲文学习系统设计与实现
  • 银行信贷报告自动生成,Agent需要集成哪些数据?深度拆解企业级Agent多源异构数据集成架构
  • ChatGPT食谱输出总缺“烟火气”?——用厨师认知图谱重构提示词的3个关键锚点(附可复用Schema)
  • Foresight研究报告【20260005】
  • macOS光标自定义终极指南:用Mousecape打造专属鼠标指针体验
  • 权限安全管控:账号权限分级与越权攻击防范
  • 5分钟快速上手ESP32开发:从Arduino到物联网应用实战指南
  • 终极指南:如何让微信同时登录手机和平板?WeChatPad免费解决方案
  • 基于wav2vec 2.0与自监督学习的智能手表吸入器声音识别
  • 微积分的逻辑基石:从无穷小到极限的严密化之路