Java转身系列之安卓 —— Android Studio的代码工程组织方式
从Ant、Maven到Gradle
编程的最终目标是将软件运行起来,编译是连接编程与程序运行的关键环节。
Java编译指令是javac,它将文本源代码编译成.class字节码文件,虚拟机装载字节码文件,进行解析、链接和运行。
javac com.example.Main
软件体积越大,如何组织代码、管理依赖、编译运行及测试,就需要有成体系的方法和工具进行支持,否则依靠人工进行重复的命令输入编译,会令人不胜其烦,效率低下。
C语言程序猿有Makefile,Java在2000年有了Ant,它用java实现了cmake的机制,并且用当时的“网红”XML作为描述文件。Ant比cmake进步了好多,但依然需要在xml中写多个task来完成工作,Ant一开始没有一致的依赖仓库进行统一管理(后来通过子项目Ivy解决),不久后Maven出现。这两个项目都与Jakarta有关。
Maven采用Convention over Configuration(coc),引入项目对象、生命周期、依赖库管理、插件等理念和机制,将代码组织和软件运行部署等提升到新高度,经过多年经营,已成为代码工程组织管理的集大成者,得到业界最普遍支持。
2007年后,Ruby on Rails大热,这个Web框架将Ruby这门与Java一般年龄的语言重新带入大众视野。Ruby简洁、富有表现力的语法,独特的面向对象、天生的元编程以及动态语言等特性,加上ROR在MVC、Active Record数据访问等方面带来了奇高生产效率,令当时传统的Web开发技术如JSP、ASP、PHP等相形见绌,受到硅谷的青睐,成为创业公司首选,这股风潮迅速遍及全世界。
与ROR一起,号称Ruby Make的Rake,也因为Ruby语法在任务执行的“领域”特性吸引了开发者眼球。Rake从相似性讲更接近于Ant,但是它并没有使用xml或者其他结构化文本(如YAML)作为描述和设置文件,而是直接使用了Ruby语言,形成了“代码即配置,配置即代码”的“奇观”。由于Ruby强大的叙述表达能力,Rake在ROR开发、构建、运行、部署这个领域形成了领域特定语言(Domain Specific Language, DSL)。
ROR如一股清流,注入活力渐渐不