tool development in Java
I want to develop a tool in Java. It is a desktop tool with about 20 or so screens (some of which are complex using multiple controls that need to update each other on the same screen, and others are normal JTable based ones etc).
I want to desing and develop the code in such a way that I write all the java platform code into core packages (that will centrally control things and also bring reusability) and tool logic in separate sections/packages. What are the suggested design patterns and also is there such a small reference tool that I can see to understand the separation better?
first off, consider using a rich client framework such as the Eclipse or Netbeans RCP, this takes a lot of the legwork out of building editors and views, freeing you to concentrate on your actual problem domain. I use the Eclipse RCP and find it to be very flexible and powerful, haven't used the Netbeans one and am not really aware of anything else. But you get features such as a completely dockable and reorganizable workspace for your application, basically for free
this isn't so much a design pattern domain as an architectural one. the fact that you have thought up-front about keeping the core and UI code separate tells me that you already pretty much know how to do that. there isn't any trick to it, just keep them in separate projects. currently, our product stands at some 30-or-so different projects, each of which is a separate Eclipse plugin, and the code is nicely decoupled, and get linked into one standalone application at build-time. if you understand the concept of keeping core and UI code separate, you'll find that doing so is actually just a matter of good coding habits.