Gavin King [1] บิดาแห่ง Hibernate แนะนำให้นักพัฒนาอัพเกรดเป็นแพลตฟอร์ม Java EE 6 และชี้ให้เห็นว่าการไม่เต็มใจที่จะอัพเกรดในปัจจุบันไม่มีมูลความจริง
หลังจากการเปิดตัว Java EE 6 ฉันพบว่ามีการต่อต้านอย่างมากในการอัปเกรดเป็นแพลตฟอร์มใหม่ การคัดค้านเหล่านี้ส่วนใหญ่เกิดขึ้นจากผู้ใช้ Tomcat / Jetty และเฟรมเวิร์กโอเพ่นซอร์สบางตัว (เช่น Hibernate และ Spring)
แน่นอนว่าการเลือกเทคโนโลยีโอเพ่นซอร์สที่ไม่ได้มาตรฐานมีประโยชน์มากมาย นอกจากนี้ ใน EE 6 คุณสามารถใช้เฟรมเวิร์กโอเพ่นซอร์สที่คุณสนใจได้ Servlet 3 และ CDI สามารถรวมเฟรมเวิร์กของบุคคลที่สามได้อย่างราบรื่น ดังนั้นจึงไม่มีเหตุผลที่จะไม่ใช้ EE 6 แต่ฉันยังเห็นใครบางคนพูดว่า:
การอัพเกรดเป็น EE Application Server เป็นเรื่องยาก
ดูเหมือนว่าจะเป็นปัญหาทางการเมืองสำหรับองค์กรใดองค์กรหนึ่งมากกว่าปัญหาทางเทคนิคที่เกิดขึ้นจริง แน่นอนว่าการอัพเกรดเซิร์ฟเวอร์เช่น GlassFish หรือ JBoss นั้นเป็นงานที่ไม่สำคัญมาก (การอัพเกรดเฟรมเวิร์กของบุคคลที่สามนั้นเจ็บปวดยิ่งกว่าเดิม) บางองค์กรมีกระบวนการที่มีน้ำหนักมากในการอัปเกรดเซิร์ฟเวอร์ แต่ก็ไม่มากนักสำหรับการอัพเกรดเฟรมเวิร์กที่ทำงานภายในเซิร์ฟเวอร์ ดังนั้นจึงเป็นเรื่องง่ายสำหรับทีมพัฒนาที่จะอัพเกรดเฟรมเวิร์กของบุคคลที่สาม
ฉันคิดว่าการพัฒนากระบวนการที่น่าเชื่อถือและดีขึ้นเป็นสิ่งสำคัญที่สุด แทนที่จะละทิ้ง Java EE มีความเสี่ยงมากมายที่เกี่ยวข้องกับการรันแอปพลิเคชันของคุณบนแพลตฟอร์มเซิร์ฟเวอร์เก่าและล้าสมัย และกระบวนการดังกล่าวไม่ควรสนับสนุนแนวทางปฏิบัติดังกล่าว
แต่จากมุมมองเชิงปฏิบัติ เกือบทุกคนกำลังวางแผนที่จะอัพเกรดเป็น Servlet 3 ในอนาคตอันใกล้นี้ ไม่ว่าคุณจะใช้ Tomcat, Jetty, JBoss, GlassFish, Resin, WebLogic, Oracle หรือ WebSphere นั่นหมายถึงการอัพเกรดเซิร์ฟเวอร์ นี่เป็นโอกาสที่ดีในการอัพเกรดเป็น EE 6 Web Profile ช่วงเวลาทอง
แอปพลิเคชันเซิร์ฟเวอร์ EE ใหญ่เกินไป
ข้อโต้แย้งคือ EE Server มีคุณสมบัติมากมายที่ไม่สามารถใช้งานได้ (ในปัจจุบัน) ข้อโต้แย้งของฝ่ายตรงข้ามมักจะเกี่ยวข้องกับการหารือเกี่ยวกับขนาดของแพ็คเกจ jar และพื้นที่ดิสก์ที่ถูกครอบครองโดย Servlet engine + เฟรมเวิร์กบุคคลที่สาม และแอปพลิเคชันเซิร์ฟเวอร์ EE ที่จริงแล้ว ข้อโต้แย้งนี้เป็นปัญหา:
การใช้ดิสก์และพื้นที่ดิสก์ที่กล่าวถึงนั้นเล็กน้อยจริงๆ เมื่อวัดเป็น $ และแพ็คเกจสงครามแอปพลิเคชันมีความสำคัญมากกว่าขนาดของแพ็คเกจการติดตั้งเซิร์ฟเวอร์ จริงๆ แล้วเซิร์ฟเวอร์มีฟังก์ชันมากมายเพื่อลดขนาดของสงคราม
นอกจากนี้ฉันคิดว่าสิ่งที่น่าเชื่อที่สุดคือ Java EE 6 Web Profile นั้นไม่ได้ใหญ่มากนัก เมื่อเซิร์ฟเวอร์โปรไฟล์เว็บที่ผ่านการรับรองออกสู่ตลาดแล้ว เราจะพบความสมดุลระหว่างเซิร์ฟเวอร์แอปพลิเคชัน EE ขนาดใหญ่และคอนเทนเนอร์ Servlet ขนาดเล็ก
J2EE และ EJB2 แย่!
ด้วยกระบวนการมาตรฐานของ JCP ปัญหานี้ไม่มีอยู่จริงอีกต่อไป:
1. เป็นเวลา 8 ปีแล้วที่ EJB2 ปรากฏตัว! มันยังคงเป็นทางเลือกที่ดีที่สุดของคุณหรือไม่?
2. ข้อมูลจำเพาะที่ดีได้รับการผสานเข้าด้วยกันผ่านมาตรฐาน JCP อย่างต่อเนื่อง และบางส่วนสามารถใช้งานได้อย่างมั่นใจ อย่างไรก็ตาม JCP ไม่ประสบความสำเร็จ 100% ในการสร้างมาตรฐาน
3. ทุกคนที่ทำงานบนแพลตฟอร์ม EE 6 เกลียด EJB2 และ J2EE นั่นเป็นเหตุผลว่าทำไมผู้คนถึงเข้าร่วม JCP อย่างต่อเนื่องเพื่อช่วยแก้ไขปัญหาเหล่านี้ ตัวอย่างเช่น ผู้ก่อตั้ง Hibernate และผู้เขียนบทความนี้ คุณอยากจะสอนบทเรียนเกี่ยวกับ EJB2 ให้เขาจริงๆ หรือไม่? -
4. ตอนนี้คนที่ทำงานกับ Entity Beans เกือบทั้งหมดเกษียณแล้ว!
ในความเป็นจริง Java EE 6 Web Profile ก็เพียงพอแล้ว หากคุณไม่ได้ลองใช้ Java EE 6 ด้วยตัวเอง คุณจะไม่รู้สึกถึงประโยชน์ของ EE6 สำหรับการพัฒนาเลย
การพกพาแอปพลิเคชันเซิร์ฟเวอร์เป็นเรื่องลึกลับ!
จริงหรือ เราเห็นคนจำนวนมากแยกแอปพลิเคชันของตนและปรับใช้บนแอปพลิเคชันเซิร์ฟเวอร์ที่แตกต่างกัน โอ้ ฉันเคยเห็นมาแล้วว่าหมายถึงแอปพลิเคชันที่ไร้ที่ติ 100% การเปลี่ยนพอร์ต 0 ครั้ง ซึ่งเป็นอุดมคติของการพกพาแบบ Platonic ฉันเข้าใจจุดอ่อนของความจริงสัมบูรณ์และอุดมคติแบบสงบ แต่ลองดูตัวอย่างก่อน
ต่อไปนี้เป็นมุมมองทั่วไปของปัญหาการพกพา:
9% ของโค้ด, 85% ของข้อมูลเมตาภายนอกเข้ากันได้อย่างสมบูรณ์บนแพลตฟอร์มเซิร์ฟเวอร์ที่แตกต่างกัน และส่วนที่เหลือ 1% และ 15% สามารถแบ่งได้อย่างเหมาะสม
รหัส 0%, ข้อมูลเมตาภายนอก 80% เชื่อมโยงกับสถาปัตยกรรมคอนเทนเนอร์ของผู้จำหน่ายรายเดียวที่ไม่ได้มาตรฐาน
ในขณะที่ฉันกำลังแบ่งประเด็นเหล่านี้ ฉันก็อยากจะเปลี่ยนหัวข้อของส่วนนี้จากความสะดวกในการพกพาของแอปพลิเคชันเซิร์ฟเวอร์นั้นลึกลับเกินไป เป็น ฉันไม่สนใจเกี่ยวกับการพกพาของคอนเทนเนอร์เลย แนวคิดในการเปลี่ยนธีมเป็นการยืนยันว่าปัญหาการพกพาเซิร์ฟเวอร์นั้นมีอยู่จริง และจะเป็นประโยชน์อย่างมากสำหรับหลายๆ องค์กร
ฉันอยากเห็นบทวิจารณ์ที่แท้จริงของ EE 6 จากผู้ดูแลทางเทคนิคที่ไม่ใช่ EE 6 มาโดยตลอด ข้อโต้แย้งบางส่วนที่กล่าวถึงข้างต้นไม่ได้มาจากโลกแห่งความเป็นจริง ดังนั้นจึงเป็นเรื่องยากที่จะกระตุ้นให้เกิดการอภิปรายเกี่ยวกับปัญหาทางเทคนิคที่เกิดขึ้นจริงของการพัฒนาแอปพลิเคชันบนแพลตฟอร์ม EE ข้อกำหนด JCP รอบล่าสุดดูเหมือนจะออกจากค่ายต่อต้าน EE แล้ว (ชั่วคราว?) แต่ขาดการสนับสนุนข้อเท็จจริงเพื่อความสำเร็จ
หมายเหตุบรรณาธิการ:
[1] Gavin King: ผู้ก่อตั้ง Hibernate สมาชิกของคณะกรรมการผู้เชี่ยวชาญ EJB3 หนึ่งในสมาชิกหลักของ JBoss ผู้นำกรอบงาน Seam ผู้นำข้อกำหนด JSR-299 (CDI) และผู้แต่งหนังสือ "Hibernate in Action" .
ที่มา: คุณควรอัปเกรดเป็น Java EE 6