当前位置: 首页 > 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下使用direnv
      • windows下使用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.11+10", }, }, }, }

安装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自己去下载jdtl)

jdtl包下载地址(此步最好具备良好访问国外网络的网络环境):

https://download.eclipse.org/jdtls/milestones/

操作系统中安装python。

不知道如果由zed自动安装jdtl是否会自动安装python,但手动安装最新版jdtl,jdtl.bat启动里面是需要调用python的。

没有python的话zed中jdtl服务无法启动

然后再安装java插件

信任项目

首次打开的项目需要信任项目,才能加载已安装的lsp服务、保存项目设置和使用MCP等

点击左上角“Restricted Mode”,在弹出的框中点 trust.或者勾选设置zed默认信任所有打开的新项目。

debug配置

在java项目的项目目录下建立.zed文件夹,其中新建debug.json

launch方式直接启动配置

(debug看不到变量,但可以用日志断点看,暂不推荐这种启动方式),增加如下配置

[ { "adapter": "Java", "request": "launch", "label": "Debug CySupportBpApp", "mainClass": "com.yunmai.CySupportBpApp", "cwd": "$ZED_WORKTREE_ROOT", "vmArgs": "-Dfile.encoding=UTF-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:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" ` "-Dfile.encoding=UTF-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 allow

windows下使用mise

AI说direnv在win下有bug,似乎会造成环境混乱

强烈建议安装微软的powershell7,(具体百度,超简单。推荐将powershell7设为终端默认shell),在powershell7中安装使用mise(win自带的powershell5.x需要每次进入目录都执行mise引入变量的命令)

似乎需要先去掉系统环境变量配置的JAVA_HOME、MAVEN_HOME等软件变量,以及path中引入的对应软件路径,否则mise引入软件的变量会冲突导致当前目录配置未生效

激活mise hook,cd进入目录时自动对信任过的mise.toml切换软件环境

#mise.exe替换为你的mise.exe路径&'F:\devTools\mise-v2026.5.13-windows-x64\mise\bin\mise.exe'activate 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$PROFILE"`n&'F:\devTools\mise-v2026.5.13-windows-x64\mise\bin\mise.exe'activate pwsh|Out-String|Invoke-Expression"

在每个项目目录下建立不同mise.toml,并编辑mise.toml

[tools]java="path:G:/jdk-17.0.18.8-hotspot"maven="3.6.3-projectA"//3.6.3-projectA 为注册的别名,便于使用不同的maven

当前目录首次生成的toml文件需要让mise信任,命令是mise trust

ps: mise 不是单纯的环境变量管理,它会将软件包加入PATH变量。如果要安装不再mise默认注册中心注册的、本地已安装的软件包,需要先注册。比如maven

示例:格式

miselink软件名@别名 软件路径 miselinkmaven@3.6.3-projectA G:/apache-maven-3.6.3-projectA miselinkmaven@3.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本身的问题?所以不推荐用lunch

  • zed自带的debug terminal没有查找快捷键可设置,咱不知道怎么改他的debug终端编码,他用的gbk。

    两种方式,一种本地debug时配置输出到日志文件,另一种用系统终端启动java项目,zed用attach方式启动

http://www.jsqmd.com/news/897148/

相关文章:

  • 神经形态计算与人形机器人融合:基于STDP的脉冲神经网络实现视觉注意学习
  • 移动目标防御有效性评估:基于系统攻击面与隐马尔可夫模型的量化分析
  • 戴森球计划工厂蓝图仓库:8000+优化布局的终极模块化解决方案
  • 思源宋体TTF:跨平台中文字体配置与性能优化完全指南
  • 为什么这么多人会选择全日制MBA?就读全日制 MBA 能收获什么?
  • SwiftMOS:基于直接视图转换的实时激光雷达运动物体分割算法
  • GEO板块负责人孙玉帅:以专业统筹驱动业务提质增效 - 奔跑123
  • 【ChatGPT抖音脚本创作黄金公式】:20年AI内容专家亲授3步生成爆款脚本,72小时实测提升完播率217%
  • 荷兰扣押800台俄系服务器深度解析:制裁规避技术链与全球网络安全新格局
  • AI收录底层机制拆解:为什么企业需要系统化GEO矩阵运营
  • 非金属耐磨齿轮注塑加工方案,赋能机器人行星关节模组提质升级
  • 逆序对——归并排序
  • 源代码论文分享|绿城郑州爱心公益网站!
  • 清华大学thuthesis LaTeX模板:在Overleaf上快速完成学位论文的终极指南
  • CSS 布局与可视化高频:居中、BFC、Flex 与 Grid
  • 2026.5.27中山黄金回收商家榜单出炉 正规机构实测优选指南 - 资讯纵览
  • Vidupe:如何利用智能视频指纹技术快速清理重复视频文件
  • MagiskOnWSALocal 终极指南:3步让Windows安卓子系统拥有完整Root权限
  • 终极指南:如何高效打包Windows全平台虚拟化驱动
  • AI智能体产业学院是什么?
  • ResNet深度剖析:残差连接如何破解深度网络训练难题?
  • 思特威携手紫光展锐联合布局MicroLED高速光互连,筑牢国产AI算力底座
  • 从引脚到性能:DVP与MIPI接口的实战选型指南
  • 低成本自制星链无线路由器,灵活配置还能多样升级!
  • ESMFold终极实战指南:5个高效预测蛋白质3D结构的专业方案
  • 国内高校学生必备的AI写作辅助网站有哪些?
  • Aurora Store:构建无Google依赖的Android应用生态解决方案
  • 国家中小学智慧教育平台电子课本解析工具:解锁教材下载新体验
  • 脉冲神经网络:从生物启发的计算模型到高效能AI的未来
  • 微积分的逻辑基石:从无穷小到极限的严密化之路