title: jaxrs-api VS jsr311-api VS javax.ws.rs-api VS jersey-core VS jaxrs-ri
body: <p>I have googled around quite a bit still am confused as to what each of the above exactly mean. </p>
  
  <p>Here is my understanding of it:</p>
  
  <ul>
  <li><strong>jaxrs-api</strong> : contains only api. No implementation. But how is it different from JSR311</li>
  <li><strong>jsr311-api</strong> : JSR311 it is a specification request. Which means it is supposed to be a document. Why then is it a jar?</li>
  <li><strong>javax.ws.rs-api</strong>:  Is it an implementation?</li>
  <li><strong>jersey-core</strong>(/jersey client): Is an implementation of JSR311. </li>
  </ul>
  
  <p>I downloaded each jar and tried to decompile and see what is inside it, but I am only able to find interfaces in all of them and not the implementation.</p>
  
  <p>I am facing these questions in the context of duplicate warnings generated by maven shade plugin, and need proper understanding of the above to figure out which ones to exclude and why. </p>