我想知道是否有办法在Clojure中开发Eclipse插件。要清楚,问题不在于使用Eclipse编写Clojure代码。
Eclipse和Clojure都在JVM上运行,我觉得应该有办法利用Clojure(及其库)的强大功能来开发插件。我特意看着使用Korma,但总的来说,如果有一种自然的方式,我想将完整的插件移到clojure上。
答案 0 :(得分:10)
逆时针,Clojure的Eclipse插件是用混合Java和Clojure编写的。它还使用了clojure.osgi 1.2.10。
因此,这是一个现实的概念证明,它是可能的。而AFAIK,逆时针成功地被数百人使用。
有一些限制,因为:Clojure的命名空间对某些“根类加载器”是“全局的”。例如。如果你将Clojure打包在一个名为myapp.clojure的软件包中,那么你可能会有一堆其他软件包需要myapp.clojure。比如说myapp.bundle1,myapp.bundle2。当你这样做,并且,从每个bundle,加载内存(require)bundle名称空间,每个将从正确的ClassLoader加载(myapp.bundle1的名称空间将被加载到myapp.bundle1的上下文类加载器中,并且myapp.bundle2的名称空间将加载到myapp.bundle2的上下文类加载器中。这很棒,因为它允许java互操作正常工作。
但请记住,最后,从bundle1& bundle2将由bundle myapp.clojure中的“全局命名空间世界”持有。
说实话,这还没有证明逆时针的问题。因为在同一个功能中,让捆绑包共享一个Clojure实例几乎没问题。
潜在的缺点是:
请注意,对于Eclipse RCP产品而言,与Eclipse插件相反,这些缺点消失了。
如果你想看看Counterclockwise如何重新打包clojure,并使用clojure.osgi,你可以查看它的源代码:
http://github.com/laurentpetit/ccw.clojure.git http://github.com/laurentpetit/ccw.git
HTH,
- 劳伦特
答案 1 :(得分:4)
它似乎在Eclipse 3.x中不可用,但计划用于Eclipse 4,如http://wiki.eclipse.org/E4/Languages中所述。
还有a post here on Stack Overflow asking about development of Eclipse plugins in languages other than Java可能有更多您觉得有用的信息。
答案 2 :(得分:3)
完全可以在Groovy或Scala中编写Eclipse插件。由于Clojure生成.class文件,它应该没有什么不同。但是,插件通常使用PDE Build导出,PDE Build默认只处理Java,所以你必须编写一个customCallback.xml
文件来编译Clojure(参见http://www.michel-kraemer.com/scala-projects-with-eclipse-pde-build-2 for Scala build)。