Java egy kicsit bonyolultabb. :) Biztos van, aki ezt nálam jobban tudja, de nagyjából a következő történik. Először becsomagolod a lefordított osztályaidat egyetlen war fileba (opcionálisan mehet bele a static content is). Amikor kideployolod, ez a war file betöltődik és a megfelelő módon felkonfigurálódik. Ezután az új kérések kiszolgálásához szükséges kód már ebből a war fileból kerül betöltésre. A még futó kérések a korábbi war fileból érkező osztályok által vannak kiszolgálva, a trükk pedig az, hogy nincs névütközés. Méghozzá azért nem, mert javaban futásidőben az osztályt a kanonikus neve és a classloadere együtt azonosítja, deploykor pedig egy új classloader tölti be a war tartalmát. Miután a régi kérések befejeződnek, a régi osztályokra már nincs szükség, a gc ki tudja takarítani a régi osztályokat a classloaderrel együtt.