Fork me on GitHub

Speaking of editions, wasn't there a hint, perhaps of a 2nd edition of Clojure Applied? Did I get that wrong?

Dimitar Uzunov20:12:33

This has probably been discussed before but what do you think are the benefits of the JVM and Java ecosystem of libraries? Given how widespread java is I can’t easily find any modern advocacy for it beside the really shallow link-spam present everywhere


@dimitar.ouzounoff The main benefits for me are the millions(?) of engineer-hours that have gone into all of that to make it stable and fast and provide a very, very rich set of robust libraries for pretty much any task. Plus, the JVM runs "anywhere" so I only have to target one platform.

👍 1
Dimitar Uzunov20:12:38

Hi! Thanks for the answer; any particular libraries that really stand out and/or unavailable on other platforms?


I would be surprised if you can find a JVM library such that there is no other library for another language that can do something very similar, or the same. It doesn't need to have unique capabilities to have strong capabilities.


It is probably also difficult to find a library available in some other programming language that you cannot find something similar available on the JVM.

Dimitar Uzunov20:12:32

@U0CMVHBL2 so its all about the features of the JVM rather than something specific in the ecosystem? (no “killer libraries” if that makes sense)


Depends on what you need. For example, the last time I checked Stanford Parser was only available in Java. There are libraries that wrap the Java library however, but that might not be usable under some conditions. So if you specifically need Stanford Parser, that would be a "killer library" for you. Same applies for some other libraries and some other languages, but it's impossible to give a blanket statement for any generic library.


I’d think about it less like “java has a killer library for doing x basic thing everyone needs to do” and more like “if you want a client library for some platform and the people who made that platform only were willing to invest in 3 ecosystems, they probably picked Python, Java, and C#” so if you can interop with java you get that for free. Examples: AWS, SSH, database protocols, Elasticsearch, basically any other 3rd party piece of software you could want to integrate with.


Software’s no good in a vacuum, most of the time it has to talk to other software

Søren Sjørup14:12:39

To me java.time.* and java.math.BigDecimal are “killer” libraries for financial applications. Lucene is another “killer” library.

👍 1

I've been working almost exclusively on the JVM for over two decades at this point, using about half a dozen different languages -- and the interop between those languages is another thing the platform provides.

Dustin Getz21:12:07

Things are containerized now so JVM value prop is a lot weaker than 10-15 years ago but i think the JVM observability tools still apply in scaled up clojure deployments; also ClojureScript remains a huge value prop; and code-sharing between different platform components of a larger cloud system (e.g. client/server/db) is an underutilized value prop that is a game changer for future cloud architectures


Something that comes to mind is that Kafka interop is trivial with Clojure but using it from Ruby or JS one feels like a second-class citizen, C interop or whatever was powering those was definitely frustrating (Probably there's a more generalized principle that can be extracted from my anecdata)


IMHO, Kafka doesn't count because it expects you to be able to generate a Java class for some things to work...


Based on the other ecosystems I've tried, there are few alternatives that provide the breadth and depth you can find on the jvm. In no particular order: • Strong support for concurrency and multi-threading • multiple programming languages • cross platform • performance. JVM langs are generally competitive or faster than many of the other popular high-level langs. • libraries for complex, existing technologies. This list is huge. Some examples: IMAP, Microsoft Office doc reading/writing, database integration, IRC, SMTP, crypto, PDF, etc. These are the kind of things that can be very difficult to build yourself. • Most new technologies ship with libraries for the JVM very early on. If there's a new cool database or magic cloud thingamajig, it will probably have a Java SDK. • Strong support for native integration: JNI, JNA • LTS support for the foreseeable future • Graalvm is adding new capabilities for compiling to native that cater to even more use cases • established, mature tooling for profiling, debugging, deploying

💯 1
Dustin Getz21:12:35

good list thanks