Java EE คืออะไร


162

ฉันทำ Java SE มาหลายปีแล้วและย้ายไปที่ Java EE อย่างไรก็ตามฉันมีปัญหาในการทำความเข้าใจกับบางแง่มุมของ Java EE

  1. Java EE เป็นเพียงข้อกำหนดหรือไม่? สิ่งที่ฉันหมายถึงคือ: EJB Java EE หรือไม่

  2. EJB / Spring มีการใช้งานที่แตกต่างกันของ Java EE หรือไม่?

ฉันขอโทษที่ถาม แต่ฉันมีปัญหาบางอย่างที่จะเข้าใจว่า Java EE คืออะไร

ใครช่วยอธิบาย Java EE ได้บ้าง และ EJB?



2
คุณควรตัดคำถามนี้ออกเป็นสองคำถาม แต่คำถามหนึ่งซ้ำซ้อนคำถามอื่นที่ฉันคิดว่าไม่ได้รับคำตอบในลิงค์นั้น
Kheldar

2
จริงๆแล้วคุณอ่านแท็ก [java-ee] แท็กหรือไม่
Paŭlo Ebermann


คำตอบ:


187

Java EE เป็นเพียงข้อกำหนดหรือไม่? สิ่งที่ฉันหมายถึงคือ: EJB Java EE หรือไม่

Java EE เป็นข้อกำหนดที่เป็นนามธรรม ทุกคนเปิดให้มีการพัฒนาและให้การดำเนินการตามข้อกำหนด คอนกรีตการใช้งานเป็นสิ่งที่เรียกว่าแอพพลิเคชันเซิร์ฟเวอร์เช่นWildFly , TomEE , GlassFish , เสรีภาพ , WebLogicฯลฯ นอกจากนี้ยังมีตู้คอนเทนเนอร์เซิร์ฟเล็ตซึ่งใช้เฉพาะส่วน JSP / Servlet ของขนาดใหญ่ Java EE API เช่นTomcat , ท่าเทียบเรือ , เป็นต้น

เราพัฒนา Java EE ควรเขียนโค้ดที่ใช้สเปค (เช่นนำเข้าเพียง javax.*ชั้นเรียนในรหัสของเราแทนการเรียนเฉพาะการดำเนินการเช่นorg.jboss.wildfly.*, com.sun.glassfish.*ฯลฯ ) และจากนั้นเราจะสามารถเรียกใช้รหัสของเราในการดำเนินการใด ๆ (ดังนั้นที่ใด ๆ เซิร์ฟเวอร์แอปพลิเคชัน) หากคุณคุ้นเคยกับ JDBC โดยพื้นฐานแล้วมันเป็นแนวคิดเดียวกันกับการทำงานของไดรเวอร์ JDBC ดูเพิ่มเติม ao ในแง่ง่ายที่สุดโรงงานคืออะไร

การดาวน์โหลด Java EE SDKจาก Oracle.com ประกอบด้วยเซิร์ฟเวอร์ GlassFish พร้อมเอกสารและตัวอย่างมากมายรวมถึง NetBeans IDE คุณไม่จำเป็นต้องใช้ถ้าคุณต้องการเซิร์ฟเวอร์และ / หรือ IDE อื่น

EJB เป็นส่วนหนึ่งของข้อกำหนดคุณสมบัติ Java EE ดูมันใน Java EE API แอ็พพลิเคชันเซิร์ฟเวอร์ Java EE ที่ได้รับการสนับสนุนอย่างเต็มรูปแบบนั้นรองรับได้ แต่คอนเทนเนอร์ JSP / Servlet ง่ายๆไม่ได้ทำ

ดูสิ่งนี้ด้วย:


EJB / Spring มีการใช้งานที่แตกต่างกันของ Java EE หรือไม่?

ไม่ดังที่กล่าวไว้ EJB เป็นส่วนหนึ่งของ Java EE Spring เป็นเฟรมเวิร์กแบบสแตนด์อโลนซึ่งทดแทนและปรับปรุงหลายส่วนของ Java EE Spring ไม่จำเป็นต้องเรียกใช้ Java EE ภาชนะ servlet กระดูกเปลือยเช่น Tomcat มีอยู่แล้วเพียงพอ พูดง่ายๆคือ Spring เป็นคู่แข่งของ Java EE เช่น "Spring" (สแตนด์อโลน) แข่งขัน EJB / JTA, Spring MVC แข่งขัน JSF / JAX-RS, Spring DI / IoC / AOP แข่งขัน CDI, Spring Security แข่งขัน JAAS / JASPIC เป็นต้น

ย้อนกลับไปในช่วงอายุ J2EE / EJB2 ครั้งแรก EJB2 API นั้นแย่มากในการติดตั้งและบำรุงรักษา ฤดูใบไม้ผลินั้นเป็นทางเลือกที่ดีกว่าสำหรับ EJB2 แต่เนื่องจาก EJB3 (Java EE 5) EJB API ได้รับการปรับปรุงให้ดีขึ้นมากจากบทเรียนที่เรียนรู้จาก Spring ตั้งแต่ CDI (Java EE 6) จึงไม่มีเหตุผลที่จะพิจารณากรอบงานอีกอย่างเช่น Spring เพื่อให้นักพัฒนาง่ายขึ้นเช่นการพัฒนาเลเยอร์บริการ

เฉพาะเมื่อคุณใช้คอนเทนเนอร์ servlet แบบเปลือยเช่น Tomcat และไม่สามารถไปยังเซิร์ฟเวอร์ Java EE ได้ดังนั้น Spring จึงน่าสนใจยิ่งขึ้นเนื่องจากติดตั้ง Spring บน Tomcat ได้ง่ายขึ้น มันเป็นไปไม่ได้ที่จะติดตั้งเช่นที่เก็บ EJB บน Tomcat โดยไม่ต้องแก้ไขเซิร์ฟเวอร์เองโดยทั่วไปคุณจะต้องประดิษฐ์ TomEE ใหม่

ดูสิ่งนี้ด้วย:


2
ดังนั้น Java EE อาจกล่าวได้ว่าเป็นการกำหนดว่าควรมีการสนับสนุนอะไรบ้างสำหรับแอปพลิเคชัน JEE ทั่วไปให้เรียกใช้
James P.

4
@James: ใช่ ทุกสิ่งที่สวยใน Java EE API นั้นเป็นนามธรรม Java SE API มีส่วนนามธรรมมากมายเช่น JDBC, JAXP, JAXB และอื่น ๆ
BalusC

3
"ไม่มีเหตุผลจริงๆที่จะมองอีกกรอบอื่นเช่นฤดูใบไม้ผลิเพื่อให้นักพัฒนาง่ายขึ้น" -> ข้อมูลที่มีค่าอย่างแท้จริง
jacktrades

@BalusC: สวัสดีเป็นลิงก์ Sun Java EE อย่างเป็นทางการหรือไม่ ... หากคุณให้ลิงก์คล้ายกับลิงก์นั้นจะมีประโยชน์สำหรับใครบางคน
อับดุลเราะห์มา

หากต้องการเรียกใช้ Spring framework ที่สมบูรณ์ Servlet container ก็เพียงพอแล้ว Servlet container คือ [เว็บเซิร์ฟเวอร์ + เว็บคอนเทนเนอร์ (ใช้ servlet api)] ซึ่งการใช้งาน Java EE นั้นคุณต้องมีเซิร์ฟเวอร์แอพพลิเคชั่นเช่น Glassfish ภาชนะ servlet จะไม่พอเพียง Servlet container เป็นส่วนหนึ่งของแอพพลิเคชันเซิร์ฟเวอร์ ฉันจะเข้าใจสิ่งนี้ได้อย่างไร
แลกเปลี่ยน

11

Java Enterprise Edition (Java EE) เป็นข้อมูลจำเพาะของร่มที่อ้างอิงหมายเลขข้อกำหนดรายละเอียดเพิ่มเติมอื่น ๆ ซึ่ง Enterprise JavaBeans (EJB) เป็นหนึ่งในคุณสมบัติที่สำคัญกว่า

อ่านสิ่งนี้ - อธิบายความแตกต่างระหว่าง Java EE และ Spring

ขอบคุณ ...


4
  • แหล่งที่มา - แพลตฟอร์ม Java 2, Enterprise Edition (J2EE) กำหนดมาตรฐานสำหรับการพัฒนาแอพพลิเคชั่นระดับองค์กรแบบหลายเทียร์ J2EE ช่วยลดความยุ่งยากในการสร้างแอปพลิเคชันระดับองค์กรที่สามารถพกพาปรับขนาดได้และรวมเข้ากับแอปพลิเคชันและข้อมูลดั้งเดิมได้อย่างง่ายดาย

  • แหล่งที่มา - เทคโนโลยี Enterprise JavaBeans (EJB) เป็นสถาปัตยกรรมส่วนประกอบฝั่งเซิร์ฟเวอร์สำหรับแพลตฟอร์ม Java, Enterprise Edition (Java EE) เทคโนโลยี EJB ช่วยให้การพัฒนาแอพพลิเคชั่นกระจายทำธุรกรรมปลอดภัยและพกพาได้อย่างรวดเร็วและง่ายดายบนพื้นฐานของเทคโนโลยี Java

  • Java EE เป็นเพียงข้อกำหนดหรือไม่? สิ่งที่ฉันหมายถึงคือ: EJB Java EE หรือไม่

    • Java EE เป็นสเปค

    • EJB เป็นสถาปัตยกรรมส่วนประกอบฝั่งเซิร์ฟเวอร์สำหรับ Java EE

  • EJB / Spring มีการใช้งานที่แตกต่างกันของ Java EE หรือไม่?

    • ทั้ง EJB และ Spring เป็นเฟรมเวิร์กที่ต่างกันหลังจาก Java EE

6
อาจไม่มีประโยชน์มากที่จะอ้างข้อความโบราณ (2005) จากข้อกำหนดรุ่นเก่า (J2EE) OP ขอเฉพาะ Java EE ซึ่งเป็นชาติที่ทันสมัยของ J2EE
Arjan Tijms

-5

เพื่อให้ง่าย - JavaEE เป็นแพลตฟอร์ม

มันประกอบด้วยข้อมูลจำเพาะมากมายซึ่งเป็นเพียง API การใช้งานที่เป็นรูปธรรมเฉพาะของ API เหล่านี้เรียกว่า 'การใช้งานอ้างอิง'

  1. EJB เป็นเพียงหนึ่งข้อกำหนดในแพลตฟอร์ม JavaEE
  2. ไม่สปริงเป็นเฟรมเวิร์กแอปพลิเคชันที่สามารถให้คุณ / มีการสนับสนุนสำหรับคุณในการพัฒนาแอปพลิเคชัน JavaEE

EJB เป็น Enterprise Java Beans


4
คำตอบนี้ไม่ได้เพิ่มอะไรเลยกับคำตอบก่อนหน้า ยิ่งไปกว่านั้นมันไม่ถูกต้อง: มีเพียงการใช้รูปธรรมเดียวเท่านั้นคือการอ้างอิง ผู้เยาว์หนึ่ง: Spring ผสานรวมกับ JavaEE แต่สามารถทำงานได้หากไม่มีปัญหา
Tair

@tair ใช่การใช้งานที่เป็นรูปธรรมเพียง 1 รายการถือเป็น 'การอ้างอิง' สำหรับ JPA มีการใช้งานมากมาย แต่ EclipseLink เป็น RI เท่านั้น เมื่อฉันพูดถึง RI ฉันมีความหมายใน API ที่แตกต่างกัน ฉันคิดว่าคุณเข้าใจผิดคำตอบของฉันข้างต้น นอกจากนี้ใช่แล้ว Spring ยังทำงานร่วมกับ JavaEE ซึ่งเป็นสิ่งที่ฉันกล่าวถึงข้างต้น
ซอฟต์แวร์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.