Hacker News new | ask | show | jobs
by lalc 4654 days ago
I have to admit I'm ignorant as to what Java libraries I'm missing out on by not using a JVM language. I hear about this advantage a lot though! What are some examples of good Java libraries that aren't as good in other common languages?
4 comments

Natural Language Processing libraries

https://opennlp.apache.org/ http://nlp.stanford.edu/

Cloud provider automation libraries

http://jclouds.incubator.apache.org/

Distributed stream computing

https://incubator.apache.org/s4/

Asynchronous event driven IO, battle tested, mother recommended

http://netty.io/

In-process webserver

http://www.eclipse.org/jetty/

....to name a few. It's probably useful to take some thing that you'll need and look in ecosystem X for it (say... .NET) and then compare what's available there to what's available on the JVM. In my experience, the JVM wins out almost every time when it comes to number of options and maturity of options.

The best Java libraries from my perspective are the ones for large scale projects. You can leverage proven techniques and technologies.

e.g. http://twitter.github.io or http://netflix.github.io

Is it a syntax error to talk Java without playing buzzword bingo?

"Leverage proven techniques and technologies"? What does that even mean?

What do you mean what does it mean ?

Leverage = take advantage of

Proven = demonstrated to have worked

Techniques = using one approach versus another

Technologies = existing code

Right..... So you're saying that your code works? Like, it doesn't crash? That's... awesome...

Buzzword bingo does not add value. It only obscures meaning. Of course your code works. Of course you use existing technologies. That work. In existing code. That you leveraged. Using techniques. And technologies.

Jesus, I hate this kind of language.

I think the OP's point was clear, Java has a big library of tested, debugged, robust libraries.
Java does seem to have some sort of strange connection to the business world (which just can't get enough of buzzwords).
Of all the buzzwords available, you chose an oddly benign set to criticize and get worked up over.
He wasn't saying that his code doesn't crash.

He was saying many other people have contributed java libraries his programs can use, so that he doesn't have to hire an expert in HTTP, or computational geometry, or many problem domains that aren't the direct concern of his application, yet are necessary for it to work.

He said it in a compact way. It's a form of compression.

(i) Never use a metaphor, simile, or other figure of speech which you are used to seeing in print.

(ii) Never use a long word where a short one will do.

(iii) If it is possible to cut a word out, always cut it out.

(iv) Never use the passive where you can use the active.

(v) Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.

(vi) Break any of these rules sooner than say anything outright barbarous.

[1] https://www.mtholyoke.edu/acad/intrel/orwell46.htm

Thank you for linking this. English is a second language to me, and reading that list i found i've been following those rules a lot and have been getting grumpy about people who didn't and made it difficult to understand them. Now i can point those people at that essay.
These are only the relatively new additions, and there are really too many to count. I would certainly add the JDK's java.util.concurrent to the list, as well as Netty and the excellent servlet containers (Tomcat, Jetty, JBoss and others).
I think the point is that most of the time when you think "I need something that does x", there is a library for that; whether it is a core library or not. In Lisp I guess you often find something very specific that doesn't quite solve the problem you have.

Having said that, I really liked the Google Guava library, although a good bit of that stuff is working around or solving problems with Java itself.

https://code.google.com/p/guava-libraries/

Guava is fantastic. So many times in the last few years, I've pointed people to Guava in code reviews "hey, this thing you just wrote, Guava already has that."
If you're using another "common" language, you're probably not missing out on anything. The distinction he was making was between Java and a "not common" language, like Common Lisp, for example.