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.

Reply via email to