Google Summer of Code (GSoC) is a global program run by Google, the objective of which is to get university and college students involved in open-source development. Every year, Google pairs mentors from over 100 organizations with over 1000 students to work on three-month open-source programming assignments. Once the program is done, mentors are invited to GSoC Mentor Summit, an unconference hosted by Google on their campus in the Bay area.
I’ve had the pleasure of attending this great event 3 years in a row. This year, I hosted 2 unconference sessions. This post summarizes the first session titled Useful open-source libraries for Java developers. To see the summary of the other session, check out Interesting software development resources.
The motivation for this session was simple – I’ve been a Java developer for many years and one of the aspects of Java I like the most is the size and maturity of its ecosystem. We have libraries for almost anything, to a point that it can be hard to find the ones that are mature, production-ready, and do their job really well. Why not put a few skilled engineers in a room and let them share tools they found particularly useful throughout their careers?
The session was productive and we ended up discussing a bunch of interesting projects. Here are the ones we talked about – check them out!
- Lombok – A mature annotation-based code generator focused on reducing boilerplate.
- Guava – Google’s library containing various really useful data structures and utilities.
- Apache Commons – A good old bundle of reusable Java components.
- QueryDSL – A database query library with a very nice API and support for JPA, SQL and more.
- Speedment – A stream-based ORM.
- Spring Data – A collection of modules for data access for Spring applications.
- Apache Camel – A framework providing implementations of various enterprise integration patterns.
- Retrofit – A concise type-safe HTTP client.
- MOXy – Binding of Java classes to XML and JSON.
- Arquillian – A complete integration and functional testing framework for Java middleware with a wide range of modules.
- Mockito – A mature unit test mocking framework.
- AssertJ – Probably the best assertions for your Java tests with a nice fluent API.
- Hamcrest – A library for writing matchers typically used in unit tests.
- JGiven – A very nice BDD library with a pure fluent Java API (no text files or Groovy).
Other more specialized tools
- Jsoup – A solid HTML parsing library.
- HL7 HAPI – An HL7 parser.
- Breeze Java – An interesting library for creating Hibernate-based servers for BreezeJS clients.
What are your favourite libraries and frameworks?