近期微軟收購github新聞熱搜各大媒體,微軟,曾經開源的極力反對者,近幾年也是積極擁抱開源。我司近來也是積極的擁抱開源,貢獻了包括ui5,cloudfoudry等很是流行的開源項目。這裏寫一篇文章記錄最近用到的開源項目,用做備忘。javascript
eclipse 經典java開發IDE,近幾年intellij也很流行,特別是在移動端應用開發領域。css
toad eclipse插件,用於數據庫操做。html
visualstidio code 輕量級IDE,前端開發很方便。前端
github 版本管理工具,最近已經被微軟收購了。以前用過不少其餘版本管理工具:svn、cvs、perforce,據說google的gitlab也有不少人用,特別是在微軟收購github以後,不少人都把項目都轉到了gitlab上,不知道是何考慮。java
maven-failsafe-plugin maven integration測試插件node
grunt nodejs application構建工具,同類的還有gulp。對應java的maven、gradle、ivy、ant等。git
sonar java代碼靜態代碼掃描github
eslint javascript代碼靜態代碼掃描web
jenkins 持續集成/部署,以前名字叫作hudsonredis
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是否知足功能需求
社區支持程度
license要求
References
封面圖片利用下面命令(sed 's/[^a-zA-Z]/ /g' opensource.txt)和工具生成:http://www.yyyweb.com/demo/inner-show/word-itout.html