Most teams pick a UI framework the same way they pick a restaurant — by what is popular right now, what colleagues recommend, or what appeared at the top of a search result. This article takes a different approach: establish what a well-engineered UI for a Java backend actually needs to be, from first principles, and then see what framework honestly satisfies those requirements. The conclusion may not be what you expect. Part 1: Where the Client Lives Before requirements, one distinction that frames everything else. Server-side rendering: the client lives on the server. The server maintains state, computes views, and pushes HTML to the browser. The browser is a display terminal. Every interaction is a round-trip. Network interruptions break the experience. Horizontal scaling requires session affinity or replication. Fat client: the client lives in the browser. It holds its own state, manages its own behaviour, and calls the server only when it needs data or needs to record an action.…