It's been several months since you posted your request, but if you still have the need, please consider FeSimpleGeoProx
I think it meets all of your stated requirements: FeSimpleGeoProx is a lightweight collection of user-supplied geographical points which supports fast proximity search by search within a radius or by rectangle.
- Free, open source (Apache version 2.0 license)
- Pure Java
- Supports query within a circle (start point and radius)
- Supports query within a "rectangle" (defined by lat1,long1-lat2,long2)
- Multiple objects can be stored at the same latitude/longitude without a workaround.
- Lightweight. The jars (both FeProxiMap and LatLng on which it depends) are together less than 100K.
In the performance/weight spectrum, it falls between linear search (lightweight but slow: for a reasonable search, this is between 100 and 1000 times faster) and GeoRedis (which is blazingly fast but heavier weight). Also, the documentation on GeoRedis says that its answers are approximate, while these are precisely as exact as LatLng will give.
Disclaimers: I am the author of FeSimpleGeoProx. Also, it relies on the excellent (and also FOSS) SimpleLatLng, which must be downloaded separately.