Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 496661
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T05:42:26+00:00 2026-05-13T05:42:26+00:00

I can perfectly see why Clojure is really good for concurrent programming. I can

  • 0

I can perfectly see why Clojure is really good for concurrent programming. I can see the advantages of FP also in this regard.

But clearly, not every line of code that we write is part of a thread or needs concurrent access. For those parts of the code (the more simple and sequential piece of code) what is it that Java really missed that Clojure provided?

Were features like Multimethods, Dynamic binding, Destructuring bind really missed in Java?

I supposed my question can also be framed as:

  • If Clojure did not have the
    Concurrency features that it had and
    the whole Immutability/Mutability
    issue was not of our concern, then
    what other features Clojure provides
    that would make you use it instead of
    Java ?
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T05:42:26+00:00Added an answer on May 13, 2026 at 5:42 am

    Were features like Multimethods, Dynamic binding, Destructuring bind really missed in Java?

    Yes. Also…

    1. First-class functions. Delicious first-class functions. This isn’t just an FP thing. There’s a good reason people are clamoring for closures in Java 7.

    2. Code-is-data. This is the benefit of any Lisp. Lisp code isn’t just blobs of text you feed into the mouth of a compiler and never see again, it’s structures of lists and vectors and symbols and literals that you can manipulate progammatically. This leads to powerful macros and first-class Symbols and lots of other goodies. It leads to a highly extensible and powerful language.

    3. Clojure has better control and looping constructs and the ability to create your own via macros and first-class functions. Java has for and foreach and while (and didn’t even have foreach for years). Clojure has map, filter, reduce, mapcat, lots of do forms, lots of if and when forms, list comprehensions via for, and so on. If these didn’t exist, you could write them yourself. In Java you get to wait a decade for a committee to (maybe) approve such features.

    4. Minus those dealing with static typing, all of the features set for Java 7, Clojure either already has or could have trivially. “Automatic resource management”, Clojure has as with-open. “Language support for collections”, Clojure (and Ruby, Perl, Python…) has already. “Strings in switch”, Clojure has more powerful case-like constructs like condp, and whatever else you can think up. You could write any of these yourself in a dozen lines of Clojure.

    5. Concise syntax for lists, maps, arrays, sets, sorted sets, sorted maps etc. and nearly interchangeable use of them all thanks to the seq abstraction. Literal support for regexes, characters, anonymous functions, etc.

    6. Java has mandatory checked exceptions, which are annoying; Clojure doesn’t.

    7. Java syntax is verbose and irregular. Clojure syntax is concise and regular. Even Java written in Clojure is often more concise than Java written in Java thanks to macros like -> and doto, and constructs like proxy and (soon) reify.

    8. Java code has too much mandatory boilerplate and endless repetition. public static void main(String[] args){...} etc. Clojure has next to none of this boilerplate, while sacrificing little to nothing in terms of expressiveness or power. Even other statically typed languages today seem to be going the way of type inference. There’s good reason you need a bulky Java-centric IDE to write and endlessly “refactor” Java code; writing it by hand would drive you insane and wear your fingers down to nubs.

    9. In Java everything is a class or interface, whether it should be or not, which is a cause of unnecessary complexity. There are many programs that have to be mangled beyond recognition to fit into an OOP style. Clojure lets you avoid this. A nice rant to this effect. Clojure focuses largely on verbs.

    10. Interactive programming via REPL is fun. Compile/run/debug cycles are not. Clojure still compiles to .class files if you want it; in the meantime you can sit in the middle of your code and tinker freely while it’s running.

    11. Clojure’s metadata and sane equality testing are enjoyable to work with. As are its auto-promotion of int to long to Bigint, native handling of rational numbers, and so on.

    12. Dynamic typing leads to shorter, more generic thus more reusable thus more powerful code than static typing. (This is a highly debatable point, obviously, so I put it last.)

    The popularity of Scala and Groovy and JRuby and Jython and endless other JVM-languages-that-aren’t-Java should be seen as a good indication that while the JVM is good, Java-the-language is unpleasant for many people.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I can't show a live example at this point, but i don't see how
I think this will be easy but I can't see how to do it!
Can't see why this is happening, but when I use Bluetooth to send data
Code can be perfect, and also perfectly useless at the same time. Getting requirements
Why can't enum's constructor access static fields and methods? This is perfectly valid with
So I'm kind of new to jQuery, but I can't see why the Next
I can't imagine this is hard to do, but I haven't been able to
This is a tricky one because I don't see how I can fix it
My select form is working perfectly, but my label will not display no matter
From what I can see on the web, this is a fairly common complaint,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.