title: How to achieve backwards compatibility during Java app update?
body: <p>I ran at the problem of keeping backwards compatibility during app update. I have a client-server architecture and client sends to a server some information and in response receives up-to-date data. In the next version of the app, some new fields and methods are added. And if I use old client version some errors (like null pointers or incorrect workflow) may appear on server. I can check new features for null, but when there're 3-4 different version clients - we'll have spaghetti-code and a lot of potential hidden bugs.</p>
  
  <p>Are there any design patterns that will help to resolve this problem? How to react on different client version?</p>
  
  <p>Thank you, in advance.</p>