Clojure—Java世界的Lisp语言
https://www.oschina.net/translate/why-clojure
https://www.zhihu.com/question/21446061
开发团队之所以选择将某些功能块作为微服务来实现是有很多原因的。我认为最重要的原因有:
-
代码重用:多个团队可以利用你所构建的内容。例如,检索(search)、文件存储(file storage)或pub/sub。
-
使用微服务可以独立于应用程序对功能进行扩展
-
可以自由地进行技术选择
本文重点讨论以上三点。
自由地进行技术选择
这是属于微服务架构的一个非常重要的属性。微服务意味着每个服务都很小。至于有多小通常取决于公司或团队,但我听说有些微服务的代码不超过100行,还有些微服务有几千行代码(如果是Java代码,我仍然认为它很小)
既然微服务意味着每个服务都很小,所以鼓励开发人员可以使用他们认为的最好技术。如果事实证明那是很糟糕的选择,也没关系-我们就当学习了,并且会考虑将这些新知识用于未来的项目。既然微服务的代码多半只有几百行,所以有时开发团队甚至有可能决定用另一种更合适的语言重写微服务。
这都很好。但是既然可以完全自由地进行技术选择,那么为什么不选择Clojure呢?
现代语言Lisp
"Lisp是用秘密的外星人技术开发的语言。" — lisperati.com
Clojure是运行在Java虚拟机上的现代Lisp语言。基于JVM有很多优点:
-
经过数十年的人力投入,JVM的运行速度很快。
-
在一个广泛的问题域中有非常多的功能强大的库。你只需集中精力去解决问题而无需一切从头开始。
-
JVM被广泛应用于一些小型和大型企业;应用JVM意味着开发的产品会被更多用户采用。
所以说,JVM很好,并且我们也在使用着Java。那为什么还要转换语言呢?
是这样, Java具有它自己的一些折衷方式。但它缺少其它平台认为理所当然应该具有的功能 -比如lambdas,尽管Java 8已经对此进行了修正。Java的类型系统限制过多,并且其类型推断也不够理想。Java也没有数据结构形式,使其代码过度繁琐。
另外Java一般的开发反馈周期太长。为了运行、测试程序,在一天内可能需要多次重启JVM - 哪怕你只是修改一行代码 (HotSwap热部署补丁对此有所缓解)。由于所需的结构数量也仅仅是开始,因此实验变得很难。最后,交互式开发环境的缺乏也让人受不了。