วันพฤหัสบดีที่ 16 มิถุนายน พ.ศ. 2559

Cloud Computing คืออะไร?

Cloud Computing คืออะไร?

Cloud Computing คือ บริการที่ครอบคลุมถึงการให้ใช้กำลังประมวลผล หน่วยจัดเก็บข้อมูล และระบบออนไลน์ต่างๆจากผู้ให้บริการ เพื่อลดความยุ่งยากในการติดตั้ง ดูแลระบบ ช่วยประหยัดเวลา และลดต้นทุนในการสร้างระบบคอมพิวเตอร์และเครือข่ายเอง ซึ่งก็มีทั้งแบบบริการฟรีและแบบเก็บเงิน

รู้จักคลาวด์คอมพิวติ้ง  (Cloud Computingแบบเข้าใจง่าย

หากแปลความหมายของคำว่า Cloud Computing ดูจะเข้าใจยาก หรือถ้าแปลเป็นไทย “การประมวลผลบนกลุ่มเมฆ” ก็ยิ่งดูจะงงเข้าไปใหญ่ แต่น่าจะง่ายกว่าถ้าบอกว่า Cloud Computing คือ การที่เราใช้ซอฟต์แวร์, ระบบ, และทรัพยากรของเครื่องคอมพิวเตอร์ของผู้ให้บริการ ผ่านอินเทอร์เน็ต โดยสามารถเลือกกำลังการประมวลผล เลือกจำนวนทรัพยากร ได้ตามความต้องการในการใช้งาน และให้เราสามารถเข้าถึงข้อมูลบน Cloudจากที่ไหนก็ได้ ดังแผนภาพด้านล่างนี้นั่นเอง
cloud-computing-what-is-cloud-01
จาก ภาพด้านบนนี้ จะเห็นว่าด้านในของกรอบที่เป็นก้อนเมฆก็คือทรัพยากรของผู้ให้บริการที่มี ทั้ง Hardware และ Software (ซึ่งก็ทำงานบน Hardware ของผู้ให้บริการเช่นกัน) ผู้ใช้บริการเพียงแค่ต่อเชื่อมเข้าไปใช้ผ่าน Network ด้วยเว็บบราวเซอร์ หรือ Client แอพพลิเคชั่น บนอุปกรณ์ต่างๆของตน เช่น มือถือ, Tablet, Notebook, หรือ Chromebook เป็นต้น

ทำไมบริการ คลาวด์คอมพิวติ้ง (Cloud Computingจึงได้รับความนิยม?

Cloud Computing คือ บริการที่เราใช้หรือเช่าใช้ระบบคอมพิวเตอร์หรือทรัพยากรด้านคอมพิวเตอร์ ของผู้ให้บริการ เพื่อนำมาใช้ในการทำงาน โดยที่เราไม่จำเป็นต้องลงทุนซื้อ Hardware และ Software เองทั้งระบบ ไม่ต้องวางระบบเครือข่ายเอง ลดความรับผิดชอบในการดูแลระบบลง (เพราะผู้ให้บริการจะเป็นผู้ดูแลให้เอง) แถมตอนอัพเกรดระบบยังทำได้ง่ายกว่า ผู้ใช้ทุกคนสามารถเข้าถึงระบบ ข้อมูลต่างๆ ผ่านอินเทอร์เน็ต สามารถจัดการ บริหารทรัพยากรของระบบ ผ่านเครือข่าย และมีการแบ่งใช้ทรัพยากรร่วมกัน (shared services) ได้ด้วย และการจ่ายเงินเพื่อเช่าระบบ ก็สามารถจ่ายตามความต้องการของเรา ใช้เท่าไหร่ จ่ายเท่านั้นได้ หากวันใดความต้องการมีมากขึ้นก็สามารถซื้อเพิ่มเติมเพื่อเพิ่มศักยภาพของ ระบบ Cloud Computing ได้ โดยที่ไม่ต้องอัพเกรดระบบ และเครื่องคอมพิวเตอร์ให้วุ่นวาย ดังนั้น ธุรกิจขนาดเล็ก และขนาดกลาง รวมไปถึงสถาบันการศึกษา จึงหันมาใช้บริการ Cloud Computing ที่ทั้งช่วยลดต้นทุนและลดความยุ่งยากทั้งหลายกันมาก คล้ายกับเป็นการ Outsource งานนี้ออกไปเพื่อจะได้ Focus กับงานหลักของตนเองจริงๆ

ประเภทของบริการ คลาวด์คอมพิวติ้ง  (Cloud Service Models)

บริการ Cloud Computing มีหลากหลายรูปแบบ แต่ในที่นี้ เราขอพูดถึงรูปแบบหลักๆ 3 แบบได้แก่

Software as a Service (SaaS)

เป็น การที่ใช้หรือเช่าใช้บริการซอฟต์แวร์หรือแอพพลิเคชั่น ผ่านอินเทอร์เน็ต โดยประมวลผลบนระบบของผู้ให้บริการ ทำให้ไม่ต้องลงทุนในการสร้างระบบคอมพิวเตอร์ ฮาร์ดแวร์ ซอฟต์แวร์เอง ไม่ต้องพะวงเรื่องค่าใช้จ่ายในการดูแลระบบ เพราะซอฟต์แวร์จะถูกเรียกใช้งานผ่าน Cloud จากที่ไหนก็ได้
ซึ่งบริการ Software as a Service ที่ ใกล้ตัวเรามากทื่สุดก็คือ GMail นั่นเอง นอกจากนั้นก็เช่น Google Docs หรือ Google Apps ที่เป็นรูปแบบของการใช้งานซอฟต์แวร์ผ่านเว็บบราวเซอร์ สามารถใช้งานเอกสาร คำนวณ และสร้าง Presentation โดยไม่ต้องติดตั้งซอฟต์แวร์บนเครื่องเลย แถมใช้งานบนเครื่องไหนก็ได้ ที่ไหนก็ได้ แชร์งานร่วมกันกับผู้อื่นก็สะดวก ซึ่งการประมวลผลจะทำบน Server ของ Google ทำให้เราไม่ต้องการเครื่องที่มีกำลังประมวลผลสูงหรือพื้นที่เก็บข้อมูลมากๆ ในการทำงาน Chromebook ราคาประหยัดซักเครื่องก็ทำงานได้แล้ว มหาวิทยาลัยทั้งในไทยและต่างประเทศหลายแห่งในปัจจุบัน ก็ยกเลิกการตั้ง Mail Server สำหรับใช้งาน e-mail ของบุคลากร และนักศึกษาในมหาวิทยลัยกันเองแล้ว แต่หันมาใช้บริการอย่าง Google Apps แทน เป็นการลดต้นทุน, ภาระในการดูแล, และความยุ่งยากไปได้มาก

Platform as a Service (PaaS)

สำหรับ การพัฒนาแอพพลิเคชั่นนั้น หากเราต้องการพัฒนาเวบแอพพลิเคชั่นที่ค่อนข้างซับซ้อน ซึ่งรันบนเซิร์ฟเวอร์ หรือ Mobile application ที่มีการประมวลผลทำงานอยู่บนเซิร์ฟเวอร์ เราก็ต้องตั้งเซิร์ฟเวอร์ เชื่อมต่อระบบเครือข่าย และสร้างสภาพแวดล้อม เพื่อทดสอบและรันซอฟต์แวร์และแอพพลิเคชั่น เช่น ติดตั้งระบบฐานข้อมูล, Web server, Runtime, Software Library, Frameworks ต่างๆ เป็นต้น จากนั้นก็อาจยังต้องเขียนโค้ดอีกจำนวนมาก
แต่ถ้าเราใช้บริการ PaaS  ผู้ ให้บริการจะเตรียมพื้นฐานต่างๆ เหล่านี้ไว้ให้เราต่อยอดได้เลย  พื้นฐานทั้ง Hardware, Software, และชุดคำสั่ง ที่ผู้ให้บริการเตรียมไว้ให้เราต่อยอดนี้เรียกว่า Platform ซึ่งก็จะทำให้ลดต้นทุนและเวลาที่ใช้ในการพัฒนาซอฟท์แวร์อย่างมาก ตัวอย่าง เช่น Google App Engine, Microsoft Azure ที่หลายๆบริษัทนำมาใช้เพื่อลดต้นทุนและเป็นตัวช่วยในการทำงาน
Application ดังๆหลายตัวเช่น Snapchat ก็เลือกเช่าใช้บริการ PaaS อย่าง Google App Engine ทำให้สามารถพัฒนาแอพที่ให้บริการคนจำนวนมหาศาลได้ โดยใช้เวลาพัฒนาไม่นานด้วยทีมงานแค่ไม่กี่คน

Infrastructure as a Service (IaaS)

เป็น บริการให้ใช้โครงสร้างพื้นฐานทางคอมพิวเตอร์อย่าง หน่วยประมวลผล ระบบจัดเก็บข้อมูล ระบบเครือข่าย ในรูปแบบระบบเสมือน (Virtualization) ข้อดีคือองค์กรไม่ต้องลงทุนสิ่งเหล่านี้เอง, ยืดหยุ่นในการปรับเปลี่ยนโครงสร้างระบบไอทีขององค์กรในทุกรูปแบบ, สามารถขยายได้ง่าย ขยายได้ทีละนิดตามความเติบโตขององค์กรก็ได้ และที่สำคัญ ลดความยุ่งยากในการดูแล เพราะหน้าที่ในการดูแล จะอยู่ที่ผู้ให้บริการ
ตัวอย่าง เช่น บริการ Cloud storage อย่าง DropBox ซึ่งให้บริการพื้นที่เก็บข้อมูลนั่นเอง แต่นอกจากนี้ก็ยังมีบริการให้เช่ากำลังประมวลผล, บริการให้เช่า เซิร์ฟเวอร์เสมือน เพื่อใช้ลงและรันแอพพลิเคชั่นใดๆตามที่เราต้องการไม่ว่าจะเป็น Web Application หรือ Software เฉพาะด้านขององค์กร เป็นต้น
ตัวอย่างบริการอื่นๆในกลุ่มนี้ก็เช่น Google Compute Engine, Amazon Web Services, Microsoft Azure
cloud-computing-what-is-cloud-02
Cloud Service Models

ความสำเร็จขององค์กรที่ใช้งาน Cloud Computing

Thai Smile บริษัทสายการบินน้องใหม่ที่นำเอาคลาวด์คอมพิวติ้ง (Cloud Computing) เข้ามาช่วยในการลดต้นทุน และช่วยย่นระยะเวลาในการสร้างระบบคอมพิวเตอร์ โดยทางไทยสไมล์ มองว่า บริษัทน้องใหม่ แยกตัวออกมาจากการบินไทย กว่าจะตั้งตัวได้ กว่าจะมีระบบที่สมบูรณ์ ก็ต้องใช้เวลาหลายเดือน แต่ความได้เปรียบในเชิงธุรกิจ ต้องการการตัดสินใจที่รวดเร็ว ดังนั้น คลาวด์คอมพิวติ้ง  (Cloud Computing) จึงเป็นทางเลือกในการช่วยประหยัดเวลา ลดความยุ่งยากและเสียเวลากับการลงทุนอุปกรณ์เอง และสำหรับไทยสไมล์แล้ว Cloud Computing คือคำตอบที่ทำให้สามารถขยับตัวเพื่อแข่งขันในตลาดได้อย่างทันท่วงที
จาก ตัวอย่าง จะเห็นได้ว่า องค์กร บริษัท ธุรกิจขนาดเล็ก ขนาดกลาง และขนาดใหญ่ ล้วนแต่หาช่องทางในการลดต้นทุน ลดเวลา ลดความยุ่งยากในบริหารจัดการด้านไอที ซึ่งสำคัญมาก และเกี่ยวข้องกับความได้เปรียบในการแข่งขันทางธุรกิจ เพราะการซื้ออุปกรณ์ ฮาร์ดแวร์ ซอฟต์แวร์ การอัพเดตซอฟต์แวร์ และการอัพเกรดระบบ ต่างมาพร้อมกับต้นทุนและต้องการการบำรุงรักษาในระยะยาว ในขณะที่องค์กรเอง ก็ต้องการความยืดหยุ่น และไม่ยุ่งยากในการปรับเปลี่ยนโครงสร้างระบบคอมพิวเตอร์, ระบบเครือข่าย รองรับการขยายตัวของธุรกิจ และปรับตัวเข้ากับอนาคตได้เร็วกว่าคู่แข่ง
ในยุคที่มีอินเทอร์แพร่หลายและมีเครือข่าย 3G / 4G / Wi-Fi ที่ครอบคลุมทุกพื้นที่ การวางใจให้ Cloud ทำหน้าที่คำนวณ ประมวลผล จัดเก็บข้อมูล ก็ทำให้การใช้งานคอมพิวเตอร์หรืออุปกรณ์ผ่าน Cloud ก็ไม่ต้องจำเป็นต้องลงทุนสูงอีกต่อไป

ที่มา : กลุ่มภาระงานเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น

วันพุธที่ 23 มีนาคม พ.ศ. 2559

Design Patterns(แพตเทิร์น ) คืออะไร

Design Patterns(แพตเทิร์น ) คืออะไร

ดีไซน์แพตเทิร์น (อังกฤษ: Design Patterns) คือแบบแผนหรือแนวทางที่ใช้ในการแก้ไขปัญหาที่เกิดขึ้นเสมอๆ ในการออกแบบคอมพิวเตอร์ซอฟต์แวร์ แบบแผนและแนวทางเหล่านี้ไม่ใช่รูปแบบตายตัวที่จะถูกนำไปใช้โดยตรง แต่เป็นการอธิบายแนวทางหรือโครงที่จะถูกนำไปประยุกต์ใช้ในสถานการณ์ต่างๆ กล่าวเฉพาะในทางการเขียนโปรแกรมเชิงวัตถุ ดีไซน์แพตเทิร์นจะแสดงความสัมพันธ์ต่อกันระหว่างคลาสหรืออ็อบเจกต์ต่างๆ โดยไม่จำเพาะเจาะจงการนำไปใช้งานในขั้นสุดท้าย ขั้นตอนวิธีไม่จัดเป็นดีไซน์แพตเทิร์นเพราะเป็นการแก้ปัญหาในทางการประมวลผลมากกว่าในทางการออกแบบ
การจัดหมวดหมู่และแพตเทิร์นในหนังสือ Design Patterns

ดีไซน์แพตเทิร์นมีจุดเริ่มต้นจากหนังสือชื่อ A Pattern Language: Towns, Buildings, Construction แต่งโดยสถาปนิกชื่อ Christopher Alexander เมื่อปี ค.ศ. 1977 จากนั้น Kent Beck และ Ward Cunningham ริเริ่มนำเอาแนวคิดนี้มาทดลองใช้กับการเขียนโปรแกรมในปี ค.ศ. 1987 และได้นำเสนอผลงานในงานประชุม OOPSLA ในปีเดียวกันนั้น

ประโยชน์
ดีไซน์แพตเทิร์นช่วยทำให้กระบวนการพัฒนาโปรแกรมรวดเร็วขึ้นเพราะเป็นตัวอย่างที่ผ่านการพิสูจน์ทดสอบมาแล้ว การออกแบบซอฟต์แวร์ที่ดีต้องเตรียมการสำหรับปัญหาที่อาจจะไม่พบจนกว่าจะเริ่มนำไปใช้งาน การใช้ดีไซน์แพตเทิร์นช่วยป้องกันปัญหาเล็กน้อยที่อาจจะลุกลามใหญ่โต ทั้งยังทำให้การทำความเข้าใจโค้ดง่ายขึ้นในหมู่ผู้ร่วมงานในทีมที่คุ้นเคยกับดีไซน์แพตเทิร์น

การจัดหมวดหมู่และแพตเทิร์นในหนังสือ Design Patterns
การจัดหมวดหมู่ดีไซน์แพตเทิร์นตามหนังสือ Design Patterns แบ่งตามวัตถุประสงค์การใช้งาน ดังนี้

แพตเทิร์นการสร้างอ็อบเจกต์ (creational patterns)
Abstract Factory
Builder
Factory Method
Prototype
Singleton
แพตเทิร์นโครงสร้าง (structural patterns)
Adapter
Bridge
Composite
Decorator
Façade
Flyweight
Proxy
แพตเทิร์นพฤติกรรม (behavioral patterns)
Chain of responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template method

Visitor

Struts คืออะไร


Struts คืออะไร?

Struts Framework คือการ implement model-view-controller MVC design pattern สำหรับ enterprise application ด้วย java (java ee) Struts เป็นส่วนหนึ่งของ Apache Jakarta project และเป็น open source ดังนั้น จึงสามารถ download library struts มาใช้งานได้ฟรีๆ Struts Framework เป็นเหมือนชุดการพัฒนา web application ซึ่งเหมาะกับหลายๆขนาด

Model-View-Controller คืออะไร?

Model-View-Controller เป็นสถาปัตยกรรมที่แบ่งส่วนต่างๆของการพัฒนา application ออกเป็น 3 ส่วนซึ่งประกอบด้วย

Model component, View component และ Controller component ซึ่งในแต่ละ component สามารถพัมนา application โดยไม่ขึ้นกับ componentใด component หนึ่ง หมายความว่า เมื่อมีการเปลี่ยนแปลง component ใด component หนึ่ง จะไม่กระทบกับ component อื่นๆ

Model ทำหน้าที่
1. รับผิดชอบการจัดการนำข้อมูลขึ้นมาจาก Database และเก็บข้อมูลไว้
2. รับผิดชอบในส่วนของ business logic ก็อยู่ใน Model เช่น การเข้าถึงข้อมูล,
การยืนยันความถูกต้องของข้อมูล และ logic การเก็บข้อมูล เป็นต้น หรือบาง framework อาจจะมีในส่วนของ Business Service ด้วยอันนี้ขึ้นอยู่กับมุมมอง

View ทำหน้าที่
แสดงผล Graphic User Interface GUI เพื่อให้ user สามารถโต้ตอบกับ application ที่เราพัฒนาขึ้นมาได้ และทำหน้าที่รับ input จาก user view ที่พูดถึงถ้าอิงกับการพัฒนา web application ก็อาจเป็นได้ทั้ง HTML, JSP

Controller ทำหน้าที่
เป็นตัวสื่อกลางที่ทำงานประสานกันระหว่าง Model และ View Controller ทำหน้าที่ส่ง request ที่ได้จาก Client แล้วดูว่า request นี้จะส่งไปให้ Model ตัวใด และเมื่อได้ผลลัพธ์จาก Model แล้วก็จะดูต่อว่า response ที่ได้จะส่งไปให้ View ตัวใดแสดงผล ถ้าดูตาม Struts Framework ส่วน Controller ก็คือส่วนของ ActionServlet, Action, ActionForm และ struts-config.xml

ดังที่กล่าวมาแล้วทั้งหมดจะมีหลักการทำงานคร่าวๆดังนี้คือ เมื่อ client มีการส่ง request ไปหา server request นั้นจะถูกส่งไปที่ controller จากนั้น controller จะเป็นตัวดูว่า request ทีได้นั้นจะไปเรียก model ตัวใดให้ทำงาน แล้วเมื่อ model ทำงานเสร็จจะส่ง response กลับมาที่ controller และ controller จะเป็นตัวควบคุมอีกทีว่า response นี้จะให้ view ตัวไหนแสดงผลลัพธ์ออกมาพร้อมกับข้อมุลที่ได้มาจากชั้นของ model

ทำไมต้องออกแบบ application ตาม MVC ด้วยละ?

ยกตัวอย่างง่าย เนื่องจากว่าการทำ enterprise application นั้นจะมีความซับซ้อนมาก สมมุติหากไม่ใช้ MVC เกิดเราต้องการแก้ไข view ซักหนึ่งตัวมันก็จะมีผลกระทบกับส่วนอื่นๆตามมาเช่นการดึงข้อมูล, validation data เป็นต้น แต่ถ้าเราออกแบบ application ตามแบบของ MVC การแก้ไข view แต่ละครั้งจะไม่มีผลกระทบกับส่วนอื่นๆเลย ที่พูดถึงมันหมายถึงการพัฒนา application ขนาดใหญ่ทั้งนั้น แต่ถ้าเราพัฒนา application ขนาดเล็กๆอาจจะไม่จำเป็นตัวออกแบบตามแบบของMVC ก็ได้ อันนี้ขึ้นอยู่กับปัจจัยอื่นๆด้วย

ทำไมต้อง Struts ด้วย?

มันมีความยุ่งยากน้อยและเข้าใจง่าย แล้วถ้าเข้าใจ concept แล้วยังเป็นพื้นฐานกับการเข้าใจ framework ตัวอื่นๆอีกด้วยเช่น JSF ซึ่งบทความเกี่ยวกับ JSF จะมีการ update อยู่ตลอดอยู่แล้ว ถึงแม้ว่าในปัจจุบันการใช้งาน Struts Framework เริ่มที่จะหมดความนิยมแต่ถ้าเทียบกับการ learning curve ที่เข้าใจง่ายและเป็นพื้นให้กับ framework ตัวอื่นๆได้ด้วยก็นับว่าน่าสนใจที่จะเรียนรู้กับมัน เพื่อความเข้าใจที่ลึกซึ้งขอให้อ่าน reference เพิ่มเติมเรื่อง MVC ที่ sun เขียนไว้ : http://java.sun.com/blueprints/patterns/MVC-detailed.html



ก่อนที่เราจะใช้ Strut Framework นั้นเรามาติดตั้งส่วนต่างๆที่จำเป็นจะต้องใช้ก่อน

1.ติดตั้ง JDK1.4 หรือเวอร์ชั่นสูงกว่า สามารถ download ได้จาก sun
2. ติดตั้ง IDE เพื่อช่วยในการเขียนเช่น
Eclipse , Netbeans , JDev หรืออะไรก็แล้วแต่ เพียงแต่ที่ยกตัวอย่างมานั้น Netbean และ JDev นั้น support Struts ด้วยกันทั้งนั้นแต่ Eclipse ไม่ได้ support Struts จึงต้อหา plugin มาช่วยใช้ในการพัฒนา เช่น Myeclipse ที่รวม plugin สำคัญๆไว้หมดแล้วก็ได้ อันนี้แล้วแต่ครับขึ้นอยุ่กับความถนัดใน IDE ของแต่ละคน ขั้นตอนการใช้งานก้ต่างกันนิดหน่อยครับ แต่ที่ผมใช้คือ Eclipse+Exadel เพราะว่า plugin Exadel ภายในจะประกอบด้วย tomcat, struts framework ซึ่งเราไม่ต้องลง tomcat และ struts เลยมันมีให้เบ็ดเสร็จ เพียงแค่ install plugin Exadel ก็ใช้งานได้เรียบร้อย ซึ่งถ้าคุณไม่ใช้ plugin Exadel ก็ต้องติดตั้ง Tomcat และ Struts

- ติดตั้ง
Tomcat สามารถ download ได้จาก ที่นี่ ซึ่งมีหลาย version ให้ใช้งานและในแต่ละเวอร์ชั่นก็มีหลายแบบให้ download ผมแนะนำให้ download แบบ .zipเมื่อ download มาแล้วก้ขยาย zip ไว้ก็เรียบร้อย เราใช้ tomcat เพื่อทำหน้าที่เป็น http server และ servlet containerในส่วนนี้เราสามารถใช้ application server ตัวอื่นๆก็ได้เช่น oc4j, glassfish, jboss, oracle application server ฯลฯ ในตัวอย่างนี้ผมขอใช้ tomcat เพราะไม่กิน resource มากแล้วก็ฟรีครับ ^^

- ติดตั้ง Struts Application download ได้จาก
ที่นี่ ในปัจจุบัน Struts ออกเวอร์ชั่น 2 แล้วแต่ที่ผมใช้อยู่เป็น Struts 1.3.8เมื่อ download มาแล้วให้แตกไฟล์ออกมาจะได้ folder struts-1.3.8 ให้เข้าไป struts-1.3.8\apps จะเห็น war ไฟล์

- struts-black-1.3.8.war เป็น struts application เปล่าๆที่ใช้ในการสร้าง struts application ซึ่งเราจะใช้ไฟล์นี้ในการสร้าง web application ของเรา

- struts-documentation.war จะเป็นที่เก็บ api และ documents สำคัญต่างๆที่เกี่ยวกับการพัฒนา Struts application

- struts-example.war เป็นตัวอย่าง MailReader application เอาไว้ให้เราลองศึกษาดู จากนั้นให้เรา copy war file พวกนี้ไปที่ \webapps

เมื่อทุกอย่างพร้อมแล้ว มาเริ่มพัฒนา Struts Application กัน ในตอนต่อไป
 

เว็บเซอร์วิส (Web Service)

เว็บเซอร์วิส (Web Service)

ความหมายของเว็บเซอร์วิส

                เว็บเซอร์วิส (Web service) คือ ระบบซอฟต์แวร์ที่ออกแบบมา เพื่อสนับสนุนการแลกเปลี่ยนข้อมูลกัน ระหว่างเครื่องคอมพิวเตอร์ผ่านระบบเครือข่าย โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์ คือเอกซ์เอ็มแอล เว็บเซอร์วิสมีอินเทอร์เฟส ที่ใช้อธิบายรูปแบบข้อมูลที่เครื่องคอมพิวเตอร์ประมวลผลได้ เช่น WSDL ระบบ คอมพิวเตอร์ใช้งานสื่อสารโต้ตอบกับเว็บเซอร์วิสตามรูปแบบที่ได้กำหนดไว้แล้ว โดยการส่งสาสน์ตามอินเตอร์เฟสของเว็บเซอร์วิสนั้น โดยที่สาสน์ดังกล่าวอาจแนบไว้ในซอง SOAP หรือส่งตามอินเตอร์เฟสในแนวทางของ REST สาสน์เหล่านี้ปกติแล้วถูกส่งโดยอาศัย HTTP และใช้ XML ร่วม กับมาตรฐานเกี่ยวกับเว็บอื่นๆ โปรแกรมประยุกต์ที่เขียนโดยภาษาต่างๆ และทำงานบนแพลตฟอร์มต่างๆกันสามารถใช้เว็บเซอร์วิสเพื่อแลกเปลี่ยนข้อมูล ผ่านทางเครือข่ายคอมพิวเตอร์ เช่น อินเทอร์เน็ต ในลักษณะเดียวกับการสื่อสารระหว่างโปรเซส (Inter-process communication) บน เครื่องเดียวกัน ความสามารถในการแลกเปลี่ยนข้อมูลระหว่างระบบที่ต่างกันนี้ (เช่น การแลกเปลี่ยนข้อมูลระหว่าง โปรแกรมที่เขียนโดยภาษาจาวา และโปรแกรมที่เขียนโดยภาษาไพทอน หรือการแลกเปลี่ยนข้อมูลระหว่างโปรแกรมประยุกต์ที่ทำงานบนไมโครซอฟท์ วินโดวส์และโปรแกรมประยุกต์ที่ทำงานบนลินุกซ์) เกิดขึ้นได้เนื่องจากการใช้มาตรฐานเปิด โดย OASIS และ W3C เป็นคณะกรรมการหลักในการรับผิดชอบมาตรฐานและสถาปัตยกรรมของเว็บเซอร์วิส

                ความหมายของเซอร์วิส (Service) หรือบริการในแง่ของเทคโนโลยี เราลองมาพิจารณาความหมายของบริการหรือกระบวนการ (Process) ที่ องค์กรต่างๆ ทั้งภาครัฐและเอกชนต่างให้บริการกับประชาชน ลูกค้า พนักงาน หรือคู่ค้า ตัวอย่างเช่นบริการที่พนักงานหน้าเคาท์เตอร์ของธนาคารสามารถให้บริการแก่ ลูกค้าอาจมีหลากหลายอาทิเช่น บริการฝาก/ถอนเงิน บริการแลกเปลี่ยนเงินตราต่างประเทศ หรือบริการด้านสินเชื่อเป็นต้น บริการแต่ละบริการอาจจะมีกระบวนการในการทำงานที่ซับซ้อนแตกต่างกัน แต่ในมุมมองของลูกค้าจะไม่สนใจว่าบริการนั้นมีขั้นตอนการทำงานอย่างไร แต่จะมีวัตถุประสงค์หลักเพื่อให้บริการนั้นเสร็จสิ้นและได้ผลลัพธ์ออกมาตาม ที่ลูกค้าขอใช้บริการนั้นๆ

                ความหมายของเซอร์วิสในแง่ของซอฟต์แวร์ ก็มีคุณลักษณะเช่นเดียวกับบริการทั่วๆ ไป กล่าวคือเป็นซอฟต์แวร์คอมโพเนนท์ (Software Component) ที่ อาจเป็น ฟังก์ชัน หรือ โมดูล ที่มีกระบวนการการทำงานภายใน สามารถรับอินพุตเข้ามาเพื่อประมวลผล และจะส่งผลลัพธ์กลับออกไป ซอฟต์แวร์เซอร์วิสเหล่านี้เราอาจกำหนดเป็นกระบวนการทางธุรกิจ (Business Process) กล่าวคือจะเป็นฟังก์ชันที่ทำเฉพาะการประมวลผลซึ่งจะไม่เกี่ยวข้องกับส่วนแสดงผล (Presentation Logic) นอกจากนี้ด้วยเทคโนโลยี Distributed Computing ทำให้สามารถที่จะพัฒนาซอฟต์แวร์เซอร์วิสเพื่อเรียกใช้จากระยะไกล (remote) ผ่าน Internet ได้โดยใช้เทคโนโลยีเฉพาะด้าน (proprietary technology) อาทิเช่น RMI, CORBA หรือ DCOM

                เว็บเซอร์วิส (Web Service) อาจ ไม่ได้เป็นเรื่องใหม่แล้ว และคนวงการไอทีส่วนใหญ่เริ่มเข้าใจเทคโนโลยีเว็บเซอร์วิสดีขึ้น มาตรฐานต่างๆ ของเว็บเซอร์วิสเริ่มเป็นที่ยอมรับกันมากขึ้นและกลายเป็นมาตรฐานหลักในการ พัฒนา SOA แต่การพัฒนาเว็บเซอร์วิสสำหรับประยุกต์ ใช้งานจริงในองค์กรยังเพิ่งเริ่มต้นและวัตถุประสงค์ในการพัฒนายังไม่ชัดเจน นัก แต่เมื่อมีการกล่าวถึงการพัฒนาสถาปัตยกรรมเชิงบริการ (SOA) ภายในองค์กรกันมากขึ้น โดยเฉพาะความต้องการขององค์กรที่จะทำการเชื่อมโยงระบบภายในองค์กร (Internal Enterprise Application Integration) จึงทำให้องค์กรสนใจจะนเทคโนโลยีเว็บเซอร์วิสเข้ามาช่วยในการพัฒนาโปรแกรมต่างๆ มากขึ้น      บทความนี้จะเป็นการแนะนำเทคโนโลยีเว็บเซอร์วิส ประโยชน์ และมาตรฐานต่างๆ ของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา (Java Technology)

ตัวอย่างการใช้งานของซอฟต์แวร์เซอร์วิสโดยใช้ Distributed Computing จะเป็นไปดังแสดงในรูปที่ 1 ซึ่งจะเห็นได้ว่ามีระบบ Back-end ต่างๆ เช่น Airline Reservation System และ Hotel Reservation System ที่มีซอฟต์แวร์เซอร์วิสต่างๆ อยู่ ผู้ใช้ด้าน Front-end ที่จะเป็นผู้ใช้บริการเซอร์วิส (Service Requestor) ซึ่งอาจเรียกใช้จากอุปกรณ์ต่างๆ เช่น คอมพิวเตอร์ หรือโทรศัพท์เคลื่อนที่ (Mobile Phone) จะสามารถเรียกใช้ซอฟต์แวร์เซอร์วิสเหล่านี้ผ่านผู้ให้บริการเซอร์วิส (Services Provider) ซึ่งทำหน้าที่เป็น Middleware การเรียกใช้เซอร์วิสเหล่านี้อาจเป็นการเรียกใช้จากผู้ใช้โดยตรงหรือเรียกใช้โดยโปรแกรมซอฟต์แวร์คอมโพเนนท์ (Program to Program) จากอุปกรณ์ที่ใช้ นอกจากนี้ในกรณีที่ไม่ทราบชื่อหรือเซอร์วิสที่มีอยู่ เราสามารถที่จะค้นหาซอฟต์แวร์เซอร์วิสเหล่านี้ได้จาก Registry ที่ ทำหน้าที่เก็บรายละเอียดของซอฟต์แวร์เซอร์วิสต่างๆที่มีอยู่ โดยผู้ให้บริการเซอร์วิสจะทำหน้าที่ลงทะเบียนรายละเอียดของเซอร์วิสไว้ ทั้งนี้การค้นหาเซอร์วิสผ่าน Registry สามารถทำได้อัตโนมัติโดยใช้คำสั่งในโปรแกรมด้านผู้ใช้บริการเซอร์วิส
                          รูปที่ 1 ซอฟต์แวร์เซอร์วิสโดยใช้ Distributed Computing


เว็บเซอร์วิสจะใช้หลักการของซอฟต์แวร์เซอร์วิสของ Distributed Computing แต่จะใช้โพรโทคอลที่มีมาตรฐานกลาง (Standard Protocol) ที่อยู่ในรูปแบบ XML (eXtensible Markup Language) และจะเป็นซอฟต์แวร์คอมโพเนนท์ที่ให้บริการผ่านอินเตอร์เน็ต

Gartner Research ได้ให้คำนิยามของเว็บเซอร์วิสไว้ดังนี้ เว็บเซอร์วิสคือ ซอฟต์แวร์คอมโพเนนท์แบบ loosely coupled ที่ส่งบริการผ่านเทคโนโลยีอินเตอร์เน็ตที่มีมาตรฐาน 

พื้นฐานของ Web Service

พื้นฐานของ Web Service คือ XML และส่วนใหญ่จะใช้ HTTP แต่อาจจจะใช้อินเทอร์เน็ตโพรโทคอลอื่นอย่างเช่น SMTP หรือ FTP ก็ได้ แต่จะพบว่า HTTP ก็เป็นที่รู้จักกันดี และไปได้ทั่วทุกแห่งที่มี internet ส่วน XML คือภาษาสากลที่คุณสามารถปรับแต่งได้ตามใจชอบ เพื่อให้เกิดกิจกรรมระว่าง client และบริการ หรือระหว่างส่วนประกอบต่างๆ เบื้องหลัง Web server ก็คือ ข้อความ XML จะถูกแปลงให้การขอบริการจาก Middle ware และผลที่ได้ก็จะแปลงกลับมาในรูป XML

ยกตัวอย่างให้เห็นง่ายๆ คุณต้องการให้เครื่อง PC อ่านค่าจาก serial port แล้วส่งไปประมวลผลบนเครื่อง UNIX แล้วส่งผลกลับมาแสดงบนจอ PC ถ้าเป็นเมื่อก่อน คุณก็คงต้องแปลงข้อมูลที่ได้ให้อยู่ในรูปของ ASCII แล้วส่งไปยัง UNIX พร้อมคำสั่งว่าให้ทำอะไร ในฝั่ง UNIX คุณก็ต้องมาแยกว่าอันไหนคือคำสั่ง อันไหนคือข้อมูล เมื่อประมวลผลแล้ว จะส่งกลับมาในรูปแบบไหน แล้วถ้าหากจะส่งไปหาเครื่องที่เป็น MAC ท่านจะต้องเขียนโปรแกรมเพิ่มในส่วนไหนบ้าง จะพบว่าเราต้องพัฒนากันเป็นคู่ๆ ไป และต้องนิยามในแต่ละฝั่งให้ชัดเจน แต่หากเป็น Web Service คุณจะพบว่า เราแปลงข้อมูลให้อยู่ในรูป XML แต่ละคุณก็ต้องการรู้แค่ มาตรฐาน XML ก็พอ แล้วต่างคนต่างก็เขียน Service ของตัวเอง ไม่ต้องกังวลเรื่องของการเชื่อมโยงอีกต่อไป และ Protocol ที่ส่งก็คือ HTTP นั่นเอง ถ้าท่านเชื่อมโยงกับ HTTP (หรือเว็บ) ได้ ท่านก็ใช้บริการทุกอย่างได้

คุณลักษณะพื้นฐานของเว็บเซอร์วิสมีดังนี้

·         เว็บเซอร์วิสเป็นซอฟต์แวร์คอมโพเนนท์ที่ระบุตำแหน่งโดยใช้ URI

·         อินเตอร์เฟสและการติดตั้งของเซอร์วิสจะนิยาม อธิบาย และค้นหาโดยใช้ ภาษาXML

·         เว็บเซอร์วิสสนับสนุนการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ ผ่านโพรโทคอลอินเตอร์เน็ต

·         เว็บเซอร์วิสใช้เอกสารแบบ XML ในการส่งข้อมูลระหว่างผู้ให้บริการและผู้ใช้

·         เว็บเซอร์วิสช่วยในการเชื่อมโยงโปรแกรมประยุกต์ต่างแพลตฟอร์ม (Cross-platform Integration) ผ่านอินเตอร์เน็ต

·         นักพัฒนาสามารถพัฒนาเว็บเซอร์วิสได้โดยใช้โปรแกรมภาษาคอมพิวเตอร์ต่างๆเช่น Java, C, C# หรือ Visual Basic และสามารถพัฒนาโดยการเปลงซอฟต์แวร์คอมโพเนนท์ที่มีอยู่ให้เป็นเว็บเซอร์วิส

·         เว็บเซอร์วิสจะไม่รวมถึงการจัดการส่วนแสดงผลเหมือน HTML

·         เว็บเซอร์วิสจะเป็นซอฟต์แวร์คอมโพเนนท์แบบ loosely couple ดังนั้นแต่ละคอมโพเนนท์จะเป็นอิสระและมีฟังก์ชันที่สมบูรณ์ในตัว

·         เราสามารถที่จะค้นหาและเรียกใช้เว็บเซอร์วิสจาก registry ที่เป็นแบบ public หรือ private โดยใช้มาตรฐานกลางเช่น UDDI และ ebXML

·         เว็บเซอร์วิสสามารถที่จะเรียกใช้โดย client ต่างๆ ได้เช่น คอมพิวเตอร์ โทรศัพท์เคลื่อนที่ หรือ พีดีเอ

เหตุผลของการพัฒนาเว็บเซอร์วิส

                เว็บเซอร์วิสจะแตกต่างกับโปรแกรมประยุกต์บนเว็บ (Web Application) และDistributed Computing (Distributed Application) ทั้งนี้เพราะโปรแกรมประยุกต์บนเว็บ จะเป็นโปรแกรมเพื่อให้ผู้ใช้ (End User) สามารถโต้ตอบกับโปรแกรมผ่านเว็บไซต์ได้ ไม่ใช่ Distributed Computing ที่เป็นซอฟต์แวร์เซอร์วิสและไม่สามารถเรียกใช้จากผู้ใช้ที่หลากหลายได้ ส่วนข้อจำกัดของ Distributed Computing คือจะยึดติดกับโพรโทคอลเฉพาะเช่น RMI หรือ CORBA และโพรโทคอลเหล่านี้เป็นแบบไบนารี่ (Binary Protocol) จึง ผูกอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง ดังนั้นจะเห็นได้ว่าเว็บเซอร์วิสไม่ใช่แนวคิดใหม่ เพียงแต่เปลี่ยนรูปแบบโพรโทคอลและหลักการบางอย่างที่เคยใช้ใน Distributed Computing เหตุผลสำคัญที่ควรเลือกพัฒนาเว็บเซอร์วิสมากกว่าการพัฒนาโปรแกรมประยุกต์บนเว็บและ Distributed Computing คือ

1.เว็บเซอร์วิสใช้โพรโทคอลที่เป็นมาตรฐานโดยใช้รูปแบบ XML

2.เราสามารถเรียกใช้เว็บเซอร์วิสโดย XML-based RPC จึงทำให้สามารถเรียกผ่าน Firewall ซึ่งแตกต่างกับกรณีของเทคโนโลยีแบบกระจาย

3.เว็บเซอร์วิสสนับสนุนการทำงานร่วมกันของโซลูชัน ที่ข้ามแพลตฟอร์มและใช้ภาษาคอมพิวเตอร์ที่ต่างกันได้ โดยการส่งข้อมูลแบบ XML

4.เว็บเซอร์ วิสสนับสนุนการการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ ผ่านโพรโทคอลอินเตอร์เน็ต ซึ่งแตกต่างกับโปรแกรมประยุกต์บนเว็บที่เป็นการเรียกโดยตรงจากผู้ใช้

จุดเด่นของการพัฒนาเว็บเซอร์วิสสามารถที่จะสรุปได้ดังนี้


·         การเชื่อมโยง (Interoperable): สนับสนุนการเชื่อมโยงกันระหว่างโปรแกรมประยุกต์ที่หลากหลาย (Heterogeneous Applications) ได้ โดยใช้มาตรฐานเว็บที่เป็นกลาง

·         ลดค่าใช้จ่าย (Economical): สนับสนุนการนำซอฟต์แวร์คอมโพเน้นท์กลับมาใช้ใหม่ (reuse) และไม่ต้องยึดติดกับเทคโนโลยีเดิม

·         อัตโนมัติ (Automatic): สนับสนุนการการเรียกใช้จากโปรแกรมโดยตรง โดยไม่ต้องโต้ตอบกับผู้ใช้

·         เข้าถึงได้ (Accessible): สามารถที่จะเรียกใช้โปรแกรมเดิม (Legacy) หรือโปรแกรมภายในผ่านเว็บได้

·         ใช้ได้ตลอด (Available): สนับสนุนการเรียกใช้ได้ทุกที่ ทุกอุปกรณ์ และทุกเวลา

·         ขยายได้ (Scalable): ไม่ได้จำกัดขนาดของโปรแกรมหรือจำนวนของระบบต่างๆ

โมเดลการทำงานของเว็บเซอร์วิส

                กระบวนการการทำงานของเว็บเซอร์วิสจะมีขั้นตอนการทำงานเช่นเดียวกับซอฟต์แวร์เซอร์วิสที่ใช้ Distributed Computing ดังอธิบายในรูปที่ 1 ซึ่งเราสามารถที่จะแบ่งบทบาทองค์ประกอบของเว็บเซอร์วิสได้เป็นสามส่วน โดยทั้งสามองค์ประกอบมีความสัมพันธ์ดังแสดงในรูปที่ 2 และสามารถอธิบายได้ดังนี้

·         ผู้ให้บริการ (Service Provider): ผู้ให้บริการจะมีหน้าที่ในการพัฒนาและติดตั้งเว็บเซอร์วิส และเป็นผู้ที่นิยามความหมายของเซอร์วิสและลงทะเบียนเซอร์วิสกับ Service Registry

·         ผู้ใช้บริการ (Service Requestor): ผู้ ใช้บริการจะเป็นผู้เรียกใช้เว็บเซอร์วิส โดยอาจทำการค้นหาเซอร์วิสจากเซอร์วิสไดเร็กทอรี่ แล้วทำการเรียกใช้เซอร์วิสจากผู้ให้บริการ

·         Service Registry: หรืออาจเรียกว่า Service Broker มีหน้าที่ในการรับลงทะเบียนและช่วยในการค้นหาเว็บเซอร์วิส Service Registry จะ เก็บรายละเอียดของเว็บเซอร์วิสต่างๆเช่น นิยาม และตำแหน่งของเว็บเซอร์วิส ทำหน้าที่คล้ายกับสมุดโทรศัพท์เพื่อช่วยให้ผู้ใช้บริการสามารถค้นหาเซอร์วิส ที่ต้องการได้


                                    รูปที่ 2 โมเดลการทำงานของเว็บเซอร์วิส


มาตรฐานหลักของเว็บเซอร์วิส

                มาตรฐานหลักของการพัฒนาเว็บเซอร์วิสจะประกอบไปด้วยมาตรฐานต่างๆดังนี้ XML WSDL SOAP และ UDDI รายละเอียดของแต่ละมาตรฐานมีดังนี้


1.               Extensible Markup Language (XML)

XML เป็นมาตรฐานที่ทาง W3C (World Wide Web Consortium) ประกาศให้เป็นมาตรฐานของข้อมูลเมื่อเดือนกุมภาพันธ์ ปี 1998 โดย XML จะอยู่ในรูปของไฟล์ข้อความที่ใช้ Unicode และสามารถที่สร้างรูปแบบในการที่จะแสดงข้อมูลที่ซับซ้อนในรูปแบบของข้อความที่สามารถอ่านได้ง่าย ในปัจจุบัน XML ได้ กลายเป็นมาตรฐานสำคัญสำหรับการกำหนดโครงสร้างข้อมูล เนื้อหา และรูปแบบของข้อมูลของเอกสารอิเล็กทรอนิกส์ และยังมีการพัฒนาเพื่อให้สามารถแลกเปลี่ยนข้อมูลระหว่างหน่วยงาน โปรแกรมประยุกต์ ระบบ และอุปกรณ์ต่างผ่านทางอินเตอร์เน็ตได้อีกด้วย


2.               Simple Object Access Protocol (SOAP)

SOAP เป็นภาษา XML เพื่อทำหน้าที่เป็นโพรโทคอลข่าวสาร (Message Protocol) สำหรับการแลกเปลี่ยนข้อมูลระหว่างผู้ให้บริการและผู้ใช้บริการ โครงสร้างของ SOAP จะประกอบไปด้วย

·         SOAP Envelope: ใช้ในการอธิบายข่าวสาร ระบุเนื้อหา และกระบวนการจัดการข้อมูล

·         SOAP Transport: ใช้ในการอธิบายโพรโทคอลการส่งข้อมูลเช่น HTTP หรือ SMTP

·         SOAP Encoding: ใช้ในการอธิบายการเข้ารหัสเพื่อจับคู่ชนิดข้อมูล (data type) ที่ใช้ในโปรแกรมประยุกต์กับ XML elements

                โพรโทคอล SOAP เปรียบเสมือนจดหมายที่ใช้ในการสื่อสาร แต่ยังต้องใช้โพรโทคอลในการสื่อสารอื่นๆ เช่น HTTP ในการทำหน้าที่ส่งจดหมาย SOAP เป็นโพรโทคอลแบบข้อความ ซึ่งแตกต่างกับโปรโคคอล IIOP ของ CORBA หรือ JRMP ของ RMI ที่เป็นโพรโทคอลแบบไบนารี่ จึงทำให้ SOAP สามารถที่จะใช้ส่งข้อความข้ามแฟลตฟอร์ม และระบบต่างๆ ได้ และเวอร์ชันล่าสุดของ SOAP คือ 2.0


                การส่งข้อความ SOAP มีสองรูปแบบคือ SOAP-RPC และ SOAP message โดย SOAP-RPC ใช้ในการส่งข้อความเพื่อใช้เรียกเมธอดหรือ procedure ซึ่งโดยมากจะเป็นรูปแบบ synchronous โดย SOAP จะส่ง SOAP Request และข้อมูลต่างๆ เพื่อเรียกใช้เมธอดในการประมวลผล และจะรอให้ได้ผลลัพธ์การประมวลผลที่ส่งกลับมาแบบ SOAP Response ส่วน SOAP-message ใช้ในการส่งข่าวสารหรือข้อมูลในรูปแบบ XML ระหว่างผู้ให้บริการและผู้ใช้บริการ โดยสามารถส่งได้ทั้งแบบ Synchronous และ Asynchronous

3.Web Services Description Language (WSDL)

WSDL เป็นภาษา XML ที่ใช้อธิบายเว็บเซอร์วิส โดยจะแบ่งการอธิบายเว็บเซอร์วิสเป็นสองส่วนดังนี้

o    ส่วนที่เป็นนามธรรม (Abstract) เพื่ออธิบายโอเปอเรชัน (Operation) อินพุตและเอาท์พุตพารามิเตอร์

o    ส่วนที่เป็นรูปธรรม (Concrete) เพื่ออธิบายโพรโทคอลของเน็ตเวอร์ค ตำแหน่งของจุดปลายทาง (Endpoint Address) และ รูปแบบของข้อมูล

ในปัจจุบัน W3C ได้ออกข้อกำหนดสำหรับ WSDL เป็นเวอร์ชัน 2.0 แต่คำสั่งบางคำสั่งจะไม่สอดคล้องกับเวอร์ชัน 1.0 ดังนั้นการจะเรียกใช้ WSDL ควรมีการตรวจสอบว่าเครื่องมือที่ใช้พัฒนาสอดคล้องกับเวอร์ชันใดWSDL สามารถเปรียบเทียบได้กับ Java interface ที่ใช้ใน RMI หรือ ภาษา IDL (Interface Description Language) ที่ใช้ใน CORBA สำหรับ Distributed Computing

4.Universal Description, Discovery and Integration (UDDI)

                UDDI นิยามรูปแบบและกลไกสำหรับ registry ที่ใช้ในการเก็บและประกาศข้อมูลเกี่ยวกับเว็บเซอร์วิสในรูปแบบของภาษา XML โดยที่ UDDI จะ เปรียบเสมือนสมุดโทรศัพท์หน้าเหลืองที่องค์กรธุรกิจต่างๆ ใช้ระบุและโฆษณาหมายเลขโทรศัพท์ขององค์กรเพื่อให้ผู้ใช้โทรศัพท์ค้นหาได้ โดยทั่วไป Service Registry จะใช้ UDDI เป็นมาตรฐานเพื่อให้ผู้ให้บริการสามารถลงทะเบียนประกาศเว็บเซอร์วิสได้ และผู้ใช้บริการก็สามารถจะติดต่อกับ UDDI Registry เพื่อค้นหาเซอร์วิสที่ต้องการและเรียกใช้จากผู้ให้บริการต่อไป

                ข้อมูลใน UDDI จะประกอบไปด้วยรายละเอียดเกี่ยวกับองค์กร (businessEntity) รายละเอียดเกี่ยวกับเซอร์วิส (businessService) รายละเอียดเกี่ยวกับการติดต่อ (bindingTemplate) URLสำหรับการเรียกใช้เซอร์วิส (accessPoint) และข้อมูลอ้างอิงไปยัง WSDL (tModelInstanceInfo) มาตรฐาน UDDI ล่าสุดเป็นเวอร์ชัน 3.0   นอกจากนี้เรายังสามารถที่จะแบ่ง Registry ได้เป็นสองประเภทคือ public registry ซึ่งเป็น registry ที่เปิดให้ใช้ทั่วไปทั้งภายใน และภายนอกองค์กร กับ private registry ซึ่งเป็น registry ที่เปิดให้ใช้เฉพาะภายใน การควบคุมดูแล public registry จะเป็นไปได้ยากกว่า จึงทำให้องค์กรส่วนมากจะเริ่มต้นการพัฒนาจาก private registry ก่อน

5.มาตรฐานอื่นๆ ของเว็บเซอร์วิส

                มาตรฐาน WSDL SOAP และ UDDI เป็นเพียงมาตรฐานพื้นฐานของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสในทางปฏิบัติจำเป็นต้องพิจารณาเรื่องอื่นเช่น ความปลอดภัย Transaction หรือ Messaging เป็นต้น ดังแสดงในรูปที่ 3 ซึ่งแสดงตัวอย่างมาตรฐานเว็บเซอร์วิสอื่นๆ ตามฟังก์ชันของการทำงาน โดยจะมีมาตรฐานที่สำคัญ อาทิเช่น




รูปที่ 3 มาตรฐานต่างๆ ที่เกี่ยวข้องกับเว็บเซอร์วิส


·         WS-Addressing: มาตรฐานที่ใช้ร่วมกับ SOAP Header ในการระบุโพรโทคอลการสื่อสารและระบบข่าวสาร (Messaging Systems)

·         WS-Security: มาตรฐานที่เป็นโครงสร้าง (Framework) เพื่อเชื่อมต่อกับเทคโนโลยีระบบความปลอดภัยต่างๆ

·         SAML: Security Assertion Markup Language เป็นมาตรฐานที่ทาง OASIS กำหนดขึ้นเพื่อสนับสนุนการทำ Single Sign On (SSO) และ Authentication

·         WS-BPEL: มาตรฐานสำหรับการประกอบ (orchestration) กระบวนการทางธุรกิจ (Business Process) โดยใช้คำสั่งที่เป็นภาษา XML

·         WSRP: Web Services for Remote Portal มาตรฐานสำหรับการเรียกใช้ Web Services จากเว็บท่า (Portal)

การพัฒนา SOA โดยใช้เว็บเซอร์วิส

                แม้การพัฒนาสถาปัตยกรรมเชิงบริการ (Service Oriented Architecture หรือ SOA) ในยุคแรกจะสามารถทำได้โดยใช้เทคโนโลยีอื่นๆ อาทิเช่น CORBA, Java RMI และ DCOM หรือสามารถใช้ MOM (Message Oriented Middleware)เพื่อพัฒนา SOA ในรูปของการแลกเปลี่ยนข้อมูลของสถาปัตยกรรม EAI ที่นิยมใช้ทั่วไป แต่ในปัจจุบันการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิสเริ่มได้รับการยอมรับมากกว่าเทคโนโลยีอื่นๆ ด้วยเหตุผลดังนี้

·         เว็บเซอร์วิสอิงอยู่กับมาตรฐานที่เปิดเช่น SOAP WSDL UDDI และ มาตรฐานเว็บเซอร์วิสอื่นๆ ทำให้องค์กรต่างไม่จำเป็นที่จะต้องลงทุนกับโซลูชันที่ใช้เทคโนโลยีเฉพาะ และป้องกันการผูกขาดโดยผู้ผลิตรายใดรายหนึ่ง

·         เว็บเซอร์วิสสนับสนุนการเชื่อมโยงกับโซลูชันของผู้ผลิตต่างๆ ทำให้ช่วยลดต้นทุน

·         เว็บเซอร์วิสสนับสนุนการเชื่อมโยงระบบ แพลตฟอร์ม และโซลูชันต่างๆทั้งภายในองค์กร ระหว่างองค์กร และภายนอก


รูปที่ 4 แสดงตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส สร้างเซอร์วิสจากเทคโนโลยีที่ต่างกันคือ IMS, CORBA, Java EE และ Workflow โดยมีสถาปัตยกรรมแต่ละส่วนดังนี้

·         Business Service Tier : ประกอบด้วยเซอร์วิสที่พัฒนามาจากเทคโนโลยี IMS, CORBA และ โปรแกรม Workflow และมีเว็บเซอร์วิสที่พัฒนาโดยใช้เทคโนโลยีJava EE

·         Business Access Tier : จะมี Service Registry (เช่น UDDI) สำหรับการลงทะเบียนและค้นหาเว็บเซอร์วิส ดังนั้นจึงต้องมี Legacy gateways เพื่อแปลงเซอร์วิสที่ใช้เทคโนโลยีให้เป็นเว็บเซอร์วิสสำหรับIMS, CORBA และใช้ WebSphere MQ เพื่อแปลง Workflow ให้เป็นเว็บเซอร์วิส

·         Communication Infrastructure : จะใช้โพรโทคอล SOAP บน HTTP และ SOAP ที่ใช้มาตรฐาน WS-ReliableMessaging

·         Client/Presentation : ตัวอย่างนี้แสดงการใช้โปรแกรมแสดงผลที่พัฒนาโดยเทคโนโลยี .NET



                        รูปที่ 4 ตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส


การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา

การ พัฒนาเว็บเซอร์วิสสามารถแบ่งได้ตามบทบาทของผู้เกี่ยวข้องคือ การพัฒนาเพื่อเป็นผู้ให้บริการ การพัฒนาเพื่อเป็นผู้ใช้บริการ และการพัฒนาสำหรับ Service Registry เทคโนโลยีจาวาที่สามารถจะพัฒนาเว็บเซอร์วิสได้จะอยู่ในแพลตฟอร์มที่เป็น Java EE โดยใน Java EE 5 ได้กำหนดคำสั่ง API สำหรับภาษาจาวาในการเรียกใช้ XML ต่างๆ ดังนี้



·         JAX-WS (Java API for XML-Based Web Services) เป็นชุดคำสั่งภาษาจาวาเพื่อพัฒนาให้บริการเว็บเซอร์วิสและเรียกใช้เว็บเซอร์วิส โดยจะสนับสนุนมาตรฐานต่างๆของ W3C เช่น SOAP และ WSDL และสนับสนุนการส่งข้อมูลทั้งแบบ Asynchronous และ Synchronous พร้อมทั้งทำการ binding ข้อมูลโดยใช้ JAXB ดังนั้นนักพัฒนาโปรแกรมสามารถใช้ภาษาจาวาสร้างและเรียกเว็บเซอร์วิสได้ โดยไม่จำเป็นต้องพัฒนา SOAP หรือ WSDL เอง

·         JAXB (Java Architecture for XML Binding) เป็นชุดคำสั่งภาษาจาวาเพื่อทำการจับคู่ (mapping) ข้อมูลที่เป็นภาษา XML กับออปเจ็คที่เป็นจาวาคลาส

·         JAXP (Java API for XML Processing) เป็นชุดคำสั่งภาษาจาวาเพื่อแปล แปลง ตรวจสอบความถูกต้อง และค้นหา เอกสารหรือไฟล์ที่เป็นภาษา XML

·         SAAJ (SOAP with Attachments API for Java) เป็นชุดคำสั่งภาษาจาวาเพื่อสนับสนุนการส่งเอกสาร XML ผ่านอินเตอร์เน็ต

·         JAX-RPC (Java API for XML-Based RPC) เป็นชุดคำสั่งสำหรับพัฒนาเว็บเซอร์วิสเช่นเดียวกับ JAX-WS แต่จะใช้สำหรับ J2EE เวอร์ชัน 1.4 และสนับสนุน SOAP 1.1

·         WSIT (Web Services Interoperability Technology) เป็นชุดคำสั่งภาษาจาวาเพื่อเชื่อมโยงระหว่าง Java EE และ .NET 3.0 ช่วยในการพัฒนาโปรแกรมผ่านสถาปัตยกรรม SOA


สำหรับแพลตฟอร์ม Java SE จะมี API สำหรับ XML อยู่ในเวอร์ชัน 6 (Java SE 6) โดยจะมีชุดคำสั่ง JAX-WS 2.0 JAXB 2.0 และ SAAJ 1.3

                การพัฒนาเพื่อให้บริการเว็บเซอร์วิสจะต้องใช้แพลตฟอร์ม Java EE ซี่ง Server ที่เป็น Java EE จะมองการให้บริการเว็บเซอร์วิสเป็นเพียงพอร์ตหรือช่องทาง (channel)หนึ่งในการบริการเซอร์วิส ดังนั้นจึงไม่มีผลทำให้สถาปัตยกรรมเปลี่ยนไป และสามารถนำคอมโพเน้นท์ของ Java EE (เช่น Session Bean) ที่มีอยู่มาพัฒนาเป็นเว็บเซอร์วิสได้โดยง่าย นอกจากนี้การพัฒนาเว็บเซอร์วิสบนเทคโนโลยีจาวา ยังสามารถที่จะได้ใช้จุดเด่นของแพลตฟอร์ม Java EE ในด้านความปลอดภัย ความเชื่อมั่น (Reliability) และการรองรับผู้ใช้จำนวนมาก (Scalability)

                เว็บเซอร์วิสคือพอร์ตหนึ่งในแพลตฟอร์ม Java EE ซึ่งจะทำงานภายใน Java EE Container โดย container จะเป็น Runtime environmentของคอมโพเน้นท์ที่เป็นเว็บเซอร์วิส โดยมีคำสั่ง JAX-WS หรือ JAX-RPC ในการที่จะติดต่อกับ Runtime environment อีกชั้นหนึ่ง โดยทั่วไปเราสามารถที่จะสร้างคอมโพเน้นท์ของเว็บเซอร์วิสได้สองประเภทดังแสดงในรูปที่ 5 คือ

·         เว็บเซอร์วิสแบบWeb-tier (โดยใช้ Servlet endpoint) ตัวอย่างเช่น Tomcat หรือ Axis

·         เว็บเซอร์วิสแบบEJB-tier (โดยใช้ Session Bean endpoint) ตัวอย่างเช่น Sun Java Application Server


การพัฒนาเว็บเซอร์วิสสำหรับหน่วยงานขนาดเล็กอาจสามารถทำได้โดยใช้ เว็บเซอร์วิสแบบ Web-tier แต่หากต้องพัฒนาเพื่อรองรับผู้ใช้จำนวนมากจำเป็นต้องใช้ เว็บเซอร์วิสแบบ EJB-tier ดังนั้นผู้พัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาควรจะมีความเข้าใจเรื่อง Application Server และสามารถพัฒนา EJB ได้








รูปที่ 5 Java Web Service Components


แม้ หลักการของเว็บเซอร์วิส จะอิงอยู่กับมาตรฐานต่างๆ แต่การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยี จาวาสามารถทำได้โดยไม่ต้องพัฒนาโพรโทคอล SOAP หรือ WSDL โดยตรง นอกจากนี้ยังมีเครื่องมือเพื่อให้สามารถพัฒนาโปรแกรมได้โดยง่ายเช่น NetBeans 5.5 ผู้ที่สนใจจะพัฒนาเว็บเซอร์วิสโดยใช้ NetBeans

บทสรุป

เว็บเซอร์ วิสเป็นซอฟต์แวร์คอมโพเน้นท์ ที่ให้บริการผ่านเทคโนโลยีอินเตอร์เน็ตโดยใช้มาตรฐานเปิด มาตรฐานพื้นฐานของเว็บเซอร์วิสประกอบด้วย XML SOAP WSDL และ UDDI เว็บเซอร์วิสเป็นเทคโนโลยีที่เหมาะสมในการนำไปพัฒนา SOA ทั้ง นี้เนื่องจากใช้มาตรฐานเปิดและไม่ผูกติดอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง แต่การพัฒนาเว็บเซอร์วิสในทางปฏิบัติยังต้องคำนึงถึงมาตรฐานอื่นๆอีกมากเช่น เรื่องความปลอดภัย เราสามารถที่จะพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาได้ ซึ่งจะมีจุดเด่นในด้านความปลอดภัย ความเชื่อมั่น และความสามารถในการรองรับผู้ใช้จำนวนมาก




แหล่งที่มา :

http://www.thaijavadev.com/soa/articles/WSIntro/WSIntro.html

http://th.wikipedia.org/wiki_Web_Service

วันพฤหัสบดีที่ 7 มกราคม พ.ศ. 2559

อะไรคือ AngularJS

http://www.codecoo.com/wp-content/uploads/2014/01/AngularJS-large.png 

AngularJS คือ JavaScript Framework  รูปแบบหนึ่งที่พัฒนามาจาก Google หน้าที่ของมันคือเป็น engine ที่ใช้ควบคุมในส่วน front end ของเวบได้ดี ซึ่งดูแล้วมันอาจจะทำให้  Web Developer หลายๆคนเข้าถึงและจัดการส่วน front end ได้ง่ายขึ้นทั้งในเรื่อง ส่วนจัดการ template และ การ binding data object data แถมยังมีส่วนที่สามารถเขียน plugin เพิ่มเติมได้อีกด้วย  ส่วน plugin ถือเป็นจุดเด่นสุดของ jQuery ที่ประสบความสำเร็จมากในปัจจุบันหาก AngularJS มีวิธีการเขียนที่เป็น modularity ที่ดีและเข้าถึงง่าย คิดว่าในอนาคตของ framework ตัวนี้อาจจะเป็นที่นิยมในกลุ่ม  Web Developer ได้อย่างรวดเร็ว

จุดเด่นที่สำคัญของ AngularJS

1. พัฒนาโดย Google
เรามักจะเห็น Script และ Library  ส่วนใหญ่แล้วพัฒนามาจากโครงการที่เป็นชุมชุน  Open Source เป็นส่วนมาก ซึ่งแตกต่างกับ AngularJS ที่มีเหล่าวิศวะกรของทาง Google ดูแลและพัฒนา Feature ต่างๆอยู่เสมอพร้อมทั้งมีเอกสารพร้อมข้อมูลถามตอบ ปัญหาต่าง ให้เราสามารถค้นคว้าและแก้ปัญหาได้อย่างชัดเจนดีเยี่ยม  ซึ่งไม่ใช่ครั้งแรกที่ Google พัฒนาโครงการในลักษณะเช่นนี้ ก่อนหน้านี้ยังมีโครงการ  Web ToolKit   ซึ่งเป็นโครการแจกฟรี Web Component พร้อมเครื่องมือในการพัฒนา ตัว Web ToolKit นี้เองเป็นแกนหลักที่ใช้พัฒนา Google Wave ในสมัยนั้น แต่ไม่ค่อยได้รับความนิยมมากนักเพราะเบื้องหลังยังมีความยุ่งยากในการเขียน โปรแกรม เพราะเป็นการเขียนควบคุมโดยใช้ Java ซึ่งเป็น native code แล้ว compile เป็น script component ต่างๆให้เราเลือกใช้งาน การมาของ HTML5 CSS3 และ JavaScript .. ทำให้ Google ตระหนักว่าไม่จำเป็นต้องเขียนด้วยโค๊ด Java เพียงอย่าเดียว

2. เป็น framework ที่มี Model การเขียนที่ครอบคลุมและกว้างขว้าง
ดูเหมือนว่า AngularJS จะคล้ายกับ Backbone และ JavaScriptMVC  ซึ่งเป็นสูตรสำเร็จของ Library ที่เป็นเครื่องมือในการพัฒนา web application ในส่วน front end ทำให้การพัฒนาสะดวกและรวดเร็วขึ้น แต่ที่ AngularJS แตกต่างออกมาคือ
  • –  ง่ายต่อการเชื่อมต่อ  Restful Service ต่างๆ  เพราะ Angular มีส่วนจัดการ JavaScript Object ,การเชื่อมต่อ Data Model  ได้สะดวกและง่ายๆเพียงไม่กี่บรรทัด one line of JavaScript
    –  MVVM (Model View View-Model) pattern เป็น model ที่ช่วยเหลือในส่วนของการเชื่อมโยงต่อส่วนต่างๆ โดยการสร้าง controller พร้อม render data model เข้ากับส่วนแสดงผลหรือ view เข้าด้วยกัน
  • –  ส่วน Data Binding และ Dependency Injection  โดยปกติแล้ว  MVVM pattern จะทำการเชื่อมส่วน Data และส่วน UI โดยอัตโนมัติอยู่แล้ว AngularJS จะตัวช่วยโดยใช้ JavaScript Primitive ลักษณะคล้าย Array ในการจัดการส่วนการแสดงข้อมูลต่าง ไม่ว่าจะซับซ้อนขนาดไหน เพราะมันสามารถกำหนดตัวแปรได้เองอิสระไม่จำเป็นต้องจำเพาะอยู่ที่ main() ที่เดียว
  • –   Extends HTML   AngularJS มีตัวช่วยในการจัดการ HTML ได้เสมือน XML โดยการเขียน module เสริมเพิ่มเติมเข้าไปจัดการ DOM Object เช่น tag <div>  จัดการโดย HTML Compiler โดยใช้ directives ของ Angular
  • –   Makes HTML your Template  ตัว AngularJS มีส่วนจัดการ Template โดยใช้ bracket syntax ( {{}} ) คล้ายๆ Mustache หรือ Hogan.js
  • –   Enterprise-level Testing  AngularJS ไม่จำเป็นต้องลงส่วนเสริมหรือ plugin เพิ่มเติมในการทำ Testing เพราะมันมีตัว Scenario Runner พร้อมใช้งานทำ Unit Testing อยู่แล้ว

3. ง่ายต่อการเรียนรู้และเริ่มต้นใช้งาน
ครั้งต่อไปเราจะมีทำ Workshop กันนะครับ


ที่มา : http://www.codecoo.com


วันอังคารที่ 6 ตุลาคม พ.ศ. 2558

กระบวนการ SDLC

  กระบวนการ SDLC มี 5 ขั้นตอน
1. Planning Phase เป็นขั้นตอนที่จะใช้กำหนดปัญหาที่ต้องเข้าไปแก้ เริ่มศึกษาความเป็นไปได้ ความคุ้มทุนของโครงการ เริ่มร่างแผนงานกำหนดระยะเวลาการทำงานตลอด Project รวมไปถึงการฟอร์มทีมที่เหมาะสมขึ้นมา และประกาศ Official Announcement.

2. Analysis Phase ขั้นตอนนี้เริ่มให้ SA และทีมงานคนอื่นที่เกี่ยวข้อง ไปเรียนรู้และทำความเข้าใจกับปัญหา (ปัญหานำมาซึ่งการมี IS ถ้าองค์กรยังพอใจกับระบบเดิมอยู่จะไม่เกิด IS) กำหนดกรอบความต้องการ อาจจะสร้าง UI ไปให้ลูกค้าที่จะให้งานดูหน่อยว่าตรงความต้องการหรือไม่ แล้วนำความต้องการที่ได้มาทั้งหมดมาจัดอันดับความสำคัญ ถ้าวิเคราะห์ออกมาแล้วไม่สามารถทำได้อาจจะใช้ทางเลือกอื่น (ซื้อมาใช้ เป็นต้น) และก็นำเสนอในที่ประชุม

3.Design Phase ออกแบบ ระบบเน็ตเวิร์ค ตัวโปรแกรมหลัก โปรแกรมย่อย GUI และ database ซึ่งการออกแบบเหล่านี้จะมีการใช้โปรแกรมที่ช่วยในการออกแบบโมเดลต่างๆ อยู่ เช่น Magic Draw จากนั้นสร้าง Prototype จากการออกแบบที่กำหนดมา และออกแบบส่วนควบคุม

4.Implementation Phase ทำการสร้างระบบขึ้นมา ( coding) ทดสอบความถูกต้องของข้อมูลที่เป็นผลลัพธ์ของระบบ และถ้ามีข้อมูลเก่าอาจจะต้อง Export และ Convert มาให้เข้ากับ ระบบใหม่ และเริ่มอบรมการใช้งานตัวระบบให้กับผู้ที่เกี่ยวข้อง(ลูกค้า) และนำไปติดตั้งใช้งานจริง

5.Support Phase หรือ Maintenance บริการหลังการขาย อาจจะมีการ Update Patch เล็กน้อยเพื่อแก้ Bug ที่ของโปรแกรม หรือ อาจจะเป็นการอัพเกรดที่สำคัญ เช่น การเพิ่มความสามารถของระบบ อยากเพิ่มส่วนงานไปยังแผนกอื่น สุดท้ายคือ บริการให้คำปรึกษา หรือ ซ่อมระบบเมื่อมีปัญหา

วันจันทร์ที่ 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