2009/9/17 Hugh Aguilar <hugoagui...@rosycrew.com>:
>
> Thanks for the encouragement. I've already got the book.
>
> I suppose eventually I will have to learn Java. I have been putting it
> off because I hear a lot of Java-bashing from programmers, and have
> also noted that this is generally the impetus for the development of
> languages such as Clojure and Scala and the dozens of others. On the
> other hand, Java can't be any more difficult than C or C++ that I
> already know. With languages such as Factor or Python I am relying on
> the bindings to C and C++ programs, so with Clojure I would be relying
> on the bindings to Java programs, which might be an improvement.

I'm pretty sure that given you're already familiar with class based OO
languages in the form of C++ and Python that Java won't prove a
significant barrier to your learning clojure.

The main thing you'll use java for in Clojure is accessing API's, and
if you can read javadocs and know what classes, objects, methods and
constructors are then you'll already know at least 80% of what you
need to be able to usefully make use of Java via Clojure.

Some things you'll probably need to know are:

- Class files are typically held in jar files (which are essentially
just zip files with a different extension.
- Jars are typically put onto the classpath as commandline arguments
when starting the JVM with the java command e.g.

  $ java -cp /path/to/first.jar:/path/to/second.jar myfile.clj

- Java Classes are namespaced into packages e.g. the java.util.HashMap
etc...  java.util is the package, HashMap is the class...  HashMap can
be referenced unambiguously by the fullyqualified name
java.util.HashMap.
- How classes/packages map into clojure namespaces etc...

- What Java interfaces are and how they work
- How to use "proxy" to implement interfaces in Clojure (proxy is
typically how we simulate java anonymous classes in Clojure).
- How to call methods on java objects with . .. and doto
- How to use class (static) methods.

There are lots of things that complicate this picture but to get
started I'm guessing most questions other than those above will be
relatively easily resolved.

To get a feel for java interop, I'd suggest trying to use the java
standard library first as that way you wont need to mess about with
downloading jars and altering the classpath... e.g. paste the
following into a REPL:

(let [java-hash-map (new java.util.HashMap)]
  (doto java-hash-map
    (. put "key" "value")
    (. put "key2" "value2")
    (. put "key3" "value3"))
  (prn (str java-hash-map)))

>From here and playing with Files etc... use proxy to implement a java
Interface which you feed to another java class, then when you get the
hang of this, you'll probably want to start using other libraries.  If
you've done this I'd say you'll have mastered most of java/clojure
interop and will know enough to use Java API's 90% of the time without
problem.

R.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to