Oops, this should have be titled "Calling Clojure from Java" ... the interop with Clojure calling Java is obviously well-worn and solid.
On Sunday, June 9, 2019 at 9:53:56 PM UTC-5, eglue wrote: > > I've been stalking Clojure for a while but now doing it professionally > full-time (woo hoo!). > > I saw a Stuart Halloway tweet responding to someone who'd found it a > "soul-crushing, miserable experience." > > I had a similar miserable experience and figured it was just me, but am > now suspecting that's not the case. (Happy to be shown the light however.) > > Stuart H posted https://github.com/stuarthalloway/clojure-from-java to > demonstrate the ease of Java consuming Clojure, but I find it far more > important to be able to *compile* Java against Clojure interfaces not > invoke it dynamically from Java....because dynamic invocation from Java is > unwieldy to the point of it being a likely deal breaker for any Java shop. > Dynamically loading classes and invoking methods.... c'mon, no one's going > to ask their Java devs to do this. > > If Clojure doesn't have a good compile-time consumption story for Java > consumers, I think that's a loss. (Even if it is just providing better docs > or archetype/bootstrap examples in this regard.) Because otherwise Java > code bases around the world could be eaten away by (compiled) Clojure from > the inside out, giving Java dev teams enough time to be overtaken by the > miracle that is Clojure. > > Inspired by Stuart's example, I was successful in putting together a quick > build to achieve this ideal: https://github.com/atdixon/clojure-from-java > > However, I have a few open questions: > > - when I tried to AOT only the public-facing clojure code that I needed to > compile against, I found out at runtime that this wasn't going to work. > Dynamic clojure code was loading my same types into DynamicClassLoader and > when my statically-compiled, root-class-loaded code was getting executed > the ClassCastExceptions of course were flying. So am I right to think that > you have to AOT everything in order to do this right? > - IDE support (for me, Cursive) "works" but is non-ideal; you have to > manually compile the dependee/Clojure jar, then Cursive will let you > execute Java code against the manually aot-compiled Clojure code > - AOT producing generics/generic types doens't seem to be part of any of > this... is this a lacuna in the Clojure AOT space, are there libs that can > help here? > > This story ^^, if made easier, seems to me would boost Clojure adoption in > Java/JVM shops. > > What am I missing? > > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/0e493ca3-b07d-4582-8850-57da5d0132e4%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.