在Clojure和Java之间划清界限?

mik*_*era 14 java architecture api encapsulation clojure

关于我使用Clojure和Java开发的应用程序,我有一个有趣的架构问题.该应用程序涉及许多需要协调的密集,并发数据处理任务.

以下是混合Clojure和Java的基本原理:

  • 一些相当CPU密集型数字代码需要Java ,我需要优化算法以在JVM上尽可能快地运行.Clojure还不能很好地实现这一点,并且这样的代码在Clojure中不会非常惯用,因为出于性能原因,算法需要大量可变数据.
  • Clojure(IMHO)更好地编排了应用程序的整体流程,它对函数式编程,REPL的交互式动态开发和并发功能提供了出色的支持.

鉴于我正在使用这两种语言 - 我应该采用什么逻辑或原则来确定两者之间的分界线?特别是,我对如何设计一个能够利用两种语言相对优势的适当级别的API /接口感兴趣.

Yis*_*hai 10

没有评论你对Java和Clojure的相对优势的看法,并假设你至少做了一些微基准来验证假设有一定的机会是正确的,那么正确的方法似乎是只留下Java需要优化的部件.

负责数字代码和计算的类应该用Java编写,其他一切都用Clojure编写.我甚至会采取更积极的方法,只是将类设计为不同的,以便它们可以用Java编写,但实际上是用Clojure编写的,如果性能证明是一个问题,用Java重写它们.