เหตุใดไลบรารีจึงไม่สามารถทำงานนอกสภาพแวดล้อมแอ็พพลิเคชันเซิร์ฟเวอร์ได้
จริงๆแล้วพวกเขาทำได้ ไลบรารีส่วนใหญ่สามารถใช้งานได้โดยตรงแบบสแตนด์อโลน (ใน Java SE) หรือรวมอยู่ใน. war (ซึ่งแทบจะเป็น Tomcat เสมอ) บางส่วนของ Java EE เช่น JPA มีส่วนที่ชัดเจนในข้อกำหนดเฉพาะที่บอกวิธีการทำงานและใช้ใน Java SE
หากมีสิ่งใดก็ไม่ใช่สภาพแวดล้อมของเซิร์ฟเวอร์แอปพลิเคชันต่อผู้ที่มีส่วนได้ส่วนเสียที่นี่ แต่มีไลบรารีอื่น ๆ ทั้งหมดและรหัสรวมที่รวมเข้าด้วยกัน
ด้วยเหตุนี้คำอธิบายประกอบจะถูกสแกนเพียงครั้งเดียวสำหรับทุกชั้นเรียนของคุณแทนที่จะเป็นทุกไลบรารี (EJB, JPA และอื่น ๆ ) ทำการสแกนซ้ำไปซ้ำมา ด้วยเหตุนี้จึงสามารถนำคำอธิบายประกอบ CDI ไปใช้กับถั่ว EJB ได้และสามารถแทรกผู้จัดการเอนทิตี JPA เข้าไป
ทำไมฉันต้องมีอะไรที่ใหญ่โตเหมือน JBoss เพื่อรวบรวมโค้ดง่ายๆเพื่อส่งอีเมล
คำถามนี้มีบางอย่างผิดปกติ:
- สำหรับการคอมไพล์คุณต้องใช้เฉพาะโถ API ซึ่งมีขนาดต่ำกว่า 1MB สำหรับโปรไฟล์เว็บและมากกว่า 1MB เล็กน้อยสำหรับโปรไฟล์แบบเต็ม
- เห็นได้ชัดว่าสำหรับการใช้งานคุณจำเป็นต้องมีการใช้งาน แต่ "จำนวนมาก" เป็นการพูดเกินจริง ตัวอย่างเช่น OpenJDK มีขนาดประมาณ 75MB และ TomEE (การใช้งานโปรไฟล์เว็บที่มีการรองรับเมล) เพียง 25MB แม้แต่ GlassFish (การใช้งานแบบ Full Profile) ก็มีขนาดเพียง 53MB
- Mail ทำงานสมบูรณ์ดีจาก Java SE (และ Tomcat) เช่นเดียวกับการใช้แบบสแตนด์อโลนmail.jar และ activation.jar
เหตุใดไลบรารี Java EE จึงไม่เป็น "มาตรฐาน" และรวมอยู่ในการดาวน์โหลด JVM ปกติและ / หรือ SDK
Java EE เป็นหนึ่งในความพยายามครั้งแรกในการแยก JDK ขนาดใหญ่ที่มีอยู่แล้วออกเป็นชิ้นส่วนที่ง่ายต่อการจัดการและดาวน์โหลด ผู้คนบ่นกันอยู่แล้วว่าคลาสกราฟิก (AWT, Swing) และ Applets อยู่ใน JRE เมื่อสิ่งที่พวกเขาทำคือเรียกใช้คำสั่งบางอย่างบนเซิร์ฟเวอร์ที่ไม่มีหัว แล้วคุณต้องการรวมไลบรารี Java EE ทั้งหมดใน JDK มาตรฐานหรือไม่?
ด้วยการเปิดตัวการสนับสนุนแบบแยกส่วนในที่สุดเราจะมี JRE พื้นฐานขนาดเล็กพร้อมด้วยหลายสิ่งที่สามารถติดตั้งแยกต่างหากเป็นแพ็คเกจ บางทีวันหนึ่งหลาย ๆ คลาสหรือแม้แต่คลาสทั้งหมดที่ประกอบเป็น Java EE ก็จะเป็นแพ็คเกจเช่นกัน เวลาจะบอกเอง.
เหตุใดจึงมีข้อเสนอ Java EE มากมายในเมื่อ Java มาตรฐานมีเพียงสองรสชาติหลัก (Oracle JVM / SDK | OpenJDK JVM / JDK)
Java SE มีมากกว่าสองรสชาติ อย่างน้อยก็มี IBM JDK ซึ่งเป็น BEA รุ่นก่อนหน้า (JRocket ซึ่งถูกรวมเข้ากับ Oracle / Sun one เนื่องจากการซื้อกิจการ) การใช้งานโอเพนซอร์สอื่น ๆ อีกมากมายและการนำไปใช้งานสำหรับการใช้งานแบบฝัง
เหตุผลที่อยู่เบื้องหลัง Java SE และ EE เป็นข้อกำหนดก็คือผู้ขายและองค์กรจำนวนมากสามารถนำไปใช้งานได้จึงกระตุ้นให้เกิดการแข่งขันและลดความเสี่ยงจากการล็อกอินของผู้ขาย
มันไม่แตกต่างจากคอมไพเลอร์ C และ C ++ ซึ่งคุณมีข้อเสนอที่แข่งขันกันมากมายและทั้งหมดก็ปฏิบัติตามมาตรฐาน C ++
เหตุใดเวอร์ชันไลบรารี Java EE จึงไม่ซิงค์กับไลบรารี Java มาตรฐาน (Java EE 6 เทียบกับ Java 7)
Java EE สร้างบน Java SE ดังนั้นจึงเดินตามหลัง เวอร์ชันจะสอดคล้องกัน Java EE 5 ต้องการ Java SE 5. Java EE 6 ต้องการ Java SE 6 เป็นต้น ส่วนใหญ่เมื่อ Java SE X เป็นปัจจุบัน Java EE X-1 จะเป็นปัจจุบัน