„For me, browsers are the new Rich Client Platforms“
JAXenter: Why do you use a combination of AngularJS, TypeScript and Spring for web applications? What’s so special about these technologies?
JAXenter: What is still/again a crucial point in the use of REST and RESTful web services?
Kai Tödter: Although most of the REST architecture constraints have prevailed, HATEOAS (Hypertext as the engine of application state) is not implemented in many APIs or is just poorly executed. REST clients can be created through hypermedia deployment and link relations on the server page -making them much less susceptible to URL structure changes of the server page. There are no official standards, but some specifications, like HAL (hypertext application language) or Siren, are a nice gain for several languages or platforms. Spring Data Rest supports HAL out of the box, which is just another reason for me to use it.
JAXenter: When do REST web applications also need HATEOAS?
Kai Tödter: To put it boldly: RESTful services with HATEOAS are quite like my favorite news aggregating sites. I always visit the same bookmarked URL and behind each news item there’s a link with worthwhile information. I don’t care if a link points to a server in the US today, and in Germany tomorrow. HATEOAS is needed if clients want their applications to do exactly that. The only URL a client needs is the root URL of APIs. Everything else is made up of links. The only anchor point is the name of the link relation, which should preferably remain unchanged while the underlying links are free to change.
JAXenter: What could make the development of web applications easier and better? What’s missing?
Kai Tödter: The IDE support for the full-stack developer is pretty good today, but could improve nonetheless. As a developer myself, I want to be able to set breakpoints in client TypeScript and server Java to really implement end-to-end debugging. It’s already possible with some IDEs, but there are just a few available. Nowadays, software developers are preoccupied with DevOps and are also interested in installation, deployment, continuous delivery and operation. Therefore I also hope for better IDE support for Docker and Cloud deployment. Some IDEs are quite innovative and deliver significant updates on a weekly basis, but others are lagging pretty far behind.