5 ms·
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
- profquail 14y agoYou can browse the most popular projects on GitHub for the last day/week/month, that might give you some interesting code to look at: https://github.com/languages/Java https://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/ http://lmax-exchange.github.io/disruptor/
- spo81rty 14y agoLMAX does look pretty cool.
- jhill925 14y agoI found this hidden gem and have used it in several projects. It is the simplest ORM I have ever used in Java. (I use Eclipse to generate the JPA class from database tables, and I a done). https://github.com/mwanji/DbUtils-JPA https://github.com/mwanji/DbUtils-JPA
- spartango 14y agoI've been using http://vertx.io http://vertx.io pretty heavily in the last few months, and rather enjoying it. It's an asynchronous I/O framework that wraps the powerful NIO and Netty infrastructure with some elegant APIs and design patterns. It does a bunch of other things as well, but digging through the code, those are the concepts that will jump out at you. 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.
- eip 14y agoI have to use vertx for work. It's not my favorite. 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.
- voidlogic 14y agospartango: "Vert.x is a decidedly "modern" Java codebase" 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.
- mindcrime 14y agoThere are a number of new and interesting projects in the Apache Incubator, a few of which are written in Java. It's probably worth a look if you're looking for something to dig into: http://incubator.apache.org/ 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/ http://jena.apache.org/ [1]: http://stanbol.apache.org/ http://stanbol.apache.org/ [2]: http://opennlp.apache.org/ http://opennlp.apache.org/ [3]: http://mahout.apache.org/ http://mahout.apache.org/ [4]: http://incubator.apache.org/projects/marmotta.html http://incubator.apache.org/projects/marmotta.html
- rssident 14y agoSpring Data JPA, Spring AMQP, and Spring Integration.
- doug1001 14y agofor me, it's Storm (http://storm-project.net http://storm-project.net), the distributed processing technology (often described as "real-time Hadoop) built on Thrift and the extraordinary ZeroMQ. I believe Storm source is ~ 80 % java and 20% clojure.
- hatchoo 14y agoIt's https://github.com/Atmosphere/atmosphere https://github.com/Atmosphere/atmosphere for me. I'm also looking for a good alternative to Hibernate.
- rodrigoavie 14y agoThanks everyone for the suggestions. Keep them coming!