天天看點

那些年用過的開源項目(一)

近期微軟收購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是否滿足功能需求
  • 社群支援程度
  • 開發人員的已有的開發技能