EJB – ภาคกำเนิด EJB

นี่เป็นตอนแรกของบทความชุด EJB ซึ่งเดี๋ยวผมจะมาเขียนเพิ่มเติมเรื่อยๆ ครับ

ซีรีส์ EJB ตอนที่ 2

เรื่องทั้งหมดเริ่มต้นมาจาก Bean

ในปีค.ศ. 1996 สมัยที่ภาษาจาวากำลังเรียกว่าเป็นวัยรุ่น พวกเราชาว Dev ต่างก็มารุมล้อม เพราะพวกเขาเหล่านั้นได้เห็นวิธีการสร้าง Dynamic Web App ที่มีลักษณะคล้ายกับ Desktop App ด้วยการใช้ applets ต่อมาพวกเขาก็ได้เรียนรู้ว่าภาษาจาวานี้มันสามารถทำอะไรได้มากกว่าแค่การทำตัวการ์ตูนขยับได้ มันสามารถทำระบบที่มีความซับซ้อนที่ภาษาอื่นทำไม่ได้ จาวาทำให้การเขียนระบบที่มีความซับซ้อนนั้นเป็นจริงได้ด้วยการแยกออกเป็นส่วนย่อยหลายๆ ส่วน ที่เรารู้จักกันว่า Component

ในเดือนธันวาคมปีเดียวกันนี้ บริษัท Sun Microsystems (เจ้าของจาวาก่อนจะโดน Oracle ซื้อไป) ได้ออกรายละเอียด (Specification) ที่ชื่อ JavaBeans 1.00-A โดย JavaBeans เป็นการกำหนดหรือนิยามรูปแบบของ Software Component สำหรับจาวา ซึ่ง spec นี้เป็นการกำหนดนโยบายการเขียนโค้ดเพื่อให้ Java Object สามารถนำกลับมาใช้ใหม่ (Reusable) และ ง่ายต่อการนำไปประกอบเข้ากับระบบที่มีความซับซ้อนกว่า ถึงแม้ว่า JavaBeans จะตั้งใจให้เป็นเพียงการนิยามความหมายทั่วไปของวิธีการสร้าง Components ให้สามารถนำกลับมาใช้ใหม่ได้ แต่เราชาวโปรแกรมเมอร์นำหลักการนี้มาใช้กับการสร้าง User Interface Widgets ซะเป็นส่วนใหญ่ (ถ้านึกภาพไม่ออก ให้นึกถึงเวลาเปิด NetBeans แล้วสร้าง Project ที่เป็น Swing ตอน Design หน้าจอเวลาคลิกที่พวก Widgets จะมี Properties ต่างๆ ให้เลือก สิ่งที่ใช้เก็บค่าพวกนี้คือ JavaBeans) เหมือนกับว่า JavaBeans จะง่ายมากในการทำระบบบางอย่าง แต่ว่าชาวโปรแกรมเมอร์สาย Enterprise ต้องการมากกว่านั้น

โปรแกรมระดับ Enterprise บ่อยครั้งมากที่จำเป็นต้องใช้ Services เช่น Transaction, Security และ Distributed Computing ซึ่ง Service เหล่านี้ไม่ได้เตรียมไว้ให้ใน spec ของ JavaBeans โดยตรง ด้วยเหตุนี้ในปี 1998 บริษัท Sun จึงได้ออก Enterprise JavaBeans (EJB) specification ซึ่ง spec นี้เป็นการขยายความ Java Components ไปถึงระดับ Server side และได้เตรียม service ที่จำเป็นสำหรับงาน enterprise ไว้เยอะมาก แต่ทว่ากลับล้มเหลวในเรื่องของการรักษาความเรียบง่ายตาม spec ของ JavaBeans ต้นฉบับ ยกเว้นแค่ชื่อที่ยังคงคล้ายกับต้นฉบับ

ที่จริงแล้ว มีระบบหลายตัวที่ประสบความสำเร็จถูกสร้างบน EJB เพียงแต่ EJB ไม่ประสบผลสำเร็จตามเป้าหมายที่ตั้งไว้ นั่นก็คือความง่ายในการพัฒนาระบบในระดับ Enterprise ถึงแม้ว่า EJB จะเตรียมหลายๆ อย่างที่จำเป็นในการพัฒนาไว้ให้แล้วก็ตาม แต่ด้วยความซับซ้อนของ Deployment Descriptor และต้องเขียนโค้ดลงระดับลึก (home และ remote/local interfaces) จนสุดท้ายพี่น้องนักพัฒนาโปรแกรมก็พากันหมดความสนใจใน EJB เพื่อหาทางที่ง่ายกว่าในการพัฒนาระบบระดับ Enterprise หนึ่งในทางเลือกนั่นก็คือ Spring Framework ที่สร้างโดยคุณ Rod Johnson ที่พยายามใช้ JavaBeans ธรรมดาๆ ให้บรรลุเป้าหมายที่ EJB ต้องการ และยังสามารถใช้กับ Java Application ทั่วๆ ไปได้ด้วย ด้วยคุณสมบัติ DI (dependency injection) และ AOP (Aspect-oriented programming) ซึ่งทั้งสองเทคนิคนี้เป็นการเพิ่มความสามารถให้ JavaBeans ที่มากกว่า EJB ด้วยการปรับแต่ง plain-old Java objects (POJOs) ด้วย declarative programming model ให้เหมือนกับ EJB แต่ไม่ยุ่งยากเท่า ทำให้โปรแกรมมีความง่ายในการพัฒนา เขียนทดสอบโปรแกรมได้ และช่วยในเรื่อง loose coupling

มาถึงปัจจุบันใน EJB 3 Specifications ได้นำเอาหลักการ DI และ AOP มาใช้ และได้ทำการแก้ปัญหา EJB ที่มีความซับซ้อนให้ง่ายต่อการพัฒนาแล้ว ซึ่งเป็นเรื่องน่ายินดีมาก แต่ทว่าสายไปแล้ว บรรดา Framework อื่นๆ ที่ใช้ POJO เป็นพื้นฐานในการพัฒนานั้น กลายเป็นมาตรฐาน de factor ในการพัฒนาระบบแล้ว

2 thoughts on “EJB – ภาคกำเนิด EJB

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s