近期微软收购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