Jedi provides a library of routines inspired by more powerful languages such as Lisp, which support first order logic, filtering, iteration, type conversion of collections, etc. It makes extensive use of higher order functions and closures (also known as 'blocks' or 'lambdas'), but the key is that you do not have to write them yourself. The problem with closures in Java is that, while they really represent functions, they must be presented as objects. Since methods / functions are not first class objects in Java, any closure must be 'wrapped' in an object, which means creating a class, either named or anonymous. Jedi helps with this by providing JDK 1.5 annotations which will generate the necessary code. If annotations are used, JDK 1.5 is required at build time. However, the compiled code can be run under JDK 1.4 (using the javac -target jsr14 flag). No use is made of JDK 1.5 APIs in the generated code or the Jedi APIs, although generics are used to great effect. The generated code supports unit testing by providing several different ways to inject dependencies. You can therefore select the mechanism which supports your style of programming and testing. Jedi started life in about 2004 and has been used on four investment banking projects, a project for a large ISP and a bunch of smaller projects.
GeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement Geographic Information Systems (GIS). The GeoTools library implements Open Geospatial Consortium (OGC) specifications as they are developed, in close collaboration with the GeoAPI, GeoServer and uDig projects.
AppInfo :: Display always current version of your software even when automatically deploying from CI server on QA
AppInfo is a small library providing the easy way to show always valid, automatic updated information about a version of running software in your web/desktop Java application. Especially useful with automatic builds from CI server deployed on QA. Currently supported are displaying name, version, build number and build date of running software. They are available as text from end application and can be customized to fit your needs. Source information can be passed via environmental variables and works out-of-box with Hudson CI server.