Java高效开发必知必会

Java高效开发必知必会

作为一名工作三年多的Java后端开发,这里推荐几个大大提高我的开发效率的应用。

1. IDE: IntelliJ IDEA

2019-10-12-intellij-idea

对于开发人员来说,有一个称手的开发集成环境,可以说是最重要的。IDEA作用JVM界市场占有率(超过50%)最高的IDE,又有Kotlin进行加持,可以说是最强搭档。

我最喜欢的,还是它对于不打断心流的设计理念,所有操作都能通过键盘高效地完成,而不依赖于鼠标,可以让我们最大程度地专注于开发工作。

网上相关的教程也是多如牛毛,但是还是比较喜欢从官方网站上获取一些技巧和教程,特别是关于一些快捷键的使用。并且我还安装了jetbrains的全家桶,包括webstorm, datagrip,同样意义的操作,在这几个应用中,几乎都是相同的快捷键,也是大大降低了我的学习成本。

这里推荐一下一个油管上的视频教程:42 IntelliJ IDEA Tips and Tricks

1.1 常用插件

  • Key Promoter X
  • Lombok Plugin
  • Maven helper
  • Mybatis Plugin

2. 热加载/热部署

通常我们的应用启动都需要几分钟,如果修改一行代码或一行配置,需要重启应用的话,效率是非常低,热部署可以很好地解决这个问题。

2.1 DCEVM (推荐)

DCEVM(Dynamic Code Evolution VM)主要是解决Java HotSpot VM在运行期加载class的问题,当前HotSpot VM是允许修改函数体类的代码,如果你想添加函数方法,添加字段等,那就无能为力啦,你需要重新启动JVM,而Dynamic Code Evolution VM将添加函数和字段等特性成为可能。

DCEVM最新的地址为http://dcevm.github.io/ ,已经增加了对JDK 7和8的支持,但是DCEVM只支持特定版本的JDK,所以你需要安装特定版本的JDK,目前支持8u181版本和8u151版本。安装方法是先装好对应版本的JDK,然后再安装DCEVM,选择JDK的安装路径进行安装。

使用方法非常简单,把工程对应的JDK切换到DVECM对应的JDK,然后进行代码调试,发现代码有问题后,直接修改,然后编译,最后HotSpot机制会确保加载最新的classes。

2.2 HotSwapAgent

基于DCEVM的升级版,这里不再展开。
http://hotswapagent.org/

2.3 JRebel(墙裂推荐)

2019-10-12-JRebel
一个更加强大的热部署工具,能够完美地和各种主流框架进行集成,不论是修改代码还是配置文件,都能够实现热部署,大大加快开发效率。

DVECM是基于HotSwap技术,工作在JVM虚拟机层面,只能支持Java类的变更,并且对于注解的支持较差,更是无法支持配置文件、Mybatis SQL map文件的变更。

而JRebel是通过javagent的方法,在应用启动之后,通过在class loading的时候,进行字节码处理,生成一套自有的类结构来,和hot swap不同,他工作在ClassLoader这一层,而hotswap是工作在更加靠下的一层。

JRebel会监控IDE里项目的目标编译目录和源码目录,一旦发生改变,就重新装载类并替换,这就达到了动态生效的效果。

经常测试,JRebel可以很好地支持以下框架的热加载,具体列表见:http://manuals.jrebel.com/jrebel/misc/integrations.html

  • Spring Framework
  • Spring Boot
  • Mybatis
  • Tomcat
  • Logback

3. 调试

3.1 Arthas

2019-10-12-arthas

阿里巴巴开源的一款调试诊断利器,当你遇到线上问题,苦于没有日志,并且无法远程DEBUG,修改代码重新部署,又会破坏现场。这时候,你第一想到的,应该是Arthas。

它是基于Greys二次开发的全新诊断工具,主要是利用JVM-attach、Instrumentation和Agent技术,无缝地连接到我们的目标程序,并且通过类增强,让我们可以观察到程序的运行过程。

教程可参考这篇文章:https://www.cnblogs.com/michael-xiang/p/10777756.html

4. 运维

4.1 iTerm

macOS下最好的终端之一,经常使用的功能:^ + Cmd + t直接呼出终端,通过快捷键快速输入各种主机密码。

4.2 Alfred

Alfred也是大名顶顶的效率工具,常用功能:

  • 最基本的功能,快速打开各种app
  • 剪贴板历史搜索,快速找到各种复制过的文本
  • Snippets代码片段,我的用法是把经常要执行的各种命令,做成缩写别名,并且可以自动展开,比如我在终端中输入tf;,就会自动展开成tail -n 150 -f,这样我就可以在不同的主机上,共享一份命令别名
  • workflow,没有做不到,只有你想不到

5. 总结

以上是我对平时开发工作中最常用几款应用的推荐,包括开发、部署、调试,运维,几乎覆盖我日常工作的80%,也是大大提高了我的开发效率。

链接

  • IntelliJ IDEA: https://www.jetbrains.com/
  • DCEVM: http://dcevm.github.io/
  • HotSwapAgent: http://hotswapagent.org/
  • JRebel: https://jrebel.com/
  • Arthas: https://alibaba.github.io/arthas/
  • iTerm2: https://www.iterm2.com/
  • Alfred: https://www.alfredapp.com/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值