Jvm ย อมาจากอะไร ม บทบาทอย างไรต อการพ ฒนาโปรแกรมด วยภาษาจาวา

หนว่ ยท่ี 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชูศรี เกลยี วสกลุ โกวทิ เอกสารประกอบการเรยี นหนว่ ยท่ี 2 องค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) รายวิชา การเขียนโปรแกรมบนมาตรฐานเปดิ รหัสวชิ า 2304 - 2007 ระดบั ปวช. 2/1-4 คอมพวิ เตอรธ์ ุรกิจ ประเภทวิชา พาณิชยกรรม โดย นางสาวชศู รี เกลยี วสกลุ โกวิท

หนว่ ยที่ 2 องค์ประกอบของโปรแกรมภาษาคอมพวิ เตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลียวสกลุ โกวทิ2.1 ความรู้พื้นฐานของภาษาจาวา ภาษาจาวา (Java programming language) เป็นภาษาคอมพิวเตอร์สาหรับใช้พัฒนาโปรแกรมภาษาหน่ึง ถกู สรา้ งมาเพ่ือรองรับการออกแบบซอฟแวร์ทม่ี ีการเช่ือมโยงอนิ เทอรเ์ น็ต อีกทัง้ ยงั เป็นโปรแกรมที่สนบั สนุนแนวความคดิ ของการเขยี นโปรแกรมเชงิ วัตถุ โดยมคี วามสามารถเฉพาะตัวตา่ งจากโปรแกรมภาษาชั้นสูงอน่ื ๆ ในเรอื่ งของการทางานขา้ มระบบปฏบิ ัติการ หรือที่เรยี กกันวา่ การทางานขา้ มแพลตฟอรม (Platform) ไดโ้ ดยไม่ต้องมีการคอมไพล์ใหม่น้ันเอง สาหรับภาษาจาวานั้นถูกพัฒนาตั้งแต่ปี พ.ศ.2534 (ค.ศ. 1991) เป็นส่วนหน่ึงของโครงการกรีน (Green Project) ซึ่งเป็นการวิจัยเพื่อพัฒนาซอฟต์แวร์ท่ีใช้ควบคุมอุปกรณ์เล็กทรอนิคส์หรือเป็นการควบคุมเครื่องใช้ไฟฟ้าขนาดเล็กภายในบ้านนั่นเอง บุคคลสาคัญที่มีบทบาท คือ เจมส์ กอสลิง (JamesGosling) และวิศวกรคนอื่น ๆ เช่น Mike Sheridan, Patrick Naughton เป็นต้น ที่บริษัท ซัน ไมโครซิสเต็มส์(Sun Microsystems) ซึ่งเป็นบริษัทผู้ขายระบบ Unix ท่ีมีช่ือว่า Solaris โดยมีจุดประสงค์เพ่ือใช้แทนภาษาซีพลัสพลัส (C++) มีรูปแบบที่เพิ่มเติมขึ้นคล้ายกับภาษาอ็อบเจกต์ทีฟซี (Objective-C) แต่เดิมภาษาน้ีเรียกว่า ภาษาโอ๊ก (Oak) ซ่ึงต้ังช่ือตามต้นโอ๊กใกล้ที่ทางานของ เจมส์ กอสลิง จากนั้นภายหลงั จึงเปล่ียนไปใชช้ ่อื“จาวา” ซึ่งเปน็ ชอ่ื กาแฟทที่ มี วศิ วกรของบรษิ ัทฯ ดื่มตอนทรี่ ่วมกนั พัฒนาภาษาจาวาข้ึนน่ันเอง ภาษาจาวาเรม่ิ เปน็ ที่นิยมแพร่หลายในปี พ.ศ.2538 (ค.ศ. 1995) โดยได้เร่มิ แจกจ่ายชดุ พัฒนาโปรแกรมภาษาจาวา (Java Development Kit) ในอินเทอรเ์ น็ต ต่อมาในปี พ.ศ. 2553 (ค.ศ. 2010) บริษทั ออราเคิลคอรป์ อเรชั่น (Oracle Corporation) เข้าการควบกจิ การ ซันกลายเปน็ บริษัทลูกของออราเคิล 2.1.1 ข้อเด่นของภาษาจาวา - เปน็ ภาษาทีส่ นับสนนุ การเขียนโปรแกรมเชงิ วตั ถแุ บบสมบรู ณ์ (Object OrientedProgramming) ซง่ึ เหมาะสาหรบั พัฒนาระบบท่ีมคี วามซับซอ้ น การพัฒนาโปรแกรมแบบวัตถุจะชว่ ยให้สามารถใช้คาหรือชื่อ ต่าง ๆ ที่มีอยใู่ นระบบงานน้ันมาใช้ในการออกแบบโปรแกรมได้ ทาใหเ้ ขา้ ใจไดง้ า่ ยขึน้ - สามารถทางานได้ในระบบปฏบิ ัตกิ ารท่แี ตกตา่ งกนั (Platform Independent) โดยไม่จาเป็นตอ้ งดดั แปลงแก้ไขโปรแกรมหรอื คอมไพลใ์ หม่ และในได้ในทุกระบบ (Portable) เชน่ หากเขยี นโปรแกรมบนเครอ่ื งซนั โปรแกรมน้นั กส็ ามารถถูกคอมไพล์และรัน บนเครือ่ งพซี ีธรรมดาได้ ซ่งึ อาจเรียกคุณสมบัตนิ ีว้ า่Write Once Run Anywhere นา่ จะอธบิ ายไดอ้ ยา่ งนี้ แพลตฟอรมก็เหมือนระบบปฏิบัติการ อย่างเช่นWindows , Linux หรอื mac OS ถ้าเขยี นโปรแกรมอะไรบางอยา่ ง แลว้ ทาการ Compile Source ด้วย JREจนได้ Bytecode การนา Bytecode ไป Execute ตวั จาวา จะไมส่ นใจวา่ คุณใชร้ ะบบปฏิบัติการอะไร เพราะBytecode จะ Execute ผ่าน JVM (Java Virtual Machine ) หรือ ทเ่ี ราเรยี กวา่ แพลตฟอรมเสมอื น น่นั เอง - มคี วามซบั ซ้อนนอ้ ยกว่าภาษา C++ เมือ่ เปรียบเทยี บ code ของโปรแกรมท่ีเขียนข้ึนโดยภาษาจาวา กบั C++ พบว่า โปรแกรมที่เขยี นโดยภาษาจาวา มีจานวน code นอ้ ยกว่าโปรแกรมท่เี ขียนโดยภาษา C++ ทาให้ใชง้ านได้ง่ายกว่าและลดความผดิ พลาดไดม้ ากขน้ึ - ถกู ออกแบบใหม้ ีความปลอดภัยสูงต้ังแตแ่ รก (Code Security) ทาใหโ้ ปรแกรมท่ีเขยี นขึ้นด้วยจาวามีความปลอดภยั มากกวา่ โปรแกรมท่เี ขยี นขนึ้ ด้วยภาษาอื่น เพราะ Java มี security ท้ัง low levelและ high level ไดแ้ ก่ electronic signature, public and private key management, access control

หนว่ ยที่ 2 องค์ประกอบของโปรแกรมภาษาคอมพวิ เตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวทิและ certificates รวมถงึ มกี ารตรวจสอบข้อผดิ พลาดท้ังตอน compile time และ runtime ทาใหล้ ดขอ้ ผิดพลาดท่ีอาจเกดิ ข้ึนในโปรแกรม และชว่ ยให้ debug โปรแกรมไดง้ ่าย - มี IDE, application server และไลบารีตา่ ง ๆ มากมาย (Dynamic) สาหรับจาวาทีเ่ ราสามารถใช้งานได้โดยไมต่ ้องเสียค่าใช้จา่ ย ทาใหเ้ ราสามารถลดค่าใชจ้ ่ายทต่ี ้องเสยี ไปกับการซ้อื tool และซอฟตแ์ วร์ต่าง ๆ 2.1.2 ข้อด้อยของภาษาจาวา - ทางานได้ชา้ กว่า native code (โปรแกรมท่ีคอมไพล์ให้อยู่ในรปู ของภาษาเครื่อง) หรือโปรแกรมท่เี ขียนขึ้นด้วยภาษาอนื่ อย่างเช่น C หรือ C++ ทง้ั นกี้ ็เพราะวา่ โปรแกรมทเ่ี ขยี นขน้ึ ดว้ ยภาษาจาวาจะถกู แปลงเปน็ ภาษากลาง ก่อน แลว้ เมอ่ื โปรแกรมทางานคาสัง่ ของภาษากลางน้ีจะถกู เปลี่ยนเปน็ ภาษาเคร่ืองอกี ทีหน่ึง ทลี ะ่ คาสั่ง (หรือกลุ่มของคาสั่ง) ณ runtime ทาให้ทางานช้ากวา่ native code ซึ่งอยใู่ นรปู ของภาษาเครอ่ื งแลว้ ตัง้ แต่ คอมไพล์โปรแกรมท่ีต้องการความเร็วในการทางานจงึ ไม่นยิ มเขยี นดว้ ยจาวา - tool ที่มีในการใชพ้ ัฒนาโปรแกรมจาวามักไม่ค่อยเกง่ ทาใหห้ ลายอย่างโปรแกรมเมอร์จะต้องเปน็ คนทาเอง ทาให้ต้องเสยี เวลาทางานในส่วนท่ี tool ทาไมไ่ ด้ ถา้ เราดู tool ของ MS จะใชง้ านได้งา่ ยกว่า และพัฒนาไดเ้ รว็ กวา่ (แต่เราต้องซือ้ tool ของ MS และกต็ ้องรันบน platform ของ MS)2.2 องคประกอบของภาษาจาวา ภาษาจาวามีองคประกอบทีส่ าคญั ในการทางาน ประกอบดวย 3 สวน ดงั น้ี 1. Java Virtual Machine : JVM เปนสวนที่ทาหนาท่ีเปนตัวอนิ เตอร์พรีเตอร (interpreter) ทาการแปลจาวาไบตโคด ใหเปนภาษาท่ีเครื่องเขาใจ ซ่ึงจาวาไบตโคดจะสามารถรนั ไดหลายแพลตฟอรม (Platform) 2. Java Runtime Environment : JRE เปนสวนทีใ่ ช ในการรนั โปรแกรมภาษาจาวา โดยจะทางาน 3ขนั้ ตอน ดังน้ี ขั้นตอนแรกโหลดไบตโคดโดยใช Class loader คอื การโหลดคลาสทุกคลาสทเี่ กย่ี วของในการรนัโปรแกรม ขนั้ ตอนทีส่ องตรวจสอบไบตโคด (Byte code Verifier) คือการตรวจสอบ วาโปรแกรมตองไมมีคาส่ังท่ที าใหเกดิ ความผิดพลาดกบั ระบบ เชน การแปลงขอมลู ท่ีผดิ พลาด หรือมี การแทรกแซงเขาสูระบบภายในเปนตน ขนั้ ตอนที่สุดทาย รันไบตโคดโดยใชตวั แปลรนั ไทล (Runtime Interpreter) 3. Java Developer Kit : JDK เป็นชุดพฒั นาโปรแกรมภาษาจาวา ประกอบดวยโปรแกรมตาง ๆ คือโปรแกรมคอมไพเลอร (javac.exe) และโปรแกรมอนิ เตอรพรเี ตอร์ (java.exe) แตไมมีโปรแกรมที่ทาหนาท่ีสรางโคด (Editor) รวมอยูดวย โดยสามารถแบงเปน 3 รูปแบบตามแพลตฟอรม (Platform) ซ่ึงหมายถึงลกั ษณะการนาภาษาจาวาไปสรางเปนโปรแกรมเพื่อวัตถปุ ระสงคใด วัตถุประสงคหน่ึง บนการประมวลผลของคอมพวิ เตอร ยกตวั อย่าง เชน่ อาจเปนการทาการประมวลผลที่ไมมีการเชื่อมตอกับเครื่องคอมพวิ เตอรเคร่ืองอ่ืนๆ หรอื ตองการนาโปรแกรมภาษาจาวาไปใชกับระบบเครอื ขายอนิ เทอรเนต็ เปนตน ดงั น้ี 3.1 Java SE : JSE (Standard Edition) สาหรับพัฒนาโปรแกรมบนเคร่อื งคอมพิวเตอรส์ ว่ นบุคคล(Personal Computer : PC) ท่ัวไป และเครื่องสถานีงานวศิ วกรรม (Work Station)

หน่วยท่ี 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวิท 3.2 Java EE : JEE (Enterprise Edition) สาหรบั พฒั นาโปรแกรมองค์ขนาดใหญ่ สามารถทางานบนเครื่องแม่ข่าย (Server) และรองรับการทางานของเซริ ์ฟเลต (Servlets) เจเอสพี (JSP) และเอกซ์เอม็แอล (XML) 3.3 Java ME : JME (Micro Edition) สาหรบั พัฒนาโปรแกรมบนอปุ กรณ์พกพา หรอื อุปกรณ์ไรส้ ายทม่ี ที รัพยากรจากัด เช่น โทรศพั ทม์ ือถือ (Mobile Phone) เคร่ืองปาล์ม (Palm) หรอื เครือ่ งพดี ีเอ (PDA)เปน็ ต้น รุน่ ตา่ ง ๆ ของ JDK1.0 (ค.ศ. 1996) — ออกครงั้ แรกสุด1.1 (ค.ศ. 1997) — ปรับปรงุ ครงั้ ใหญ่ โดยเพิ่ม inner class1.2 (4 ธนั วาคม, ค.ศ. 1998) — รหัส Playground ด้านจาวาแพลตฟอร์มไดร้ บั การเปลี่ยนแปลงครั้งใหญ่ในAPI และ JVM (API สาคัญที่เพิ่มมาคือ Java Collections Framework และ Swing; สว่ นใน JVM เพ่ิม JITcompiler) แตต่ ัวภาษาจาวาน้นั เปล่ียนแปลงเพยี งเล็กน้อย (เพมิ่ คยี เ์ วิรด์ strictfp) และทั้งหมดถูกเรยี กช่ือใหม่วา่ \"จาวา 2\" แต่ระบบเลขรุ่นยังไม่เปลีย่ นแปลง1.3 (8 พฤษภาคม, ค.ศ. 2000) — รหสั Kestrel แก้ไขเล็กนอ้ ย1.4 (13 กุมภาพันธ์, ค.ศ. 2002) — รหสั Merlin เป็นรุน่ ทถ่ี กู ใชง้ านมากที่สุดในปจั จุบัน (ขณะทเ่ี ขียน ค.ศ.2005)5.0 (29 กันยายน, ค.ศ. 2004) — รหัส Tiger (เดมิ ทนี ับเป็น 1.5) เพ่ิมคุณสมบตั ิใหมใ่ นภาษาจาวาเช่น Annotations ซ่งึ เปน็ ทถ่ี กเถียงกันว่านามาจากภาษาซีชารป์ ของบริษัทไมโครซอฟท์, Enumerations, Varargs, Enhanced for loop, Autoboxing, และที่สาคญั คือ Generics6.0 (11 ธนั วาคม, ค.ศ. 2006) [1] — รหสั Mustang เป็นรุ่นในการพฒั นาของ Java SDK 6.0 ทีอ่ อกมาให้ทดลองใช้ในเดือนพฤศจิกายน ค.ศ. 20047.0 (กาลงั พัฒนา กาหนดออก ค.ศ. 2008) — รหัส Dolphin กาลงั พฒั นา [2]8.0 การขยายตวั ของคุณลกั ษณะแบบโต้ตอบและมลั ตมิ ีเดยี ของเวบ็ เบราว์เซอร์ พฒั นาซอฟต์แวร์บนพนื้ ฐานJava9.0 แยกส่วน Java ออกเป็นโมดลู ยอ่ ยๆ เพื่อให้ขนาดเล็กลงของตัว Reinhold ยอมรับว่า Javaแบบเดมิ ถูกออกแบบให้มขี นาดใหญแ่ ละเปน็ กอ้ นเดยี วกันทง้ั หมด จะช่วยให้ Java รนั บนอปุ กรณ์ขนาดเล็กได้ และรนั พนซีพี-เซิรฟ์ เวอรไ์ ด้2.3 รปู แบบของภาษาจาวา 2.3.1 โปรแกรมจาวาประยกุ ต์ (Java Application) เป็นโปรแกรมที่สามารถทางานได้ด้วยตัวเอง(stand-alone) ท่รี ันบนคอมพิวเตอร์ 2.3.2 โปรแกรมจาวาแอปแพลต็ (Java Applet) เป็นโปรแกรมที่ถูกฝังอยูใ่ นเวบ็ ถูกออกแบบมาให้ส่งสัญญาณผ่านอนิ เทอร์เนต็ จาก Web Sever และประมวลผลทางฝั่ง Web browser Applets มีความสาคัญเพราะว่า สามารถนาไปขยายขดี ความสามารถของเวบ็ ไซต์ได้

หนว่ ยที่ 2 องค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวทิ2.4 แนวทางการพัฒนาแอพพลเิ คชนั หรือโปรแกรม ถือวา่ เปน็ เร่ืองสาคญั ที่ควรตอ้ งทาความเข้าใจเพราะถ้าใช้แนวทางท่ไี มเ่ หมาะสมอาจจะพบปญั หา ทาให้ตอ้ งเสียเวลา ในการพัฒนาแอพพลเิ คชันได้ ในปัจจบุ นั มี 2 แนวทาง คอื 1) การเขียนโปรแกรมเชิงโครงสร้าง(Structured Programming) และ 2) การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) ซงึ่ มีรายละเอยี ดน้ี 1. การเขยี นโปรแกรมเชิงโครงสรา้ ง (Structured Paradigm หรอื Function OrientedParadigm) เป็นการเขยี นโปรแกรมแบบแยกเปน็ หนว่ ยย่อย (Module) จัดเป็นภาษาประเภทท่ีเรียกว่าProcedural Language ใชใ้ นการพัฒนาโปรแกรมในยุคก่อน โดยมกี ารแยกส่วนของข้อมลู จากฟังก์ชนั อยา่ งชัดเจน ซง่ึ การแยกข้อมูลจากฟังกช์ นั น้นั มักจะมีผลใหเ้ กดิ ความสับสน และคอ่ นขา้ งยากในการปรบั ปรุงแก้ไขสาหรับโปรแกรมขนาดใหญ่ 2. การเขียนโปรแกรมเชงิ วตั ถุ (Object Oriented Programming) หรือท่เี รียกกันวา่ OOP นัน่ เองหลกั การก็คอื จะมองงานแตล่ ะอยา่ งเป็นวตั ถุ (Object) และในการเขียนโปรแกรมจะอา้ งอิงโมเดลวตั ถใุ นโลกที่มีอยู่จรงิ ในการแกป้ ัญหา เช่น รถยนต์ สุนขั บัญชีธนาคาร เป็นต้น นามาแปลงให้อยใู่ นรปู แบบโค๊ดภาษา ซึง่บางส่วนอาจจะไมถ่ ูกเรยี กใช้งานก็ได้ สาหรับโปรแกรมทีเ่ ขียนขึ้นถกู สรา้ งภายในคลาส ดังน้นั คลาสคอื ทเ่ี ก็บเมทอด (Method) หรอื พฤติกรรม (Behavior) ซงึ่ มีสถานะ (State) และรปู พรรณ (Identity) ประจาพฤติกรรม(Behavior) โดยมีแนวคิดของการปกป้อง (Encapsulation) เปน็ การรวมกลมุ่ ของข้อมลู และกลมุ่ ของโปรแกรม เพ่ือการปกป้อง และเลือกตอบสนอง การสบื ทอด (Inheritance) เปน็ การยอมให้นาไปใช้ หรือเขียนขน้ึ มาทดแทนของเดิม และการพอ้ งรูป (Polymorphism) หรือ Many Shapes ซึ่งประกอบด้วย - Overloading มีช่อื โปรแกรมเดียวกนั แตร่ ายการตัวแปร (Parameter List) ตา่ งกนั - Overriding มชี อ่ื โปรแกรมและตัวแปรเหมือนกนั เพอ่ื เขียนพฤติกรรม (behavior) ขน้ึ มาใหม่2.5 กระบวนการทํางานของภาษาจาวา การทางานของภาษาจาวา เร่ิมจากการสรางโคดตนฉบบั (source code) แลวบันทึกไฟลดงั กลาว โดยบนั ทึกนามสกุล .java เก็บไวในโฟลเ์ ดอร์ท่ตี องการ จากนัน้ ทาการคอมไพล์ดวยจาวาคอมไพลเ์ ลอร์ในระบบปฏิบตั กิ าร DOS เพื่อเปล่ยี นคาสั่งภาษาจาวาเปนภาษาเฉพาะอยางหน่งึ เพ่ือใหจาวาเวอรชวั รแมทชนี เขาใจภาษาเฉพาะทีจ่ าวาเวอรชวั นแมทชนี เขาใจนีเ้ รา เรยี กวาจาวาไบตโคด เปนไฟลท่มี ีนามสกลุ .class แลวนาไฟลดงั กลาวไปรนั บนเคร่ืองคอมพิวเตอรทีม่ ี จาวาเวอรชัวรแมทชีน สรปุ ข้ันตอนการพัฒนาโปรแกรมดวยภาษาจาไดแสดงดังภาพ 1.2

หน่วยที่ 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวทิภาพที่ 1.2 กระบวนการพฒั นาภาษาจาวา ทมี่ า (About the Java Technology, 2014) ใช้ Notepad เขยี น ใช้แฟ้ ม javac.exe ใช้แฟ้ ม java.exe แสดงผลลพั ธ์ Source Code Compile โปรแกรม(FileName.java) Byte Code คำสงั่ (Output) (FileName.class) javac FileName.java คำสงั่ java FileName ดวยจาวาเวอรชัวนแมทชนี มีความสามารถนามาใชกบั ระบบปฏิบัตกิ ารที่แตกตางกันได้ โดยใชคลาสท่ีคอมไพลตวั เดียวกัน นามาทางานบนระบบของไมโครซอฟทวินโดว (Microsoft Windows) ระบบโซลารสิ(Solaris) หรือ ระบบยนู กิ ส (Unix) รวมทั้งระบบของแม็ค (Mac) ได ดงั แสดง ในภาพท่ี 1.3 ภาพที่ 1.3 แสดงระบบจาวาเวอรชวั นแมทชนี ท่ีสามารถใชไดทุกระบบปฏิบตั กิ าร ท่ีมา (About the Java Technology, 2014)2.6 โครงสร้างของภาษาจาวา โดยท่ัวไปโครงสร้างของภาษาจาวา ประกอบไปดว้ ยสว่ นตา่ ง ๆ ดังตอ่ ไปนี้ [Package] Class { [การประกาศคณุ ลกั ษณะ] [Method] { Statements } }

หน่วยท่ี 2 องคป์ ระกอบของโปรแกรมภาษาคอมพวิ เตอร์ (ภาษาจาวา) : นางสาวชูศรี เกลยี วสกลุ โกวทิ 2.6.1 แพ็คเกต (Package) เป็นกลมุ่ ของคลาสหรือไลบราร่มี าตรฐานของภาษาจาวา ท่ีมีฟังก์ชนั ตา่ งๆให้ใช้มากมาย โดยมีรูปแบบดังนี้ 2.6.2 คลาส (Class) ในโปรแกรมภาษาจาวาประกอบดว้ ยคลาสอยา่ งน้อยหนงึ่ คลาส ซ่งึ ในส่วนของการประกาศคลาส จะต้องประกาศคลาสใหช้ ื่อตรงกบั ไฟลเ์ สมอ นอกจาก Inner คลาสท่ีอยูใ่ นคลาสเดยี วกัน โดยชอ่ืคลาสน้นั ควรจะขึน้ ตน้ ดว้ ยตวั ใหญ่ และถ้ามหี ลายคาให้ใชต้ ัวพิมพใ์ หญแ่ บง่ คานัน้ ๆ โดยมีรปู แบบดงั นี้ [modifier] class Classname { [class member] } modifier คอื คยี เ์ วิร์ดของภาษาจาวาที่ใชใ้ นการอธบิ ายระดับการเขา้ ถงึ (access modifier) class คอื คยี ์เวิร์ดของภาษาจาวาเพอื่ ระบุวา่ เปน็ การประกาศคลาส Classname คือช่อื คลาส class member คอื เมธอดหรือคณุ ลักษณะ ตวั อยา่ ง [public] class Students { } 2.6.3 การประกาศคุณลกั ษณะ เป็นคณุ ลักษณะของออปเจ็ค คือตัวแปรหรือค่าคงทซ่ี ่ึงประกาศภายในออปเจ็ค โดยมีรปู แบบ การประกาศดังน้ี [modifier] dataType attributeName; modifier คือ คยี เ์ วิร์ดของภาษาจาวาท่ีอธบิ ายคุณสมบัติต่าง ๆ ของตวั แปรหรือคา่ คงท่ี dataType คือ ชนดิ ขอ้ มลู ซงึ่ อาจเปน็ ชนิดข้อมลู พ้ืนฐานหรือ ชนิดคลาส attributeName คือ ช่ือของคณุ ลักษณะ ตวั อย่าง public class Students { public String id; public String name; public double gpa; } 2.6.4 เมธอด (Method) หลงั จากคลาสสรา้ งแลว้ จะเป็นประกาศเมธอดภายในคลาส มีรูปแบบดังนี้ [modifier] return_type methodName([arguments]) { [method_body] } modifier คอื คยี เ์ วริ ด์ ของภาษาจาวาท่ใี ช้ในการอธิบายระดับการเข้าถงึ (access modifier) return_type คือ ชนิดข้อมลู ของค่า ที่จะมกี ารส่งกลับ methodName คือ ช่ือของเมธอด arguments คือ ตัวแปรทใี่ ช้ในการรับข้อมูล ท่ีออปเจ็คส่งมาให้ method_body คาสั่งตา่ ง ๆ ของภาษาจาวาที่อยู่ในเมธอด

หน่วยที่ 2 องค์ประกอบของโปรแกรมภาษาคอมพวิ เตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลียวสกลุ โกวิท โครงสรา้ งของโปรแกรมจาวาประยุกต์ (Java Application) ในการทจี่ ะรันโปรแกรมได้ จะต้องมเี มธอดท่ีชื่อว่า Main ซงึ่ เป็นท่แี รกสาหรับโปรแกรมจะเริ่มทางาน มรี ปู แบบดังนี้ public static void main(String args[]) { [method_body] } 2.6.5 สแตทเมนต์ (Statements) เปน็ คาสงั่ ของโปรแกรมเพอ่ื ใหโ้ ปรแกรมทางานตามตอ้ งการเชน่ System.out.println (\"Business Computer 2/.\"); ซง่ึ เป็นการแสดงผลข้อความออกทางหนา้ จอ โดยปกติโปรแกรมมกั จะมีหลายคาสัง่2.7 ตวั แปรและชนดิ ข้อมลู ในภาษาจาวา การเขียนคาส่ังตา่ ง ๆ ของภาษาจาวา จาเปน็ ตอ้ งจาข้อมลู บางอยา่ งเพ่ือใช้เขียนโปรแกรม เชน่ เมอ่ื ตอ้ งการคูณเลข 2 จานวน จะนาเลข 2 จานวน เขยี นลงบนกระดาษแลว้ จึงตั้งคูณกัน ซ่ึงกระดาษทดจะทาหน้าที่เหมือนเป็นหน่วยความจาชั่วคราว ตัวแปรในภาษาจาวามีความหมายในทานองเดียวกัน มีเพ่ือเก็บข้อมูลชั่วคราวในระหว่างการทางานของโปรแกรม และข้อมูลในตวั แปรสามารถเปลย่ี นค่าได้ 2.7.1 ตัวแปร (Variable) ตัวแปร คือ ส่ิงท่ีใช้เก็บค่าของข้อมูล โดยมีการต้ังช่ือให้กับตัวแปรเพ่ืออ้างอิงตาแหน่งบนหน่วยความจา เป็นที่เก็บข้อมูลต่าง ๆ ท่ีเราต้องการใช้ในการประมวลผล ตัวแปรแต่ละตัวสามารถเก็บค่าข้อมูลได้เพียงหน่ึงค่าเท่าน้ัน ซ่ึงค่าข้อมูลในตัวแปรสามารถเปลี่ยนแปลงได้ตลอดเวลา ดูภาพรวมของตัวแปรและขอ้ มูลได้ตามรูปท่ี 4.1หน่วยความจา ชนิดข้อมลู ต่าง ๆ เช่นตวั อกั ษร, ข้อความ, ตวั เลข เป็ น ต้นตัวแปร ข้อมูล รูปท่ี 4.1 ภาพรวมของตวั แปร 2.7.1.1 กฎเกณฑ์การตัง้ ชือ่ ตัวแปร 1.) ตอ้ งข้ึนต้นดว้ ยตวั อกั ษรและหา้ มเว้นวรรค โดยประกอบด้วยตวั เลข ตวั อักษร(letter), เคร่อื งหมาย _ (Underscore) หรอื เครือ่ งหมาย $ (Dollar sign) และสามารถต้ังชือ่ ให้มคี วามยาวเทา่ ใดก็ได้ 2.) หา้ มใช้อักษรพิเศษอ่นื ๆ เช่น +, -, *, &, %, # ฯลฯ เปน็ ส่วนประกอบอยภู่ ายในช่ือได้

หน่วยท่ี 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลียวสกลุ โกวทิ 3.) ตอ้ งไมซ่ ้ากบั คาสงวน (Reserved Words) คาส่ัง (Statement) และฟังกช์ ัน่ (Function) 4.) ตัวอกั ษรตัวใหญ่และตวั เล็ก ถือวา่ มีความแตกต่างกัน 2.7.1.2 คาสงวนในภาษาจาวา (Reserved Words) คาสงวนหรอื คยี ์เวริ ์ด (Keyword) เปน็ คาทีภ่ าษาจาวา สงวนไวใ้ ช้เป็นคาสงั่ ไม่สามารถนาคาเหล่านี้ไปประกาศเปน็ ช่ือตวั แปร, เมธอด และคลาสได้ เพราะวา่ คีย์เวิรด์ ถกู ใชโ้ ดยคอมไพเลอรเ์ พ่อื ให้โปรแกรมภาษาจาวาสามารถทางานไดส้ มบรู ณ์ลสิ ตข์ องคีย์เวิรด์ ในภาษาจาวา (Keywords list in Java)49 Reserved ใน Javaenum assert boolean break byte case catch char else extends abstract implements import package privateclass const continue default do double super switch void volatilefinal finally float for goto ifinstanceof int interface long native newprotected public return short static strictfpsynchronized this throw throws transient trywhile 2.7.1.3 การประกาศคา่ ตัวแปร รูปแบบการประกาศ datatype ชื่อตัวแปร; ตวั อยา่ ง int Num1, Num2; float value1, value2 รปู แบบการประกาศค่าตวั แปรออปเจ็ค ออปเจ็คทุกออปเจ็คในโปรแกรมภาษาจาวาจะต้องมีคาส่ังประกาศ เพ่ือระบวุ ่าออปเจ็คนน้ั เปน็ ออปเจ็คของคลาสใด โดยมีรปู แบบการประกาศดงั นี้ [modifier] ClassName objectName; modifier คือ คีย์เวิร์ด ท่ีอธิบายคณุ สมบัติต่าง ๆ ของออปเจ็ค ClassName คือ ชื่อของคลาสสาหรับออปเจ็คนนั้ objectName คือ ช่ือของออปเจ็ค ตวั อย่าง Student s1;

หนว่ ยท่ี 2 องค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวิท รปู แบบการสร้างออปเจ็ค คาสั่งใช้ในการสร้างออปเจ็คจะมีรูปแบบดังนี้ objectName = new ClassName([arguments]); objectName คือ ช่ือของออปเจ็ค new คือ คีย์เวิรด์ ของภาษาจาวาเพ่ือใช้ในการสร้างออปเจ็ค ClassName คือ ช่ือของคลาส arguments คือ คา่ ทตี่ ้องการส่งผ่านในการเรียก Constructor ตวั อย่าง s1 = new Student(); รูปแบบการประกาศค่าตวั แปร พรอ้ มกับการสร้างออปเจ็ค คาสั่ง ในการประกาศค่าตวั แปรและการสร้างออปเจ็ค สามารถที่จะรวมเปน็ คาส่ังเดยี วกนั โดยมีรปู แบบคาส่ังดังนี้ [modifier] ClassName objectName = new ClassName([arguments]); ตวั อย่าง Studejnt s1 = new Student(); การเรียกใช้สมาชิกของออปเจ็ค การเรยี กใช้คุณลักษณะของออปเจ็คมีรปู แบบดังนี้ objectName.attributeName; การเรียกใช้เมธอดของออปเจ็คมีรปู แบบดังน้ี objectName.methodName([arguments]); objectName คอื ชือ่ ของออปเจ็คทสี่ ร้างขนี้ methodName คือ ช่ือของเมธอดของออปเจ็คนน้ั arguments คือ คา่ ทตี่ ้องการส่งผ่านไปให้กับเมธอดของออปเจ็คน้ัน ตวั อย่าง s1.setName(\"Thana\"); 2.7.1.4 การกาหนดคา่ ใหต้ วั แปร (Assignment) 1) ใช้เครอื่ งหมาย = เรียกวา่ Assignment operator นาคา่ ทางขวามือของเคร่ืองหมาย = มาเกบ็ ทางซ้ายมือของเครือ่ งหมาย = ตวั อยา่ ง number = 2; area = PI*r*r; 2) การใช้ final ในการกาหนดคา่ ใหก้ บั ตวั แปร เปน็ การประกาศตัวแปร ทต่ี ัวแปรนัน้ ๆ จะไม่สามารถมคี ่าอื่นๆได้อีก ไมว่ า่ จะเป็นการเปลีย่ นคา่ ภายในโปรแกรม หรือการเปลยี่ นแปลงทีเ่ กดิ จากการใส่ขอ้ มลู ใหม่ผ่านทางคีย์บอรด์ การใช้ final

หน่วยที่ 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชูศรี เกลยี วสกลุ โกวิทจะทาให้โปรแกรมมีความแมน่ ยาและมั่นคงมากยงิ่ ข้ึน การทาจะเปล่ยี นคา่ เหลา่ น้ีไม่สามารถทาได้ ทาใหก้ ารออกแบบและพฒั นาโปรแกรมมีประสทิ ธภิ าพ ลดข้อผดิ พลาดทอี่ าจจะเกดิ จากโปรแกรมเมอร์เอง 2.7.1.5 อายุ และขอบเขตการใชง้ าน (life-time- and scope) ของตวั แปร หลงั จากทีม่ ีการประกาศใช้ตัวแปรใดๆ ในโปรแกรม ตวั แปรเหล่าน้จี ะมขี อบเขต หรอือายกุ ารใชง้ านตามลกั ษณะการประกาศตวั แปรของผู้เขียนโปรแกรมเอง โดยตัวแปรจะมีอายุการใช้งานตามเนื้อท่ี(block) ทีต่ ัวแปรเหล่านน้ั ปรากฏอยู่ ซงึ่ จะอย่ใู น เคร่ืองหมาย { } 2.7.2 ชนดิ ของข้อมลู (Data Type) ในการเขยี นโปรแกรมด้วยภาษา Java เช่นการประกาศตัวแปร หรอื กาหนดคา่ ข้อมลู ต่างๆ ตอ้ ง ระบชุ นดิ ขอ้ มลู อยา่ งชัดเจน โดยชนดิ ขอ้ มูลในภาษาจาวามี 2 ประเภท คือ 2.7.2.1 ชนดิ ข้อมลู แบบพนื้ ฐาน (primitive data type) หมายถงึ ชนดิ ข้อมูลที่สามารถเก็บข้อมูลท่เี ปน็ ข้อมูลท่วั ไปหรือข้อมลู พน้ื ฐาน มีทงั้ หมด8 ตวั ข้อมูลโดยแบง่ ออกเปน็ 4 ประเภท ประกอบด้วย 1) ชนิดข้อมลู จานวนเต็ม (Integer) เปน็ ชนิดขอ้ มูลท่ใี ชเ้ กบ็ ข้อมลู ตวั เลขจานวนเต็มในทางคณติ ศาสตร์ ชว่ งของข้อมลู ขึ้นอยขู่ นาดของตัวแปรท่ีประกาศ ประกอบด้วย 4 ชนิด ได้แก่ long, int,short และ byte 2) ชนดิ ข้อมูลจานวนทศนยิ ม(Floating Point) ประกอบด้วยขอ้ มูลทเ่ี ปน็ ตัวเลขทศนิยม เชน่ 1200.578 การเขยี นโปรแกรมดว้ ยภาษาจาวาจะประกาศตัวแปรดว้ ย 2 ชนิดได้แก่ double และ float 3) ชนิดข้อมูลอักขระ(Character) จะต้องประกาศตวั แปรด้วยคาว่า char คือการเกบ็ขอ้ มลู เป็นตวั อกั ษร หรอื อักขระบนแปน้ พมิ พไ์ ด้เพยี ง 1 ตัวอักขระ ซึ่งในภาษา Java จะเก็บข้อมลู อักขระอยู่ในรูปแบบของรหัสแอสกี (ASCII Code) หรือรปู แบบมาตรฐาน Unicode ขนาด 16 บติ การกาหนดค่าข้อมลูอักขระจะอยู่ในเครอื่ งหมาย ‘ ’ โดยจะข้นึ ตน้ ด้วยสญั ลกั ษณ์ \u และตามดว้ ยเลขฐานสิบหก(HexadecimalNumber) โดยมคี ่าตัง้ แต่ ‘\u0000’ ถึง ‘\uFFFF’ หรือกาหนดค่าข้อมลู อักขระด้วยตัวอักขระบนแป้นพิมพ์ตัวอยา่ งเช่น ‘A’, ‘x’, ‘$’ หรอื ‘1’ เปน็ ตน้ ตัวอยา่ งการประกาศชนิดข้อมูลอักขระ เชน่ char grade= ‘A’; char grade= ‘\u0041’; เปน็ การประกาศตวั แปรท่มี ชี ่ือวา่ grade เปน็ ชนดิ ขอ้ มลู อักขระ มีการกาหนดคา่ เร่ิมตน้ เปน็ ตัวอักษร A ซ่ึงมีคา่ เป็นเลขฐานสบิ หก คือ 004 4) ชนิดขอ้ มลู ตรรกะ (Logical Data) ชนดิ ขอ้ มูลตรรกะจะตอ้ งประกาศตวั แปรดว้ ยคาวา่ boolean ซึ่งเป็นข้อมูลทม่ี คี วามจริงเปน็ จริง (true) หรอื เท็จ (false) ได้เพยี ง 1 ค่าเท่านั้น ใชใ้ นการตดั สนิ ใจในเงื่อนไขของคาสง่ั ควบคุม หรอื คาส่ังเก่ยี วกบั ตรรกะของโปรแกรม ตัวอยา่ งการประกาศชนิดขอ้ มลูตรรกะ เช่น boolean flag = false; เปน็ การประกาศตวั แปรที่มชี ่ือวา่ flag เป็นชนิดขอ้ มูลตรรกะ มีการกาหนดค่าเร่ิมต้นเป็น false

หน่วยท่ี 2 องคป์ ระกอบของโปรแกรมภาษาคอมพิวเตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลียวสกลุ โกวิท ชนดิ ข้อมูลแตล่ ะประเภทจะมีขนาดและช่วงคา่ ของข้อมลู แตกต่างกัน สามารถสรปุ ชนดิ ข้อมลูขนาดและชว่ งค่าของข้อมลู ได้ดังนี้ชนดิ ข้อมูล ขนาด (bit) ค่าท่ีเกบ็ ได้ ค่าเริม่ ต้น(Default)Byte 8 -128 ถงึ 127 0Short 16 -32768 ถงึ 32767 0Int 32 -2147483648 ถึง 2147483648 0Long 64 -9223372036854775808 ถงึ 0L 9223372036854775808Float 32 -3.4E38 ถึง 3.4E38 0.0FDouble 64 -1.7E308 ถึง 1.7E308 0.0Char 16 ใช้เก็บอักขระทมี่ รี หัสต้งั แต่ 0 ถงึ 65535 \u0000boolean JVM กาหนด true หรอื false false 2.7.2.2 ชนิดขอ้ มูลแบบอา้ งอิง (reference data type) มีความแตกต่างกับชนดิ ข้อมลู พืน้ ฐาน ทีว่ า่ ชนิดข้อมูลชนิดนีอ้ ย่ใู นรูปแบบหนง่ึ ซึ่งการเข้าถึงหรอื ใชง้ านข้อมูลเป็นการอา้ งถงึ มากกว่าการเขา้ ถึงขอ้ มลู โดยตรง เกบ็ ข้อมลู ไว้ 2 ส่วน คือ – Execution Stack เก็บค่าอา้ งองิ ที่ชีไ้ ปยัง Heap memory – Heap Memory เก็บข้อมูลทีเ่ รียกว่าออปเจค็ ที่สรา้ งข้ึนมาจากคลาส ชนดิ ข้อมูลท่ีมีการอา้ งอิง ตาแหนง่ ในหนว่ ยความจา ได้แก่ข้อมูลของคลาส เช่น String และขอ้ มูลแบบอาเรย์ชนดิ ขอ้ มลู ขนาด (bit) ค่าทีเ่ ก็บได้ ค่าเริม่ ตน้ (Default)String null2.7.3 ตวั อกั ขระพเิ ศษ (Escape Sequence) เป็นการแสดงข้อมลู อักขระบนแป้นพิมพท์ ใี่ ช้แทนการข้ึนบรรทดั ใหม่หรือตัวอกั ขระพิเศษในการเขยี นโปรแกรม ตวั อกั ขระพิเศษ รหัส Unicode ความหมาย\b \u000B Backspace ลบอักขระตาแหนง่ เคอร์เซอร์\t \u0009 Tab การเวน้ ชอ่ งว่างตามระยะ\n \u000A New Line การขึ้นบรรทดั ใหม่\r \u000D Return การขนึ้ บรรทดั ใหม่\\ \u005C Backslash แสดงตัวอกั ขระ \\‘ \u0027 Single Quote แสดงตวั อักขระ ‘\“ \u0022 Double Quote แสดงตัวอักขระ “

หน่วยท่ี 2 องค์ประกอบของโปรแกรมภาษาคอมพวิ เตอร์ (ภาษาจาวา) : นางสาวชศู รี เกลยี วสกลุ โกวทิ เปน็ การกระทาระหวา่ งตัวแปรกบั ตัวดาเนนิ การเพอ่ื ให้ได้ผลลัพธใ์ หม่ เชน่ 4 + 3 เปน็ expression ของการบวกเลขและได้ได้ผลลพั ธ์เทา่ กบั 7 หรอื 1 == 1 เปน็ expression ของการเปรียบเทียบระหว่างค่าสองค่าวา่เทา่ กันหรือไม่ และไดผ้ ลลัพธ์เป็น true คุณจะไดเ้ รยี นเกย่ี วกับตวั ดาเนนิ การในบทต่อไป