title: What is the difference between Spring, Struts, Hibernate, JavaServer Faces, Tapestry?
body: <p>May I know what is the difference between:-</p>
  
  <ol>
  <li>Spring</li>
  <li>Struts</li>
  <li>Struts 2</li>
  <li>Hibernate</li>
  <li>JavaServer Faces</li>
  <li>JavaServer Pages</li>
  <li>Tapestry</li>
  </ol>
  
  <p>Are these technologies/framework complementary to each other? Or they are alternatives to each other (after I use one of them, then I don't need to use the other)?</p>
  
  <p>Thanks.</p>