JGeocoder is a free, open source geocoder implemented in Java.  It assigns geocoordinates to postal addresses using the Federal Census Bureau's TIGER/Line data.  It was abandoned by Jay Liang in 2008 and resurrected by the New York State Senate in late 2012.