I want to develop a GIS application in Java. I found some of useful software like UDIg, Openjump, KOsmo and gvsig, but I am unable to decide from which should I start as I want to create my application which I can give to my clients.
I have no experience with gvSig or Kosmo, however I programmed applications for uDig and reused components of Openjump.
From a software engineering perspective uDig proposes a neat platfor supported by Eclipse, an universal tool for serious developers. However, developing for uDig is cumbersome precisely because of the important role the Eclipse framework plays in it's conception. You have to be ready to invest a lot of time in learning how to develop Eclipse plugins before starting to spend a lot of time learning how to create a uDig one. I also found compiling for and working with uDig could be slow.
OpenJump proposes no frills Java APIs, which are easier to integrate. OpenJump also has more tools and inner APIs to handle spatial data. However the final result may not look as 'professional' as a uDig one.
In a nutshell if you want to spend time learning Eclipse plugin development (a useful skill), uDig is the way to go, otherwise, for a project finished quickly that will make the client happy OpenJump will be easier to customise.
Disclaimer: I'm part of the gvSIG team :-)
gvSIG 2.0 is a very modular application so you can develop new extension to gvSIG desktop (the most usual use case) or create complete new J2SE apps using gvSIG components.