One place to start looking for a recommendation engine is Taste - Taste is a collaborative filtering engine for Java. Taste takes as input users' preferences for items and returns estimated preferences for other items. Taste includes a number of CF algorithms including Item-Item recommendations and user-based recommendations.
Taste is very well engineered with a very clean programming model. Here's an example of creating a Slope-One Recommender:
DataModel model = new FileDataModel(new File("data.txt")); Recommender recommender = new SlopeOneRecommender(model, true);