程序員常用的開發(fā)者工具有哪些?
本文總結(jié)了一些常用的開發(fā)者工具,希望以此幫助開發(fā)者們提高開發(fā)效率、更優(yōu)雅的寫代碼。由于開發(fā)者涉及的技術(shù)領(lǐng)域眾多,以后端開發(fā)者的視角盤點(diǎn)平時可能用得到的工具,介紹工具名稱及使用場景。
一、Java 線上診斷工具 Arthas
Arthas 阿里巴巴2018年9月開源的一款Java線上診斷工具。
工具的使用場景:
1、這個類從哪個 jar 包加載的?為什么會報各種類相關(guān)的 Exception?
2、我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
3、遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
4、線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
5、是否有一個全局視角來查看系統(tǒng)的運(yùn)行狀況?
6、有什么辦法可以監(jiān)控到JVM的實(shí)時運(yùn)行狀態(tài)?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab 自動補(bǔ)全功能,進(jìn)一步方便進(jìn)行問題的定位和診斷。
二、IDE 插件 Cloud Toolkit
Cloud Toolkit 是一款 IDE 插件,可以幫助開發(fā)者更高效地開發(fā)、測試、診斷并部署應(yīng)用。通過 Cloud Toolkit,開發(fā)者能夠方便地將本地應(yīng)用一鍵部署到任意機(jī)器(本地或云端),并內(nèi)置 Arthas 診斷、高效執(zhí)行終端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。
工具的使用場景:
1、每次修改完代碼后,是否正在經(jīng)歷反復(fù)地打包?
2、在 Maven 、Git 以及其他運(yùn)維腳本和工具的之間頻繁切換?
3、采用 SCP 工具上傳?使用XShell或SecureCRT登陸服務(wù)器?替換部署包?重啟?
4、文件上傳到服務(wù)器指定目錄,在各種 FTP、SCP 工具之間頻繁切換 ?
三、混沌實(shí)驗注入工具 ChaosBlade
ChaosBlade 是一款遵循混沌工程實(shí)驗原理,提供豐富故障場景實(shí)現(xiàn),幫助分布式系統(tǒng)提升容錯性和可恢復(fù)性的混沌工程工具,可實(shí)現(xiàn)底層故障的注入,提供了延遲、異常、返回特定值、修改參數(shù)值、重復(fù)調(diào)用和try-catch 塊異常等異常場景。
工具的使用場景:
1、微服務(wù)的容錯能力不易衡量?
2、容器編排配置是否合理無法驗證?
3、PaaS 層健壯性的測試工作無從入手?
四、Java 代碼規(guī)約掃描插件
該插件用于檢測 Java 代碼中存在的不規(guī)范的位置,并給予提示。規(guī)約插件是采用kotlin語言開發(fā)。
五、應(yīng)用實(shí)時監(jiān)控工具 ARMS
ARMS 是一款 APM 類的監(jiān)控工具,提供前端、應(yīng)用、自定義監(jiān)控 3 類監(jiān)控選項,可快速構(gòu)建實(shí)時的應(yīng)用性能和業(yè)務(wù)監(jiān)控能力。
工具的使用場景:
1、晚上10點(diǎn)收到37條報警信息,你卻無從下手?
2、當(dāng)我們發(fā)現(xiàn)問題的時候,客戶/業(yè)務(wù)方已經(jīng)發(fā)起投訴?
3、每個月花幾十萬買服務(wù)器,卻無法保障用戶體驗?
六、靜態(tài)開源站點(diǎn)搭建工具 Docsite
Docsite 一款集官網(wǎng)、文檔、博客和社區(qū)為一體的靜態(tài)開源站點(diǎn)的解決方案,具有簡單易上手、上手不撒手的特質(zhì),同時支持 react 和靜態(tài)渲染、PC端和移動端、支持中英文國際化、SEO、markdown文檔、全局站點(diǎn)搜索、站點(diǎn)風(fēng)格自定義、頁面自定義等功能。
七、Android 平臺上的秒級編譯方案 Freeline
Freeline 可以充分利用緩存文件,在幾秒鐘內(nèi)迅速地對代碼的改動進(jìn)行編譯并部署到設(shè)備上,有效地減少了日常開發(fā)中的大量重新編譯與安裝的耗時。Freeline 最快捷的使用方法就是直接安裝 Android Studio 插件。
八、性能測試工具 PTS
PTS 可以模擬大量用戶訪問業(yè)務(wù)的場景,任務(wù)隨時發(fā)起,免去搭建和維護(hù)成本,支持 JMeter 腳本轉(zhuǎn)化為 PTS 壓測,同樣支持原生 JMeter 引擎進(jìn)行壓測。
九、云效開發(fā)者工具KT
KT 可以簡化在 Kubernetes 下進(jìn)行聯(lián)調(diào)測試的復(fù)雜度,提高基于Kubernetes的研發(fā)效率。
使用教程:
十、架構(gòu)可視化工具 AHAS
AHAS 為 K8s 等容器環(huán)境提供了架構(gòu)可視化的功能,同時,具有故障注入式高可用能力評測和一鍵流控降級等功能,可以快速低成本的提升應(yīng)用可用性。
工具的使用場景:
1、服務(wù)化改造過程中,想精確的了解資源實(shí)例的構(gòu)成和交互情況,實(shí)現(xiàn)架構(gòu)的可視化?
2、想引入真實(shí)的故障場景和演練模型?
3、低門檻獲得流控、降級功能?
十一、數(shù)據(jù)處理工具 EasyExcel
EasyExcel是一個用來對 Java 進(jìn)行解析、生成Excel 的框架,它重寫了 poi 對07版 Excel 的解析,原本一個3M的 Excel 用POI sax需要100M左右內(nèi)存,EasyExcel可降低到 KB 級別,并且再大的excel也不會出現(xiàn)內(nèi)存溢出的情況。03版依賴 POI 的 sax 模式。在上層做了模型轉(zhuǎn)換的封裝,讓使用者更加簡單方便。
十二、iOS 類工具 HandyJSON
HandyJSON 是一個用于 Swift 語言中的JSON序列化/反序列化庫。
與其他流行的Swift JSON庫相比,HandyJSON 的特點(diǎn)是,它支持純 Swift 類,使用也簡單。它反序列化時(把 JSON 轉(zhuǎn)換為Model)不要求 Model從 NSObject 繼承(因為它不是基于 KVC 機(jī)制),也不要求你為 Model 定義一個 Mapping 函數(shù)。只要你定義好 Model 類,聲明它服從 HandyJSON 協(xié)議,HandyJSON 就能自行以各個屬性的屬性名為Key,從JSON串中解析值。
十三、云上資源和應(yīng)用部署工具 EDAS Serverless
EDAS Serverless 一款基于 Kubernetes,面向應(yīng)用和微服務(wù)的 Serverless 平臺。用戶無需管理和維護(hù)集群與服務(wù)器,即可通過鏡像、WAR 包和JAR 包,快速創(chuàng)建原生支持 Kubernetes 的容器應(yīng)用,同時支持 Spring Cloud 和 Dubbo 等主流微服務(wù)框架。
十四、數(shù)據(jù)庫連接池 Druid
Druid 是 Java 語言下的數(shù)據(jù)庫連接池,它能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能。
十五、Java 工具集 Dragonwell
Alibaba Dragonwell是阿里巴巴內(nèi)部OpenJDK定制版AJDK的開源版本, AJDK為在線電商,金融,物流做了結(jié)合業(yè)務(wù)場景的優(yōu)化,運(yùn)行在超大規(guī)模的,100,000+ 服務(wù)器的阿里巴巴數(shù)據(jù)中心。Alibaba Dragonwell與Java SE標(biāo)準(zhǔn)兼容,目前僅支持 Linux/x86_64平臺。