วันอาทิตย์ที่ 13 มีนาคม พ.ศ. 2554

ความเป็นมาของ Java

มารู้จักความเป็นมาของ Java กัน 


     ภาษาใหม่ที่มาแรงที่สุดในปัจจุบัน คงจะไม่มีภาษาไหนที่เทียบได้รับภาษาจาวาซึ่งได้รับการพัฒนาขึ้นโดยบริษัทซันไมโครซิสเตมส์ ในปี 1991 โดยมีเป้าหมายที่จะสร้างผลิตภัณฑ์อิเล็กทรอนิกส์สำหรับผู้บริโภคที่ง่ายต่อการใช้ง่าย มีค่าใช้จ่ายต่ำ ไม่มีข้อผิดพลาด และสามารถใช้กับเครื่องใด ๆ ก็ได้ ซึ่งสิ่งเหล่านี้ก็ได้กลายเป็นข้อดีของจาวาที่เหนือกว่าภาษาอื่น ๆ โดยเฉพาะอย่างยิ่ง การที่โปรแกรมซึ่งเขียนขึ้นด้วยจาวาสามารถนำไปใช้กับเครื่องต่าง ๆ โดยไม่ต้องทำการคอมไพล์โปรแกรมใหม่ ทำให้ไม่จำกัดอยู่กับเครื่องหรือโอเอสตัวใดตัวหนึ่ง แม้ว่าการใช้งานจาวาในช่วงแรกจะจำกัดอยู่กับ World Wide Web (WWW) และ Internet แต่ในปัจจุบันได้มีการนำจาวาไปประยุกต์ใช้กับงานด้านซอฟต์แวร์ต่าง ๆ อย่างมากมาย ตั้งแต่ซอฟต์แวร์อรรถประโยชน์ (Utility) ไปจนกระทั่งซอฟต์แวร์ขนาดใหญ่ เช่น โปรแกรมชุดจากบริษัท Corel ซึ่งประกอบด้วยโปรแกรมหลัก ๆ คือ โปรแกรมเวิร์ดโปรเซสชิ่ง สเปรดซีต พรีเซนเตชั่น ที่เขียนขึ้นด้วยจาวาทั้งหมด
จาวายังสามารถนำไปใช้เป็นภาษาสำหรับอุปกรณ์แบบฝังต่าง ๆ เช่น โทรศัพท์ และอุปกรณ์ขนาดมือถือแบบต่าง ๆ เป็นต้น รวมทั้งยังได้รับความนิยมนำไปใช้กับอุปกรณ์ที่ใช้สำหรับเข้าสู่อินเตอร์เน็ตโดยไม่ต้องใช้คอมพิวเตอร์ นอกจากนี้แล้ว จาวายังเป็นภาษาที่ถูกใช้งานในคอมพิวเตอร์แบบเอ็นซี (NC) ซึ่งเป็นคอมพิวเตอร์แบบใหม่ล่าสุด ที่เน้นการทำงานเป็นเครือข่ายว่า แอพเพลต (applet) ที่ต้องการใช้งานขณะนั้นมาจากเครื่องแม่ ทำให้การติดต่อสื่อสารสารผ่านเครือข่ายใช้ช่องทางการสื่อสารน้อยกว่าการดึงมาทั้งโปรแกรมเป็นอย่างมาก
     ผู้คิดต้นแบบ คือ James Gosling และคณะ จากบริษัท Sun Microsystems

วัตถุประสงค์เดิม คือ ของ จาวาคือใช้สำหรับการเขียนโปรแกรมเพื่อฝังตัวในอุปกรณ์อิเล็กทรอนิกส์



ผล คือ ภาษาสำหรับเขียนโปรแกรม (Application Programming) ซึ่งเป็นลักษณะของโปรแกรมเชิงวัตถุ (Object Oriented Programming) ซึ่งสามารถใช้งานบนเว็บได้ด้วย

การพัฒนาการในช่วงเวลาต่าง ๆ
่ปี 1991 ได้ทำการวิจัยเพื่อพัฒนาซอฟต์แวร์ที่ใช้ควบคุมอุปกรณ์เล็กทรอนิคขนาดเล็ก ซึ่งได้ผลลัพธ์ที่สำคัญคือ ภาษาโอ๊ค (Oak)  
ปี 1993 ภาษาโอ๊คได้ถูกปรับปรุงใหม่เพื่อใช้ในการสร้างเว็บแอพพลิเคชั่น (web application) พร้อมกับสร้างเว็บเบราว์เซอร์ (web browser) ที่รองรับ ชื่อว่าเว็บรันเนอร์ (WebRunner)
ปี 1995
- บริษัทซันได้เปิดตัวภาษาจาวา (Java) (ภาษาโอ๊คเดิม) พร้อมกับเว็บเบราว์เซอร์ ที่รองรับภาษานี้ ชื่อว่าฮอตจาวา (HotJava) (WebRunner เดิม)
- ได้รับการสนับสนุนจากบริษัทใหญ่ทั้งเน็ตสเคบ (Netscape), ไมโครซอฟต์ (Microsoft), และ ไอบีเอ็ม (IBM)
- บริษัทซันได้เริ่มแจกจ่าย Java development Kit (JDK) ซึ่งเป็นชุดพัฒนาโปรแกรมภาษาจาวาในอินเตอร์เน็ต
ชุดคำสั่งที่ผู้ใช้งานเขียนขึ้นเพื่อให้เครื่องคำนวณ (Computer) ทำงานตามลำดับขั้นตอนที่ผู้ใช้ต้องการ

ชุดคำสั่งหรือภาษาเขียนที่ใกล้เคียงกับการทำงานของ เครื่องคอมพิวเตอร์มากที่สุด คือ ภาษาเครื่อง (Machine Language)

ภาษาระดับสูง (High Level Language) ที่ใกล้เคียงกับภาษาที่มนุษย์ใช้ในชีวิตประจำวัน ได้แก่ Assembly, COBOL, Pascal, C, C++, Java ฯลฯ ซึ่งในแต่ละภาษาต้องมีตัวแปลภาษา (Translator) เพื่อแปลงชุดคำสั่งเป็นภาษาเครื่องอีกรอบหนึ่ง

ตัวแปลภาษาดังกล่าวมี 2 สองประเภท คือ คอมไพเลอร์ (Compiler)และอินเตอร์พรีเตอร์ (Interpreter)





ภาษาเชิงกระบวนคำสั่ง
(Procedural Programming)

กำหนดตัวแปร (Variable) เพื่อจองเนื้อที่ในหน่วยความจำและเตรียมเนื้อที่ในการจัดเก็บข้อมูล

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

พัฒนาการของภาษาจาวา

ปลายปี ค.ศ. 1995

ผู้คิดต้นแบบ คือ James Gosling และคณะ จากบริษัท Sun Microsystems

วัตถุประสงค์เดิม คือ Oak สำหรับการเขียนโปรแกรมเพื่อฝังตัวในอุปกรณ์อิเล็กทรอนิกส์

ผล คือ ภาษาสำหรับเขียนโปรแกรม (Application Programming) ซึ่งเป็นลักษณะของโปรแกรมเชิงวัตถุ (Object Oriented Programming) ซึ่งสามารถใช้งานบนเว็บได้ด้วย

Java 2 SDK Standard Edition หรือ J2SDK ประกอบด้วย features ต่าง ๆ Class Libraries หรือที่เรียกว่า Application Programmer Interfaces หรือ APIs

การเขียนโปรแกรมเชิงวัตถุ
(Objected Oriented Programming)

ผู้พัฒนาต้องมีวิสัยทัศน์เชิงวัตถุ เพื่อหาความต่างของวัตถุแต่ละอย่างหรือคุณลักษณะประจำ (Attribute) ออกมา ขณะเดียวกันต้องพิจารณาพฤติกรรม (Method) ของวัตถุ และนำมาเขียนเป็นคลาส (Class) คลาสจะเป็นแม่แบบหรือพิมพ์เขียวใน การสร้างวัตถุ (Object) หรือ Instance ให้เกิดขึ้นและมีชีวิตในระบบ โดย Object ที่สร้างจะมีรายละเอียดที่ต่างกันไป

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

หลักที่สนับสนุนการโปรแกรมเชิงวัตถุ

ความสามารถในการสืบทอด (Inheritance) เป็นการสืบทอดคุณสมบัติของคลาส โดยสร้างคลาสหลักซึ่งมีคุณสมบัติต่าง ๆ โดยรวมที่คลาสอื่นจำเป็นต้องมี จากนั้นจึงสร้างคลาสอื่นขึ้นมา เพื่อรับการถ่ายทอดคุณสมบัติทั้งหมดจากคลาสหลักโดยอัตโนมัติ โดยไม่ต้องสร้างขึ้นใหม่ และสามารถสร้างคุณสมบัติอื่น ๆ นอกจากคลาสหลักขึ้นได้

ความสามารถในการเก็บซ่อน (Encapsulation) เป็น การซ่อนส่วนของการทำงานภายในที่ไม่เกี่ยวข้องกับภายนอกไว้โดยผ่านคลาส เพื่อไม่ให้ผู้นำคลาสไปใช้เห็น หรือทราบรายละเอียดขั้นตอนการทำงานของคลาส เพื่อไม่ให้มี การแก้ไขเปลี่ยนแปลงส่วนที่ซ่อนไว้ ผู้นำคลาสไปใช้จะดัดแปลงได้เฉพาะส่วนที่อนุญาตเท่านั้น

ความสามารถในการแปลงร่าง (Polymorphism) 

ไม่จำเป็นต้องสืบทอดคุณสมบัติทุกอย่างเสมอไป เนื่องจากการแก้ไขลำดับการทำงานของฟังก์ชันเดิม ทำให้เสียเวลาในการตามแก้ไข ทางที่ดี คือ อนุญาตให้มีการเขียนชุดคำสั่งใหม่ภายใต้ชื่อฟังก์ชันเดิมที่มี ตัวอย่างเช่น การ Save To File ของ Memo จะได้ Text File ที่เก็บข้อความนั้น ขณะที่ Save To File ของ Image จะได้ไฟล์รูปภาพ

ความสามารถในการจัดโครงสร้างแบบเชิงนาม (Abstract) 

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

ข้อดีของการพัฒนาโปรแกรมด้วยจาวา

ง่าย เนื่องจากเลียนแบบภาษา C/C++ ไม่มีคำสั่ง GOTO และ pointer

เป็นภาษาเชิงวัตถุที่สมบูรณ์

Automatic type coercion

มีการป้องกันการผิดพลาด (Robust) การกำจัดสิ่งที่ไม่ใช้ (Garbage Collection) แบบอัตโนมัติ และการจัดการความผิดพลาด (Exception Handling) แบบอัตโนมัติ

Strongly typed => type checking => type casting

มีความปลอดภัยในการที่จะประมวลผล (Secure) โดยไม่ทำลายทรัพยากรของเครื่อง :- sandbox model

Multithread ใน java.lang :- ความสามารถในการประมวลผลหลายงานพร้อมกัน

Architecture neutral and portable :- สามารถเคลื่อนย้ายได้ง่าย รวมทั้งใช้งานในสภาวะแวดล้อมที่ต่างกัน และใช้กับคอมพิวเตอร์ได้ทุกระบบ (Multi Platform) โดยไม่ต้องปรับแต่ง

การเชื่อมโยงแบบพลวัต (Dynamic Link) และการประมวลผลแบบกระจาย (Distributed) ในระบบเครือข่าย



พื้นฐาน Java กับการใช้ Edit Plus
รายละเอียดของไดเรกทอรี
         bin เป็นไดเรกทอรีที่เก็บโปรแกรมที่ใช้คอมไพล์ หรือโปรแกรมที่เกี่ยวข้องกับการคอมไพล์และการทดสอบโปรแกรมภาษา Java
         demo เป็นตัวอย่างโปรแกรมภาษา Java และ Source Code
         include เก็บไฟล์ header ในภาษา C ใช้ในกรณีผู้เขียนโปรแกรมต้องการเพิ่มการใช้งาน header ภาษา C ในโปรแกรมภาษา Java
         jre เก็บคอมโพเนนต์ที่ใช้สำหรับการรันโปรแกรม Java ซึ่งรวมถึง Java Virtual Machine คลาส และ package Libraries ต่าง ๆ ที่จำเป็นในการทำงานของคอมไพเลอร์
         Lib เก็บคลาสและ package เพิ่มเติมอื่น ๆ ของ Java
Java Servlet API :-
ชุดที่รวบรวมกลุ่มคลาสที่สนับสนุน การทำงานที่เกิดขึ้นบนเซิร์ฟเวอร์เป็นส่วนใหญ่ โดยให้เซิร์ฟเวอร์และไคลเอนต์สื่อสารกันด้วยโปรโตคอล HTTP (Hyper Text Transfer Protocol)



Java Server Page : JSP 
เป็นรูปแบบการทำงานในฝั่งเซิร์ฟเวอร์เหมือนกับจาวา เซิร์ฟเล็ต แต่ผู้สร้างสามารถเขียนคำสั่งเจเอสพีลงในไฟล์เว็บได้โดยตรง ผิดกับจาวาเซิร์ฟเล็ต ซึ่งผู้สร้างต้องเขียนคำสั่งจาวาในแบบเซิร์ฟเล็ต แล้วคอมไพล์เป็นเซิร์ฟเล็ตไว้ใช้งาน

Java 3D API
:- รูปแบบ API หนึ่งที่ถูกใช้งานสำหรับการใช้งานเกี่ยวข้องระบบสามมิติ โดยสามารถช่วยให้โปรแกรมเมอร์สร้างภาพหรือสภาวะแวดล้อมแบบสามมิติได้ด้วยภาษาจาวา

Java RMI API
:- ชุดสำหรับให้โปรแกรมเมอร์นำมาใช้งาน เพื่อวัตถุประสงค์ในการสร้างโปรแกรมที่มีการติดต่อสื่อสารกัน

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

Java Swing
:- ชุด API เพื่อสนับสนุนการกำหนดอินเตอร์เฟส ซึ่งประกอบด้วยคอมโพเนนต์ต่าง ๆ มากมายให้เลือกใช้ เช่น JTextBox, JButton, JPanel, JRadio เป็นต้น

JDBC Data Access
:- ชุด API ที่โปรแกรมเมอร์ภาษาจาวาสามารถสร้างแอพพลิเคชั่นหรือแอปเพล็ตเพื่อติดต่อกับฐานข้อมูลด้วย JDBC Driver เพื่อเข้าไปถึงระบบฐานข้อมูลเชิงสัมพันธ์จากผลิตภัณฑ์ได้หลากหลาย เช่น Oracle, SQL Server, Informix, DB2, mySQL โดยใช้คำสั่ง SQL ซึ่งเป็นคำสั่งที่ทุกระบบฐานข้อมูลสนับสนุน

ข้อกำหนดเบื้องต้นในการเขียนโปรแกรม

1. แต่ละประโยคต้องจบด้วยเครื่องหมาย ; เสมอ
2. สัญลักษณ์อื่นที่ใช้แยกข้อความหรือคำสั่งอีก เช่น
( ) ใช้สำหรับแยกลำดับในการประมวลผล
{ } ใช้สำหรับแยกชุดคำสั่ง หรือรวมชุดคำสั่งเป็นบล็อก
, ให้ความต่อเนื่องในการทำงาน เช่น การกำหนด ตัวแปรที่มีประเภทข้อมูลแบบเดียวกัน
. ใช้ในการแยก package กับ class หรือ object กับ method

หลักเกณฑ์การตั้งชื่อต่าง ๆ เช่น ชื่อ class, ชื่อ data, ชื่อ method และชื่อตัวแปร
«ประกอบด้วยตัวอักษรภาษาอังกฤษ ตัวเลข และสัญลักษณ์ _ หรือ $ เช่น age, int2float, _name$ เป็นต้น
«ความยาวไม่ควรเกิน 65535 ตัวอักษร
«ไม่ควรใช้ตัวเลขเป็นตัวแรก เช่น 101database, 2name
«ไม่ควรใช้ช่องว่าง (spaces) หรือ . (periods)
«ตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ถือว่าต่างกัน เช่น Count, count และ CoUnT ถือว่าเป็นคนละชื่อ
«ต้องไม่ตรงกับคำศัพท์สงวน (Key Word) ในภาษาจาวา
«ชื่อ class ควรขึ้นต้นด้วยตัวพิมพ์ใหญ่ ส่วนที่เหลือเป็นตัวเล็ก
«ชื่อ data หรือตัวแปรควรเป็นตัวพิมพ์เล็กทั้งหมด
«ชื่อค่าคงที่ควรเป็นตัวพิมพ์ใหญ่ทั้งหมด
«ชื่อ method คำแรกควรเป็นตัวเล็กทั้งหมด คำถัดไปตัวแรกควรเป็นตัวพิมพ์ใหญ่ ที่เหลือจึงเป็นตัวเล็ก เช่น setCount, testFirst เป็นต้น

คำศัพท์สงวน (Key Word) ในภาษาจาวา 



การเขียนหมายเหตุ (Comment) สามารถทำได้ 3 รูปแบบ คือ 
//single line comment
/* multiple line comments
…*/
/** This is a javadoc comment*/
โปรแกรมที่สร้างจากจาวาต้องสามารถสร้างได้อย่างน้อยหนึ่งคลาสโดยมีรูปแบบโครงสร้างดังนี้ 
[<access_specifier>] class <class_name>
{ //data members
//methods }
«access_specifier :- ระดับการเข้าถึงข้อมูล เช่น public และ private
«public หมายถึง ระดับการเข้าถึงข้อมูลที่ไม่มีข้อจำกัดใดๆ
«private หมายถึง ระดับการเข้าถึงข้อมูลสำหรับการใช้งานในคลาส
«ในหนึ่งโปรแกรมต้องมีเพียงหนึ่งคลาสที่มีชื่อเดียวกับโปรแกรมและต้องเป็นชนิด public เสมอ
•data members เป็นส่วนประกอบหนึ่งของคลาส ใช้สำหรับกำหนดชื่อและชนิดของตัวแปรที่ใช้สำหรับเก็บข้อมูล โดยมีรูปแบบดังนี้
[<access_specifier>] [<modifier>] <datatype> <variable_name>

«modifier เป็นการกำหนดคุณลักษณะพิเศษในการใช้งาน ตัวแปรและ method เช่น static และ final
«static หาก Data ใดนำหน้าด้วยคำศัพท์สงวน static แล้ว Data นั้น จะถูกโหลดลงในหน่วยความจำและพร้อมใช้งานทันที เมื่อมีการอ้างถึงตามข้อกำหนดของระดับการเข้าถึง (Accessibility)
«final หาก Data ใดนำหน้าด้วยคำศัพท์สงวน final แล้ว Data นั้นใช้สำหรับเก็บข้อมูลค่าคงที่ (Constant) ซึ่งไม่สามารถเปลี่ยนค่าได้

•methods มีรูปแบบดังนี้ 
[<access_specifier>] [<modifier>] < return_type > <method_name> ([argument_list])
{ //Statements }
«return_type :- ชนิดของข้อมูลที่ถูกส่งคืนหลังสิ้นสุดการทำงานของ method
«argument_list :- ช่องทางในการผ่านข้อมูลเพื่อส่งให้ method ใช้ในการทำงาน
«Statement :- คำสั่งควบคุมการทำงานของนิพจน์ เพื่อกำหนดหลักการและวิธีการประมวลผลภายใน method
«ในหนึ่งโปรแกรมจะต้องมี Method ที่ชื่อ main เสมอ โดย Method main จะเป็น Method แรกที่โปรแกรมเรียกใช้ ซึ่งในหนึ่งโปรแกรมจะต้องมีเพียง 1 main Method เท่านั้น ซึ่งจะต้องมีค่า Accessibility เป็น static เสมอ และเนื่องจากไม่มีการส่งค่ากลับ จึงใช้ Accessibility void ร่วมด้วยเสมอ

ท้ายชื่อของ Method ต้องตามด้วยเครื่องหมาย ( ) หากไม่มีการส่งค่าพารามิเตอร์ใดไปด้วย หากมีการส่งค่า จะต้องอยู่ในรูปแบบใดแบบหนึ่งเสมอ เช่น (String args[ ]) หรือ (String[ ] args)
การแสดงผลทางจอภาพสามารถทำด้วย method ที่ ชื่อว่า println ซึ่งอยู่ใน System.out โดยคำสั่งนี้ต้องการข้อมูลที่เป็น String เพื่อนำไปแสดงบนจอภาพ แต่ทั้งนี้อาจส่งข้อมูลที่เป็น Integer ร่วมด้วยได้โดยใช้เครื่องหมาย + ข้อมูลทั้งหมดจะถูกแปลงเป็น String โดยอัตโนมัติ

การเรียกใช้ Package สามารถทำได้ด้วยคำสั่ง import ซึ่งต้องวางไว้ตอนแรกสุดของโปรแกรมเสมอ เพื่อให้ Compiler นำ Package ต่าง ๆ ที่อ้างถึงมาเชื่อมโยงเข้ากับโปรแกรม ก่อนที่จะมาเรียกใช้ methods ต่าง ๆ ภายในโปรแกรม
โปรแกรม Applet ต้องเขียนในรูป 
public class hello2 extends Applet
ซึ่งเป็นการสืบทอดคุณสมบัติของคลาส Applet
การแสดงข้อมูลบนจอภาพ ต้องใช้คำสั่ง drawString ซึ่งเป็น method ของคลาส Graphics





แหล่งที่มา ::  Java


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

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