那些年用过的开源项目(一)

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

References

封面图片利用下面命令(sed 's/[^a-zA-Z]/ /g' opensource.txt)和工具生成:http://www.yyyweb.com/demo/inner-show/word-itout.html

原文发布于微信公众号 - 天马行空布鲁斯(gh_2feda5c053bd)

原文发表时间:2019-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券