For the most part, you can program complex programs in Clojure without ever dropping down to Java.
There are only a handful of Java libraries that are important to know well, primarily because Clojure chose not to implement certain functionality that is readily available on the host system. Examples: If you do any sort of math, get to know the static methods available in java.lang.Math. Most of these (e.g. trig functions) are not duplicated in the Clojure api because they essentially live here and are only a Math/ call away. If you do any conversions back and forth between strings and numbers, or do bit-twiddling on numbers, get to know what is in the java.lang.Long class. I/O is one area where you'll almost certainly need to look at the Java classes. Clojure provides slurp and spit for the most common case, but there are dizzying array of buffered/stream/reader/writer things for different use cases. The clojure io library wraps the construction of the most commonly needed reader/writer objects, but you still need to learn the methods for interacting with these objects. You don't need to know the classes by heart, but should be comfortable looking up the information when needed. Frankly, I'd like to see this more integrated into Clojure, through something idiomatic like channels or maybe some new type of stream construct. I frequently find myself googling things like "how to read a binary file in Clojure". Half the hits are outdated, and it can get annoying, but eventually I always find the right information. The Clojure Cookbook can also help for things like this. Strings used to be something where you needed to know the java library, but clojure.string now does a pretty good job of covering most cases. Very occasionally, I need a method from Character. You may want to look up in Java docs the full documentation of printf and of regular expressions, because Clojure uses these Java features and they aren't documented on the Clojure side of things. These are all the things I can think of that you need to know how to access from Clojure interop on a fairly regular basis. In terms of knowing the Java language itself, I have only needed to "drop down to Java" a few times, usually when dealing with numeric types that Clojure de-emphasizes (e.g., if you are working with byte-level bit manipulation, Clojure doesn't offer facilities for that because its bit manip functions assume you are working with longs) or an algorithm that has a lot of pointer manipulation. Most Clojure programmers aren't programming things like that, but if you do, you need to know how to use Java. You certainly don't need to be a Java expert, though. On Wed, May 4, 2016 at 7:50 AM, Bruce Whealton < futurewavewebdevelopm...@gmail.com> 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. > -- 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.