近期微軟收購github新聞熱搜各大媒體,微軟,曾經開源的極力反對者,近幾年也是積極擁抱開源。我司近來也是積極的擁抱開源,貢獻了包括ui5,cloudfoudry等非常流行的開源項目。這裡寫一篇文章記錄最近用到的開源項目,用作備忘。

eclipse 經典java開發IDE,近幾年intellij也很流行,特别是在移動端應用開發領域。
toad eclipse插件,用于資料庫操作。
visualstidio code 輕量級IDE,前端開發很友善。
github 版本管理工具,最近已經被微軟收購了。之前用過很多其他版本管理工具:svn、cvs、perforce,聽說google的gitlab也有很多人用,特别是在微軟收購github之後,很多人都把項目都轉到了gitlab上,不知道是何考慮。
maven-failsafe-plugin maven integration測試插件
grunt nodejs application建構工具,同類的還有gulp。對應java的maven、gradle、ivy、ant等。
sonar java代碼靜态代碼掃描
eslint javascript代碼靜态代碼掃描
jenkins 持續內建/部署,之前名字叫做hudson
kibana elastic search 資料報表,查詢
grafana 資料報表
docker 非常流行的容器技術,包括docker-compose、docker-machine等。現在很多paas平台都是基于容器技術實作。
nodejs 最近幾年非常流行的用javascript做背景開發的技術,主要包含基于chrome V8的js引擎和用于伺服器端開發的sdk,以及相應的開發庫的生态。
express 基于nodejs的web容器
express-session 用作nodejs應用session管理的開源項目
helmet 用作security相關控制的開源項目,比如說content security policy。
cors 用作跨域通路控制的開源項目
nightwatch UI 自動化內建測試架構,基于selenum實作,通過broswer提供的web driver控制頁面元素來達到自動操作頁面的目的。相比原生selenum,nightwatch提供了更加友好的API。
ui5 sap 推出的基于mvc架構的前端架構,封裝了html和css,開發者隻需使用提供的control。這個有點像java的awt和swing的圖形化開發,堆積元件在控制layout相關的container裡面。
cloudfoudry 現在雲平台主要可以分為iaas、paas、saas,而cloudfoundry是建構paas平台的一個主流的開源項目,現在sap,ibm,pivotal都有基于cloudfoundry運維的paas平台。其他同類的開源項目有herohu,openshift。
spring 從最開始的一個控制反轉開源項目,發展到現在非常流行的開源社群,包含很多子項目,如下面提到的spring boot和spring web。
spring boot 快速建構一個spring項目,省掉了之前如果要建立一個spring項目,而需要的各種複雜的配置工作。
spring web 快速的建構一個restful api的web service。其他同類的開源項目有jersey,jersey是j2ee jax-rs标準的一個實作,也是用來開發restful web service的一個很流行的開源庫。
spring actuator java web程式monitoring工具包, 同類的還有prometheus。記得之前的項目經曆有用過java jmx來實作monitor application status。
spring jpa jpa是java推出的orm規範,主流的實作有eclipselink,hibernate。
postgres 開源的關系型資料庫
mongodb Non-SQL資料庫
h2 記憶體資料庫,常用于測試環境
flywaydb 資料庫schema變更版本管理工具,同類的還有liquibase
redis/hazelcast/ehcache/guava 幾種流行的緩存架構,之前的項目經曆有一個是專門做緩存的,基于gemfire(最開始是收費的,後來也開源了)。
vault 用于credential管理的開源項目,通常可用于大型系統背後各個系統之間互動的credential的管理。
eureka 服務注冊和分發開源項目,同類的開源項目還有zookeeper。
velocity 模闆替換工具,常用于自動生成代碼,html頁面等場景。
flying saucer 将html頁面渲染成pdf的一個開源項目,可用于訂單導出等場景。
slf4j simple logging facade for java,統一大多數流行的logging架構,如log4j、logback,提供了一個統一的API。
lombok 可用一些簡單annotation替代重複簡單編寫的代碼,如@Getter會自動生成所有field的get方法。
rest-assured java integration test庫,代碼寫作規範和bdd的規範類似,given-when-then。
spring contract 合同測試,常用于一個項目裡面互相有很多依賴的測試。
mockito 用于mock的一個開源項目
寫在最後的話
- 如何選擇開源項目?個人覺得可以基于以下幾點考慮:
- opensource是否滿足功能需求
- 社群支援程度
- 開發人員的已有的開發技能