IntelliJ IDEA 2023.2正式发布,新UI和Profiler转正

2023年 10月 24日 47.0k 0

✍正文

官方对此版本的新变化总结:IntelliJ IDEA 2023.2 引入 AI Assistant(AI助手),通过一组由 AI 提供支持的功能助力开发(比如:Open API公司,也就是Chat GPT)。 升级的 IntelliJ 分析器现在提供编辑器内提示,使分析进程更加直观详尽。 此版本还包括有助于简化开发工作流的 GitLab 集成,以及其他多项值得关注的更新和改进。

在继续了解新版本的新特性之前,笔者特先来同步下此版本解决的几个笔者认为非常重要的bug。

🪲解决的重要Bug

这里重点“批评”下2023.1这个版本(之前版本没有问题),由于它检索上存在的问题,导致我险些出现线上P0故障▄█▀█●

无法关联到.class文件引用关系

说明:这里说的.class文件,是指没有关联到souce code的文件(可能是没有Download Sources,也可能是真没有源码),即IDEA帮你反编译出来的,上方会飘这一行东东的文件:

图片图片

众所周知Java是强类型语言,该特点是Java能做大型企业级工程的核心优势之一。通过这个特性,我们可以很方便的整理出各个类、方法、变量之间的引用关系甚至UML图,进而做出决策和做出调整。

但是,IntelliJ IDEA的2023.1版本,在没有源代码的类文件中,会丢掉引用关系,导致检索的时候出现缺失。这么一来对使用时影响非常之大,不仅效率打折扣,更重要的是对决策产生致命影响。具体可表现为:

  • 比如接口,想知道它的实现有哪些。这时只能列出有source code的一些引用
  • 比如Find Usages,只能找到这个类/方法/属性被source code的一些引用
  • 这种基础功能,开发者本着对IntelliJ IDEA开发工具的绝对信任,一旦它给出的结果有遗漏,那是相当危险的一件事。因此,上面笔者提到的当时是什么场景导致差点出了大错,相信你可自行脑补了吧。PS:为了验证不是我本机环境的问题而确实是IDEA导致,我找了同事4台电脑验证。证实了2023.1版本的确存在此问题,方才石锤。好消息是,IntelliJ IDEA 2023.2版本此问题已被修复,亲测无误,可放心食用了

    话说回来:也有升级到2023.1没有出现此问题的,但据我抽样发现出问题的概率很大,不容忽视

    新UI左侧边栏剩一个无法挪到右边

    这个问题虽不是功能上的bug,但肯定是问题,一定程度上影响到了笔者的使用体验。

    JetBrains在2022年12月份的2022.3版本中首次推出新UI,对界面进行了彻底的改造,主打极简风,改进整体的编码体验,为此笔者非常喜欢。新UI官方也是主推,点进官网就能感受到推广力度:减少干扰,提高工作效率,保持专注。

    图片图片

    在2022.3和2023.1这两个版本中,新UI一直是以Beta版本存在。终于,在这个版本就彻底的转正了:去掉了Beta字样

    图片图片

    新UI这一次IntelliJ IDEA的步子迈得还是有点大的,因此口碑两极分化,毕竟并非所有开发者都喜欢这种极简风格,若习已养成了用鼠标点击工具栏的习惯,一下子确实很难适应过来。

    这么重大的改变可能会导致不适,为此JetBrain当然也有考虑到,因此旧UI目前依旧是保留的。但不代表它会一直存在。官方对新旧UI给出的迭代时间计划是:

    • 旧UI保留到什么时候?答:预计在2024年中发布的2024.2版本中彻底删除掉旧UI
    • 新UI什么时候成为默认UI?答:预计2024年初发布的2024.1版本中将新UI作为缺省

    还记得笔者在去年底(2022年12月份)吐槽新UI中的其中一个槽点吗:左侧工具栏无法全部挪到右侧来(旧UI是可以的),还剩个...死活不让挪了,这样子搞得很不优雅:白白浪费了左侧这部分空间

    图片图片

    “可能”我的建议被官方听到了,这个版本给解决了:左侧工具栏可全部挪到右边

    图片图片

    移到右边后,左边就异常简约看着舒服多了:更符合人体视觉工程学

    图片图片

    🌈what’s new(新特性)

    现在我们浏览下此次版本的主要新特性。

    Profiler集成进编辑器内

    IntelliJ IDEA遵守承诺,一直在提升Profiler的能力,提供有关应用程序性能的深入信息,并使性能问题更容易调查。它在第一个2023.2 EAP 1版本中,引入了编辑器内提示,它提供了一种简单的方法来逐行解释代码的性能,并帮助我们更快地解决性能问题。编辑器装订区域中的颜色编码注解可以高亮显示关键方法,让您专注于性能瓶颈。因此,不再需要使用 Flame Graph(火焰图)和 Call Tree(调用树)视图执行彻底、耗时的分析。

    Profiler功能在IntelliJ IDEA 2020.1就引入了,当时作为一个实验功能。但是Jetbrain它承诺了会在后面的版本中逐步迭代它。

    • 2020.1/2版本:我们需要手动的导入一个xxx.hprof文件供给它分析
    • 2020.3版本:和IDE更深入集成,除了更便捷的打开xxx.hprof文件外,还可直接分析正在运行的程序
    • 2022.2版本:此功能从实验性走到发布,正式毕业,已值得信赖,可以用来做性能分析用。表现更稳定、参数更详细,并且还支持了Kotlin和Scala语言
    • 2023.2版本:集成进编辑器内,和代码可做到一一对应。可不再依赖于🔥火焰图、树状图那些,更加直观高效
    效果演示

    代码准备:

    @RequestMapping("/demo")
    @RestController
    public class DemoController {
    
        @Autowired
        private DemoService demoService;
    
        @GetMapping("/profiler/test")
        Object testProfiler() throws Exception {
    
            TimeUnit.SECONDS.sleep(3); // 补好CPU,但耗时
            demoService.testProfilerForService();
            return "SUCCESS";
        }
    
    }
    
    @Service
    public class DemoService {
    
        public void testProfilerForService() throws InterruptedException {
    
            for (int i = 0; i < 10_000_000; i++) { // 既耗时,又耗CPU
                System.out.println(i + 100);
            }
    
            TimeUnit.SECONDS.sleep(2);
        }
    
    }

    使用Profiler分析器方式启动应用,也就是这里:

    图片图片

    启动后,访问接口http://localhost:8080/demo/profiler/test,监控情况:

    图片图片

    点击Stop Recording,在IDEA里就可以非常直观的看到性能分析结果:controller层89%的时间花在了第28行,也就是调用service这一行

    图片图片

    service的方法里,89%的时间花在了i + 100这一行

    图片图片

    通过Click to navigate导航,一层一层深入,直到找到性能瓶颈的那行代码。

    你可能会碰到的问题
  • 启动时抛出异常java.lang.ClassNotFoundException: one.profiler.JfrSync
  • 图片图片

  • 点击Stop Recording时报错:Profiler error: Can‘t stop profiler, jattach output:
  • 图片图片

  • 应用已启动,通过Attach方式启动Profiler,报错Failed to active JFR synchronization.
  • 图片图片

    当你遇到👆🏻这些错误时,错误归因大概率都是同一个:JDK/JRE版本不对

    • 要么是HotSpot JDK(如Oracle JDK)低于1.8.0_252版本
    • 要么用的不是Oracle JDK。大多数情况下是这种情况,如果你用的是m系列芯片的Mac的话

    解决方案:使用Oracle JDK(包含Oracle Open JDK)。至于原因嘛,感兴趣查查JFR是啥就知道啦,顺便了解下它的发展史。

    这样,您可以轻松地关注性能瓶颈并即时查看它们,而无需使用火焰图和调用树视图执行彻底、耗时的分析。

    PS:它里面有很多细节设置,可自行探索

    AI Assistant

    大多数博主都用它博眼球,但其实自己没用过,有点无语。它背靠GPT的大语言模型:

    图片图片

    这里笔者一笔带过,因为天朝用不了。你若有兴趣可尝试使用步骤:

  • 在插件市场里下载安装AI Assistant插件
  • 图片图片

  • 然后你可看到AI视窗,它可以帮你做这四件事:
  • 解释代码
  • 回答你编程上的问题
  • 帮你写commit msg
  • 帮你写注释/文档
  • 图片图片

  • 点击Log in to JetBrains AI...,它跳到https://auth.grazie.ai/auth/ij让你授权。如果没用🪜,不出意外,你就会看到这个(或者根本打不开)
  • 图片图片

  • 如果用了🪜,就是这些页面:
  • 图片图片

  • 图片到这个页面,就授权成功了。
  • 图片图片

  • 然后回到IDEA里,你会看到:
  • 图片图片

  • AI助手,听起来diao炸天。但这部分笔者不浪费笔墨了,自己官网看去。毕竟天朝用不了,并且此功能目前也仅还是邀请制。把这个作为新版IDEA重要新特性写出来的博主,我觉得很不负责,只为流量,无有其它。
  • Gitlab集成

    现在可以和GitLab的集成,帮助我们简化您的开发工作流。笔者本非常期待这个功能,这样便可方便的合并同事提交的MR:

    图片图片

    但是:我进行到了这一步后,就没有后续了:

    图片图片

    Log In时提示报错:Failed to load merge requests. Deserialization of Request POST [https://gitlab.redacted.com/api/graphql/](https://gitlab.redacted.com/api/graphql/) response to JSON failed。原因很简单:

    图片图片

    目前仅支持Gitlab 15.10以上的企业版。将来会支持到社区版本以及之前的版本~

    更多整合Gitlab信息参考:https://blog.jetbrains.com/blog/2023/07/26/gitlab-support-in-jetbrains-ide

    代码可按行提交

    相信每个开发者都遇到这个情况:把你这个方法、这几行代码提交了,其它的先不提交。因为其它的行可能编译不通过、或者对方暂不需要,因此(行级别)局部提交就成了刚需。

    图片图片

    即可在这里逐行选择:勾选的行表示需要commit的(默认该文件内所有的行都是提交的)。当然,也可以右键选择/反选:

    图片图片

    这个功能平时用得不多,但特殊场景下是非常好用的,即实用又能炫技。

    其它新功能

    Project视图中文件可按修改时间排序了

    图片图片

    Project视图中文件可单击打开了

    图片图片

    目的是提效,但我们习惯大都是双击打开,因人而异吧

    可以连接Redis集群了

    图片图片

    需要注意的是,链接地址协议需加上cluster,就像这样:jdbc:redis:cluster://xxx.xxx.xxx.xxx:6379/0

    不再支持Struts2、Play和Cloud Foundry等插件

    IntelliJ IDEA 2023.2及更高版本不再提供相关插件的支持

    IDEA运行-Xmx默认上调为2GB

    图片图片

    可在这里查看你的IDEA的-Xmx值,默认已调整为2GB大小。个人建议:若内存够用,建议至少调为4GB以上。

    不再支持Windows 7

    从IntelliJ IDEA 2023.2起,不再支持Windows 7。需将操作系统更新到Windows 10或更高的版本才行

    ✍总结

    每次软件升级,我的建议就一个字:升。

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论