ฉันเริ่มมองหา Enterprise Java และหนังสือที่ฉันกำลังกล่าวถึงว่าจะใช้ JBoss Netbeans มาพร้อมกับ Glassfish ฉันเคยใช้ Tomcat มาแล้ว
โปรแกรมทั้งสามนี้มีความแตกต่างกันอย่างไร?
ฉันเริ่มมองหา Enterprise Java และหนังสือที่ฉันกำลังกล่าวถึงว่าจะใช้ JBoss Netbeans มาพร้อมกับ Glassfish ฉันเคยใช้ Tomcat มาแล้ว
โปรแกรมทั้งสามนี้มีความแตกต่างกันอย่างไร?
คำตอบ:
Tomcat เป็นเพียงภาชนะบรรจุ servlet กล่าวคือจะใช้เฉพาะข้อมูลจำเพาะ servlet และ JSP Glassfish และ JBoss เป็นเซิร์ฟเวอร์ Java EE เต็มรูปแบบ (รวมถึงสิ่งต่างๆเช่น EJB, JMS, ... ) โดย Glassfish เป็นการนำการอ้างอิงของ Java EE 6 สแต็คล่าสุดมาใช้ แต่ JBoss ในปี 2010 ยังไม่สนับสนุนอย่างเต็มที่
Tomcat เป็นเพียงเซิร์ฟเวอร์ HTTP และคอนเทนเนอร์ servlet Java JBoss และ GlassFish เป็นแอปพลิเคชั่นเซิร์ฟเวอร์ Java EE ที่มีคุณสมบัติครบถ้วนรวมถึงคอนเทนเนอร์ EJB และคุณสมบัติอื่น ๆ ทั้งหมดของสแต็กนั้น ในทางกลับกัน Tomcat มีหน่วยความจำที่เบากว่า (~ 60-70 MB) ในขณะที่เซิร์ฟเวอร์ Java EE นั้นมีน้ำหนักหลายร้อยเมกะไบต์ Tomcat เป็นที่นิยมอย่างมากสำหรับเว็บแอพพลิเคชั่นหรือแอพพลิเคชั่นที่ใช้เฟรมเวิร์กเช่น Spring ที่ไม่ต้องการเซิร์ฟเวอร์ Java EE เต็มรูปแบบ การจัดการเซิร์ฟเวอร์ Tomcat นั้นง่ายขึ้นเนื่องจากมีชิ้นส่วนเคลื่อนไหวน้อยลง
อย่างไรก็ตามสำหรับแอปพลิเคชั่นที่ต้องการจาวาสแต็คแบบเต็ม EE (หรืออย่างน้อยชิ้นที่สามารถติดตั้งกับ Tomcat ได้อย่างง่ายดาย) ... JBoss และ GlassFish เป็นโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสองตัว (อย่างที่สามคือ Apache Geronimo ซึ่งเวอร์ชันฟรีของ IBM WebSphere ถูกสร้างขึ้น) JBoss มีชุมชนผู้ใช้ที่ใหญ่และลึกกว่าและมี codebase ที่เป็นผู้ใหญ่มากกว่า อย่างไรก็ตาม JBoss ล่าช้าหลัง GlassFish อย่างมากในการนำ Java EE specs ไปใช้ นอกจากนี้สำหรับผู้ที่ชื่นชอบระบบการดูแลระบบด้วย GUI ... คอนโซลผู้ดูแลระบบของ GlassFish นั้นลื่นไหลสุดขีดในขณะที่การดูแลระบบส่วนใหญ่ใน JBoss นั้นทำด้วยบรรทัดคำสั่งและโปรแกรมแก้ไขข้อความ GlassFish มาโดยตรงจาก Sun / Oracle พร้อมข้อดีทั้งหมดที่สามารถเสนอได้ JBoss ไม่ได้อยู่ภายใต้การควบคุมของ Sun / Oracle ด้วยข้อดีทั้งหมดที่สามารถเสนอได้
คุณควรใช้GlassFish สำหรับการใช้งานขององค์กร บางสิ่งที่ควรพิจารณา:
Web Serverหมายถึง: การร้องขอจัดการ HTTP (มักจะมาจากเบราว์เซอร์)
Servlet คอนเทนเนอร์ (เช่นTomcat ) หมายถึง: มันสามารถจัดการ Servlets และ JSP
Application Server (เช่นGlassFish ) หมายถึง: * มันสามารถจัดการการใช้งาน Java EE (ปกติทั้ง servlet / JSP และ EJBs)
Tomcat - ดำเนินการโดยชุมชน Apache - โอเพ่นซอร์สและมีสองรสชาติ:
ไม่มีการสนับสนุนเชิงพาณิชย์ (เฉพาะการสนับสนุนชุมชน)
JBoss - เรียกใช้โดย RedHat นี่เป็นการรองรับแบบเต็มสแต็กสำหรับ JavaEE และเป็นคอนเทนเนอร์ Java EE ที่ได้รับการรับรอง ซึ่งรวมถึง Tomcat เป็นเว็บคอนเทนเนอร์ภายใน นี่ก็มีสองรสชาติ:
Glassfish - ดำเนินการโดย Oracle นี่เป็นคอนเทนเนอร์ Java EE ที่ผ่านการรับรองเต็มรูปแบบ นี่คือเว็บคอนเทนเนอร์ของตัวเอง (ไม่ใช่ Tomcat) สิ่งนี้มาจาก Oracle เองดังนั้นข้อมูลจำเพาะใหม่ทั้งหมดจะถูกทดสอบและนำไปใช้กับ Glassfish ก่อน ดังนั้นจะสนับสนุนข้อมูลจำเพาะล่าสุดเสมอ ฉันไม่ทราบรุ่นการสนับสนุน
jboss และ glassfish รวมถึง servlet container (เช่น tomcat) แต่ทั้งสองแอ็พพลิเคชันเซิร์ฟเวอร์ (jboss และ glassfish) ยังมีที่เก็บถั่ว (และสิ่งอื่น ๆ ที่ฉันจินตนาการ)
JBoss และ Glassfish นั้นเต็มไปด้วย Java EE Application Server ในขณะที่ Tomcat เป็นเพียง Servlet container ความแตกต่างที่สำคัญระหว่าง JBoss, Glassfish แต่ยังเป็น WebSphere, WebLogic และอื่น ๆ ที่เกี่ยวกับ Tomcat แต่ยังเป็น Jetty ก็คือการทำงานที่เซิร์ฟเวอร์แอปเต็มรูปแบบเสนอให้ เมื่อคุณมีเซิร์ฟเวอร์แอปพลิเคชัน Java EE แบบเต็มคุณจะได้รับประโยชน์จากการดำเนินการทั้งหมดของผู้ขายที่คุณเลือกและคุณสามารถได้รับประโยชน์จาก EJB, JTA, CDI (JAVA EE 6+), JPA, JSF, JSP / Servlet แน่นอน และอื่น ๆ ด้วย Tomcat ในทางกลับกันคุณจะได้รับประโยชน์จาก JSP / Servlet เท่านั้น อย่างไรก็ตามทุกวันนี้ด้วย Framework ขั้นสูงเช่น Spring และ Guice ข้อดีหลัก ๆ หลายประการของการใช้เซิร์ฟเวอร์แอปพลิเคชันแบบเต็มสามารถลดลงได้
ดูเหมือนว่าคุณไม่ควรใช้ Tomcat เมื่อคุณอ่านคำตอบเหล่านี้ อย่างไรก็ตามสิ่งที่ไม่สามารถพูดถึงได้มากที่สุดคือคุณสามารถใช้กรณีการใช้ Tomcat ที่เหมือนกันหรือเกือบจะเหมือนกัน แต่สิ่งนั้นต้องการให้คุณเพิ่มไลบรารี่ที่ต้องการ (ผ่าน Maven หรือระบบอื่น ๆ ที่คุณใช้)
ฉันใช้ Tomcat กับ JPA, EJBs ด้วยความพยายามกำหนดค่าที่น้อยมาก
ทั้ง JBoss และ Tomcat เป็นเซิร์ฟเวอร์แอพพลิเคชัน Java servlet แต่ JBoss นั้นมีมากมายมากกว่า ความแตกต่างที่สำคัญระหว่างสองคือ JBoss มีสแต็ก Java Enterprise Edition (Java EE) เต็มรูปแบบรวมถึง Enterprise JavaBeans และเทคโนโลยีอื่น ๆ อีกมากมายที่เป็นประโยชน์สำหรับนักพัฒนาที่ทำงานกับแอปพลิเคชัน Java ขององค์กร
Tomcat มีจำนวน จำกัด มากขึ้น วิธีคิดอย่างหนึ่งก็คือ JBoss คือ Java EE stack ที่มี servlet container และเว็บเซิร์ฟเวอร์ส่วน Tomcat ส่วนใหญ่เป็น servlet container และเว็บเซิร์ฟเวอร์
Apache tomcat เป็นเพียง serverlet container เท่านั้นที่ไม่รองรับ Enterprise Java application (JEE) JBoss และ Glassfish สนับสนุนแอปพลิเคชัน JEE แต่ Glassfish หนักกว่าเซิร์ฟเวอร์ JBOSS มาก: Slide อ้างอิง