我对使用Clojure和Java开发的应用程序有一个有趣的架构问题。该应用程序涉及许多需要精心编排的密集型并发数据处理任务。
以下是混合Clojure和Java的基本原理:
鉴于我正在使用这两种语言 - 我应该采用什么逻辑或原则来确定两者之间的分界线?特别是,我对如何设计一个能够利用两种语言相对优势的适当级别的API /接口感兴趣。
答案 0 :(得分:10)
在没有评论您对Java和Clojure的相对优势的看法,并假设您至少进行了一些微基准测试来验证假设是否有正确的机会,那么正确的方法似乎是离开Java仅适用于需要优化的部分。
负责数字代码和计算的类应该用Java编写,其他一切都用Clojure编写。我甚至会采取更积极的方法,只是将类设计为不同的,以便它们可以用Java编写,但实际上用Clojure编写它们并用Java重写它们,如果性能证明是一个问题
答案 1 :(得分:2)
Clojure在帮助开发人员完成简单的功能风格,并将突发工作隔离到狭窄区域方面做得很好。
我会在这里应用相同的指导原则:尽可能多地隔离java代码,就像在“纯函数式”中一样执行你的clojure代码。因此,考虑到你的约束,java岛将尽可能小,并且访问java岛将通过一小组clojure函数。
不确定这有多大帮助,但无论如何!