Where to start? Java application with multiple front ends
<p>I've got an application here that I wrote many years ago that consists of a heavy-weight front end that directly queries a database server.  This application runs on about 7 dedicated workstations.  There is also a web-based front-end that I whipped up that shares the same feature set, and a web-based administration too for managing and reporting on the data -- they all just hit the database directly.</p>

<p>The application is quite simple and I understand the problem it solves very well.  It could use an update, and I don't even have access to the tools necessary to work on the GUI anymore.  I've been getting into Java lately, and it seems like a rewrite of this app would be a good project to get started with.</p>

<p>So my question then is this:</p>

<p>The application will require a non-web GUI, I suppose in Swing.  This is necessary for very particular reasons.  The application will also require a web-based GUI with the same exact features as the Swing front that will probably be deployed as a JSR-168 portlet, and a web-based administration tool (portlet also).  With my previous design I ended up with a lot of duplicate code because each component had its own code base, and I foolishly used stored procedures to help to ensure that critical calculations were at least consistent.</p>

<p>Where should I start?  I'm having such a hard time wrapping my mind around how this should all work in the Java world.  I guess what I'm having the hardest time with is how do I create an application that can have both a Swing (or whatever) front-end and a web-based front end with as little duplication as possible?</p>

<p>Edit: I know conceptually how this <em>can</em> work.  What I'm asking is for advice specifically related to Java technologies.  Which frameworks to consider, etc. </p>
