I am developing a brand new system (mirrored off an old one) that I was hoping to get some advice on. This system had complex GUIS writtin as Applets with Swing. Our new system needs to be a web application. I have no idea what technologies could replace a downloaded applet with a browser application, any advice would be appreciated. Other parts of the system involve messaging, data persistance and caching. I want it to be really clean looking and to look more like a java application than a standard web page. I was thinking the following technologies for the other parts of the system besides the applets and would appreciate any advice on this also.
JBoss Application Server with the following components:
JBoss Transactions (don't know what this is)
JBoss Portal (don't know what this is)
I've not used this framework myself, but a collegue of mine (web developer) has expressed interest in adopting the Ext JS RIA framework. Seems like it would allow you to build a RIA with the kind of look and feel you described. There's also a book availabe that could be worth checking out if this framework sparks your interest. Again, I've no experience developing applications using this framework (nor have I read the book I mentioned), but it seemed like it might be worth throwing out there, as a sugggestion.
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.
Echoing Tamas here, it's a _really_ good idea to split the UI and services layer, there's no 'clear winner' in the UI space for Java based apps at the moment, so you might find yourself swapping the UI out. If you're considering bleeding edge then JavaFX could be a rich client technology for you.
Prototyping the UI is probably way to go here, see if you can build a simple CRUD screen in technology X to see how easy/hard some of the offerings are.
Jboss Transactions is all to do with their transaction manager. For example the transaction manager will ensure that any XA (2-phase) resources involved in a transaction will all commit or all roll back. For example you may send a message to a topic and write to the DB as part of one txn, if the DB write fails it'll get rolled back and so will the sending of the message.
Thanks for all the advice. I definitley agree that components need to be separated. I am planning on utilizing Struts (MVC) architecture and it looks like since some pieces of application are going to need to be applets run via web and others can be plain old JSP I am going to try to utilize both the EXT JS and the GWT components so the 'look' is seamless across the application. I don't know if I will need the JBoss Transaction plug in, I have to analyze what sort of transactions need to be done. If the only transactions to/from the database I can use Hibernate for the transaction security (commit/rollback all or none), if I understand correctly if the transaction needs to involve more (emails, messaging, etc) it would be wise to use the JBoss Transactions.
Correct on the transactions, Jboss AS will have the Jboss TM (Transaction Manager) running by default, you simply have to follow the documentation in order to have your XA resources (Database, JMS) registered with that TM. There are loads of examples in the docs and on the web (that includes Hibernate integration as well). So you should be OK with that.