我正在开发一个标准的Android应用程序(在java中),但是想在clojure中实现一些非UI"业务逻辑".这样做是否有任何缺点,或者我应该注意哪些问题会使这个想法变得糟糕?
我做了一个简单的测试 - 在Android应用程序的一个简单的clojure库中调用函数,这似乎没有任何明显的问题.
我已经看到关于加载clojure.jar的时间问题的评论,但在我的情况下,clojure没有处理UI.
我不清楚是否还有其他内存或性能问题我应该关注.
2017年1月16日更新
尝试使用一些稍微复杂的clojure库时遇到了一些问题,特别是依赖于core.async的库.
使用标准的clojure 1.8作为依赖,我试图:
new ClassDefinedInClojure()
ClassDefinedInClojure是AOT生成的java类,但我得到了:
java.lang.VerifyError: Rejecting class clojure.core.memoize.RetryingDelay because it failed compile-time verification
我认为这是此处确定的同一问题的结果:
http://dev.clojure.org/jira/browse/CLJ-1472
但是,即使在我使用补丁(http://dev.clojure.org/jira/secure/attachment/15351/clj-1472-2.patch)重建clojure 1.8之后问题仍然存在.
我知道clojure的android特定版本https://github.com/clojure-android/clojure,但老实说不清楚这与正常的clojure有何不同以及为什么需要它.我尝试使用它作为标准clojure库的替代品,但有同样的问题.
关于我原来的问题,这很有用 - http://blog.ndk.io/state-of-coa.html