David Segall wrote:
> I apologise for this post which is probably off-topic but I can't post
> it correctly until you respond!
>
> Each instance of my application consists of a single web page that
> displays the names of the users and a few check boxes, filled in by
> the users, that indicate their preferences. All the users should be
> able to see everybody else's choices.
>
> I assume that I give all the users of one page a web address that
> uniquely identifies their page and that some code on the server
> generates the page from a database that contains the basic information
> on the page and which is updated by changes to the users preferences.
>
> Which Java based tools can I use? Can I write the server code in Java?
The standard Java technology for web applications is Servlets. For
output-rich purposes (e.g. rendering anything but simple web pages),
Java Server Pages (JSP) is a useful technology that runs on top of
servlets. These things run inside a piece of software called a "servlet
container", which handles quite a lot of the underlying server
functions. Apache Tomcat is a popular, capable servlet container; some
other containers include IBM Websphere and Bea WebLogic, and there are
others.
> Are there some tools that would make generating a GUI web page easier?
For a single web page? Learning any particular tool for this purpose
would probably be more difficult than building the page directly. If
you are looking for a complete technology stack, however, then there are
tools that run on top of servlets/JSP to provide useful services. There
is an open source project called Struts that helps in implementing a
model-view-control GUI paradigm in a web application. JSP includes a
feature called "custom actions", implemented via "tag libraries", that
allow a developer to use HTML-like tags to describe in-page logic and
behavior such as looping, branching, accessing server resources, etc..
There is a wide variety of tag libraries available that you could use
with a web application, from the JSTL to a variety of special purpose
libraries. You could write your own if you wanted to do.
> What should I use for database access?
Java database access pretty much all goes through JDBC at some level.
Look at the java.sql package for the standard JDBC classes and
interfaces. Some tag libraries (see above) include JSP custom tags for
performing DB accesses, or you can do it directly in your own Java code.
Your question is a bit vague, so I'm not sure whether I've really
answered it.
> Maybe the preceding paragraph
> is wrong and my application should be an Applet?
The advantage (if you want to call it that) of an applet is that you can
implement the GUI with AWT/Swing. In addition, the GUI runs on the
client side, rather than on the server side, which may make it a bit
more responsive. On the other hand, the browser must have a JVM
installed (recent I.E. doesn't come with one), and you face a slew of
version compatibility issues. Plus, the added flexibility of Swing
comes with considerable added complexity. All in all, I would never
recommend an applet where a standard HTML interface is sufficient.
> Is there a preferred
> IDE for writing and testing this application?
No. There are a variety of Java IDEs, and many of them support servlet
/ JSP development. The Eclipse IDE, with one of the several Servlet /
JSP plugins, would be one alternative. There are JSP / servlet test
frameworks that do not require a servlet container, and others that do.
> I should state that I am
> trying to minimise the amount of code that I write and that speed and
> resources are not an issue.
Then I recommend a plain JSP for the GUI presentation. I am not
entirely clear on the required back-end logic, but this could be
implemented in one or more Javabeans associated with the JSP, by a
controller servlet, or with custom tags, depending on various factors.
If the whole application really is in one page, then a separate
controller servlet probably is overkill. For the minimum coding on your
part, I think JSP with appropriate use of JSTL custom tags might be the
way to go.
--
John Bollinger