Hi, Bruce. I know almost no Java, and yet I have been a fairly productive professional Clojure programmer for several years. How is that possible? Here are my thoughts:
1. A lot of code is application logic. This will be 100% Clojure. 2. The next big chunk of code is talking to databases, web services, etc. Here, I'm just lucky, because Clojure programmers that *are* also very good Java programmers have written Clojure wrappers for many of the most useful libraries already. 3. As to the complicated parts of the Java ecosystem that aren't programming, but are still required, again, I'm lucky, because said excellent Clojure/Java programmers have smoothed over many rough edges. I don't know a lot about the details of javac / Maven / packaging jars / web containers because I have leiningen. 4. When I do need to dig around and explore a Java API, it's probably easier for me than a Java programmer, because Clojure has the REPL and very good interop facilities. Admittedly, sometimes I've been stymied here, if a Java API uses lots of annotations or other Java-isms that I didn't know how to translate into Clojure-land. Now, it's a little embarrassing that I don't know more about all those Java-related things, but it shows that it's not really necessary to know everything about Java to be productive in Clojure. That said, if your application area is bit off the beaten trail, you will have to do lots of Java interop with a couple libraries, but probably not dozens and dozens. And see (4) above. Things you *will* need to learn about Java (or at least I did): 1. The ways Java interacts with the host system: files, resources (and the difference between them), streams, buffers, maybe sockets. I would start with the source code to clojure.java.io, and go from there. 2. Database libraries: I know I said that there are Clojure wrappers, but for some of them you will need to understand the Java APIs to use them effectively. JDBC comes to mind. 3. Might go under (1), but might not apply to everyone: JVM/host interactions more specific to deployment, like setting up the JVM to do SSL/other networking correctly, JMX, much more I probably don't know about. As I said, I don't know much Java, so I'd be interested in what more seasoned devs think is important that I've left out. --Leif On Wednesday, May 4, 2016 at 10:55:02 AM UTC-4, Bruce Whealton wrote: > > Hello, > There is much I like about Clojure - from it being a Lisp > dialect to functional programming. I know it runs on the JVM. My question > is > this: If one is not a guru with Java will that be a problem becoming good > at Clojure? The only thing that intimidates me about Java > is the incredibly large set of libraries that exist. It seems ( again > this relates to my question ) that knowledge of so much of this > extensive collection of libraries is going to be important to building > anything on or for the JVM. As a corollary to this question, how does > one add Java to one's skill set - I mean is it really a matter of years of > work and learning the many libraries so that one > knows which ones to use? Or can one be good with Java and just pick up a > knowledge of the libraries over time. > > Thanks in advance for any feedback, > Bruce > -- 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. For more options, visit https://groups.google.com/d/optout.