I'm looking to make a selection of a (Java-based) framework for UI development, with the following constraints:
- The application requires very simple UI (form with 1 or 2 buttons results in a list of images, texts, etc) but the actual types of UI element rendered are numerous.
- We already have the backend logic (in the form of a web service) implemented the way we want it.
- Componentization is important
- We'd like to have extensibility points (in the future) to allow external developers to change the look and feel of the UI, without having to build, compile, and stage the entire application or even the entire front end.
- Performance and scalability of the UI layer is important, but we aren't expecting 100tps per machine, and the backend is most likely going to be the bottleneck anyhow
- Ease of maintenance is crucial
- Support for easy internationalization
- (and this is a bit unique) we may want some UI components to be rendered differently based on browser capabilities, browser version, etc. However, we want to hide this fact from the developers who build any specific screen (as far as possible).
So far, our top choices are Tapestry and JSF (maybe with Facelets). I've read past discussions here such as http://stackoverflow.com/questions/257712/best-java-framework but they do not seem to address my specific points. Any advice?