วันจันทร์ที่ 15 มิถุนายน พ.ศ. 2558

ประวัติความเป็นมาของ JAVA

ประวัติความเป็นมาของ JAVA
เทคโนโลยี Java พัฒนาขึ้นมาโดยบริษัท Sun Micro System ซึ่ง Java มีหลักการทำงานเป็นแบบภาษา
เชิงวัตถุ (Object Oriented Language) ซึ่งในปัจจุบัน Java มีอยู่ 3 ประเภทใหญ่ๆคือ J2EE Java 2 Enterprise
Edition), J2SE (Java 2 Standard Edition) และ J2ME (Java 2 Micro Edition)
เริ่มแรก ทีมนักพัฒนา Java รวมตัวกันเป็นกลุ่มเล็กๆ ทำการพัฒนาโปรแกรมขนาดเล็กที่ฝังตัว (Embed)
อยู่ภายในอุปกรณ์เครื่องใช้ไฟฟ้าต่างๆ เช่น ทีวี ตู้เย็น เครื่องซักผ้า เป็นต้น สำหรับสมาชิกทีมพัฒนาผู้บุกเบิก Java
ในปี 1991 ก็จะประกอบด้วย Patrick Naughton, Mike Sheridan และ James Gosling ของบริษัท Sun Micro
System (ทำหน้าที่เป็นผู้วางกลยุทธ์ในการพัฒนาครั้งนี้) โดยตั้งชื่อกลุ่มว่า "The Green Project" ซึ่งพวกเขาได้ให้
ความสำคัญกับอุปกรณ์อิเลคทรอนิค คอมพิวเตอร์ และเครื่องใช้ไฟฟ้าทั่วไป ซึ่งจะเห็นได้ว่ามีเป้าหมายในการ
พัฒนามาเพื่อครองตลาดซอฟแวร์สำหรับผลิตภัณฑ์ที่มนุษย์นิยมใช้งานกัน
การทุ่มเทพัฒนาครั้งนี้ กลุ่ม Green Team ได้ลงทุนเก็บตัว ปลีกตัวเพื่อทำงานหามรุ่งหามค่ำห่างจากโลก
ภายนอกเป็นเวลาถึง 18 เดือน ในสำนักงานที่ Sand Hill Road (Menlo Park) จนเมื่อปี 1992 พวกเขาก็ได้ออกมา
เผยโฉมตัวอย่างการทำงานของเทคโนโลยี Java เช่น Interactive TV ที่มีโปรแกรมควบคุมอุปกรณ์กล่องสัญญาณ
(Home-entertainment set-top box) พร้อมภาพเคลื่อนไหวและการติดต่อผู้ใช้ผ่านหน้าจอแบบสัมผัส (Touch
Screen) และรีโมตคอนโทรล โดยในการเปิดตัวครั้งนี้ ก็ได้แต่งตั้งตัวนำโชค (Mascot) ที่ชื่อว่า "The Duke" เป็น
ครั้งแรกอีกด้วย
ในขณะนั้น การใช้งานเครือข่ายอินเทอร์เน็ตได้รับความนิยมอย่างสูง แต่ทว่าทีมพัฒนากลับมุ่งหวังไปที่
สินค้าอุปโภคประเภทต่างๆ อีกทั้งยังพยายามทำการตลาดเกี่ยวกับสินค้าที่สามารถนำเทคโนโลยี Java ไปใช้งาน
ได้ แต่ผิดคาด เพราะไม่มีทีท่าว่าจะมีธุรกิจสินค้าอุปโภคใดให้ความสนใจเทคโนโลยี Java เป็นพิเศษ
เมื่อเป็นเช่นนี้ ทางทีมพัฒนาจึงต้องเบนเข็มไปแนวทางอื่น เพื่อไม่ให้สิ่งที่พวกเขาทุ่มเทพัฒนามานั้นต้อง
สูญเปล่า ดังนั้นทางทีมงานจึงได้ข้อสรุปว่าจะมุ่งเน้นไปพัฒนากับการใช้งานเครือข่ายอินเทอร์เน็ตแทน เพราะจาก
กระแสความนิยมของอินเทอร์เน็ตที่เพิ่มขึ้นเรื่อยๆ อย่างมหาศาล จึงมีแนวโน้มว่า Java จะประสบความสำเร็จอย่าง
แน่นอน จะเห็นได้จากที่ Web page เป็นล้านๆ Web page ที่กระจายอยู่ทั่วเครือข่าย Internet มักจะประกอบด้วย
ข้อความ (Text), รูปภาพกราฟฟิก (Images&Graphics), ภาพเคลื่อนไหว (Animations) และอื่นๆ
และจากข้อจำกัดของเอกสารแบบ HTML ที่เป็นเอกสารแบบ Static จึงได้มีการพัฒนา Java Applet
ขึ้นมาเพื่อแทรกลงบน Web page แบบ HTML ในรูปแบบของ Applet ซึ่งทำให้สามารถทำงานตอบสนองได้
หลากหลายยิ่งขึ้น ซึ่งช่วงแรกๆ จะทำงานได้บนโปรแกรม Browser ที่มีชื่อว่า WebRunner ต่อมาก็กลายเป็น
โปรแกรม HotJava จนกระทั้งในปี 1994 เทคโนโลยี Java ก็สามารถทำให้ Web Browser นำเสนอข้อมูลแบบ
ภาพเคลื่อนไหวและเนื้อหาแบบ Dynamic ได้อย่างเต็มรูปแบบเป็นครั้งแรก
รูปแบบของ JAVA และ Platform
รูปแบบต่างๆ ของ Java (Java Platform) ถือกำเนิดบนพื้นฐานของเครือข่ายอินเทอร์เน็ต ซึ่งมีจุดเด่นคือ
โปรแกรมที่พัฒนาด้วยภาษา Java ไม่ยึดติดกับชนิดของเครื่องคอมพิวเตอร์ รวมถึงสามารถนำไปใช้กับอุปกรณ์อิ
เล็กทรอนิคประเภทต่างๆ ได้เป็นอย่างดี ส่งผลให้หลังจากปี 1995 เทคโนโลยี Java ได้รับความนิยมอย่างมาก ด้วย
การที่สามารถนำไปใช้งานได้ง่าย และมีอิสระในการทำงานสูง
โปรแกรมหรือ Applications ที่พัฒนาด้วย Java สามารถหาได้ง่ายทั่วไปบนเครือข่ายอินเตอร์เน็ต และ
สามารถนำไปใช้งานได้โดยไม่ต้องคำนึงถึงระบบปฏิบัติการ (Operating System) ของเครื่องคอมพิวเตอร์ และไม่
ว่าจะเป็นเครื่อง PC หรือเครื่อง Macintosh ก็สามารถนำ Java ไปใช้ได้อย่างไม่มีปัญหา นอกจากนั้น Java ก็ได้ถูก
พัฒนาให้มีระบบความปลอดภัยในระดับสูง เช่นหากโปรแกรม Java เกิดข้อผิดพลาด (Error) ก็จะไม่ส่งผลให้การ
ทำงานของเครื่องคอมพิวเตอร์ต้องหยุดชะงักหรือเสียหายอีกด้วย
เรื่องข้อมูลส่วนตัวที่เป็นความลับต่างๆ ก็มีความปลอดภัยสูงเช่นกัน ซึ่งจะทำให้การเชื่อมต่อเข้า
อินเทอร์เน็ต การเข้าถึงข้อมูลผ่านโทรศัพท์มือถือ หรือการใช้งาน Smart Card ทำธุรกรรมการเงิน เช่นเบิกถอนเงิน
กับธนาคารด้วยเทคโนโลยี Java ก็มีอนาคตที่สดใส Platform ของ Java ก็กำลังเป็นเทคโนโลยียุคใหม่สำหรับ
อุปกรณ์อิเลคทรอนิค ,โทรศัพท์มือถือ ,Set-top box, Smart Card และอุปกรณ์อื่นๆ อีกนานาชนิด
Platform ของ Java Technology
ทางทีมงานพัฒนา Java ของบริษัท Sun Micro System ได้แบ่งประเภทของ Java ออกเป็น 3 ประเภท
ตามลักษณะการใช้งานดังนี้
1. J2EE (Java 2 Platform Enterprise Edition)
- รองรับการพัฒนา Applications แบบ Multitear
- มีโมดูลต่างๆ ที่ครบครัน ที่ไม่มีความซับซ้อน
- สนับสนุนการเชื่อมต่อฐานข้อมูลหลากหลายรูปแบบ (JDBC)
- สนับสนุน Corba, Security, EJB component, Servlet API
- รองรับการพัฒนา Applications ทางธุรกิจ รวมถึงเรื่องพนักงานในองค์กร การบริการคู่ค้าขององค์กรขนาดใหญ่
- รองรับการทำ Transaction จำนวนมากๆ
2. J2SE (Java 2 Platform Standard Edition)
- เป็นแก่นของ Java ในปัจจุบัน ซึ่งมีความเป็นมาตรฐานสูง
- สามารถทำงานครอบคลุมตั้งแต่ระดับ Client จนถึงระดับ Server กล่าวคือจาก PC ถึง Super Computer
- ผู้พัฒนาหรือโปรแกรมเมอร์ใช้เวลาในการพัฒนาน้อยลง
- สนับสนุน XML, COM, SSL, Kerberos, LDAP, Corba
3. J2ME (Java 2 Platform Micro Edition)
- รองรับการใช้งานกับผลิตภัณฑ์ที่มีขนาดเล็ก หน่วยความจำภายในจำกัด เช่นโทรศัพท์มือถือ
- รองรับการใช้งานกับอุปกรณ์อิเลกทรอนิคขนาดเล็กอื่นๆ เช่น Smart Card, Pager, Set-top box
JVM (Java Virtual Machine)
ก่อนอื่นต้องทราบ ว่า Java เป็นภาษาระดับสูง (High Level Language) เหมือนกับภาษาบางภาษาเช่น
Pascal, C หรือ C++ ซึ่งสำหรับผู้พัฒนาหรือโปรแกรมเมอร์ทำความเข้าใจได้ง่าย (Source Code) เนื่องจาก
ไวยากรณ์ค่อนข้างจะใกล้เคียงกับภาษาเขียน แต่ทว่าเครื่องคอมพิวเตอร์นั้นทำงานในระบบเลขฐานสอง ซึ่งเข้าใจ
ความหมายของเลขเพียงสองตัวที่เรียงกันสลับกันคือ 0 และ 1 เท่านั้น ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องมีตัวแปล
ภาษา (Translator) ติดตั้งในเครื่องเพื่อแปลความหมายเป็นภาษาที่เครื่องเข้าใจก่อน (Machine Code) แล้วทำการ
แปลงเป็น Execute Files ก่อน จึงจะสามารถทำงานได้
ขั้นแรก Source Code ภาษา Java จะถูกตัว Compiler ทำการ Compile ให้เป็นภาษาสำหรับ JVM (Java
Virtual Machine) ซะก่อน ซึ่งจะเป็นไฟล์นามสกุล .class โดยไฟล์ .class นี้จะไม่ขึ้นกับระบบ จากนั้น JVM ก็จะ
ส่งต่อไปที่ Java Interpreter ก็จะกลายเป็น Native Code ก่อนจะส่งไปประมวลผลที่ CPU ต่อไป ในรูปแบบที่
CPU เข้าใจ
ชุดคำสั่งต่างๆ ของ Java Virtual Machine ถูกพัฒนาขึ้นมาเพื่อสนับสนุนการทำงานแบบเชิงวัตถุ
(Object-Oriented) โดยการนำ Class Files ไปใช้งานตามต้องการ ซึ่งเมื่อ JVM เริ่มทำงานจะมีการจองพื้นที่ใน
หน่วยความจำของเครื่องคอมพิวเตอร์เพื่อการประมวลผล (Execute) โปรแกรม ซึ่งพื้นที่หน่วยความจำบางส่วนจะ
ถูกลบไปหลังจากผู้ใช้ออกจากการใช้งานโปรแกรมนั้นแล้ว
นอกจากนั้นส่วนอื่นๆ ของ JVM ก็จะมีหน้าที่และการทำงานดังนี้
- Verifying Code : จะทำหน้าที่ตรวจสอบความผิดปกติของรหัสคำสั่ง ถ้ามีความผิดปกติเกิดขึ้น หรืออาจจะทำให้
ระบบขัดข้อง ก็จะทำการปฏิเสธการประมวลผลโปรแกรมนั้น
- Private Class Name Space : จะสร้างขึ้นโดย User
- Local Class Name Space : จะถูกสร้างขึ้น โดยระบบเป็นผู้กำหนดให้
- Loading Class : จะอยู่ใน Java ซึ่งจะมีตัว Class Loader ซึ่งทำหน้าที่ 3 อย่างข้างต้น
J2EE
ในปี คศ. 1997 บริษัทซัน ไมโครซิสเต็มส์ได้เริ่มต้นโครงการ JPE (Java Platform for Enterprise) และมี
การพัฒนาต่อเนื่องมาเป็น JavaTM 2 Platform, Enterprise Edition (J2EE) โดย J2EE เป็น Application Model ที่
กำหนดสถาปัตยกรรมโครงสร้างในการให้บริการต่างๆที่สามารถรองรับความต้องการดังกล่าวได้เป็นอย่างดี
J2EE Application Model จะแบ่งการทำงานเป็นสองส่วนคือ ส่วนของ Business & Presentation Logic กับอีกส่วน
หนึ่งคือ Standard System Services ซึ่งในส่วนของ Business & Presentation Logic นั้นคงเป็นหน้าที่ของ
Developer ในแต่ละองค์กรอยู่แล้ว แต่ในอีกส่วนคือ Standard System Services เช่น การจัดการ Transaction,
State, Security นั้นเราสามารถปล่อยให้เป็นภาระของ J2EE Platform ได้เลย
J2EE ได้กลายเป็นพื้นฐานแพลตฟอร์มมาตรฐานสำหรับส่งมอบความปลอดภัย ความเสถียร
ความสามารถในการขยายระบบ และสามารถใช้ได้กับหลายแแอพพิเคชั่นเซิร์ฟเวอร์แพลตฟอร์ม
ก่อนที่จะมี J2EE นักพัฒนาต้องมีความเชี่ยวชาญระดับสูงในด้านเขียนโปรแกรม ใช้ค่าใช้จ่ายสูงในกระบวนการ
ธุรกิจ (Business Logic) นักพัฒนาใช้เวลาไม่มีที่สิ้นสุดในการเขียนโปรแกรมการทำงานของทรานแซคชั่น,
สิ้นเปลืองทรัพยากร, มีอุปสรรคมากมาย, ความปลอดภัย และ Product Life Cycle Management จากที่กล่าวมานี้
ในงานบางส่วนต้องเขียนโปรแกรมใหม่ตั้งแต่แรกเริ่ม รวมทั้งคุณสมบัติ APIs ค่อนข้างจำกัดในการโค้ด และจะ
ไม่รู้เลยว่าแอพพิเคชั่นที่สร้างขึ้นมานั้นใช้งานได้ในระบบหรือไม่
ภาพรวมของแพลตฟอร์ม J2EE
แพลตฟอร์ม J2EE ได้รับการออกแบบมาสำหรับสนับสนุนการทำงานของแอพพลิเคชั่นแบบมัลติเทียร์
ทั้งในฝังของเซิร์ฟเวอร์ และไคลแอนต์แอพพลิเคชั่นที่สร้างขึ้นมาจะมีไคลแอนต์เทียร์ซึ่งทำหน้าเป็นส่วนติดต่อ
กับผู้ใช้ มีมิดเดิลเทียร์ทำหน้าที่เกี่ยวกับการจัดการข้อมูล ในรูปที่ 1แสดงถึงคอมโพเน็นต์และเซอร์วิสต่าง ๆ ที่มีใน
สภาวะแวดล้อมของ J2EE
คุณสมบัติและส่วนประกอบที่สำคัญในสภาวะแวดล้อมของ J2EE ประกอบด้วย
โมเดลแบบมัลติเทียร์ นั้นมีสถาปัตยกรรมการทำงานแบบมัลติเทียร์แบบกระจาย ซึ่งหมายความว่า
แอพพลิเคชั่นสามารถทำงานได้บนอุปกรณ์ที่หลากหลาย ตัวสถาปัตยกรรมของ J2EE ได้แบ่งเทียร์ต่าง ๆ ออกเป็น
ไคลแอนต์เทียร์ ทำหน้าที่ให้บริการกับไคลแอนต์ มิดเดิลเทียร์แบ่งเป็น 1 ส่วนคือ เว็บเทียร์ซึ่งทำหน้าที่ในการ
สร้างโค้ดของเว็บเพจ และส่วนของบิสซิเนสลอจิกที่ทำงานด้วนเอ็นเตอร์ไพรส์จาวาบีน (Enterprise JavaBean)
เราเรียกส่วนของบิสซีเนสลอจิก ว่า EJB Tier และสุดท้ายแบ็กเอนด์เทียร์ ทำหน้าที่จัดการเกี่ยวกับข้อมูล
ระบบจัดการคอมโพเน็นต์แบบคอนเทเนอร์ แนวความคิดหลักของคอมโพเนนต์ที่ใช้ใน J2EE ก็คือ
คอนเทเนอร์ เป็นสภาวะแวดล้อมรันไทม์มาตรฐานซึ่งมีเซอร์วิสเฉพาะมาให้คอมโพเน็นต์ของแอพพลิเคชั่น
เรียกใช้งาน โดยทั่วไปแล้วคอมโพเนนต์ สามารถเรียกใช้เซอร์วิสของคอนเทเนอร์บนแพลตฟอร์มใดก็ได้ที่เข้ากับ
มาตรฐาน ตัวอย่างเช่นเว็บคอนเทเนอร์ใน J2EE จะทำหน้าที่รับการร้องขอของไคลเอ็นต์ ประมวลผลโค้ดที่
เกี่ยวข้อง (เช่นเรียกเพจ JSP หรือเซิร์ฟเล็ตที่เกี่ยวข้อง) และทำหน้าที่คืนผลลัพธ์กลับไปให้กับไคลเอ็นต์ รวมทั้งยัง
ให้บริการเกี่ยวกับ API เพื่อสนับสนุนการจัดการเซสชั่นอีกด้วยในส่วนของ EJB Container จะสนับสนุนการ
ทำงานของทรานแซคชั่น และ Life Cycle Management สำหรับ อีเจบีคอมโพเน็นต์ รวมถึงกลไกของ Bean
Lookup ด้วย กล่าวง่าย ๆ คอนเทเนอร์ คือ ส่วนประกอบที่สนับสนุนการทำงานของคอมโพเน็นต์ ในรูปของ
เซอร์วิสมาตรฐานที่มีอยู่ในแพลตฟอร์ม
สนับสนุนไคลเอ็นต์คอมโพเน็นต์ ไคลเอ็นต์เทียร์ใน J2EE รองรับการให้บริการไคลเอ็นต์ที่หลากหลาย
ไม่ว่าจะเป็นเพจ HTML ที่สร้างขึ้นจากโค้ด JSP จาวาแอพเพล็ต หรือจาวาแอพพลิเคชั่นที่ทำงานแบบสแตนอโลน
ไคลเอ็นต์เทียร์ จะติดต่อกับมิดเดิลเทียร์ผ่านโพรโตคอลมาตรฐาน ไม่ว่าจะเป็น HTTP, HTML และ XML โดย
ปกติแล้วเว็บแอพพลิเคชั่นส่วนใหญ่สามารถทำงานได้เป็นอย่างดีผ่านเพจ HTML แต่อย่างไรก็ตาม ในบางกรณี
เช่น แอพพลิเคชั่นซึ่งต้องการส่วนติดต่อกับผู้ใช้ที่ซับซ้อนหรือมีการทำงานแบบเรียลไทม์ การใช้จาวาแอพเพล็ตก็
สามารถช่วยเพิ่มความยึดหยุ่นได้เป็นอย่างมาก นักพัฒนาสามารถใช้จาวาคอมโพเน็นต์เกี่ยวกับส่วนติดต่อกับผู้ใช้
ที่แอพเพล็ตเพื่อให้ทำงานหรือแสดงผลข้อมูลบางอย่างในรูปแบบที่ไม่สามารถทำได้ด้วย HTML ปกติ เป็นต้น
สนับสนุนคอมโพเน็นต์ของบิสซิเนสลอจิกนอกจากไคลเอ็นต์คอมโพเน็นต์แล้ว ยังมีส่วนที่สำคัญกับ
การดำเนินกระบวนการทางธุรกิจนั่นก็คือบิสซิเนสลอจิก บิสซิเนสลอจิกจะทำงานอยู่บนมิดเดิลเทียร์ในรูปของ
คอมโพเน็นต์เอ็นเตอร์ไพรส์จาวาบีน นักพัฒนาที่เกี่ยวข้องกับการเขียนโปรแกรมในส่วนของบิสซิเนสลอจิกจะ
จำกัดขอบเขตการทำงานของตนเองกับเอ็นเตอร์ไพรส์จาวาบีนเท่านั้น โดยที่ไม่ต้องสนในและยุ่งเกี่ยวกับส่วน
ติดต่อกับไคลเอ็นต์เลย (ซึ่งเป็นข้อแตกต่างที่สำคัญ เมื่อเปรียบเทียบกับการใช่สคริปต์ที่ฝั่งเซิร์ฟเวอร์อย่าง PHP
เพื่อสร้างเว็บแอพพลิเคชั่นขึ้นมา) คอมโพเน็นต์ที่สร้างขึ้นจะทำงานบนอีเจบีคอนเทเนอร์ ซึ่งให้บริการผ่าน
เซอร์วิสที่เกี่ยวข้องโดยมีความเชื่อถือได้และสามารถขยายระบบได้ง่าย
ความเป็นมาตรฐาน แพลตฟอร์ม J2EE เป็นมาตรฐานที่ผู้ขายและนักพัฒนาทั่วโลกให้การยอมรับ ตัว
แพลตฟอร์ม J2EE นั้นประกอบด้วยข้อกำหนดย่อยคือ ข้อกำหนดของเอ็นเตอร์ไพรส์จาวาบีน ข้อกำหนดของจาวา
เซิร์ฟเล็ต และขัอกำหนดของจาวาเซิร์ฟเวอร์เพจ (JSP) ข้อกำหนดเหล่านี้มีพื้นฐานอยู่บนสถาปัตยกรรมเดียวกัน
และนอกจากนี้ยังมีเทคโนโลยีอื่นที่เกี่ยวข้องกับ J2EE ประกอบด้วย J2EE Compatibility Test Suite (CTS) เป็นชุด
ในการทดสอบความสามารถในการนำแอพพลิเคชั่น J2EE ไปทำงาน, J2EE reference implementation เป็น
มาตรฐานในการสร้างแพลตฟอร์ม J2EE ซึ่งกำหนดขึ้นโดยบริษัทซันไมโครซิสเต็มส์ และ J2EE SDK เป็น
โค้ดไบนารีที่สร้างขึ้นจาก J2EE reference implementation สำหรับให้นักพัฒนาได้ทดลองใช้งานเพื่อสร้าง
แอพพลิเคชั่น J2EE พื้นฐานขึ้นมา
ด้วยคุณสมบัติที่มีอยู่เป็นจำนวนมากใน J2EE ช่วยให้การพัฒนาเอ็นเตอร์ไพรส์แอพพลิเคชั่นแบบ
กระจายเป็นไปอย่างมีประสิทธิภาพมาก โดยข้อดีที่จะได้รับก็คือ
1) มีสถาปัตยกรรมและการพัฒนาที่ง่าย
2) มีอิสระในการเลือกใช้เซิร์ฟเวอร์ เครื่องมือและคอมโพเน็นต์
3) ทำงานร่วมกับระบบสารสนเทศที่มีอยู่เดิมได้
4) มีความสามารถในการขยายระบบเพื่อรองรับความต้องการในอนาคต
5) มีโมเดลทางด้านความปลอดภัยที่ยืดหยุ่น
6) สนับสนุน Web Services
1) มีสถาปัตยกรรมและการพัฒนาที่ง่าย
จาวานั้นเป็นภาษาที่ง่ายต่อการเขียนโปรแกรม เนื่องจากมีโมเดลในการเขียนโปรแกรมที่เป็นมาตรฐาน
พร้อมด้วยไลบรารีช่วยเหลือกจำนวนมากเช่นเดียวกัน J2EE ก็ง่ายต่อการทำความเข้าใจด้วยสถาปัตยกกรมที่เป็น
มาตรฐานและง่ายต่อการเขียนโปรแกรมด้วยคอนเทนเนอร์ที่อำนวยความสะดวกอยู่เป็นจำนวนมาก จุดเด่นที่
J2EE ช่วยให้การสร้างแอพพลิคชั่นมีผลิตผลมาขึ้นก็คือ
- สามารถออกแบบให้เข้ากับฟังก์ชั่นต่าง ๆ ได้โดยตรง เนื่องด้วยคุณสมบัติการทำงานแบบคอมโพเน็นต์
ทำให้นักพัฒนาสามารถกำหนดให้คอมโพเน็นต์ที่สร้างขึ้นรองรับการทำงานในแต่ละฟังก์ชั่นได้โดยตรง
- กำหนดการทำงานได้ด้วยการเขียนโค้ดไม่มาก เนื่องจาก J2EE เป็นคอมโพเน็นต์ที่ทำงานบนคอนเท
นอร์ผ่านเซอร์วิสมาตรฐาน ทำให้โค้ดส่วนใหญ่ของโปรแกรมสามารถสร้างขึ้นมาอัตโนมัติได้ นักพัฒนาเพียงแค่
กำหนดอินเทอร์เฟชและวิธีการทำงานที่เกี่ยวข้องกับธุรกิจเท่านั้น
- มีการแบ่งส่วนงานอย่างชัดเจน ใน J2EE ผู้ที่เชี่ยวชาญการสร้างเพจ HTML ก็จะทำงานในส่วนของ
ไคลเอ็นต์เทียร์ ในขณะที่นักออกแบบที่คุ้นเคยกับกระบวนการทางธุรกิจก็จะทำงานในส่วนของมิดเดิลเทียร์
2) มีอิสระในการเลือกใช้เซิร์ฟเวอร์ เครื่องมือและคอมโพเน็นต์
ทีมพัฒนาต้องการอิสระในการเลือกใช้โซลูชั่นในการพัฒนาแอพพลิเคชั่น ตั้งแต่เซิร์ฟเวอร์ไปจนถึง
เครื่องมือและคอมโพเนนต์ที่ใช้ แต่ภายใต้อิสระนี้นักพัฒนาก็ต้องการโซลูชั่นที่สามารถทำงานร่วมกันได้เป็นอย่าง
ดี และใช้ทรัพยากรในการเปลี่ยนโซลูชั่นไม่มาก และนี้คือจุดเด่นที่สำคัญของ J2EE เนื่องจากมีโซลูชั่นที่
สนับสนุนอยู่ในปัจจุบันเป็นจำนวนมาก นักพัฒนาที่สร้างแอพพลิเคชั่นบน J2EE สามารถเลือกใช้ผลิตภัณฑ์ที่มีอยู่
ในท้องตลาดได้โดยการแก้ไขโค้ด และการตั้งค่าคอนฟิกูเรชั่นเพียงเล็กน้อยเท่านั้น ตัวอย่างเช่น ในกรณีที่องค์กรที่
ต้องการประสิทธิภาพสูงสุดโดยไม่เกี่ยวงบประมาณที่ใช้ ทีมพัฒนาสามารถเลือกใช้แอพพลิเคชั่นเซิร์ฟเวอร์ราคา
สูงได้ แต่ในขณะเดียวกันองค์กรที่มีเงื่อนไขทางด้านงบประมาณ ทีมพัฒนาก็ยังสามารถเอาคอมโพเน็นต์หรือ
แอพพลิเคชั่นที่มีอยู่แล้วมาทำงานบนผลิตภัณฑ์ของแอพพลิเคชั่นเซิร์ฟเวอร์ราคาประหยัดที่มีประสิทธิภาพต่ำกว่า
ได้โดยที่ไม่จำเป็นต้องเขียนโค้ดใหม่เลย
J2EE เป็นแพลตฟอร์มมาตรฐานที่ผู้ขายทั้งเซิร์ฟเวอร์ เครื่องมือและคอมโพเน็นต์ให้การยอมรับ
ส่งผลให้มีผลิตภัณฑ์รองรับเทคโนโลยีนี้เป็นจำนวนมาก เซิร์ฟเวอร์ทั้งในส่วนของฮาร์ดแวร์และซอฟต์แวร์ มี
ผลิตภัณฑ์ทั้งระบบปฏิบัติการ เว็บเซิร์ฟเวอร์ และแอพพลิเคชั่นเซิร์ฟเวอร์ที่สนับสนุน J2EE อยู่ในท้องตลาดเป็น
จำนวนมาก ตัวอย่างเข่น Oracle9i AS Containers for J2EE ซึ่งเป็นหนึ่งในคอมโพเน็นต์ Oracle9i Application
Server เป็นต้น เครื่องมือไม่ว่าจะเป็นเครื่องมือสำหรับการออกแบบเพจ JSP แบบกราฟิก ไปจนถึงการสร้างคอม
โพเน็นต์ เครื่องมือเหล่านี้มีความสามารถในการสร้างดีบักและติดตั้งส่วนประกอบที่สร้างขึ้นลงบนระบบที่ทำงาน
จริง คอมโพเน็นต์ ด้วยแนวคิดในการทำงานแบบคอมโพเน็นต์ ทำให้ทีมพัฒนาสามารถเลือกและนำคอมโพเน็นต์
สำหรับงานพิเศษเฉพาะทางมาใช้งานได้ง่าย ไม่ว่าจะเป็นคอมโพเน็นต์เกี่ยวกับการบัญชี เกี่ยวกับกระบวนการะ
ทางธุรกิจ หรือเกี่ยวกับส่วนติดต่อกับผู้ใช้ก็ตาม
3) ทำงานร่วมกับระบบสารสนเทศที่มีอยู่เดิมได้
องค์กรส่วนใหญ่มักมีแอพพลิเคชั่นเก่าของตนเองอยู่แล้ว และข้อมูลที่มีค่าส่วนใหญ่ก็มักจะถูกเก็บอยู่ใน
ระบบเหล่านั้น ทีมงานส่วนใหญ่จะรู้ดีกว่างานในการสร้างแอพพลิเคชั่นใหม่ ส่วนหนึ่งจะต้องใช้ในการพัฒนาอิน
เทอร์เฟชเพื่อติดต่อกับซอฟต์แวร์เก่าที่องค์กรมีอยู่แล้ว ความท้าทายของประเด็นนี้อยู่ที่ว่า ทีมพัฒนาจะสามารถดึง
แอพพลิเคชั่นเก่าที่มีอยู่มาใช้ได้อย่างมีประสิทธิภาพได้อย่างไร เพื่อแก้ปัญหานี้ นักพัฒนาแอพพลิเคชั่น ต้องการ
มาตรฐานในการเข้าใช้เซอร์วิสในส่วนของมิดเดิลเทียร์ และแบคเทียร์ อย่างเช่น ระบบจัดการฐานข้อมูลและทราน
แซคชั่นมอนิเตอร์ และเพื่อให้ไม่เป็นการใช้ทรัพยากรทั้งเวลาและบุคคลากรที่มากเกินไป พวกเข้ายังต้องการ
โซลูชั่นที่มีโมเดลของการเขียนโปรแกรมในแบบที่คุ้นเคยอีกด้วย
ใน J2EE มี API สำหรับการเรียกใช้งานระบบสารสนเทศอื่น ๆ ที่หลากหลายไม่ว่าจะเป็น
- สถาปัตยกรรม J2EE Connector สำหรับติดต่อกับระบบอย่าง ERP และ CRM เป็นต้น
- Java Transaction API (JTA) สำหรับจัดการทรานแซคชั่นบนระบบอื่น ๆ
- Java Message Service (JMS) สำหรับส่งและรับเมสเชจผ่านระบบจัดการเมสเซจระดับเอ็นเตอร์ไพรส์
JDBCสำหรับเชื่อมต่อกับระบบฐานข้อมูลแบบสัมพันธ์ (Relational Database)
4) มีความสามารถในการขยายระบบเพื่อรองรับความต้องการในอนาคต
ในการออกแบบเอ็นเตอร์ไพรส์แอพพลิเคชั่นแบบกระจาย ปัจจัยที่มีความสำคัญไม่น้อยก็คือ
ความสามารถในการให้บริการ (Availability) และความสารถในการขยายระบบ (Scalability) แพลตฟอร์มที่
รองรับการเปลี่ยนแปลงต่อรูปแบบการใช้งานและคอนฟิกูเรชั่นของระบบได้ง่ายกว่า และเป็นอัตโนมัติมากกว่า
นับเป็นสิ่งที่นักพัฒนาต้องการ เพื่อให้ได้มาซึ่งความสามารถในการขยายระบบ แอพพลิเคชั่นจำเป็นต้องได้รับการ
ออกแบบให้รองรับกับไคลเอ็นต์ที่หลากหลาย รวมทั้งต้องมีระบบการจัดการทรัพยากรและเซอร์วิสที่มี
ประสิทธิภาพ อย่างเช่น การเชื่อมต่อกับฐานข้อมูล และทรานแซคชั่น แพลตฟอร์มที่เลือกใช้จะต้องสนับสนุน
ฮาร์ดแวร์ และระบบปฏิบัติการที่หลากหลาย ซึ่งจะช่วยให้แอพพลิเคชั่นสามารถขยายการให้บริการได้โดยไม่มี
ข้อจำกัด ส่วนความสามารถในการให้บริการแพลตฟอร์มก็ต้องสนับสนุนคุณสมบัติพิเศษ อย่างเช่น โหลดบาลาน
ซิงและเฟลโอเวอร์ (Load Balancing และ Fail-Over) โดยคุณสมบัติเหล่านี้ควรเป็นหน้าที่ของโซลูชั่นที่เลือกใช้
ไม่ใช่ต้องให้นักพัฒนาสร้างขึ้นมาเอง
คอนเทเนอร์มาตรฐานสำหรับ J2EE มีเซอร์วิสมาตรฐานสำหรับรองรับการขยายระบบ นอกจากคอนเท
เนอร์ใน J2EE จะทำหน้าที่เป็นส่วนสนับสนุนสำหรับการทำงานของทรานแซคชั่น การเชื่อมต่อกับฐานข้อมูล
รวมถึงคุณสมบัติอื่น ๆ แล้ว คอนเทเนอร์ยังได้รับการออกแบบมาเพื่อการขยายระบบอีกด้วย ตัวอย่างเช่น คอนเท
เนอร์สามารถสร้างพูลของการเชื่อมต่อกับฐานข้อมูล (Database Connection Pool) ซึ่งช่วยให้ไคลเอ็นต์สามารถเข้า
ใช้ข้อมูลได้รวดเร็ว และมีประสิทธิภาพ ที่สำคัญคือ คอนเทเนอร์สามารถทำงานบนหลาย ๆ ระบบได้ โดยเว็บ
คอนเทเนอร์จะทำหน้าที่ในการบาบานซ์โหลดเองโดยอัตโนมัติอีกด้วย
5) มีโมเดลทางด้านความปลอดภัยที่ยืดหยุ่น
สิ่งที่สำคัญไม่น้อยในการสร้างเอ็นเตอร์ไพร์แอพพลิเคชั่นก็คือ ความปลอดภัย เนื่องจากข้อมูลที่มีค่าของ
องค์กรมักจะถูกส่งและได้รับการประมวลผลโดยแอพพลิเคชั่นที่สร้างขึ้น ในอดีตแอพพลิเคชั่นมักทำงานอยู่บน
เครือข่ายเฉพาะขององค์กรซึ่งมีความปลอดภัยสูง แอพพลิเคชั่นสามารถปรับเปลี่ยนวิธีการรักษาความปลอดภัย
ของข้อมูลได้ตามที่ต้องการ แต่ในปัจจุบัน แนวโน้มของแอพพลิเคชั่นเปลี่ยนไปเป็นการทำงานผ่านเว็บบน
อินเตอร์เน็ต ซึ่งก่อให้เกิดช่องโหว่ทางด้านความปลอดภัยมากยิ่งขึ้น นอกจากแอพพลิเคชั่นจะต้องมีความปลอดภัย
ที่ดีเพียงพอแล้ว กลไกทางด้านความปลอดภัยที่ใช้ก็ควรที่จะสอดคล้องกันทั้งหมดเพื่อให้การสื่อสารและการดูแล
สามารถทำได้สะดวกอีกด้วย
โมเดลทางด้านความปลอดภัยของ J2EE ได้รับการออกแบบมาเพื่อสนับสนุนการเข้าใช้บริการของ
แอพพลิเคชั่นแบบ Single Sign-On นักพัฒนาสามารถกำหนดความต้องการทางด้านความปลอดภัยให้กับคอมโพ
เน็นต์ได้ในระดับของเมธอด เพื่อให้มั่นใจว่าผู้ใช้ที่เรียบเมธอดมีสิทธิ์ถูกต้อง นอกจากนี้ยังมีความสามารถในการ
กำหนดกลไกความปลอดภัยตามบทบาท (กลุ่มของผู้ใช้ใช้สิทธิ์ร่วมกัน) ซึ่งสามารถกำหนดได้ตามเวลาที่ติดตั้ง
แอพพลิเคชั่น ด้วยคุณสมบัติเหล่านี้ทำให้แอพพลิเคชั่นมีความยืดหยุ่นและมีระบบรักษาความปลอดภัยที่มี
ประสิทธิภาพเป็นอย่างมาก
6) สนับสนุน Web Services
ได้มีการแบ่งยุคของอินเทอร์เน็ตเป็น 3 ยุค คือ จากยุคเริ่มต้นอินเทอร์เน็ต จนถึงระยะที่มีการให้บริการ
แบบ dynamic pages มีการนำ middle tier เข้ามาช่วยดังที่ได้เห็นจาก J2EE หรือ Windows DNA ซึ่งช่วงนี้คือยุคที่
สอง และจากนี้ต่อไปก็จะเป็นยุคที่สาม คือยุคของ Web Services ความจริงแล้ว Web Services ไม่ใช่เป็นการปฏิวัติ
วิธีการประมวลผลแบบกระจาย มันเป็นเพียงพัฒนาการของ XML Application จากที่จัดการเพียงแค่ Information
เป็นเรื่องของ Inter - Application Messaging เราอาจจะพอนิยามคำว่า Web Services ได้ว่า เป็นการรวบรวมฟังชั่น
ที่ได้รับการจัดหมวดหมู่ไว้เป็น Entity เดียวกัน และประกาศออกไปบน Network เพื่อให้โปรแกรมจากที่อื่นๆ
สามารถเรียกใช้งานได้ การเรียกใช้หรือให้บริการ Web services จะทำผ่านโปรโตคอล HTTP ทั้งนี้เพื่อให้สามารถ
ใช้งานผ่าน Proxy ได้ โดยผู้ให้บริการ Web services จะระบุข้อกำหนดต่างๆของบริการไว้เป็นเอกสาร WSDL
(Web Services Definition Language) แล้วทำการลงทะเบียนไว้ใน UDDI (Universal , Description, Discovery,
and Integration) ซึ่งผู้ที่ต้องการใช้บริการนั้นๆ จะสามารถค้นหาได้จาก UDDI นี้ การใช้งาน Web Services จะทำ
ได้ด้วยโปรโตคอล SOAP (Simple Object Access Protocol)
ในการที่จะรองรับ Web Services ด้วยเทคโนโลยี J2EE นี้ไม่จำเป็นต้องเปลี่ยนแปลงโครงสร้างใหม่แต่
อย่างใด เพียงขยายความสามารเพิ่มขึ้นด้วยชุด API สำหรับ XML คือ JAX APIs ซึ่งจะยังไม่ลงรายละเอียดในที่นี้
โดยจะเน้นเฉพาะพื้นฐานสำคัญที่ควรต้องทำความเข้าใจเป็นอย่างดีก่อน คือเรื่องของ J2EE นั่นเอง
J2ME
J2ME หรือ Java 2 Micro Edition มีจุดมุ่งหมายสำหรับอุปกรณ์ที่มี ขนาดเล็กซึ่งมีทรัพยากรจำกัดทางด้าน
พลังงานความสามารถในการประมวลผล หน่วยความจำ อุปกรณ์จำพวกนี้มีมากมาย เช่น เพจเจอร์
โทรศัพท์เคลื่อนที่ ปาล์ม พีดีเอ เป็นต้น นอกจากนี้ J2ME ยังสามารถใช้พัฒนาแอพพลิเคชันให้ทำงานบนอุปกรณ์
ที่ไม่ได้เป็นอุปกรณ์ไร้สายได้อีกด้วยถ้าไม่มีข้อจำกัดเพื่อดาวน์โหลดและติดตั้งซอฟต์แวร์เช่น กล่องรับสัญญาณ
ดาวเทียมสำหรับทีวี อินเทอร์เน็ตทีวี เป็นต้น ในการออกแบบโปรแกรม J2ME มีการแบ่งออกเป็นเอดิชันย่อย ก็
เพื่อความเหมาะสมกับการเลือกไปพัฒนาแอพพลิเคชันตามขนาดและ ลักษณะของงานซึ่งอาจจะแบ่งแยกออกเป็น
กลุ่มๆ เหมือนกับเป็นการจัดแบ่งกลุ่มของคลาสและแพกเกจของแต่ละเอดิชัน
คำถามแรกที่น่าจะเกิดขึ้นสำหรับทุกคนว่าทำไมต้องเป็น J2ME ซึ่งพอมีข้ออธิบายได้ดังนี้
J2ME ได้เพิ่มความสามารถให้กับ มือถือ ทำให้เกิดความหลายหลายในการใช้งาน
J2ME สามารถทำการ ติดตั้ง และ อัพเดท ได้ง่าย และสะดวก
J2ME มีความสามารถด้าน Cross-platform compatibility ทำให้สะดวกสำหรับนักพัฒนา
J2ME มี Security (ปลอดภัย) และ ความน่าเชื่อถือสูง
J2ME มี library เสริมต่างๆ สำหรับนักพัฒนา
J2ME รองรับกับมาตรฐาน XML และ IP Protocols
และจากการสำรวจจากกลุ่มนักพัฒนา ทางด้าน Wireless โดย Evan Data เมื่อ เดือนมีนาคม 2544 จะได้ผล
สรุปเรื่อง platform ที่ใช้ รูป
ผลสรุปเรื่อง platform ที่ใช้ในการพัฒนางานด้าน Wireless
34%
29%
26%
8% 3%
JAVA/J2ME
Palm
PPC
Linux
EPOC
จะเห็นได้ว่ากลุ่มของนักพัฒนาของ Java จะมีจำนวนมากที่สุด ทำให้คุณสามารถศึกษา และหาข้อมูลได้
มากกว่าบน platform อื่นๆ
สินค้าหรือบริการประเภทอุปกรณ์อิเล็กทรอนิกส์ขนาดเล็กเป็นอีก ส่วนหนึ่งที่กำลังเข้ามาเปลี่ยนแปลง
ชีวิตของคนเรามากขึ้น โดยเฉพาะโทรศัพท์เคลื่อนที่เพื่อให้เราติดต่อเมื่อไม่อยู่ในบ้านหรือออฟฟิศ Personal
digital assistants (PDAs) ให้เราเข้าถึงอีเมล์หรือค้นหาข้อมูลบนอินเทอร์เน็ต การกำหนดรูปแบบเพื่อให้สอดคล้อง
กับดำเนินตาม วิถีชีวิตด้วยเทคโนโลยีในยุคดิจิตอลซึ่งทั้งหมดกับเป็นการเริ่มต้น ของเทคโนโลยีจาวาสำหรับ
อุปกรณ์ไร้สายที่แสดงให้เห็นอย่างชัด เจนว่า เทคโนโลยี J2ME นี้ได้รับการออกแบบให้เหมาะสำหรับใช้งานกับ
เครื่องใช้ไฟฟ้าและเครื่องมือสื่อสาร เช่นตอนนี้มีการเข้าถึงลักษณะการใช้งานเทคโนโลยีจาวาหรือจาวาแพล็ต
ฟอร์(platform)สิ่งนั้นคือภาษาการเขียนโปรแกรมควบคุมที่ง่ายในสภาพแวดล้อมแบบรันไทม์(runtime) มี
ข้อกำหนดที่ปลอดภัย เป็นแพล็ตฟอร์มที่ เคลื่อนย้ายสะดวกและเข้าถึงความสามารถไดนามิกได้ ประมาณว่าถ้าไม่
กล่าวถึงกลุ่มที่พัฒนามีมากกว่าสองล้านคน
ถึงแม้ว่าจะไม่มีส่วนที่ดีสำหรับคนทั้งหมดแต่ J2SE Application Programming Interface (API) ยังเป็น
อุปกรณ์ไมโครที่ไม่ใช่อย่างที่เห็นบางอย่างในยุคปัจจุบันยกตัวอย่างเช่น โทรศัพท์เคลื่อนที่กับจอที่จำกัดของมัน
ไม่สามารถกำหนดฟังก์ชันทั้งหมดให้มีใน AWT (Abstract Windows Toolkit) ส่วนติดต่อผู้ใช้ที่เริ่มเป็นกราฟิก
แบบภาพยนต์กับจาวา สำหรับ "Micro Edition" เริ่มเข้าสู่ผู้ใช้สำหรับผู้ที่ต้องการอุปกรณ์พิเศษ คือ J2SE และ
J2EE
ความสามารถของ "Micro Edition" ภายในอุปกรณ์มือถือส่วนใหญ่ที่มีทรัพยากรจำกัดนั้นจะถูก
ออกแบบหน้าจอให้มีขนาดเล็กแต่ยังสามารถเข้าถึงอีเมล์ ข่าว ธนาคารออนไลน์(online banking) และอื่นๆ ได้
เพียงปลายนิ้วคลิก อย่างไรก็ตามแม้อุปกรณ์ที่ใช้งานดูเหมือนจะขนาดเล็กแต่อุปกรณ์เหล่านี้มากด้วยความสามารถ
เกินคำ บรรยาย สำหรับโทรศัพท์และ PDA ทั้งคู่ยังจำกัดในขนาด และยังมี ความสามารถในการพิมพ์โดยหน้าจอ
ของโทรศัพท์มือถือจะมีความ ละเอียดของหน้าจอประมาณ 12,288 พิกเซล (96x128 พิกเซล) ส่วน PDA นั้นมี
ความละเอียดของหน้าจอเริ่มต้นที่ 20,000 พิกเซล และมากกว่านี้ขึ้นไป
โครงสร้างสถาปัตยกรรมของ J2ME
การออกแบบโครงสร้างเทคโนโลยีจาวาตระกูล J2ME มีการ จัดแบ่งหน้าที่ทำงานออกเป็น 4 ระดับชั้น
ด้วยกัน เพื่อรองรับกับการใช้งานกับอุปกรณ์ต่างๆ คือ Operating Syetem Java Virtual Machine Layer
Configuration และ Layer Profile Layer
Host Operating System จะเป็นส่วนของระบบปฏิบัติการ เช่นเดียวกับบนเครื่อง Desktop หรือ Laptop ที่
มี Windows เป็นระบบปฏิบัติการ บนโทรศัพท์มือก็มีด้วยเช่นกัน อาทิ Nokia 7650, 3650 จะมี Symbian OS เป็น
ระบบปฏิบัติการ, เครื่อง Palm จะมี Palm OS เป็นระบบปฏิบัติการ
Java Virtual Machines (JVM) จะเป็นส่วนของระบบจัดการ ที่ควบคุม และทำงาน ให้สามารถทำงาน
ร่วมกันได้ ระหว่าง Java กับ Host Operating System โดยมากจะเป็นการแปลงจาก code Java ไปเป็นคำสั่ง ที่ Host
Operating System เข้าใจ และทำงานร่วมกันได้
Configuration เป็นกลุ่มของ Class Library (คลัง Class) ที่ครอบคลุม ถึงอุปกรณ์ต่างๆ ที่อยู่ในกลุ่ม
Profiles เป็นกลุ่มของ คำสั่ง,API (Application Programming Interface) ที่ใช้สำหรับอุปกรณ์ แต่ละประเภท
โดยเฉพาะหัวใจหลักของสถาปัตยกรรมหรือโครงสร้างของ J2ME สามารถแบ่งออกเป็น 2 ส่วน คือ คอนฟิกกูเร
ชัน (Configurations) และโพรไฟล์ (Profiles) ซึ่งมีลักษณะเป็นโมดูลที่มีความยืดหยุ่นพร้อมกับ สามารถนำไปใช้
งานกับอุปกรณ์ที่ต่างกันได้ โดยสามารถปรับแต่งได้ตามความต้องการ ของผู้บริโภคและนอกจากนี้ผู้ผลิต หรือ
ผู้พัฒนาซอฟต์แวร์บนอุปกรณ์ ยังสามารถขยายหรือเพิ่มความสามารถในเวอร์ชวลแมชีนได้ ดังนั้นจึงไม่ได้เป็น
แพลตฟอร์ม เฉพาะกับอุปกรณ์ชนิดใดชนิดหนึ่ง แต่ก็ยังมีเงื่อนไขตามแนวที่กำหนดของ J2ME อยู่
Configurations
สำหรับ Configurations ของ J2ME ที่ใช้งานกับอุปกรณ์ใด ๆ ต้องสามารถทำงานกับมาตรฐานที่กำหนด
ไว้ในกลุ่ม JCP และต้องสามารถใช้งาน Runtime Classes ตามข้อกำหนดได้ นอกจากนี้ Configurations ยังจะเป็น
ตัวกำหนดฟิวเจอร์หรือไลบารีมาตรฐาน ซึ่งจะมีเหมือนกันในทุกอุปกรณ์ที่จัดอยู่ในประเภทเดียวกัน การจัด
แบ่งกลุ่มคอนฟิกกูเรชันปัจจุบันมี 2 ประเภท คือ Connected Device Configuration (CDC) และ Connected,
Limited Device Configuration (CLDC) โดยแต่ละตัวจะใช้ VM (Virtual Machine) ที่ต่างกันด้วย
นอกจากนี้แล้วสำหรับอุปกรณ์ที่มีข้อจำกัดในการทำงานจะเป็นบรรทัดฐานในการแบ่งกลุ่ม โดย
คุณสมบัติพื้นฐานทั้งหมดนี้จะใช้ในการจัดแบ่งกลุ่มของอุปกรณ์ซึ่งมีความคล้ายกันในเรื่องของ หน่วยความจำ
หน้าจอ เครือข่ายในการเชื่อมต่อ และพลังงาน
Connected Device Configuration (CDC)
ใช้หน่วยความจำอย่างน้อย 512 กิโลไบต์ สำหรับจาวา
ใช้หน่วยความจำอย่างน้อย 256 กิโลไบต์ ในขณะรันไทม์ (runtime)
สามารถเชื่อมต่อสัญญาณที่มีแบนด์วิดธ์สูง (bandwidth)
ตัวอย่างอุปกรณ์เหล่านี้ได้แก่ อุปกรณ์เซตท้อป อินเทอร์เน็ตทีวี เครื่องซักผ้า ตู้เย็น ระบบเครื่องเสียงแบบไฮ
เอนต์ ระบบการเดินเรือ และความบันเทิงในรถยนต์ เป็นต้น
Connected, Limited Device Configuration (CLDC)
ใช้หน่วยความจำ 128 กิโลไบต์ สำหรับจาวา
ใช้หน่วยความจำ 32 กิโลไบต์ สำหรับรันไทม์ (runtime)
มีข้อจำกัดเกี่ยวกับยูสเซอร์อินเตอร์เฟส(user interface)
ใช้พลังงานแบตเตอรี่ต่ำ (battery)
สามารถเชื่อมต่อกับอุปกรณ์ไร้สายชนิดที่มีแบนด์วิดธ์ต่ำ(bandwidth) และเข้าถึงแบบไม่ต่อเนื่อง ตัวอย่างอุปกรณ์
เหล่านี้ได้แก่ โทรศัพท์มือถือ เพจเจอร์และ ออแกไนเซอร์ เป็นต้น
ถึงแม้ว่าการจัดแบ่งกลุ่มจะดูเหมือนชัดเจนยิ่งขึ้น แต่สิ่งนี้จะ ไม่ใช่ทางเลือกเสมอไปเพราะเทคโนโลยี
กำลังรุดหน้าและพัฒนาก้าวไปอย่างต่อเนื่อง สำหรับความสัมพันธ์ของ CLDC กับ CDC จะเห็นได้ว่ามีบางส่วน
ของ J2ME ไม่ได้อยู่ใน J2SE บางส่วนที่ว่านี้ก็คือ คลาสแพ็กเกจ หรือ API ที่เกี่ยวข้องกับการทำงานและส่วน
ติดต่อกับอุปกรณ์ที่สนับสนุน J2ME นั้นเอง
Profiles
ใจหลักอันสำคัญของเทคโนโลยี J2ME นั้นก็คือโพรไฟล์ (Profile) เนื่องจากลักษณะของการใช้งานใน
แต่ละงานนั้นแตกต่างกัน โดยถูกสร้างไว้อยู่เหนือระดับ Coniguration จึงเป็นตัวกำหนดฟังก์ชัน ในการทำงาน
พร้อมทั้งเป็นตัวกลางระหว่างแอพพลิเคชันกับสภาวะ แวดล้อมของ J2ME ดังนั้นโพรไฟล์จึงเกี่ยวข้องกับ
คุณลักษณะทาง ด้านฮาร์ดแวร์ของอุปกรณ์แต่ละตัว เช่น โพรไฟล์ของอุปกรณ์ประเภทมือถือ คือ Mobile
Information Device Profile (MIDP) สำหรับชุดของ API (Application Programming Interface) นี้ใช้สำหรับงาน
ในแต่ละ vertical market ส่วนยูสเซอร์อินเตอร์เฟสคอมโพแนน คือ Input/Output, Event handling, Persistent
storage, Networking และ Timers
Profiles เป็นส่วนของ API และ Class ที่ใช้งานได้บนตัวของอุปกรณ์ แต่ละประเภท ซึ่งเป็นการขยาย
ความสามารถของ CDC หรือ CLDC ให้มากขึ้น และมีส่วนของการทำงานที่เป็น ลักษณะเฉพาะของอุปกรณ์นั้นๆ
ตัวอย่างของ Profile ที่ใช้งานการพัฒนา เช่น
MIDP (Mobile Information Device Profile) เมื่อพูดถึง MIDP ก็จะหมายถึง ประเภทของ Device พวก
ที่มีคุณสมบัติต่อไปนี้ small display ( min. 96 x 54 pixels) , มี touch screen หรือ keypad, สามารถ connect mobile
network ด้วย bandwidth ที่จำกัด MIDP ประกอบด้วย APIs ที่ทำหน้าที่ดังต่อไปนี้
- Defining and controlling application
- Displaying text, graphics and responding to user events
- Storing data in simple database
- Network connectivity via a subset of HTTP
- Timer notifications
Mobile Information Device Next Generation (MIDP_NG) เป็น Generation ที่จะออกถัดไปของ MIDP
ซึ่งจะเพิ่ม function ต่าง ๆ ให้
PDA Profile (Personal Digital Assistant Profile) สำหรับอุปกรณ์ประเภท Organizer เช่น เครื่อง Palm
Foundation Profile สำหรับอุปกรณ์ในกลุ่มของ High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ
CDC ซึ่งจะประกอบด้วย API และ Function พื้นฐาน เป็น Profile ที่พัฒนาบน CDC เหมาะสำหรับ Device ที่มี
คุณสมบัติลักษณะต่อไปนี้
- 1024K minimum ROM
- 512k minimum RAM
- Connectivity กับระบบ Network ได้
- ไม่มี GUI เว้นเสียแต่จะใช้ additional profile อื่น ๆ เพิ่มเติมเข้ามาเพื่อทำ GUI
Personal Profile สำหรับอุปกรณ์ในกลุ่มของ High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ
Foundation Profile ซึ่งจะประกอบด้วย การจัดการด้าน GUI
RMI Profile สำหรับอุปกรณ์ในกลุ่มของ High-end device, เป็นส่วนขยายเพิ่มเติมเฉพาะด้านให้กับ
Foundation Profile ซึ่งจะประกอบด้วย การจัดการด้าน RMI (Remote Method Invocation)
ข้อเปรียบเทียบของ JAVA และ .Net
เรามาเริ่มต้นโดยดูที่องค์ประกอบแต่ละส่วนของ Microsoft.Net และ Java 2 Enterprise Edition (J2EE)
ก่อน โครงสร้างของทั้งสองตัวมีส่วนประกอบที่เทียบเคียงกันได้ดังนี้
1. ภาษาที่ใช้ในการพัฒนาแอพพลิเคชัน: Microsoft.Net เลือกใช้ภาษา C# เป็นหลัก ไมโครซอฟท์
พัฒนาภาษา C# ขึ้นมาใหม่เพื่อใช้กับ .Net โดยเฉพาะ ภาษา C# มีรากฐานมาจากภาษา C และ C++ ส่วน J2EE
จะใช้ภาษาจาวาเป็นหลัก แอพพลิเคชันที่เขียนด้วย C# อาจเลือกคอมไพล์เป็นไบท์โค้ดในฟอร์แมต Internal
Language (IL) ไบท์โค้ดที่ได้จะทำงานบน Common Language Runtime (CLR) นอกจากนี้ยังอาจเลือก
คอมไพล์ C# เป็นเนทีฟโค้ดเลยก็ได้ ในขณะที่แอพพลิเคชันที่เขียนด้วยจาวาจะคอมไพล์ได้เป็นไบท์โค้ด
เท่านั้น และต้องทำงานบนจาวาเวอร์ชวลเมชีน
2. คอมโพเนนต์พื้นฐาน : องค์ประกอบของไลบรารีพื้นฐานของทั้งสองระบบมีความแตกต่างกัน
พอสมควร ไมโครซอฟท์เตรียมคอมโพเนนต์สำหรับเรียกใช้ใน Microsoft.Net ในชุด .Net Framework SDK
ในขณะที่ J2EE จะเรียกใช้ไลบรารีจะใน Java Core API
3. ไดนามิคเว็บเพจ: Microsoft.Net สามาระสร้างเว็บเพจแบบไดนามิคด้วย Active Server Page หรือ
ASP.Net โดยอาจเลือกใช้วิชวลเบสิคหรือ C# มาเขียนโปรแกรม เพื่อคอมไพล์เป็นเนทีฟโค้ดเลยก็ได้ ทางด้าน
J2EE มี Java Server Pages (JSP) โดยจาวาโค้ดที่เขียนจะถูกแปลงเป็นไบท์โค้ดเพื่อทำงานเหมือนกัน
4. รันไทม์ไลบรารี: ระบบทั้งสองมีไลบรารีพื้นฐานที่โปรแกรมโค้ดจะทำงานอยู่บนไลบรารีนี้ โดย
Microsoft.Net ใช้ Common Language Runtime เป็นพื้นฐานให้ไบท์โค้ดทำงาน จุดเด่นของ CLR ก็คือ
สนับสนุนการใช้ภาษาคอมพิวเตอร์อื่นๆ ผู้ใช้สามารถใช้ภาษา Visual Basic, Perl, Eiffel, COBOL, Fortran มา
เขียนโปรแกรมได้ เพราะโปรแกรมที่เขียนจะคอมไพล์เป็นไบท์โค้ด เพื่อทำงานบน CLR สำหรับ J2EE ก็ใช้
จาวาเวอร์ชวลเมชีน ข้อดีก็คือ สามารถนำโค้ดที่ได้ไปทำงานบนแพล็ตฟอร์มใดก็ได้ที่มี JVM
5. ยูสเซอร์อินเตอร์เฟซ: ใน Microsoft.Net มียูสเซอร์อินเตอร์เฟซคอมโพเนนต์ให้ใช้ คือ Win Forms
และ Web Forms การใช้งานจะเรียกผ่าน Microsoft Visual Studio.Net ซึ่งมี IDE ทั้งสองแบบที่สามารถนำมา
ออกแบบแอพพลิเคชันได้ ส่วนจาวามีคอมโพเนนต์ Java Swing ให้ผู้ใช้สำหรับสร้างกราฟิกอินเตอร์เฟซ การ
ใช้นั้นมีผู้ผลิตซอฟต์แวร์ที่ใช้ IDE ของ Swing มาช่วยในการออกแบบโปรแกรม
6. ดาต้าเบสแอคเซส: การติดต่อกับดาต้าเบสบน Microsoft.Net นั้นมี ADO.Net ให้ใช้ สามารถใช้งาน
ร่วมกับ XML เพื่อนำดาต้าเบสมาใช้งานบนเว็บเพจ เว็บเซอร์วิสของ .Net จะใช้ประโยชน์จาก ADO มาก ส่วน
การติดต่อกับดาต้าเบสใน J2EE นั้นต้องใช้ความสามารถของ JDBC ซึ่งเป็นแพ็กเกจ API ที่ใช้สำหรับติดต่อ
กับดาต้าเบสให้ กรณีที่ต้องการใช้ XML จาวาก็มีชุดไลบรารี Java XML ให้ใช้ โดยเฉพาะใน Java 2 รุ่น 1.4
ขึ้นมาความสามารถในการจัดการ XML จะร่วมอยู่ในตัวแล้ว

ตัวอย่าง Library ของ Java
java.lang – core classes (Math, String, System,Integer, Character, etc.)
java.util – collections, date/time, random numbers
java.io – input/output streams, files
java.net – network I/O, sockets, URLs
java.awt – basic (original) graphical user interface
ตัวอย่าง Code program
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class HiMIDlet
extends MIDlet {
private TextBox textbox;
public HiMIDlet() {
textbox = new TextBox ("", "Hello World!", 20, 0);
}
public void startApp() {
Display.getDisplay(this).setCurrent(textbox);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
 
Reference
http://www.exzilla.net/docs/J2EE/J2EE-Architecture.php
http://micro.se-ed.com/content/mc210/MC210_94.asp
http://www.kmuttsit.net/article.php?sid=427
http://www.thai-programmer.com/?DPage=90700100
http://www.google.com/search?q=cache:0Q0gOUDWxjMJ:www.is.msu.ac.th/readTip.asp%3FID%3D57+j2ee+%E0%B8%84%E0%B8%B7%E0%B8%AD&hl=th

ไม่มีความคิดเห็น:

แสดงความคิดเห็น