Ask HN: what are the most interesting Java projects you've seen lately?
So, just say what open source Java project you've seen lately that boggled your mind or helped you in some way
I'm learning Java and I'd like to browse source codes and pick up interesting findings
11 comments
[ 5.1 ms ] story [ 42.3 ms ] threadhttps://github.com/languages/Java
I don't write Java (I mostly work with F#, and a bit of C#), but I always thought the LMAX Disruptor was a really cool bit of software.
http://lmax-exchange.github.io/disruptor/
https://github.com/mwanji/DbUtils-JPA
Vert.x is a decidedly "modern" Java codebase; it's written in a decidedly different style from "traditional" enterprise Java. From the build tooling (Gradle) to the use of callbacks and delegation, you'll find it a bit refreshing. I'd recommend thinking about how you would use other patterns or structures in concert with Vert.x as well, as that will get you thinking about architectures. Exploring its model of concurrency in concert with Java concurrency tools is a must; some of my favorite Vert.x code mixes its reactor with Grand Central Dispatch-like threadpools and clever message passing.
I've really enjoyed working with Vert.x. It's not without warts, but I feel like the code I've written around it represents a great advance in my Java style.
It's not Maven friendly. It's not Spring friendly. Callback spaghetti is hard to read and maintain.
It uses it's own half baked messaging framework instead of something more powerful like AMQP.
The documentation is confusing and often times self contradictory. ("Worker verticles use threadpools" vs "All verticles are strictly single threaded")
It encourages message passing and queuing even when it doesn't make sense. That leads to code that is very hard to understand and even harder to debug.
It uses Hazelcast for in memory datagrid but doesn't explain it at all in the docs. It also doesn't expose any of the useful Hazelcast APIs. So unless you are already familiar with Hazelcast you will miss most of its benefits.
I think Spring Integration is a much better solution to the problems vertx tries to solve.
That fact that vertx tries to be polyglot friendly doesn't really seem like a benefit to me either. Just makes feature development much slower.
eip: "[Vert.x] Callback spaghetti is hard to read and maintain."
My take, "modern" = like node.js = Callback spaghetti = hard to read and maintain
Of course this is coming from someone who hates callbacks, javascript and has ported node.js apps to Go and finds them faster and more maintainable in that form.
http://incubator.apache.org/
As far as specific projects, I'm currently really interested in Apache Jena[0], Apache Stanbol[1], Apache OpenNLP[2], Apache Mahout[3] and Apache Marmotta[4].
[0]: http://jena.apache.org/
[1]: http://stanbol.apache.org/
[2]: http://opennlp.apache.org/
[3]: http://mahout.apache.org/
[4]: http://incubator.apache.org/projects/marmotta.html
I'm also looking for a good alternative to Hibernate.