วันอังคารที่ 31 มกราคม พ.ศ. 2555

[JAVA] อะไรคือ .class

อะไรคือ .class
    ถึงจุดนี้ เชื่อว่ามีหลายคน มีน และยัง งง กบั การเขียนโปรแกรมภาษา JAVA อย่างยิ่ง ผมขออธิบายว่า อะไรคือ .class ที่เราได้มา เริ่มแรกนะครับเรามีแต่ไฟล์ .java เฉย ๆ แต่ในไฟล์นี้มีโค้ดที่เขียนว่า class Hello นั่นไงล่ะ ชื่อของคลาสคือ Hello พอเราทาาการ compile ด้วยคาาสั่ง javac (ย่อมาจากjava compiler) ระบบก็จะสร้างไฟล์ Hello.class ข้นึ มาให้ หากเราลองเปิดดูโค้ดในไฟล์นี้ โอ้ววว จะพบว่า อ่านไม่ออกเอาซะเลย
    ใช่แล้วครับ เหตุที่อ่านไม่ออกก็เพราะว่า เป็น byte code ซึ่งมนุษย์ธรรมดาอย่างเรา ๆ ไม่อาจอ่านออก และตีความหมายได้ แต่ทว่า .class นี้แหละที่ Java Runtime อ่านออก แถมเข้าใจได้ดีซะด้วย มันจะทาาการมาอ่านโค้ดในนี้ ทีละคาาสั่งและทาาการแปล หรือเรียกว่าทาาการ interpreter เพื่อแปลงความหมายนี้ให้กับเครื่องที่กาาลังรันโปรแกรมอยู่ ได้รับรแู้ ละเข้าใจว่าเราสั่งให้ทาาอะไร
    ไม่ว่าเครื่อง ณ ขณะนั้นจะเป็นระบบ Window, Linux, Unix,Solaris, Mac ก็ตาม หาก JRE มาแปลความหมายแล้ว ระบบนั้น ๆ ก็จะเข้าใจในทิศทางเดียวกันทันที ทาาให้โปรแกรมของเราใช้งานได้บนทุก ๆแพลตฟอร์มไงครับ
    คำถามมีอยู่ว่า แล้วทาาไมเรา double click ใช้งานเลยไม่ได้แบบ.exe ทั่วไปล่ะ คำตอบก็คือ นี่ไม่ใช่ executable file หรือไฟล์ที่ใช้งานได้เลยทันทีแต่เป็นไฟล์ ที่เก็บรหัสคาาสั่งภาษา Byte Code เอาไว้เพื่อให้คุณ JRE (คือJava Runtime Environment) มาอ่าน แล้วค่อยตีความให้ระบบทาางานอีกทีนึงนัน่ เอง
    เลยเกิดคาาถามอีกว่า เอ้า แล้วถ้าต้องการทาาโปรแกรมให้คนอื่นใช้ จะต้องมาพิมพ์ java Hello แบบนี้เสมอหรือเปล่าล่ะ คาาตอบคือไม่ครับ เราสามารถสร้าง .jar ได้ ซึ่งโปรแกรมจะสามารถ double click ใช้งานได้เสมือน .exe บนระบบ Windows เลยแหละ (เหมือนกันยังกะแกะ)
    สุดท้ายครับ
    หากเรามีเพื่อนคนนึง เค้าเป็นคนลาว เราอยากคุยกับเค้าจะทาาอย่างไร ทางออกก็คือ เราศึกษาภาษาลาว หรือไม่ก็ให้เค้าศึกษาภาษาไทยเพื่อให้เราสองคน สื่อสารกันได้ ใช่มั้ยครับ
    แต่...
    วันดี คืนดี เรามีเพื่อนมาอีกคนนึง เป็นคนญี่ปุ่น เราจะคุยกับคนลาวและคนญี่ปุ่นได้อย่างไร ทางออกก็มีอยู่ว่า เราศึกษาภาษาญี่ปุ่น กบั ศึกษาลาวก็จบเรื่อง ใช่ครับ ถ้าเรายังไหว
    แต่ ในเวลาต่อมา...
    เรามีเพื่อน (อีกละ) เป็นคนฝรั่งเศส เราอยากคุยกับเค้า จะทาาอย่างไรกันดี ???
    คงไม่ไหวนะครับ ถ้าเราจะต้องศึกษาหลาย ๆ ภาษา เพื่อคุยกับเค้าเหล่านั้น ทางออกที่ดีก็คือ ให้เราศึกษาภาษาอังกฤษซะ ก็จะคุยกับทุก ๆ คนได้ในทันที ไม่ว่าจะกี่ชนชาติ ขอเพียงทุก ๆ คนเข้าใจในภาษาอังกฤษ
    ใน JAVA ก็เช่นกันครับ เราเขียนโค้ดไว้ใน .java ไม่มีระบบไหนอ่านการสื่อสารนี้ของเราเข้าใจได้ เราก็เลยต้องทาาการแปลงมันเป็น .class เสมือนว่าเราทาาการแปลภาษาไทยของเราให้เป็นภาษาอังกฤษ ทั้งรูปแบบและไวยากรณ์ จากนั้นครับ เราก็เอา .class นี้ไปใช้งานบนระบบต่าง ๆ ได้เลยเช่น Windows, Linux, Mac แล้วโปรแกรม JRE บนเครื่องเหล่านั้นจะทาาการแปลความหมาย ให้ระบบเหล่านั้นเข้าใจ ว่าคาาสั่งที่เราเขียนไว้นั้น คืออะไร

เครดิต : javathailand 

1 ความคิดเห็น:

  1. อ่านง่าย เข้าใจได้ทันที ขอบคุณมากๆครับเป็นกำลังใจให้ทำบทความดีดีออกมาให้อ่านอีกคับ

    ตอบลบ