Java Source Codeสมชัย หลิมศิโรรัตน์ 17 มิถุนายน 2546 |
เกริ่นนำโดยปกติแล้ว หากมีใครถามผมว่า จะเขียนโปรแกรมภาษา Java ทำเมนู, สร้างตาราง หรือ แสดง HTML ฯลฯ มีวิธีเขียนอย่างไร ผมมัก แนะนำให้เขาอ่าน The Java Tutorial ซึ่งเป็นโฮมเพจที่รวบรวมหนังสือ 3 เล่มไว้ด้วยกัน และสามารถดาวโหลด zip ของ HTML ไฟล์ทั้งหมดได้ฟรี แต่หนังสือทั่วไปนั้น มักจะเขียนให้เรามองเห็นภาพรวมทั้งหมดมากกว่า ไม่ได้เจาะลึกในระดับคำสั่งแต่ละคำสั่ง ซึ่งหากเราติดปัญหาว่า จะใช้คำสั่งอะไรดีนอกเหนือจากที่หนังสือเขียนไว้ เราก็ต้องค้นดูจาก API Document นั่นเอง บทความนี้ตั้งใจจะเขียนขึ้นเพื่อแนะนำแหล่งค้นคว้า ทำความเข้าใจ กลไกการทำงาน ของคลาสต่างๆในภาษา Java อีกแหล่งหนึ่ง ที่เรามีอยู่ในมือแล้ว แต่บางคนไม่เคยได้เปิดดูเลย Java เป็น Open Source หรือเปล่าเมื่อเราติดตั้งชุดโปรแกรมสำหรับพัฒนาภาษา Java ที่เรียกว่า Software Development Kit (SDK) นั้น จะมี source code ของ Java API มาให้ด้วย อยู่ที่ไฟล์ <j2sdkhome>/src.zip ถ้าเรา upzip ไฟล์นี้ออกมาจะพบว่า มี source code ของคลาสทุกคลาสใน Java API แต่ นั่นไม่ใช่ source code ทั้งหมดนะครับ เพราะนั่นเป็นเพียงคลาสที่อยู่ใน <j2sdkhome>/jre/lib/rt.jar ไฟล์เท่านั้น หากเราต้องการ source code ทั้งหมด จะต้องดาวโหลด Sun Community Source License (SCSL) ซึ่งคงต้องบอกว่า เสียใจด้วยครับ ที่ Sun เปิดให้ดาวโหลดได้เพียงบางประเทศเท่านั้น และประเทศไทยก็ไม่ได้อยู่ในรายชื่อที่จะดาวโหลดได้ เพราะอะไร เราทุกคนคงรู้กันดีอยู่แล้วนะครับ บางคนคิดว่า Java เป็น Open Source Software หรือที่เรียกว่า ซอฟต์แวร์เสรี (Free Software) เพราะดาวโหลดได้ฟรี และมี source code ให้ดู แต่จริงๆแล้ว ไม่ใช่ครับ เพราะ Sun ให้สิทธิ์เราดูได้ copy ได้ แต่ไม่ได้ให้สิทธิ์เราแก้ไขนะครับ Java จึงไม่ใช่ซอฟต์แวร์เสรี และเราจะ copy JSDK หรือ JRE ขายไม่ได้นะครับ แต่ Sun อนุญาติให้แจกไปพร้อมกับโปรแกรมที่ขายได้ โดยมีเงื่อนไขอยู่หลายข้อ ลองอ่านดู License ไฟล์ให้ดีนะครับ ทำไมต้องดู Source Codeโดยปกติแล้ว คงไม่มีใครอยากจะเข้าไปดู source code แน่นอน เพราะมันเยอะมาก แต่บางครั้งหนังสือต่างๆ ก็ไม่ได้อธิบายรายละเอียดในระดับลึกมากพอ เพราะปกติแล้ว หนังสือจะอธิบายให้เราเห็นภาพรวมมากกว่า ว่าจะต้องใช้ คลาสอะไรบ้าง ใช้ method ใดบ้างมาประกอบกัน เมื่อเราต้องการทำความเข้าใจ method ใดๆ ในระดับลึก ก็มักจะอ้างถึง API Document แต่ถ้าเรื่องนั้นๆ เป็นเรื่องใหม่ เป็นเทคโนโลยีใหม่ที่เพิ่งจะเพิ่มเข้ามา ใน document ก็มักจะเขียนได้ไม่ละเอียดพอ อ่านแล้วไม่เข้าใจ จะหาหนังสือที่ไหนก็คงไม่สามารถอธิบายได้ละเอียดไปกว่านี้อีกแล้ว นอกจาก source code จริงๆของมัน หลายครั้งที่ผมเขียนโปรแกรมแล้วติดปัญหา โปรแกรมทำงานไม่ถูกต้องตามที่ควรจะเป็น ผมก็มักจะ debug เข้าไปดูใน source code นี่แหละครับ และหลายครั้ง ผมก็เจอ bug ของ Java API เอง ซึ่งบางครั้งก็มีคนพบเหมือนกันและมีวิธีเลี่ยงไว้แล้ว (เข้าไปค้นที่ Bug Database ของ Sun) แต่บางครั้งก็ยังอยู่ในระหว่างการแก้ไข ซึ่งโดยปกติแล้ว Sun จะออกเวอร์ชั่นใหม่ทุกๆ 18 เดือน หรือเวอร์ชั่นแก้ bug จะออกประมาณ 4-6เดือนครั้ง ซึ่งก็ไม่แน่เหมือนกันว่า bug นั้นจะได้รับการแก้ไขหรือไม่ ถ้าไม่ใช่ bug ที่สำคัญมากๆ (มีคนโวตให้แก้หลายคน) ก็คงต้องรอต่อไป นอกจากว่าเราจะหาวิธีแก้ไขได้แล้วอีเมลล์ไปบอก Sun ซึ่งผมก็เคยทำอยู่หลายครั้ง แต่ที่แน่ๆคือ โปรแกรมที่เราเขียนอยู่นั้น ถ้ามีกำหนดส่งงานที่แน่นอนแล้วล่ะก็ คงรอไม่ได้แน่นอน Java SCSL มีอะไรสิ่งที่น่าสนใจใน source code ของ Java แบบ SCSL ก็คือ มี source code ทั้งหมดครบถ้วน ซึ่งหมายความว่า มี source code ของ JVM และ Java Compiler อยู่ด้วย นอกจากนี้ก็ยังมี tool ต่างๆเช่น โปรแกรม jar, keytool, rmi, servertool และอื่นๆ ซึ่งจะทำให้เราสามารถเรียนรู้การทำงานภายในของมัน รู้ข้อดีข้อเสียในระดับลึก และจะทำให้เราสามารถค้นคว้าวิจัยเกี่ยวกับ JVM หรือ Java Compiler แบบใหม่ๆได้ด้วย หรือแม้แต่ศึกษาวิธีการเขียนโปรแกรม (ภาษา C) ให้สามารถทำงานได้ทุก Platform (Windows, Linux, Solaris) ก็ตาม สรุปถ้าหากเรามีปัญหาเกี่ยวกับกลไกการทำงานภายในของ Java แหล่งค้นคว้าสุดท้ายที่จะตอบทุกอย่างได้ทั้งหมดก็คือ source code ซึ่งมันอยู่ในมือเราแล้ว แต่ถ้าเราไม่มีความอดทนมากพอที่จะไล่ทำความเข้าใจมันได้ เราก็ไม่มีทางหาคำตอบพบ |
since September
2002 Copyright © 2002-2004 Somchai LIMSIRORATANA. All rights reserved. |