近期微软收购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是否满足功能需求
- 社区支持程度
- 开发人员的已有的开发技能