วันเสาร์ที่ 21 มิถุนายน พ.ศ. 2551

จาวา

Summary
จาวา (Java) คืออะไร ? ถ้าเราดูความหมายของคำว่า จาวา จะมีความหมายหลายอย่าง ได้แก่

  • ภาษาจาวาที่ใช้เขียนโปรแกรมจาวา
  • Java platform ที่ใช้ในการรันโปรแกรมจาวา
  • เครื่องดื่มกาแฟ (แสลงในภาษาอังกฤษ) นี่เป็นเหตุผลว่าทำไมเรามักเห็นปกหนังสือจาวามีแก้วกาแฟอยู่เสมอ
  • เกาะชวาในประเทศอินโดนิเซีย (เกาะชวา จะเขียนในภาษาอังกฤษเป็น Java)

ความหมายที่เราคุ้นเคยก็คงจะเป็นภาษาจาวาและ Java platform ที่รันโปรแกรมจาวา แต่ถ้าเรามองจาวาในมุมกว้าง จาวาจะเป็น technology ที่ใช้ในการพัฒนาโปรแกรมแบบต่าง ๆ ซึ่งได้แก่ application, applet, web application (servlet & JSP), EJB, และ midlet โดยโปรแกรมเหล่านี้จะมีลักษณะพิเศษที่ต่างจากโปรแกรมที่เขียนขึ้นในภาษาอื่น อย่าง C หรือ C++ คือสามารถทำงานได้หลาย platform* (อย่างเช่น Windows, Solaris, Linux) โดยไม่จำเป็นต้องเขียนใหม่ หรือ compile ใหม่ ทำให้เราสามารถใช้โปรแกรมเดิมที่เคยพัฒนามาแล้วบน platform หนึ่งไปใช้งานบน platform อื่น ๆ ได้โดยง่าย ซึ่งช่วยประหยัดเวลาและทรัพยากรในการที่จะทำให้โปรแกรมหนึ่งทำงานได้มากกว่าหนึ่ง platform ตัวอย่างเช่น ถ้าเราเขียนโปรแกรมจาวาขึ้นมาบน Windows โปรแกรมที่เราเขียนขึ้นนี้ก็สามารถที่จะทำงานบน Solaris, Linux หรือ Mac ได้โดยไม่ต้องแก้ไขอะไรเลย ไม่ต้อง compile ใหม่ เราสามารถนำ class files ของโปรแกรมที่เราเขียนขึ้นไปใช้งานบน platform อื่น ๆ ได้ทันที


เทคโนโลยีจาวา มีองค์ประกอบหลักที่สำคัญสองอย่าง ที่ทำให้โปรแกรมจาวาสามารถทำงานได้มากกว่าหนึ่ง platform คือ

  • ภาษาจาวา ซึ่งเป็นภาษาแบบวัตถุที่ใช้ในการเขียนและพัฒนาโปรแกรมจาวา
  • Java platform คือ platform หรือสภาพแวดล้อมที่ใช้ในการรันโปรแกรมจาวา โปรแกรมจาวาจะทำงานบน Java platform เท่านั้น Java platform จะประกอบไปด้วยสองอย่าง คือ Java VM (JVM) และ runtime library โปรแกรมจาวาที่เราเขียนขึ้นจะทำงานบน platform ใดก็ได้ที่มี Java platform ทำงานอยู่

ทำไมหลายคนถึงเลือกใช้จาวา ? จาวามีข้อดีหลัก ๆ อยู่หลายข้อ ดังนี้

  • โปรแกรมจาวาที่เขียนขึ้นสามารถทำงานได้หลาย platform โดยไม่จำเป็นต้องแก้ไขหรือ compile ใหม่ ทำให้ช่วยลดค่าใช้จ่ายและเวลาที่ต้องเสียไปในการ port หรือทำให้โปรแกรมใช้งานได้หลาย platform
  • ภาษาจาวาเป็นภาษาเชิงวัตถุ ซึ่งเหมาะสำหรับพัฒนาระบบที่มีความซับซ้อน การพัฒนาโปรแกรมแบบวัตถุจะช่วยให้เราสามารถใช้คำหรือชื่อ ต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ ทำให้เข้าใจได้ง่ายขึ้น
  • ภาษาจาวามีความซับซ้อนน้อยกว่าภาษา C++ ทำให้ใช้งานได้ง่ายกว่าและลดความผิดพลาดได้มากขึ้น
  • ภาษาจาวามีการตรวจสอบข้อผิดพลาดทั้งตอน compile time และ runtime ทำให้ลดข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม และช่วยให้ debug โปรแกรมได้ง่าย
  • ภาษาจาวาถูกออกแบบมาให้มีความปลอดภัยสูงตั้งแต่แรก ทำให้โปรแกรมที่เขียนขึ้นด้วยจาวามีความปลอดภัยมากกว่าโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น
  • มี IDE, application server, และ library ต่าง ๆ มากมายสำหรับจาวาที่เราสามารถใช้งานได้โดยไม่ต้องเสียค่าใช้จ่าย ทำให้เราสามารถลดค่าใช้จ่ายที่ต้องเสียไปกับการซื้อ tool และ s/w ต่าง ๆ


อย่างไรก็ตาม จาวาเองก็มีข้อเสียอยู่ด้วยเหมือนกัน ได้แก่

  • ทำงานได้ช้ากว่า native code (โปรแกรมที่ compile ให้อยู่ในรูปของภาษาเครื่อง) หรือโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น อย่างเช่น C หรือ C++ ทั้งนี้ก็เพราะว่าโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจะถูกแปลงเป็นภาษากลางก่อน แล้วเมื่อโปรแกรมทำงานคำสั่งของภาษากลางนี้จะถูกเปลี่ยนเป็นภาษาเครื่องอีกทีหนึ่ง ทีล่ะคำสั่ง (หรือกลุ่มของคำสั่ง) ณ runtime ทำให้ทำงานช้ากว่า native code ซึ่งอยู่ในรูปของภาษาเครื่องแล้วตั้งแต่ compile โปรแกรมที่ต้องการความเร็วในการทำงานจึงไม่นิยมเขียนด้วยจาวา
  • tool ที่มีในการใช้พัฒนาโปรแกรมจาวามักไม่ค่อยเก่ง ทำให้หลายอย่างโปรแกรมเมอร์จะต้องเป็นคนทำเอง ทำให้ต้องเสียเวลาทำงานในส่วนที่ tool ทำไม่ได้ ถ้าเราดู tool ของ MS จะใช้งานได้ง่ายกว่า และพัฒนาได้เร็วกว่า (แต่เราต้องซื้อ tool ของ MS และก็ต้องรันบน platform ของ MS)

*platform คือสภาพแวดล้อมที่โปรแกรมทำงานอยู่ ส่วนมากเราจะพูดถึง platform หนึ่ง ๆ โดยอิงจากระบบปฏิบัติการที่ใช้ (operating system) และ hardware ที่ใช้ อย่างเช่น

  • Windows platform จะหมายถึงสภาพแวดล้อมที่โปรแกรมทำงานบนระบบปฏิบัติการ Windows ซึ่งทำงานโดยใช้ CPU x86 ของ Intel
  • Linux platform จะหมายถึงสภาพแวดล้อมที่โปรแกรมทำงานบนระบบปฏิบัติการ Linux ซึ่งทำงานโดยใช้ CPU ตระกูล x86 ของ Intel
  • Solaris/SPARC platform จะหมายถึงสภาพแวดล้อมที่โปรแกรมทำงานบนระบบปฏิบัติการ Solaris ซึ่งทำงานโดยใช้ CPU SPARC
  • Solaris/x86 platform จะหมายถึงสภาพแวดล้อมที่โปรแกรมทำงานบนระบบปฏิบัติการ Solaris ซึ่งทำงานโดยใช้ CPU ตระกูล x86 ของ Intel

Directory Server

Directory ServerในโปรโตคอลLDAPนี้จะมีระบบการทำงานที่เป็นการบริหารงานจากส่วนกลางในส่วนกลางนี้จะมีการแบ่งหน้าที่การทำงานอกเป็นส่วน ๆ (เปรียบเทียบได้กับสมุดหน้าเหลืองที่มีการเก็บข้อมูลไว้เป็นหมวดหมู่) เมื่อผู้ใช้ (Client หลาย ๆ เครื่อง) ต้องการเข้ามาใช้งานในส่วนที่ต้องการ LDAP Server ก็จะกระจายข้อมูลไปให้ Client ได้อย่างรวดเร็ว เมื่อClient ต้องการค้นหาข้อมูลก็สามารถทำได้อย่างสะดวกรวดเร็วได้เช่นกันจะเห็นได้ว่าDirectoryจะทำงานคล้ายกับฐานข้อมูลที่มีการจำกัดชนิดของข้อมูลที่จะทำการเก็บลงใน Directory ข้อมูลที่จะทำการเก็บลงจะต้องมีการตรวจสอบความถูกต้องด้วย แต่ความจริงแล้ว Directory มีความแตกต่างจากฐานข้อมูลตรงที่ Directory จะมีการใช้งานอย่างไม่จำกัดเตรียมรับกับสถานการณ์ที่ Client เข้ามาใช้งานมาก ๆ เครื่อง Server ที่ให้การบริการอยู่ก็สามารถรองรับการทำงานได้ จะเห็นได้ว่าในปัจจุบันนี้ในองค์กรต่าง ๆ ได้มีการนำ Directory Server มาใช้กันอย่างแพร่หลาย เพราะสามารถควบคุมการเข้าใช้งานในระบบต่าง ๆ ในการเข้าถึงข้อมูลของ Server รวมถึงการรักษาความปลอดภัย แต่ Directory Server จะเหมาะกับงานที่มีการอ่านมากกว่าการบันทึกข้อมูล Directory จึงออกแบบมาให้สามารถรองรับการทำงานจาก Client ได้หลาย ๆ แพลทฟอร์ม ได้พร้อม ๆ กัน

Mail server

คือ เครื่องบริการรับ-ส่งจดหมายสำหรับสมาชิก บริการที่มีให้ใช้เช่น ส่งจดหมาย รับจดหมาย ส่ง attach file หรือการมี address book เป็นต้น ตัวอย่าง mail server ที่เป็นที่รู้จักทั่วไป เช่น hotmail.com หรือ thaimail.com เป็นต้น

Web server

คือ บริการ HTTP(HyperText Transfer Protocol) เพื่อให้ผู้ใช้สามารถอ่านข้อมูล ทั้งภาพ และเสียง จากเครื่องบริการ ผ่าน Browser เช่นบริการ http://www.thaiall.com หรือ http://localhost เป็นต้น
เครื่องบริการ ที่รอรับคำร้องขอจาก web browser ข้อมูลที่จะส่งไปอาจเป็นเว็บเพจ ภาพ หรือเสียง เป็นต้น สำหรับโปรแกรมที่ได้รับความนิยม ให้นำมาเปิดบริการ web คือ Apache web server หรือ Microsoft web server

Application Server

Application Server คือ Server ที่รันโปรแกรมประยุกต์ได้ด้วย โดยการทำงานสอดคล้องกับ Cliente เช่น Mail Server (รัน MS Exchange Server) Proxy Server (รัน Proxy Server) หรือ Web Server (รัน Web Server Program เช่น Xitami , Apache )

File server

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

Client / Server Network

เป็นระบบการทำงานแบบ Distributed Processing หรือการประมวลปลแบบกระจายโดยจะแบ่งกันประมวลผลระหว่าง เครื่องเซร์ฟเวอร์กับเครื่องเวิร์กสเตชั่น แทนที่ Applications จะวิ่งทำงานอยู่เฉพาะเครื่องเซิร์ฟเวอร์ ก็แบ่งการคำนวนของโปรแกรม Applications มาทำงานบนเครื่องเวร์กสเตชั่นด้วย และเมื่อใดที่เครื่องเวอรืกสเตชั่นต้องการผลลัพฑ์ของข้อมมูลบางส่วน จะมีการเรียกใช้ไปยังเครื่องเซิร์ฟเวอร์เพื่องให้เซิร์ฟเวอร์นำเฉพาะข้อมูลบางส่วนเท่านั้นส่งกลับมาให้เครื่องเวิร์กสเตชั้น เพื่อทำการคถำนวนข้อมูลนั้นต่อไป