At my current project I came across Java Server Faces (JSF) for implementing the user interfaces for a Java JEE application. I read some great online tutorials (e.g. The BalusC Code) for preparation and Java Server Faces – the Complete Reference by Chris Schalk and Ed Burns (paperback, no eBook) for self-studying and must say: I really like JSF. The learning curve is a bit steep, but once you got it, it’s so much fun.
Especially when you enhance your environment with additional libraries like Apache Tomahawk. Nice UI enhancements like tabbed panes and trees.
Only thing: I’m not sure if I implement the backing beans the right way. Currently I implement them as wrappers for our model driven design. We have a data model in XSD. I use JAXB to generate the corresponding Java classes and the backing bean for mapping them to Strings, ArrayLists etc. in the UI, because the model is rather complex and I don’t need the complexity within my backing beans but still need to access the complete data model. I don’t want to hold the data twice in memory.
To populate the data objects I need EJB3 and WebService interfaces. Very time consuming, but it’s the only way to access external systems.
Let’s see how it scales when we start load testing…
For rapid development I use Eclipse and Glassfish, Plugins like EclEmma, Jad (JadClipse), Glassfish Connector and their equivalents on the command line within a self-made ANT-based build environment (you need to be IDE independent, aren’t you? ^^), which also does JUnit tests and reporting (JavaDoc, JUnit test results, code coverage report, assembling documentation files) besides building the deployment deliverable.
It’s not all that hard to develop within this environment for different target application servers, like e.g. WebSphere.
Another nice feature is remote debugging, which can be easily done from Eclipse using the Java remote debugging protocol. Good debugging tools are such a time-saver! Well, object inspection could be a bit better in Eclipse, but there are enhancement tools like POI from programmer’s friend.
It takes some time to set this all up (and managers don’t see that effort) – but now I’m really happy with my development setup. Years of work. ^^ And this setup can be applied to different projects (EJB, WebServices, plain old Java, …) as a template.
Just type “ant”.