本文分享了阿里程序员常用的15个工具,其中有很多是我们耳熟能详的,比如Arthas(Java在线诊断工具)、EasyExcel(高性能Excel处理)、CloudToolkit(IDE插件,一键部署)等。看了一下,我认可的工具大部分都是高质量的,也有一些没听说过的,比如ChaosBlade。上网搜了一下,发现ChaosBlade比较出名,不是僵尸工具。从手动到自动化,从重复到创新,技术演进的过程伴随着开发者工具产品的发展。阿里巴巴将通过开源、云实现或工具等方式对外开放其在各个业务场景的技术积累。本文将选取一些阿里巴巴开发者工具,希望能帮助开发者提高开发效率,把代码写得更优雅。由于开发者涉及多个技术领域,笔者仅从自己熟悉的领域,以后端开发者的角度,对日常生活中可能用到的工具进行盘点。每个工具分以下几点介绍:工具名称及介绍场景及教程如何获取1.Java在线诊断工具ArthasArthas是阿里巴巴于2018年9月开源的一款Java在线诊断工具。工具使用场景:哪个jar包是这个类从哪里加载?为什么会报各种类型的相关Exception?为什么我改的代码没有执行?难道是我没犯?分支错了?如果遇到问题不能在线调试,难道只能加日志重新发布吗?我在线上遇到某用户数据处理的问题,但是同样在线无法调试,离线也无法重现!是否有系统健康状况的全局视图?有什么办法可以监控JVM的实时运行状态吗?Arthas支持JDK6+,支持Linux/Mac/Windows,采用命令行交互方式,提供丰富的Tab自动补全功能,进一步方便问题定位和诊断。教程:基础教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-basics进阶教程:https://alibaba.github.io/arthas/arthas-tutorials?language=cn&id=arthas-advanced获取方式:(开源)开源地址:https://github.com/alibaba/arthas2.IDE插件CloudToolkitCloudToolkit是一款IDE插件,可以帮助开发者更高效的开发,测试、诊断和部署应用程序。通过CloudToolkit,开发者可以轻松地将本地应用一键部署到任意一台机器(本地或云端),并内置Arthas诊断,高效执行终端命令和SQL等。IntelliJIDEA版本、Eclipse版本、PyCharm版本和Maven提供版本。工具使用场景:你是否每次修改代码都在重复打包?经常在Maven、Git等操作脚本和工具之间切换?用SCP工具上传?使用XShell或SecureCRT登录服务器?更换部署包?重启?上传文件到服务器指定目录,频繁切换各种FTP、SCP工具?教程:IntelliJIDEA版本:https://help.aliyun.com/document_detail/98762.htmlEclipse版本:https://help.aliyun.com/document_detail/29970.htmlPyCharm版本:https://help.aliyun。com/document_detail/112740.htmlMaven版本:https://help.aliyun.com/document_detail/108682.html获取方式:(免费)工具地址:https://www.aliyun.com/product/cloudtoolkit3.ChaosBladeChaosBladeChaosBlade是一款混沌工程工具,遵循混沌工程实验原理,提供丰富的故障场景实现,帮助分布式系统提高容错性和可恢复性。可以注入底层故障,提供特定值、修改参数值、重复调用、try-catch块异常等延迟、异常、返回异常场景。工具使用场景:微服务的容错性很难衡量吗?容器编排配置是否合理且不可验证?无法开始测试PaaS层的健壮性?教程:https://github.com/chaosblade-io/chaosblade/wiki/新手指南获取方法:(开源)开源地址:https://github.com/chaosblade-io/chaosblade/wiki/新手指南4.Java代码规范扫描插件该插件用于检测Java代码中不规则的位置并给出提示。规范插件是用Kotlin语言开发的。教程:IDEA插件使用文档:https://github.com/alibaba/p3c/wiki/IDEA插件使用文档Eclipse插件使用文档:https://github.com/alibaba/p3c/wiki/Eclipse插件使用文档获取方法:(开源)开源地址:https://github.com/alibaba/p3c五、应用实时监控工具ARMSARMS是一款APM监控工具,提供前端、应用、自定义三种监控选项监控,可以快速构建实时应用性能和业务监控能力。工具使用场景:晚上10:00收到37报警信息,不知如何是好?当我们发现问题时,客户/业务方是否发起投诉?每月花几十万买服务器,却不能保证用户体验?教程:前端监控访问:https://help.aliyun.com/documentdetail/106086.html应用监控访问:https://help.aliyun.com/documentdetail/63796.html自定义监控:https://help.aliyun.com/document_detail/47474.html获取方式:(付费)工具地址:https://www.aliyun.com/product/arms6.静态开源建站工具DocsiteDocsite是官网的集合,文档和博客与社区集成的静态开源站点解决方案。它易于使用且不会松开。同时支持react和静态渲染,PC端和移动端,支持中英文国际化、SEO、markdown文档、全局站内搜索、站内风格定制、页面定制等功能。教程:https://docsite.js.org/zh-cn/docs/installation.html获取方式:(开源)项目地址:https://github.com/txd-team/docsiteAndroid平台二级编译方案FreelineFreeline可以充分利用缓存文件,在几秒内快速编译并部署代码变更到设备,有效减少日常开发中大量重新编译和安装的耗时。使用Freeline最快的方法是直接安装AndroidStudio插件。教程:https://github.com/alibaba/freeline/blob/master/README-zh.md获取方法:(开源)项目地址:https://github.com/alibaba/freeline8.性能测试工具PTSPTS可以模拟大量用户访问业务的场景。可以随时启动任务,省去建设和维护成本。支持JMeter脚本转成PTS压测,也支持原生JMeter引擎进行压测。教程:https://help.aliyun.com/document_detail/70290.html获取方式:(付费)工具地址:https://www.aliyun.com/product/pts9.云效开发者工具KTKT可以简化Kubernetes下联调测试的复杂度,提高基于Kubernetes的研发效率。教程:https://yq.aliyun.com/articles/690519获取方式:(免费)工具地址:https://yq.aliyun.com/download/339310.为K8s等提供架构可视化工具AHASAHAS容器环境不仅具备架构可视化功能,还具备故障注入高可用评估、一键流控降级等功能,能够快速、低成本地提升应用可用性。工具使用场景:在服务改造过程中,是否希望准确理解资源实例的组成和交互,实现架构的可视化?想介绍真实的故障场景和演练模型吗?获得流控和降级功能的门槛低?教程:https://help.aliyun.com/document_detail/90323.html获取方法:(免费)工具地址:https://www.aliyun.com/product/ahas11.数据处理工具EasyExcelEasyExcel是用户来分析java生成Excel框架,重写了poi对Excel07版的分析。本来一个3M的Excel用POIsax需要100M左右的内存,而EasyExcel可以降到KB级别,再大的Excel也会内存溢出.版本03依赖于POI的萨克斯模式。模型转换包做在上层,方便用户使用。教程:https://github.com/alibaba/easyexcel/blob/master/quickstart.md获取方法:(开源)工具地址:https://github.com/alibaba/easyexcel十二、iOS工具HandyJSONHandyJSON是一个JSONSwift的序列化/反序列化库。与其他流行的SwiftJSON库相比,HandyJSON支持纯Swift类并且易于使用。它在反序列化(JSON转Model)的时候,不需要Model继承NSObject(因为它不是基于KVC机制),也不需要你为Model定义一个Mapping函数。只要你定义了Model类,并声明它遵守HandyJSON协议,HandyJSON就可以使用每个属性的属性名作为Key,从JSON字符串中解析出值。教程:https://github.com/alibaba/HandyJSON/blob/master/README_cn.md获取方法:(开源)工具地址:https://github.com/alibaba/HandyJSON十三、云资源及应用部署工具EDASServerlessEDASServerless是一个基于Kubernetes的无服务器平台,用于应用程序和微服务。用户无需管理和维护集群和服务器,可以通过镜像、WAR包、JAR包快速创建原生支持Kubernetes的容器应用,支持SpringCloud、Dubbo等主流微服务框架。教程:https://help.aliyun.com/document_detail/102048.html获取方式:(公测期间免费)工具地址:https://help.aliyun.com/document_detail/97792.html14.数据库连接池DruidDruid是Java语言下的数据库连接池,可以提供强大的监控和扩展功能。教程:https://github.com/alibaba/druid/wiki/如何获取FAQ:(开源)工具地址:http://central.maven.org/maven2/com/alibaba/druid/十五、JavaToolsetDragonwellAlibabaDragonwell是阿里巴巴内部OpenJDK定制版AJDK的开源版本。AJDK针对在线电商、金融、物流等业务场景进行了优化。它运行在拥有100,000多台服务器的非常大规模的阿里巴巴数据中心。AlibabaDragonwell兼容JavaSE标准,目前只支持Linux/x86_64平台。教程:https://github.com/alibaba/dragonwell8/wiki/AlibabaDragonwell8使用指南获取方式:(开源)工具地址:https://github.com/alibaba/dragonwell8
