Das Problem kennt jeder Java-Entwickler: Die UI-Berechnungen laufen auf dem Server, der Browser stellt die Inhalte nur dar. Für jede Interaktion mit dem Nutzer wird der Server angefragt. Gerade bei schlechter Internetverbindung sorgt das für ein sehr schlechtes Nutzererlebnis. Der Server muss den Zustand des Clients vorhalten. Damit werden Speicher- und Rechenkapazitäten gebunden. So fühlt sich die Oberfläche immer zäh an. Auch eine Erhöhung der Serverkapazitäten löst das Problem meist nicht.
Mit AngularJS steht ein solides Framework zur Entwicklung moderner Webanwendungen bereit. Die Oberfläche wird mit HTML und CSS beschrieben, die Logik aber in JavaScript umgesetzt. Dabei hält der Client selbst den Zustand vor, so dass man auf zustandslose Schnittstellen wie REST und im JEE-Kontext JAX-RS nutzen kann. Als Basis für hybride Apps auf verschiedenen Plattformen erhält man damit ein solides Fundament, um komplexe Anwendungen für Smartphones und Tablets zu entwickeln. Native Apps erfordern Versionen für jeden Gerätetyp. Die Entwicklung der App für jede einzelne Plattform entfällt dabei, wobei hybride Apps gegenüber reinen Web-Apps einen Teil der Plattformfunktionalitäten mitnutzen können
Dazu gibt es in der aktuellen Ausgabe vom JavaSpektrum auch einen Artikel von mir. Die Beispiel-App nutzt ein JEE-Backend per HTTP/REST und WebSocket, um den Inhalt darzustellen:
Der Quellcode liegt auf GitHub. Das Beispiel soll zeigen, dass sich HTML5-basierte Web-Apps mit einem nativen Container gerade bei normalen Geschäftsanwendungen nicht vor nativen Apps verstecken müssen, aber auch, wo die Grenzen liegen.