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