Recently, I’ve gone to Java Day Kharkiv (this is a website for it.) It was a big event for Kharkiv, actually; it’s been happening there for the first time, though it is not the first (or last) Java Day in Ukraine.
What is the take out?
Well from my point of view, it was a new (for me) name – Baruh Sadogursky. He was presenting several talks, and he could always keep the audience’s attention. I think it would be worth while to watch the talks I didn’t attend on YouTube – for example, this one: Spring Puzzlers.
There was another really interesting talk called From REST to Hypermedia APIs with Spring by Vladimir Tsukur. I can’t find it on YouTube but the idea is really interesting and I think I want to investigate it further. Hypermedia, or HATEOAS, is described by Wikipedia in the following terms:
HATEOAS, an abbreviation for Hypermedia as the Engine of Application State, is a constraint of the REST application architecture that distinguishes it from most other network application architectures. The principle is that a client interacts with a network application entirely through hypermedia provided dynamically by application servers. A REST client needs no prior knowledge about how to interact with any particular application or server beyond a generic understanding of hypermedia. By contrast, in some service-oriented architectures(SOA), clients and servers interact through a fixed interface shared through documentation or an interface description language (IDL).
What this means in layman’s terms is that when we return the data object, it has some metadata about the actions that are available for that exact object instance, with actual absolute links that will provide that functionality. So, the client application doesn’t have to check the object state to allow or disallow some action, but can instead use the provided links to perform available actions.
This of course doesn’t mean that the client application can avoid any knowledge about the server-side methods. It will still have to know the type of request for each of them and the data that they accept; however, a lot of logic can still be incapsulated in the back-end side, thus stripping the client of it.
So. New things to learn! Exciting! =)