01前言
曾经有次在公司会议上,领导问了一句:作为一名程序员,你觉得写代码的最高境界是什么?
A说:写完代码不需要测试,没有一个bug直接上线完成验收。
这个回答让人感觉他不仅仅是一个技术大牛,甚至可以代替测试并完成产品的活,再学会前端和熟悉业务会写产品PRD后、加上DBA和运维,一个人就是一个团队了(产品、开发、测试、运维等全包)。
B答:我觉得程序员的最高境界是,是还没开始写就已经心中有码了。
这个回答看起来算是符合大众心中的答案,架构师一般承担这样的角色,跟业务和产品等沟通确认好需求之后,就大概知道代码是怎么写的了。然鹅,领导说这还不算我理解中的最高境界。
在问了一圈多人回答后,领导语重心长的说了一句:我认为写代码的最高境界就是不需要写代码。
很多人都懵圈了,什么!写代码的最高境界是不需要写代码?那项目怎么跑,系统怎么运行啊...领导没有直接给出答案,而是让我们大家去探索问题的答案。当时,我也确实想不出答案是什么。听说过人工智能AI、机器人、元宇宙等,却找不出一丁点跟这个问题有关的答案和线索。直到后来我接触到低代码,并且团队也已经在基于这种平台和技术做开发我才猛然醒悟!
02什么是低代码?
2.1 低代码介绍
"Low Code"我暂且用这样一句英文来解释和翻译低代码,一般说的是“低代码开发平台”,它无需编码或只需要极少量代码就可以快速生成应用程序的开发平台。
低代码既不是指抽象程度很低,也不是说代码很low,而是单纯的“少写代码”或者“不写代码”—— 只在少数需要的情况下才手写代码,其他大部分时候都能用可视化等非代码方式解决。
听起来,这好像是要干掉程序员的样子,就好比机器人、人工智能AI正在逐步替代简单的流水线工人一样。
2.2 Lombok
其实不是的,当真正接触和使用低代码平台和技术开发后,发现其原理真的很简单,这也正契合了低代码本身的含义:Less is More 。用中国的哲学思想说就是:大道至简!举个例子,我们都熟知的可自动生成JavaBean的插件项目Lombok,它的原理也属于低代码,它的功能就是自带生成DAO的get、set、toString方法等,只需要简单的注解调用内置函数即可。
在我们开发中新项目的时候,尤其建表后需要大量创建DAO,这时候Lombok就发挥了它突出的优势了。减少了我们开发工作量的同时,提升了效率。
2.3 MyBatis Generator
另一个同样原理的的是MyBatis Generator插件,这个组件的诞生更是让广大开发人员爱不释手呀。同样在建表后,我们需要连接数据库做常规的增、删、改、查操作,这几乎是所有业务开发必不可少的API逻辑。没有这个插件之前,我们需要手写mapper和xml,稍有不慎写错一个符合都会出现bug,调试半天。
org.mybatis.generator ----api 内外部使用的主要接口,关键类MyBatisGenerator ----codegen 代码生成的实际类,如XMLMapperGenerator/BaseRecordGenerator/JavaMapperGenerator ------ibatis2 适配ibatis2 ------mybatis3 适配mybatis3 ----config 配置处理(1)xml配置读取/转化(2)如JavaClientGeneratorConfiguration配置生成文件目录、PluginConfiguration配置扩展插件 ----exception ----internal 内部扩展和工具类, ----logging ----plugins 所有的扩展插件,如ToStringPlugin(生成ToString方法) ----ant 适配ant编译工具
有了这个插件后,Mapper接口和xml文件的可以自动,并且它能提供多种启用方式,如Java类启动、shell启动、mavenPlugin启动。具体点,可以连接DB,读取表信息,生成Model对象、JavaMapper、xmlMapper文件等。
2.4 低代码平台
如果说Lombok和MyBatis Generator是低代码的简单应用和雏形,低代码技术发展至今,国内外已有发展成熟的不少低代码平台公司或开源项目。
国内低代码平台一览表
国外一些知名的低代码平台:
微软Power Apps:微软团队开发的一款SaaS产品,提供应用程序开发环境,协助无代码快速自定义应用开发;同时提供开发扩展功能,专业的技术开发人员可创建数据和元数据,实现自主开发,扩展应用逻辑、创建自定义连接器或实现数据集成。
Oracle APEX:是Oracle公司出品的基于Oracle数据库的一款免费的Web应用快速开发低代码平台,旨在方便Oracle数据库开发人员快速搭建Web应用系统。其历史最早可以追溯到2004年,之前叫HTML DB,2009年更名为Oracle APEX。
OutSystems:OutSystems2015年开始转型,专注提供云服务;2017年发布低代码新版本,引入新DevOps功能;2018年获KKR和高盛融资,发展势头强劲。Gartner曾评价:OutSystems是将低代码功能与高级移动功能相结合的唯一解决方案。估值超10亿美元,OutSystems或许有望跑赢Mendix,成为低代码界的独角兽。
Mendix:美国原生代低代码应用开发厂商,2018年被西门子收购,被Gartner评为低代码应用开发平台的全球领导者之一。
App Maker: 谷歌旗下的一款低代码应用平台,开发的初衷是为解决通用软件开发无法解决的应用程序开发问题,2018年正式上线,对外开放。
03低代码的优势
在如今业务迭代更新非常快速的互联网,为了能在最短的时间内满足用户和业务的需求,并且维持系统安全稳定可靠的发展,低代码技术是未来的一个发展趋势。低代码不只是少写代码,也能减少因为程序员写代码引起的bug而带来的安全隐患,避免对业务造成影响等。
低代码开发同传统的开发模式相比,有以下优势:
开发和部署更快:使用低代码开发,最快可以数小时完成编程任务,效率极大提升,并且部署简单,回滚方便。
门槛低,让更多的人参与:不需要专业的技能,可以很快上手,可以将更多的时间集中在业务逻辑的实现上。
安全性更高:低代码开发如同在沙箱中开发,可以实现更好的隔离性。
无需关注语言:一套成熟的低代码平台是不需要关注语言的,后端语言可支持Java、Python、c++等,前端可支持vue、angular等。
04案例
上面介绍了国内外一些知名的低代码平台和开源项目,不断地引发和带领行业逐步地追随低代码潮流,我所在的团队也构建了属于自己的低代码项目工具和平台。其中一个正是基于MyBatis Generator而打造的一个自动代码生成工具,除了上述基本的Mapper接口和xml文件外,结合公司原有的技术组件还能生成Controller以及基于Node.js脚手架的一套前端vue页面等,大大地减少了人工开发工作量和提升效率。
4.1 代码生成工具
如下图,只需要在配置文件中填写好新建的表和数据源,以及待生成的项目模块路径运行项目即可自动生成一系列文件。
当你不仅仅只是需要开发后端API的时候,还需要开发页面的时候,我们的低代码生成平台也能做到,它配套了后台API和vue脚手架一站式生成所需要的vue页面和api接口最基本的增删改查代码逻辑。
4.2 生成前端vue页面
作为后端开发人员,不仅仅只能会Java编程语言这么简单,有时还必须要学会前端页面的开发技术,做一些常规的页面。在业务繁杂和迭代更新非常快速的项目中,基于公司现有成熟的配套组件和技术,构建属于自己项目团队的低代码平台,在很大程度上提升了我们地日常的开发和运维工作,并且减少和避免了一些低级的代码bug安全隐患。低代码平台的尝试,我们还在继续!
05总结
低代码虽然说是一门技术,但它更多的是一种框架思维和架构思想,无论是以分布式、DDD、还是Service Mesh等热门微服务技术,都是可以结合低代码平台去开发项目,低代码平台不关注后台技术和前端框架。低代码作为一种给企业带来降本增效的技术,未来必将是每个互联网企业所尝试和追随的趋势,在学习和掌握一门新技术之前,去了解它的基本原理是前提。而每一项新的技术能否发展壮大就看业务本身的使用,也就是它是否满足需求和被需要。低代码在未来的发展仍需要行业的沉淀和业务本身的需求,技术可以驱动业务,业务本身也能反过来哺育技术。