SuGlassFish - เทคโนโลยีต่าง ๆ ในสถาปัตยกรรม J2EE
01:59 เขียนโดย QA Optimization - Performance and Stability
เทคโนโลยีต่าง ๆ ในสถาปัตยกรรม J2EE (Java 2 Platform Enterprise Edition) เป็นสิ่งช่วยอํานวยความสะดวกในการพัฒนาแอพพลิเคชันบนฝั่งเซิร์ฟเวอร์ ซึ่งประกอบด้วยเทคโนโลยีต่าง ๆ คือ
* Enterprise JavaBean (EJB)
เป็นคอมโพเน็นต์ และมาตรฐานในการติดต่อระหว่างคอมโพเน็นต์กับตัวคอนเทนเนอร์ ซึ่งผู้พัฒนาสามารถนําคอมโพเน็นต์ต่างๆไปประยุกต์ใช้กับงานต่างๆที่เหมาะสมได้
* Remote Method Invocation (RMI)
เป็นข้อกําหนดในการติดต่อสื่อสารระหว่างออบเจ็กต์แบบกระจาย (distributed object) เช่น 2 ออบเจ็กต์ที่ทํางานอยู่คนละเครื่อง
* Java Naming and Directory Interface (JNDI)
ทําหน้าที่ระบุตําแหน่งของคอมโพเน็นต์ และทรัพยากรต่าง ๆ ในระบบเครือข่าย เพื่อหาคอมโพเน็นต์ต่างๆที่กระจายที่อยู่บนเครือข่าย
* Java Servlet และ Java Server Page (JSP)
เป็นคอมโพเน็นต์ในระบบเน็ตเวิร์ตซึ่งทํางานในรูปแบบของ request/response ซึ่งจะจัดการกับ request ที่ถูกส่งเข้ามาจากไคลเอ็นท์นั้นๆ และเมื่อทำการประมวลผลเสร็จ จึง response กลับไปยังไคลเอ็นต์นั้นๆ
* Java Database Connectivity (JDBC)
เป็นมาตรฐานของจาวาที่ใช้การเข้าถึงข้อมูล ซึ่งเราจะเขียนโค้ดในส่วนของการติดต่อกับ API ของ JDBC ซึ่งเป็นมาตรฐานการติดต่อกับฐานข้อมูลเชิงสัมพันธ์
* Java Transaction API (JTA) และ Java Transaction Service (JTS)
ใช้จัดการกับทรานแซ็กชัน JTA เป็นอินเทอร์เฟซของทรานแซ็กชันในระดับบนที่แอพพลิเคชันใช้ในการจัดการทรานแซ็กชัน JTS เป็นอินเทอร์เฟซของทรานแซ็กชันของ EJB สามารถทําทรานแซ็กชันแบบกระจายได้ภายใต้เซิร์ฟเวอร์ของผู้ผลิตต่าง ๆ กัน
* Java Messaging Service (JMS)
JMS ช่วยให้ออบเจ็กต์แบบกระจายต่างๆสามารถส่งสารแบบอะซิงโครนัส
* JavaMail
ใช้สำหรับการส่งข้อความอีเมล์
* Java IDL
เป็นการอินทิเกรตระบบเพื่อให้เข้ากับภาษาอื่น ๆ ที่ไม่ใช่ภาษาจาวา
* J2EE Connector Architecture (JCA)
เป็น Connector สำหรับการดีพลอยเมนต์สามารถที่จะเข้าถึงระบบต่างๆ (enterprise information system)
* Java Authentication and Authorization Service (JAAS)
เป็นมาตรฐานที่ใช้จัดการกับความปลอดภัยใน J2EE
* Java API for XML Parsing (JAXP)
ใช้ parse เอกสาร XML ต่างๆ
JMX หรือ Java Management Extension เป็น technology สำหรับการ management และ monitoring ค่ะ โดย จะมี conept ของ MBean ที่เราสามารถ moditor properties ของมันได้ และ สามารถเปลี่ยน properties ของมันได้ ณ ขณะ run-time ค่ะ
ยกตัวอย่าง management console ของตัว tomcat หรือ jboss ก็ได้ค่ะ เป็น JMX
JCA หรือ J2EE Connector Architecture เป็น specificaion ซึ่งระบุ standard ในการติดต่อกับ backend system (พวก legacy ต่าง ๆ) เช่นเดียวกับ JDBC ที่ provide standard ของการติดต่อกับ database ให้เรา จะเห็นว่า ไม่ว่าเราจะติดต่อกับ Database ตัวไหน เราก็ใช้ API เดียวกัน ก็คือ JDBC ตัว JCA ก็เช่นเดียวกันค่ะ แต่เปลียนจาก dababase เป็น backend system ใด ๆ
Spec ของ JCA นั้น provide มาให้แต่ interface เช่นเดียวกับ JDBC ค่ะ vendor ไหนจะเอาไป implement ยังไง ก็แล้วแต่ vendor เช่นเดียวกับ JDBC ค่ะ
CMP หรือ Container Managed Transaction เป็นความสามารถหนึ่งของ Entity Bean ที่เราสามารถระบุความสัมพันธ์ของ object กับ data ใน relational table ได้ โดยที่ data ใน database จะถูก synchronize กับ java object โดยอัตโนมัติ CMP เป็นหนึ่งในสองวิธีที่ใช้ในการ implement Entity Bean อีกวิธีหนึ่งคือ Bean Managed Persistence หรือ BMP ข้อแตกต่างระหว่าง CMP และ BMP คือ BMP เราจะต้องเขียน persistence logic เอง (SQL) แต่ CMP เราจะปล่อยให้เป็นหน้าที่ของ J2EE Container ค่ะ โดยที่เราไม่ต้องยุ่งกับ SQL เลย
คำว่า POJO นี่ ถูกตั้งขึ้นมาโดย Martin Fowler, Rebbecca Parsons และ Josh MacKenzie ครับ ความหมายของมันก็ตรงตัวน่ะแหละครับ คือ Java object ธรรมดา
ทีนี้ ทำไมต้องตั้งชื่อให้มันด้วยล่ะ?? ก็ในเมื่อมันคือ Java object ธรรมดา ..
ก็คือ ... ใครๆ ก็ไม่สนใจ Java object ธรรมดา เพราะมันไม่มีชื่อเท่ห์ๆ (อย่างพวก EJB) ... เค้าก็เลยเสนอชื่อนี้ขึ้นมา (เป็นเหตุผลที่เจ็บปวด ... แต่ก็จริง ... หลายๆ คนสนใจแต่อะไรที่มันเท่ห์ มี jargon หรูๆ)
กลับมาที่คำถามของ คุณ juacompe ต่อ
JavaBeans ผมมองว่ามันมี 2 ระดับครับ ระดับแรก คือในระดับ pattern ... class ที่จะเป็นไปตาม pattern นี้จะต้องมี getter/setter method สำหรับแต่ละ property ของตัวมันเอง .. เท่านั้นเอง (ซึ่งก็เป็นแค่ pattern ของชื่อ method ที่เป็น accessor/mutator)
ส่วนอีกระดับคือเป็น component specification ... class ที่เขียน(และ packaging) เป็นไปตาม specification นี้ จะเป็น JavaBeans component ซึ่งสามารถนำไปใช้ได้ใน container ซึ่ง support JavaBeans ... ตัวอย่างที่ชัดเจน คือ พวก GUI tool ซึ่งสามารถ drag drop UI component ได้ ... ตัว UI component เหล่านั้นก็คือ JavaBeans ซึ่งถูก manage โดยตัว container (ตัว tool นั่นแหละ) ... โดยตัว JavaBeans component ก็จะมีคุณสมบัติ ต่างจาก object ธรรมดาหลายๆ อย่าง เช่น property สามารถ persistence ได้ .. สามารถ handle event ได้ .. สามารถแสดง property ของตัวเองได้ (ส่วนใหญ่เป็นคุณสมบัติของ UI component เพราะตอนแรก JavaBeans ถูกออกแบบมาเพื่อหน้าที่หลักทางนี้)
ซึ่งตัว JavaBeans component จะต้องถูก implement ตามสิ่งที่ specification กำหนด จึงจะทำงานใน container ได้
ส่วน POJO ตามชื่อของมัน ก็คือ Java object ธรรมดา .. ที่ไม่ได้ extend class หรือ implement interface พิเศษเฉพาะของ container หรือ framework (อย่างพวก EJB หรือ Servlet class ไม่นับเป็น POJO)
แต่ ไม่ได้หมายความว่า ห้าม implement หรือ extend อะไรเลย ... class ที่ implement พวก interface พื้นฐานของ Java ก็น่าจะยังนับว่าเป็น POJO ได้ครับ (เช่น data model classs อาจจะ implement java.io.Serializable หรือ java.lang.Comparable)
ผมคิดว่า ประเด็นของ POJO อยู่ที่ dependency ครับ (ไม่มี dependency กับ container/framework specific class/interface) ... ส่วนเรื่องความซับซ้อนของตัว class ไม่น่าจะเป็นประเด็นครับ
0 ความคิดเห็น:
แสดงความคิดเห็น