有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

api在Clojure和Java之间的界限在哪里?

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

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

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

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


共 (2) 个答案

  1. # 1 楼答案

    如果不评论您对Java和Clojure的相对优势的看法,并且假设您至少做了一些微观基准测试,以验证该假设有一些可能是正确的,那么正确的方法似乎是只将Java留给需要优化的部分

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

  2. # 2 楼答案

    Clojure很好地帮助开发人员以简单的功能风格完成大部分工作,并将变异工作隔离到有限的区域

    我将在这里应用相同的指导原则:尽可能地隔离java代码,就像在“纯函数式”中尽可能多地隔离clojure代码一样。因此,考虑到您的限制,java岛将尽可能小,访问java岛将通过一小组clojure函数

    不确定这有多大帮助,但无论如何