<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>คลังความรู้จาวาภาษาไทย (Thai Java Knowledge Base)</title><description>คลังความรู้จาวาภาษาไทย (Thai Java Knowledge Base) RSS 2.0 Feed</description><link>http://www.jhelp.net/</link><webMaster>jhelp@jhelp.net</webMaster><lastBuildDate>Wed, 07 Jan 2009 16:44:18 GMT</lastBuildDate><ttl>20</ttl><generator>คลังความรู้จาวาภาษาไทย (Thai Java Knowledge Base)</generator><item><title>วิธีการกำหนดให้ Eclipse ไม่จำกัดจำนวนข้อมูล output ที่แสดงอยู่ในหน้า console</title><link>http://www.jhelp.net/article.aspx?id=10097</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Problem&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;บางครั้ง โปรแกรมที่เราใช้งานอาจพิมพ์ข้อมูล output จำนวนมากออกทางหน้าจอ (stdout) ซึ่งจะถูกแสดงอยู่ในหน้า console ของ Eclipse เรามักพบว่าข้อมูล output ที่พิมพ์ออกมาตอนแรกนั้น ถูกแทนที่โดยข้อมูลที่เพิ่งพิมพ์ออกมาใหม่ ทำให้เราไม่สามารถดูข้อมูล output ส่วนแรก ๆ ได้ ถ้าเราต้องการกำหนดให้ Eclipse ไม่จำกัดจำนวนข้อมูลที่แสดงในหน้า console ต้องทำอย่างไร ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Solution&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราสามารถกำหนดให้ Eclipse ไม่จำกัดจำนวนข้อมูลที่แสดงในหน้า console ได้ โดยเข้าไปเลือกที่ Window &amp;gt; Preferences... หน้าจอ Preferences จะแสดงขึ้นมา ให้แตก node Run/Debug ออกมา เพื่อเลือก node Console  จากนั้นให้กดไม่เลือก Limit console output ดังรูป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/e00c9aec-b428-4646-881a-bb50.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description><pubDate>Fri, 12 Oct 2007 20:04:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>Java certification ของ Sun อย่างเช่น SCJP มีกำหนดไว้หรือไม่ว่าหมดอายุเมื่อไหร่ ?</title><link>http://www.jhelp.net/article.aspx?id=10093</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จาวา certification ที่ออกให้โดยบริษัท Sun อย่างเช่น SCJP, SCJD จะไม่มีการกำหนดวันหมดอายุไว้ ถ้าเราสอบ certification ผ่านแล้ว ก็ไม่จำเป็นต้องสอบใหม่เพื่อต่ออายุของ certification อีก  แต่ certification เหล่านี้จะอิงกับ version ของจาวาแทน อย่างเช่น SCJP (Sun Certified Java Programmer) จะมีสอง version คือ 1.4 และ 5  ถ้าเราผ่าน SCJP 1.4 แล้ว ก็ไม่ต้องสอบใหม่เพื่อต่ออายุอีก แต่เราอาจเลือกสอบ SCJP 5 เพิ่มอีกตัว เพื่อเป็นการรับรองว่าเรามีความรู้ในจาวา 1.5 ด้วย&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Note: Sun เริ่มเปลี่ยนนโยบายจากที่ต้องสอบ certification ใหม่ทุกสองปีเพื่อต่ออายุ มาเป็นแบบในปัจจุบัน ตั้งแต่ 1 สิงหาคม 2546 &lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Tue, 09 Oct 2007 02:28:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>โครงการจาวาภิวัตน์ของซิป้า - รับเงินค่าสอบคืนฟรี !! ถ้าสอบ Java certification ที่สนับสนุนผ่าน </title><link>http://www.jhelp.net/article.aspx?id=10094</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;สำหรับผู้ที่สนใจสอบจาวา certification ของ Sun  ตอนนี้ทางซิป้า (สำนักงานส่งเสริมอุตสาหกรรมซอฟท์แวร์แห่งชาติ) ได้จัดโครงการ "จาวาภิวัตน์" ซึ่งเป็นโครงการที่สนับสนุนค่าสอบจาวา certification ของ Sun  โดยผู้เข้าร่วมโครงการจะเป็น นักพัฒนาซอฟท์แวร์ นิสิต นักศึกษา ที่กำลังศึกษาอยู่หรือจบการศึกษาแล้วก็ได้ โครงการนี้จะช่วยให้เราสามารถเบิกเงินค่าสอบจาวา certification คืนได้เต็มจำนวนในกรณีที่สอบผ่าน ที่น่าสนใจก็คือ certification ที่สอบไม่ได้จำกัดอยู่แค่ SCJP แต่รวมถึง certification ตัวอื่น ๆ ด้วย อย่างเช่น SCJD, SCWCD, WCBCD, SCEA&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;รายการของจาวา certification ที่เราสามารถเบิกเงินค่าสอบได้ มีดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT face=Arial&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;Exam Voucher for Sun Certified Programmer 5.0&lt;SPAN class=791001503-04102007&gt; &lt;FONT face=AngsanaNew size=5&gt;&lt;FONT size=3&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT lang=ZH-TW face=AngsanaNew&gt;สำหรับบุคคลทั่วไป&lt;/FONT&gt;&lt;FONT face=AngsanaNew&gt;, &lt;/FONT&gt;&lt;FONT lang=ZH-TW face=AngsanaNew&gt;นิสิตนักศึกษาทั่วไป)    &lt;/FONT&gt;(4,500)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;FONT size=+0&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;&lt;SPAN class=791001503-04102007&gt;&lt;FONT size=5&gt;&lt;P align=left&gt;&lt;FONT face=Arial size=3&gt;Exam Voucher for Sun Certified Programmer 5.0 &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial&gt;(&lt;/FONT&gt;&lt;FONT lang=ZH-TW face=Arial&gt;สำหรับนิสิต นักศึกษาจากสถาบันการศึกษาที่เข้าร่วมโครงการ &lt;/FONT&gt;&lt;FONT face=Arial&gt;Sun &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;Academic Initiative - SAI)    (1,750)&lt;/FONT&gt;&lt;FONT size=5&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT face=Arial&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;Sun Certified</description><pubDate>Tue, 09 Oct 2007 02:23:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการ decompile/deassemble จาวาคลาสไฟล์ (.class) ขั้นพื้นฐาน โดยใช้คำสั่ง javap</title><link>http://www.jhelp.net/article.aspx?id=10096</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราสามารถ decompile หรือ deassemble จาวาคลาสไฟล์ (.class) ที่เรามีอยู่ ให้อยู่ในรูปของ source code จาวาที่คนเราสามารถอ่านเข้าใจได้แบบขั้นพื้นฐาน โดยใช้โปรแกรมที่ให้มาพร้อมกับ JDK อยู่แล้ว ที่ชื่อว่า "javap" &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;javap เป็นโปรแกรมที่ทำงานแบบ command-line based คือการเรียกใช้จะทำผ่าน console (Command Prompt ใน Windows) การใช้งานก็ไม่ยุ่งยากอะไร แค่ระบุชื่อคลาสที่เราต้องการทำ decompile เป็น argument ของโปรแกรม อย่างเช่น ถ้าเรามีคลาส Student อยู่ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class Student {&lt;BR&gt;   private String _name;&lt;BR&gt;   private int _age;&lt;BR&gt;   &lt;BR&gt;   public Student(String name, int age) {&lt;BR&gt;      _name = name;&lt;BR&gt;      _age = age;&lt;BR&gt;   }&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;  public boolean equals(Object o) {&lt;BR&gt;     if (!(o instanceof Student)) &lt;BR&gt;        return false;&lt;BR&gt;      &lt;BR&gt;     Student s = (Student) o;&lt;BR&gt;     if (_name.equals(s._name) &amp;amp;&amp;amp; _age == s._age)&lt;BR&gt;        return true;&lt;BR&gt;     &lt;BR&gt;     return false;&lt;BR&gt;  }&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   public static void main(String[] args) {&lt;BR&gt;        Student s1 = new Student("John", 20);&lt;BR&gt;        Student s2 = new Student("John", 20);&lt;BR&gt; &lt;BR&gt;        System.out.println("s1 equals s2 ? = " + s1.equals(s2));&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;โดยปรกติ เมื่อ compile Student.java เสร็จแล้วเราจะได้ Student.class แต่ถ้าเราต้องการ de</description><pubDate>Sun, 07 Oct 2007 23:11:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ขั้นตอนการสอบ Java certification ของ Sun มีอะไรบ้าง ?</title><link>http://www.jhelp.net/article.aspx?id=10095</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ขั้นตอนการสอบจาวา certification ของ Sun มีดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. เลือกก่อนว่าเราต้องการสอบจาวา certification ตัวไหน ซึ่งแต่ล่ะตัวก็จะมีค่าสอบที่ไม่เท่ากันและระดับของความรู้ที่ต้องใช้ก็ต่างกัน จาวา certification ของ Sun ตอนนี้จะมีอยู่ 8 ตัวดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Sun Certified Java Associate (100$)&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#111111&gt;Sun Certified Java Programmer 5.0&lt;SPAN class=791001503-04102007&gt; (200$)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#111111&gt;Sun Certified Developer for Java 2 Platform : Part 1: Assignment (250$), Part 2: Exam&lt;SPAN class=791001503-04102007&gt; (200$)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#111111&gt;Sun Certified Web Component Developer for the&lt;SPAN class=791001503-04102007&gt; &lt;/SPAN&gt;J2EE 1.4&lt;SPAN class=791001503-04102007&gt;    (200$)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007&gt;&lt;P align=left&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#111111&gt;Sun Certified Business Component Developer fo&lt;SPAN class=791001503-04102007&gt;r &lt;/SPAN&gt;J2E&lt;SPAN class=791001503-04102007&gt;E&lt;/SPAN&gt;&lt;SPAN class=791001503-04102007&gt;    (200$)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;LI&gt;&lt;SPAN class=791001503-04102007&gt;&lt;SPAN class=791001503-04102007</description><pubDate>Fri, 05 Oct 2007 03:52:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการ override hashCode() อย่างง่าย</title><link>http://www.jhelp.net/article.aspx?id=10088</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;อย่างที่พอจะทราบกันแล้วว่า เมื่อไหร่ก็ตามที่เราทำการ override equals() แล้ว เราต้องทำการ override hashCode() ด้วยเสมอ เพื่อรักษาข้อตกลง (contract) ของ hashCode() ที่ว่าทุก object ที่เหมือนหรือเท่ากันจากการทดสอบด้วย equals() จะต้องมีค่า hash code เท่ากันเสมอ &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทั้งนี้ก็เพราะว่า วิธีการทำงาน (implementation) ของ hashCode() ที่ได้รับสืบทอดมาจาก Object จะให้ค่า hash code ที่ไม่ได้ขึ้นอยู่กับค่าข้อมูลของ instance variable ของ object  ค่าที่ได้เป็นเพียงค่า integer ตัวหนึ่งสำหรับ object นั้น ทำให้ object สองตัวที่ถึงแม้จะเปรียบเทียบแล้วว่าเท่ากันด้วย equals() แต่ก็มี hash code ต่างกัน เมื่อนำ object นี้ไปใช้ใน HashMap หรือ Hashtable จะทำให้ทำงานผิดพลาดได้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ว่าแต่ hash code คืออะไรกัน ? hash code ก็เป็นเพียงค่า integer ค่าหนึ่งที่ได้จากการทำ hashing กับข้อมูลชุดหนึ่ง (คือการนำค่าของข้อมูลชุดหนึ่ง อย่างเช่น ชื่อ ไปผ่าน hashing function หรือ algorithm ที่ใช้สร้างค่า integer ทำให้ได้ค่า integer ออกมาค่าหนึ่ง ที่จะใช้แทนตัวข้อมูลนั้นได้ โดยมีหลักสำคัญอยู่ว่า ถ้าเป็นข้อมูลชุดเดียวกัน จะต้องมีค่า hash code เท่ากันเสมอ) ค่า hash code นี้จะมีความสำคัญอย่างมาก เมื่อเราต้องใช้งาน data structure ที่มีการทำงานโดยอาศัยเรื่องของ hashing อย่างเช่น HashMap, HashSet และ Hashtable&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ขั้นตอนการ override hashCode() อย่างง่าย มีดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. ทำการ override hashCode() ที่ได้รับสืบทอดมาจาก Object โดยเพิ่ม method declaration เข้าไปในคลาสที่เราเขียนขึ้น ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public int hashCode() {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;FONT face=Arial&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. ทำการคำนวณหาค่า hash code จากค่าของตัวแปร instance variable ทั้งหมดที่มีในคลาสที่เราเขียน (ตัวแปรเหล่านี้จะต้องเป็นตัวแป</description><pubDate>Wed, 12 Sep 2007 20:39:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการ override toString() อย่างง่าย</title><link>http://www.jhelp.net/article.aspx?id=10092</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;โดยปรกติ ถ้าเราไม่ทำการ override toString() ของคลาสที่เราเขียนขึ้น การทำงานของ toString() จะเป็นไปตามวิธีการทำงาน (implementation) ที่ถูกกำหนดไว้ใน Object (เพราะว่าคลาสที่เราเขียนขึ้นจะเป็น subclass ของ Object เสมอ และได้รับสืบทอด toString() มาจาก Object) โดยเมื่อเรียก toString() จะได้ผลลัพท์เป็น String ที่ประกอบไปด้วย ชื่อ class ตามด้วยเครื่องหมาย @ (at-sign) และตามด้วย hash code ของ object ที่อยู่ในรูปของฐาน 16 อย่างเช่น ถ้าเรารันโปรแกรมตัวอย่างด้านล่างนี้&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class MyClass {&lt;BR&gt;   public static void main(String[] args) {&lt;BR&gt;      MyClass c = new MyClass();&lt;BR&gt;      &lt;BR&gt;      System.out.println(c.toString()); &lt;FONT face=Arial&gt;// พิมพ์ String ที่ได้จาก toString() ออกหน้าจอ&lt;/FONT&gt;&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;จะได้ผลลัพท์ออกมาเป็น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;U&gt;&lt;FONT color=#111111 size=3&gt;&lt;A href="mailto:MyClass@7d772e"&gt;MyClass@7d772e&lt;/A&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;A href="mailto:MyClass@7d772e"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;จะเห็นว่า String ผลลัพท์จะประกอบไปด้วยชื่อคลาส MyClass ตามด้วยเครื่องหมาย @ (at-sign) และค่า hash code ในฐาน 16 ของ object c&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;อย่างไรก็ตาม วิธีการทำงานของ toString() ที่ได้รับสืบทอดมาจาก Object ให้ String ผลลัพท์ที่ไม่ให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับ object เท่าไหร่นัก ดังนั้นเราควร override toString() เพื่อเปลี่ยนวิธีการทำงานจากที่ได้รับสืบทอดมาให้เป็นในแบบที่เราต้องการ คือให้ toString() ให้ค่า String ที่ให้ข้อมูลของ object ที่เป็นประโยชน์ต่อผู้ใช้มากกว่านี้ วิธีการ override toString() อย่างง่าย มีดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;1. เพิ่ม method declaration ของ toString() เข้าไปในคลาสที่เราเขียน เพื่อ override toString() ที่ได้รับสืบทอดมาจาก Object&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public String toString() {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT col</description><pubDate>Wed, 12 Sep 2007 20:37:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการ override equals() อย่างง่าย</title><link>http://www.jhelp.net/article.aspx?id=10087</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;อย่างที่พอจะทราบกันแล้วว่า  ถ้าเราต้องการให้ equals() ของคลาสที่เราเขียนขึ้นเองทำการเปรียบเทียบว่า object เท่ากันหรือไม่ โดยดูจากค่าใน object นั้น แทนที่จะทำการเปรียบเทียบโดยใช้ค่า reference ของ object (คือเปรียบเทียบว่าเป็น object เดียวกันหรือไม่) เราต้องทำการ override equals() พร้อมกับกำหนดวิธีการทำงานแบบที่เราต้องการเอง วิธีการ override equals() อย่างง่าย มีขั้นตอนดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. เพิ่ม equals() method declaration เข้าไปในคลาสที่เราเขียนขึ้น ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#111111 size=3&gt;public boolean equals(Object o) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#111111 size=3&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. ทำการตรวจสอบชนิดของ object ที่รับมาว่าเป็น object ของคลาสที่เราเขียนหรือไม่ โดยใช้ operator instanceof  ถ้า object ที่รับมาไม่ใช่ object ของคลาสที่เราเขียน ให้ return ค่าเป็น false ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#111111 size=3&gt;if (!(o instanceof MyClass))&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#111111 size=3&gt;   return false;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. ทำการ cast object ที่รับมาให้เป็นชนิดของคลาสที่เราเขียน ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="Courier New" color=#111111 size=3&gt;MyClass c = (MyClass) o;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;4. ทำการเปรียบเทียบค่าแต่ล่ะตัวของ object ทั้งสองว่าเท่ากันหรือไม่ ถ้าค่าเท่ากันให้ return true แต่ถ้าไม่เท่ากันให้ return false ในการเปรียบเทียบค่านั้น มีหลักดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าค่านั้นเป็นชนิดข้อมูล byte, short, int, long, char ให้ใช้ operator == ในการเปรียบเทียบ&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าค่านั้นเป็นชนิดข้อมูล float ให้แปลงค่า float ให้เป็น int ก่อน โดยใช้ Float.floatToIntBits() แล้วเปรียบเทียบค่าที่ได้โดยใช้ operator == อีกที&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face</description><pubDate>Wed, 12 Sep 2007 17:41:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้ง Eclipse 3.3 (Europa) สำหรับ Windows</title><link>http://www.jhelp.net/article.aspx?id=10091</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง Eclipse 3.3 (Europa) มีขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. download และติดตั้ง Sun JDK หรือ JRE 1.5 หรือสูงกว่า รายละเอียดอ่านได้จากบทความ "วิธีการติดตั้งและรันโปรแกรมจาวาอย่างง่าย"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. เข้าไปที่ web site ของ Eclipse เพื่อ download Eclipse SDK สำหรับ Windows โดยเข้าไปที่ &lt;/FONT&gt;&lt;A href="http://www.eclipse.org/downloads/"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://www.eclipse.org/downloads/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial color=#111111 size=3&gt; แล้วเลือกที่ link Eclipse IDE for Java Developers เพื่อ download ไฟล์ eclipse-java-europa-win32.zip ดังรูป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/8fccf2d7-86b6-462c-b6bc-9cc8.PNG" border=1&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ระบบจะให้เราเลือก Open หรือ Save ไฟล์ดังกล่าว ให้เราเลือก Save ไฟล์ใน directory ที่เราต้องการ  &lt;/FONT&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อ download เสร็จแล้วเราจะได้ไฟล์ eclipse-java-europa-win32.zip (78 MB) มา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. ทำการ unzip ไฟล์ eclipse-java-europa-win32.zip ลงใน directory ที่เราต้องการ อย่างเช่น d:\   เมื่อแตกไฟล์ออกมาแล้ว จะมี directory ที่ชื่อว่า eclipse สร้างขึ้นใน directory ที่เราแตกไฟล์นั้น อย่างเช่น d:\eclipse  ไฟล์ของโปรแกรม Eclipse จะถูกเก็บอยู่ใน directory eclipse นี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;4. รันโปรแกรม Eclipse โดย double click ที่ไฟล์ eclipse.exe ซึ่งอยู่ใน directory eclipse   ถ้าเราต้องการเรียกใช้งานโปรแกรม Eclipse จาก Desktop ให้สร้าง shortcut โดยเลือกที่ไฟล์ eclipse.exe แล้ว click ขวา เลือก Desktop (create shortcut)  Shortcut สำหรับเรียกใช้โปรแกรม Eclipse จะถูกสร้างขึ้นที่ Desktop&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อรันโปรแกรม Eclipse ข</description><pubDate>Tue, 11 Sep 2007 01:29:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีติดตั้ง Visual Editor (VE 1.2) สำหรับ Eclipse 3.2</title><link>http://www.jhelp.net/article.aspx?id=10065</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง VE 1.2 (Visual Editor) สำหรับ Eclipse 3.2.x มีขั้นตอนดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. download และติดตั้ง Eclipse SDK 3.2.x  รายละเอียดอ่านได้จากบทความ "การติดตั้ง Eclipse 3.2.2 สำหรับ Windows"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. download และติดตั้ง EMF 2.2.0 หรือใหม่กว่า &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่หน้า Downloads ของ EMF project &lt;/FONT&gt;&lt;A href="http://www.eclipse.org/modeling/emf/downloads/?project=emf"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://www.eclipse.org/modeling/emf/downloads/?project=emf&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial color=#111111 size=3&gt; ในส่วนของ 2.2.4 Maintenance Builds ให้ click ที่ link Runtime เพื่อ download EMF 2.2.4 (3.6M) &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/522e16dc-c75d-45ba-9c67-0da5.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/ba5b9c85-65c3-4960-9ce4-148b.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt; เมื่อ download เสร็จแล้ว เราจะได้ไฟล์ emf-sdo-runtime-M200705241030.zip มา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำการติดตั้ง EMF ลงใน Eclipse 3.2 โดย unzip ไฟล์ emf-sdo-runtime-M200705241030.zip ลงใน directory ที่เราลงโปรแกรม Eclipse ไว้ (directory ที่มี directory eclipse อยู่) &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. download และติดตั้ง GEF 3.2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่หน้า Downloads ของ GEF project &lt;/FONT&gt;&lt;A href="http://download.eclipse.org/tools/gef/downloads/index.php"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://download.eclipse.org/tools/gef/downloads/index.php&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial color=#111111 size=3&gt; ให้เลือก Build Name 3.2 ที่อยู่ในส</description><pubDate>Mon, 10 Sep 2007 21:02:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้งและรันโปรแกรมจาวาสำหรับ Windows อย่างง่าย</title><link>http://www.jhelp.net/article.aspx?id=10036</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ขั้นตอนการลงและรันโปรแกรมจาวา อย่างง่าย มีดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial color=#111111&gt;1. download Java JDK จาก web site ของ Sun โดย version ล่าสุดจะเป็น Java 1.6 หรือ Java 6 update 2&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT face=Arial size=3&gt;&lt;FONT color=#111111&gt;เข้าไปที่หน้า download ที่ &lt;/FONT&gt;&lt;A href="http://java.sun.com/javase/downloads/index.jsp"&gt;&lt;FONT color=#111111&gt;http://java.sun.com/javase/downloads/index.jsp &lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#111111&gt;ในหน้านี้จะมีให้เราเลือก download โปรแกรมหลายอย่าง ไม่ว่าจะเป็น Netbeans หรือ JRE  ให้มองหา JDK 6u2 แล้วเลือก download  &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial size=3&gt;&lt;FONT color=#111111&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/244293b0-7d50-4cf5-840f-8d56.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในหน้าถัดมา เราต้องเลือก Accept license agreement เพื่อยอมรับข้อตกลงการใช้งาน JDK ก่อนที่จะ download ได้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/3fb4430f-092f-43a0-89d6-a3de.PNG" border=1&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จากนั้นให้ click ที่ link Windows Offline Installation (build 06), Multi-language ที่เป็นรายการแรกใน Windows Platform เพื่อ download ไฟล์ jdk-6u2-windows-i586-p.exe (65.57 MB)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial size=3&gt;&lt;FONT color=#111111&gt;Note: JDK จะเป็น development kit ที่ใช้บน command-line (ใช้ใน command prompt) ซึ่งจะมีทั้ง Java compiler และ Java interpreter (Java VM) และ tools อื่น ๆ รวมอยู่ด้วยกัน  JDK จะต่างจาก JRE ตรงที่ JRE จะมีเพียง Java interpreter หรือ Java VM และ runtime library ไว้ใช้รันจาวาโปรแกรมเท่านั้น จะไม่มี Java compiler มาด้วย จึงไว้ใช้กรณีที่เราจะรันโปรแกรมจาวาเท่านั้น โดยเราไม่ต้องการพัฒนาโปรแกรมจาวา&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าเราต้องการ download JDK 1.6 พร้อมกับโปรแก</description><pubDate>Mon, 10 Sep 2007 20:47:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้ง Eclipse 3.2.2 สำหรับ Windows</title><link>http://www.jhelp.net/article.aspx?id=10069</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง Eclipse 3.2.2 มีขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. download และติดตั้ง Sun JDK หรือ JRE 1.5 หรือสูงกว่า รายละเอียดอ่านได้จากบทความ "วิธีการติดตั้งและรันโปรแกรมจาวาอย่างง่าย"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. เข้าไปที่ web site ของ Eclipse เพื่อ download Eclipse SDK สำหรับ Windows โดยเข้าไปที่ &lt;A href="http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/index.php"&gt;http://download.eclipse.org/eclipse/downloads/drops/R-3.2.2-200702121330/index.php&lt;/A&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#111111 size=3&gt; แล้วเลือกที่ link eclipse-SDK-3.2.2-win32.zip เพื่อ download ไฟล์ eclipse-SDK-3.2.2-win32.zip ดังรูป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/c9ff0a90-2944-4fcb-b862-af51.PNG" border=1&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ระบบจะให้เราเลือก mirror site ที่เราต้องการใช้ในการ download ไฟล์ โดย default จะเป็น site ที่อยู่ใกล้กับเรา อย่างเช่น mirror site ในไทยก็จะมี Thai National Mirror (http) และ Datawiz Limited Partnership (http) ดังรูป ให้เราเลือก mirror site ที่เราต้องการ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/c5a6c41e-5e71-4f5a-874c-b390.PNG" border=1&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อ download เสร็จแล้วเราจะได้ไฟล์ eclipse-SDK-3.2.2-win32.zip (121MB) มา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. ทำการ unzip ไฟล์ eclipse-SDK-3.2.2-win32.zip ลงใน directory ที่เราต้องการ อย่างเช่น d:\   เมื่อแตกไฟล์ออกมาแล้ว จะมี directory ที่ชื่อว่า eclipse สร้างขึ้นใน directory ที่เราแตกไฟล์นั้น อย่างเช่น d:\eclipse  ไฟล์ของโปรแกรม Eclipse จะถูกเก็บอยู่ใน directory eclipse นี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;4. รันโปรแกรม Eclipse โดย double click ที่ไฟล์ e</description><pubDate>Mon, 10 Sep 2007 20:22:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ทำไมเราถึงสามารถเรียกใช้บางคลาสในจาวา อย่างเช่น System, String, Integer ได้เลย โดยไม่ต้องทำการ import ก่อน ?</title><link>http://www.jhelp.net/article.aspx?id=10090</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เวลาที่เราเขียนโปรแกรมจาวานั้น เรามักจะพบว่ามีหลายคลาสที่เราสามารถเรียกใช้ได้ทันที โดยไม่ต้องทำการ import เข้ามาก่อน อย่างเช่น System, String, Integer และถ้าสังเกตดี ๆ จะพบว่าคลาสเหล่านี้อยู่ใน package java.lang เท่านั้น ในทางกลับกันคลาสในหลาย ๆ package กลับต้องทำการ import เข้ามาก่อน ถึงจะใช้งานได้ อย่าง ArrayList, FileReader, BigInteger  ทำไมถึงเป็นแบบนี้ ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่า ในจาวานั้นโดย default จะมีการ import package java.lang ไว้ให้โดยอัตโนมัติ เมื่อเราเขียน code ในจาวาจะเหมือนกับว่ามี import java.lang.*; อยู่ที่ต้นไฟล์ไว้ให้อยู่แล้ว ทำให้เราสามารถเรียกใช้คลาสใน package นี้ได้ทันที ทำให้สะดวกในการใช้งานคลาสพื้นฐาน อย่างเช่น System, String, Runtime  ในทางกลับกันคลาสใน package อื่น ๆ ไม่ได้มีการทำการ import ให้โดยอัตโนมัติ ถ้าเราต้องการใช้งานคลาสเหล่านั้น เราก็ต้องทำการ import คลาสนั้นหรือ package ที่คลาสนั้นอยู่เข้ามาก่อนเสมอ&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Mon, 30 Jul 2007 19:59:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>Java application, Applet, Servlet, JSP, EJB, Midlet ต่างกันอย่างไร ?</title><link>http://www.jhelp.net/article.aspx?id=10023</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จาวาโปรแกรมมีหลายประเภท อย่างเช่น &lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Java application เป็นโปรแกรมที่ทำงานบน desktop อย่างที่เราคุ้นเคยกับโปรแกรมที่ทำงานบน Windows โดยปรกติ Java application จะมีหรือไม่มี graphical user interface (GUI) ในการทำงานก็ได้ แต่ถ้ามีจะใช้ Java Swing ในการทำหน้าจอ เรามักใช้ Java application สำหรับโปรแกรมที่ทำงานแบบ stand-alone (อาจเป็น server โปรแกรมก็ได้) หรือเป็น client โปรแกรมสำหรับติดต่อกับ server การใช้งาน Java application มักเป็น Intranet (network แบบภายใน) อย่างไรก็ตาม Java application สามารถเรียกใช้ผ่าน Internet ได้ โดยใช้ Java Web Start &lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Applet เป็นจาวาโปรแกรมที่ทำงานอยู่ในตัว browser อย่างเช่น IE หรือ Netscape ลักษณะสำคัญของ applet ที่ต่างจาก application ก็คือ applet จำเป็นต้องมี browser ในการทำงาน (มี JVM อยู่ใน browser ทำให้ applet สามารถทำงานได้) และการทำงานของ applet จะเป็นแบบ event-based คือเมื่อมีเหตุการณ์ หรือ event เกิดขึ้นใน browser browser จะทำการเรียก method ที่กำหนดไว้สำหรับเหตุการณ์นั้น ๆ เรามักใช้ applet ในกรณีที่เราต้องการสร้างโปรแกรมที่ทำงานได้บน web และ user ต้องการการตอบสนองจากโปรแกรมสูง (คือการแสดงผลมีความซับซ้อนและรวดเร็ว) อย่างเช่น chat room, โปรแกรมแสดงราคาหุ้น, โปรแกรมแสดงรายการข่าว ที่ใช้ applet แทน web pages แบบธรรมดาก็เพราะว่า HTML หรือ dynamic HTML นั้นมีข้อจำกัดในการสร้าง/แสดงผลหน้าจอ และการทำงานของ web application ยังเป็นแบบ request/response ซึ่งทำให้การสร้างหน้าจอที่มีความซับซ้อนทำได้ยาก &lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Servlet เป็นจาวาโปรแกรมที่ทำงานบนฝั่ง server หรือที่เรียกกันว่า server-side Java program ถูกสร้างขึ้นเพื่อเสริมความสามารถของ Web server เพื่อสร้าง dynamic content หรือ dynamic pages แต่เดิมถ้าเราใช้ Web server เราก็ใช้ได้เพียงแค่ static page คือ web page ที่แสดงข้อมูลที่ไม่เปลี่ยนแปลง ภายหลังเราต้องการให้ web page แสดงข้อมูลที่ดึงจาก database หรือมีการทำการประมวลผลบางอย่างก่อน แบบนี้เราจะเรียกว่าเป็น dynamic pages Servlet ถูกใช้เป็นส่วนสำคัญในกา</description><pubDate>Sat, 28 Jul 2007 17:57:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ทำไมเมื่อเราเปรียบเทียบ object ของคลาสที่เราเขียนขึ้นมาเองที่มีค่าเหมือนกัน โดยใช้ equals() แล้วถึงได้ผลลัพท์เป็น false</title><link>http://www.jhelp.net/article.aspx?id=10089</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;FONT face=Arial&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111 size=3&gt;ทำไมเมื่อเราเปรียบเทียบ object ของคลาสที่เราเขียนขึ้นมาเองที่มีค่าเหมือนกัน โดยใช้ equals() แล้วถึงได้ผลลัพท์เป็น false ? อย่างเช่น ถ้าเราเขียนคลาส Student ขึ้นมา ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class Student {&lt;BR&gt;   private String _name;&lt;BR&gt;   private int _age;&lt;BR&gt;   &lt;BR&gt;   public Student(String name, int age) {&lt;BR&gt;      _name = name;&lt;BR&gt;      _age = age;&lt;BR&gt;   }&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   public static void main(String[] args) {&lt;BR&gt;        Student s1 = new Student("John", 20);&lt;BR&gt;        Student s2 = new Student("John", 20);&lt;BR&gt; &lt;BR&gt;        System.out.println("s1 equals s2 ? = " + s1.equals(s2));&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;FONT size=+0&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อเปรียบเทียบ object s1 และ s2 ซึ่งมีค่าเหมือนกันคือ name="John" และ age=20 โดยใช้ equals() กลับได้ false  ซึ่งหมายความว่า object ทั้งสองนั้นไม่เหมือนกัน ทำไมถึงเป็นแบบนี้ ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Cause&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่า เมื่อเราสร้างคลาสขึ้นมาเอง คลาสที่เราเขียนขึ้นจะได้รับ (inherit) วิธีการทำงาน (implementation) ของ equals() มาจากคลาส Object (Object เป็น superclass ของทุกคลาสในจาวา) ซึ่งโดย default วิธีการทำงานที่ได้รับมานี้จะทำการเปรียบเทียบ object โดยใช้ค่า reference ในการเปรียบเทียบหรือก็คือเปรียบเทียบว่าเป็น object เดียวกันหรือไม่ โดยไม่ได้สนใจว่าค่าภายใน object นั้นจะเหมือนกันหรือไม่ นี่เป็นเหตุผลว่าทำไมเมื่อเราเปรียบเทียบ s1 และ s2 โดยใช้ equals() แล้วถึงได้ false ทั้งนี้ก็เพราะว่า s1 และ s2 เป็นคนล่ะ object กัน ซึ่งก็จะมีค่า reference หรือตัวชี้ต่างกัน จึงได้ผลว่าไม่เท่ากัน&lt;/F</description><pubDate>Sat, 28 Jul 2007 01:17:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีแก้ไขปัญหา I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property เมื่อใช้ jDTS JDBC driver</title><link>http://www.jhelp.net/article.aspx?id=10086</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Problem&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำไมเมื่อใช้ JDBC driver ของ jDTS (ซึ่งเป็น open source JDBC driver สำหรับ MS SQL server และ Sybase) ติดต่อกับ MS SQL server และได้วางไฟล์ jdts-1.2.1.jar ไว้ใน class path แล้ว แต่กลับได้ error ดังนี้ (ในกรณีนี้ใช้งานเป็น servlet)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Exception report&lt;BR&gt;&lt;BR&gt;message &lt;BR&gt;&lt;BR&gt;description The server encountered an internal error () that prevented it from fulfilling this request.&lt;BR&gt;&lt;BR&gt;exception &lt;BR&gt;&lt;BR&gt;javax.servlet.ServletException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.&lt;BR&gt;org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)&lt;BR&gt;org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)&lt;BR&gt;org.apache.jsp.sampleSQL_jsp._jspService(sampleSQL_jsp.java:103)&lt;BR&gt;org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)&lt;BR&gt;javax.servlet.http.HttpServlet.service(HttpServlet.java:802)&lt;BR&gt;org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)&lt;BR&gt;org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)&lt;BR&gt;org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)&lt;BR&gt;javax.servlet.http.HttpServlet.service(HttpServlet.java:802)&lt;BR&gt;&lt;BR&gt;root cause &lt;BR&gt;&lt;BR&gt;java.sql.SQLException: I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.&lt;BR&gt;net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:611)&lt;BR&gt;net.sourceforge.jtds.jdbc.ConnectionJDBC2.&amp;lt;init&amp;gt;(ConnectionJDBC2.java:331)&lt;BR&gt;net.sourceforge.jtds.jdbc.ConnectionJDBC3.&amp;lt;init&amp;gt;(ConnectionJDBC3.java:50)&lt;BR&gt;net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:178)&lt;BR&gt;java.sql.DriverManager.getConnection(DriverManager.java:525)&lt;BR&gt;java.sql.DriverManager.getConnection(DriverManager.java:193)&lt;BR&gt;org.apache.jsp.sampleSQL_jsp._jspService(sampleSQL</description><pubDate>Sat, 14 Jul 2007 19:38:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>จาวา 64-bit คืออะไร และจะใช้งานได้อย่างไร ?</title><link>http://www.jhelp.net/article.aspx?id=10085</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าใครสังเกตดี ๆ ตอนที่เข้าไป download Java SDK หรือ JRE จาก web site ของ Sun อย่างที่เห็นจากรูปด้านล่าง จะเห็นว่ามี version ของจาวาที่เป็น 64-bit ให้เลือกด้วย อย่างเช่น SDK 6u2 สำหรับ Solaris x64 platform, SDK 6u2 สำหรับ Linux x64 platform และ SDK 6u2 สำหรับ Windows x64 platform  จาวา 64-bit คืออะไร ? แล้วเราจะใช้งานได้ยังไง ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/9195c149-a7f9-49fd-990a-72ec.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จาวา 64-bit ก็คือ version ของจาวาที่พัฒนาขึ้นมาให้ใช้งานในสภาพแวดล้อมบน platform ที่เป็น 64 bit พูดง่าย ๆ ก็คือเป็นโปรแกรมจาวาที่เอาไว้ใช้งานบนเครื่องที่มี OS และ processor เป็นแบบ 64 bit นั่นเอง ถ้าเราลองดู processor หรือ CPU ตัวใหม่ ๆ จะเห็นว่าเริ่มมี processor ที่เป็น 64-bit ให้ใช้งานบ้างแล้ว อย่างเช่น IA64 ของค่าย Intel หรือ AMD64 ของค่าย AMD  ในส่วนของ OS เองก็มี version ที่เป็น 64 bit ด้วยเช่นกัน อย่างเช่น Red Hat Enterprise Linux, Windows XP, Windows 2003 Server (64-bit edition) &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;สังเกตว่า การจะใช้งานจาวา 64 bit ได้นั้น เราจะต้องมีทั้ง OS และ processor ที่เป็นแบบ 64 bit เสียก่อน ซึ่งในตอนนี้มักจะเป็นเครื่องระดับ server มากกว่า&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;การใช้งานจาวา 64 bit จะมีข้อดีตรงที่เราจะได้ address space เพิ่มขึ้นมา ทำให้เราสามารถกำหนดขนาดของ heap ได้ขนาดใหญ่กว่าเดิม ซึ่งทำให้โปรแกรมจาวาที่เราเขียนขึ้นสามารถใช้ memory ได้มากขึ้น (มากกว่า 1.6 GB) นอกจากนี้ยังทำให้เราสามารถสร้าง thread ได้มากกว่าเดิมด้วย สังเกตว่าข้อดีเหล่านี้จะมีประโยชน์สำหรับโปรแกรมขนาดใหญ่ที่ทำงานเป็นแบบ server โปรแกรมมากกว่าโปรแกรมเล็ก ๆ ที่เราใช้งานทั่วไป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;สำหรับจาวา 1.5 และ 1.6 (version 64 bit) ตอนนี้จะสนับสนุน OS และ processor 64 bit ดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3</description><pubDate>Fri, 13 Jul 2007 17:55:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้ง Tomcat 6.0 สำหรับ Windows</title><link>http://www.jhelp.net/article.aspx?id=10084</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง Apache Tomcat 6.0 มีขั้นตอนดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. ติดตั้ง JDK หรือ JRE version 1.5 หรือสูงกว่า รายละเอียดการติดตั้งอ่านได้จากบทความ "วิธีการติดตั้งและรันโปรแกรมจาวาสำหรับ Windows อย่างง่าย"  เมื่อติดตั้งเสร็จแล้วให้กำหนดเพิ่ม environment variable ที่ชื่อว่า JAVA_HOME พร้อมกับระบุ path หรือ directory ที่เราลง JDK หรือ JRE เอาไว้ โดย click ขวาที่ My Computer แล้วเลือก Properties หน้าจอ System Properties จะแสดงขึ้น ให้เลือกที่ Advanced tab จากนั้น click ที่ปุ่ม Environment Variable ดังรูป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/0197ef76-6a86-444e-ae97-974a.png" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในส่วน System variables ให้เลือก New เพื่อเพิ่ม environment variable JAVA_HOME โดยกำหนดให้ Variable name เป็น JAVA_HOME และ Variable value เป็น path หรือ directory ของ JDK หรือ JRE ที่เราลงไว้ ดังรูป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/34eaf3ae-1e8f-4092-a371-62d0.png" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จากนั้น click ปุ่ม OK เพื่อเพิ่ม environment variable JAVA_HOME เข้าไป จะได้ผลดังรูปด้านล่าง จะเห็นว่า JAVA_HOME จะถูกเพิ่มเข้าไปในส่วน System variables&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/6e8687b8-c318-4ebe-83c9-3e1c.png" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. ติดตั้งโปรแกรม Tomcat 6.0 การติดตั้งโปรแกรม Tomcat นั้น เราสามารถทำได้สองวิธี โดยอาจจะติดตั้งโดยใช้ zip ไฟล์ หรือ Windows service installer ก็ได้ ให้เข้าไปที่ web site ของ Apache เพื่อ download โปรแกรม Tomcat ที่ &lt;/FONT&gt;&lt;A href="http://tomcat.apache.org/download-60.cgi"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://tomcat.apache.org/down</description><pubDate>Mon, 02 Jul 2007 05:18:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>log4j คืออะไร ?</title><link>http://www.jhelp.net/article.aspx?id=10083</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;โดยปรกติโปรแกรมจาวาที่เราเขียนขึ้นมักจำเป็นต้องเขียนหรือแสดงข้อมูลสำคัญบางอย่างลงไฟล์หรือออกหน้าจอ เพื่อแสดงให้เห็นสถานะการทำงาน หรือข้อผิดพลาดของโปรแกรมที่เกิดขึ้นระหว่างการทำงาน ทั้งนี้ก็เพื่อทำให้เราสามารถรู้สถานะของโปรแกรม หรือความผิดพลาดที่เกิดขึ้นได้ ซึ่งจะทำให้การ debug หรือ maintenance ทำได้ง่าย เราเรียกการบันทึกหรือแสดงผลข้อมูลเหล่านี้ว่าเป็นการทำ logging &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในการทำ logging นั้น เราสามารถใช้ logging API เข้ามาช่วยได้ ซึ่งจะทำให้เราไม่ต้องเสียเวลาเขียน code ในส่วนที่ต้องทำ logging เอง ทำให้พัฒนาโปรแกรมได้เร็วขึ้น  logging API ที่นิยมใช้กันก็จะมี JDK 1.4 logging API และ Apache log4j API  สำหรับ JDK 1.4 logging API นั้นจะมากับ JDK หรือ JRE อยู่แล้ว (คืออยู่ใน runtime library) ทำให้เราสามารถใช้งานได้ทันที โดยไม่ต้อง download library มาเพิ่ม แต่สำหรับ Apache log4j การจะใช้งานได้นั้นเราต้อง download package ของ log4j มาก่อน แล้วเพิ่ม jar file ที่ได้มานั้นเข้าไปใน class path ก่อนที่จะใช้งานได้ รายละเอียดของ log4j สามารถเข้าไปดูได้ที่ web site ของ Apache ที่ &lt;/FONT&gt;&lt;A href="http://logging.apache.org/log4j/docs/"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://logging.apache.org/log4j/docs/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;</description><pubDate>Sat, 30 Jun 2007 18:35:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>คำสั่ง java -Xmx512M ClassName หมายความว่าอย่างไร ?</title><link>http://www.jhelp.net/article.aspx?id=10027</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial size=3&gt;java -Xmx size เป็น option ที่ใช้กำหนดขนาดสูงสุดของ Heap size ครับ ถ้าเราไม่กำหนด maximum heap size ค่า default จะเป็น 64 MB ผลก็คือ ถ้าโปรแกรมของเราใช้ memory มากกว่า 64 MB memory ก็จะไม่พอ จะทำให้เกิด java.lang.OutOfMemoryError ขึ้นมาได้ ดังนั้นถ้าโปรแกรมของเราต้องใช้ memory มากกว่า 64 MB (ดูได้จากที่ว่ามี OutOfMemoryError ขึ้นมา) เราก็ระบุขนาด maximum ของ heap size ใหม่ ให้มากกว่า 64 MB ครับ อย่างเช่น&lt;BR&gt;&lt;BR&gt;java -Xmx 512M ก็จะหมายถึงว่ากำหนด maximum heap size ให้เป็น 512 MB แทนที่จะเป็น 64 MB ตามค่า default&lt;BR&gt;&lt;BR&gt;รายละเอียดของ option ดูได้จาก Tool Guide ใน Java doc ครับ (ตัว document ที่ต้อง download ต่างหากจาก SDK) &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial size=3&gt;Note: Heap size คือ memory ส่วนที่ไว้ใช้สร้าง object ครับ คือ พวกที่ต้อง dynamic allocate&lt;/FONT&gt; &lt;!--MsgFile=2--&gt;&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Sat, 30 Jun 2007 18:19:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ปัญหาการคำนวณค่าทศนิยมผิดพลาดเมื่อใช้ตัวแปรชนิด float หรือ double</title><link>http://www.jhelp.net/article.aspx?id=10082</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำไมเมื่อเราใช้ตัวแปรชนิด float หรือ double ในการคำนวณค่าทศนิยมที่เกี่ยวข้องกับค่าน้อย ๆ อย่างเช่น 0.1, 0.01 แล้วถึงได้ผลลัพท์ไม่ถูกต้อง อย่างเช่น ถ้าเรารันโปรแกรมด้วยตัวอย่างด้านล่างนี้แล้ว &lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class TestFloatDouble {&lt;BR&gt;   public static void main(String[] args) {&lt;BR&gt;      float fsum = 0f;   // ตัวแปรชนิด float&lt;BR&gt;      double dsum = 0;   // ตัวแปรชนิด double&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;      for (int i = 0; i &amp;lt; 10; i++) {&lt;BR&gt;         fsum += 0.1;   // บวกด้วย 0.1 จำนวน 10 ครั้ง&lt;BR&gt;         dsum += 0.1;&lt;BR&gt;      }&lt;BR&gt; &lt;BR&gt;      System.out.println("sum (float) = " + fsum);&lt;BR&gt;      System.out.println("sum (double) = " + dsum);&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จะได้ผลลัพท์เป็น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;sum (float) = 1.0000001&lt;BR&gt;sum (double) = 0.9999999999999999&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ซึ่งไม่ถูกต้อง ผลลัพท์ที่ถูกต้องจะต้องเป็น 1.00  ทำไมถึงเป็นแบบนี้ ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Cause&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่า ตัวแปรชนิด float และ double นั้น มีข้อจำกัดที่ว่าไม่สามารถจะเก็บค่าทศนิยมได้อย่างแม่นยำ (exact) ทำให้ผลการคำนวณที่ได้ออกมาคลาดเคลื่อน ข้อจำกัดนี้เป็นลักษณะพื้นฐานของ float และ double อยู่แล้ว ดังนั้นการใช้งานตัวแปรชนิด float และ double จะเหมาะใช้ในการคำนวณที่ต้องการผลลัพท์เป็นค่าโดยประมาณ อย่างเช่น การคำนวณทางวิศวกรรมหรือทางวิทยาศาสตร์มากกว่าการคำนวณที่ต้องการผลลัพท์ที่แม่นยำ อย่างเช่น การคำนวณทางการเงิน&lt;/FONT&gt;&lt;/P</description><pubDate>Wed, 27 Jun 2007 20:24:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ถ้าเราต้องการตรวจสอบว่าปัญหาจาวาที่เราเจออยู่เป็นปัญหาจาก JVM หรือ Java API หรือไม่ จะตรวจสอบอย่างไร ?</title><link>http://www.jhelp.net/article.aspx?id=10081</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราสามารถตรวจสอบว่าปัญหาจาวาที่เราเจอ อย่างเช่น มีการ throw exception, JVM crash เป็นปัญหาจาก JVM หรือ Java API ใน version ที่เราใช้อยู่หรือไม่ โดยการเข้าไปค้นหา Bug Database ของ Sun ที่ &lt;/FONT&gt;&lt;A href="http://bugs.sun.com/bugdatabase/index.jsp"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://bugs.sun.com/bugdatabase/index.jsp&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;  &lt;/FONT&gt;&lt;FONT color=#111111&gt;ให้ลองค้นหา bug โดยใช้ version ของ JDK หรือ JRE ที่เราใช้ อย่างเช่น 1.5.0_06 และ keyword จากปัญหาที่พบ อย่างเช่น NullPointerException, crash, SIGSEGV เป็นต้น&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Fri, 22 Jun 2007 20:07:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>access modifier private, protected, public ต่างกันอย่างไรและควรใช้เมื่อไหร่ ?</title><link>http://www.jhelp.net/article.aspx?id=10080</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class=postcolor id=post-27663&gt;&lt;FONT face=Arial&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;access level ที่สำคัญ ที่เรามักต้องใช้กันบ่อย ๆ ก็คือ public, protected และ private (คิดว่า default คงไม่ค่อยได้ใช้กันเท่าไหร่)&lt;BR&gt;&lt;BR&gt;สำหรับ variable โดยปรกติจะให้เป็น private เนื่องจากไม่ต้องการให้ class อื่นสามารถ access variable ได้โดยตรง จุดประสงค์ก็เพื่อ &lt;BR&gt;1 variable มักเป็นส่วนหนึ่งของ implementation ภายในของ class ซึ่งอาจมีการเปลี่ยนแปลงภายหลังได้ ซึ่งถ้ายอมให้ class อื่นมาก access โดยตรงแล้ว เมื่อมีการเปลี่ยนแปลง อย่างเช่น เปลี่ยนชื่อ variable ก็จะมีผลกระทบกับ class ที่มาเรียกใช้นั้น (code break)&lt;BR&gt;2 class ที่ประกาศ variable นี้เป็น เป็นเพียง class เดียวเท่านั้น ที่รู้ว่าค่าของ variable นี้ควรจะเป็นอะไรได้บ้าง การที่ยอมให้ class อื่นมาเปลี่ยนค่าได้โดยตรง จะทำให้ค่าของ variable นี้ไม่ถูกต้อง การทำให้เป็น private แล้วมี get/set method ไว้ให้เรียกใช้ จะทำให้เราสามารถเขียน code ที่จะกำหนดค่าที่เป็นไปได้ของ variable ตัวนี้ได้ นอกจากนี้เรายังสามารถใช้ method get/set เป็นตัวกำหนดระดับที่ยอมให้ access variable ได้ อย่างเช่น ถ้ามีเพียง get method ก็หมายความว่ายอมให้อ่านได้เท่านั้น ถ้ามีเพียง set method ก็หมายความว่า set ค่าได้เท่านั้น&lt;BR&gt;&lt;BR&gt;อย่างไรก็ตาม ในบางกรณีเราจะให้ variable เป็น public หรือ protected ด้วยเหมือนกัน&lt;BR&gt;1. เรามักให้ variable เป็น public ในกรณีที่ varaible นั้นทำหน้าที่เป็น public constant หรือในกรณีที่ class ทำหน้าที่ group หลาย ๆ variable เข้าด้วยกัน &lt;BR&gt;2. กำหนดให้ variable เป็น protected ในกรณีที่เราต้องการให้ subclass สามารถเรียกใช้ variable นี้ได้โดยตรง แต่ในกรณีนี้ superclass ต้อง trust subclass ว่าจะไม่ทำอะไรที่ไม่ถูกต้องต่อ variable เหล่านั้น &lt;BR&gt;&lt;BR&gt;สำหรับ method โดยปรกติจะให้เป็นได้ทั้ง private, protected และ public &lt;BR&gt;1. กำหนดให้เป็น private เมื่อต้องการใช้ method นั้นภายใน class ที่ประกาศเท่านั้น method นี้จะไม่ถูก inherit โดย subclass subclass จะเรียกใช้งานโดยตรงไม่ได้&lt;BR&gt;2. กำหนดให้เป็น protected ในกรณีที่ไม่ต้องการให้ class อื่นเรียกใช้ และต้องการใช้ภายใน class นั้น แล</description><pubDate>Thu, 21 Jun 2007 06:03:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการกำหนดตำแหน่งของ JFrame ให้อยู่กึ่งกลางจออย่างง่าย</title><link>http://www.jhelp.net/article.aspx?id=10079</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราสามารถกำหนดตำแหน่งของ JFrame ให้อยู่กลางจอ โดยใช้ขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. หาขนาดของหน้าจอ โดยเรียกใช้ getToolkit().getScreenSize() เราจะได้ขนาดของหน้าจอกลับมาในรูปของ Dimension object (สังเกตว่า JFrame inherit getToolkit() มาจากคลาส Window) ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Dimension d = getToolkit().getScreenSize();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int screenWidth = d.width;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int screenHeight = d.height;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. หาตำแหน่งกึ่งกลางของจอ โดยนำค่าความกว้างและความยาวของหน้าจอมาหารด้วย 2 ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int centerX = screenWidth / 2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int centerY = screenHeight / 2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. หาตำแหน่งที่เราควรจะวาง JFrame เพื่อให้ frame นั้นอยู่กลางอยู่ เนื่องจากว่าเวลาเรากำหนดตำแหน่งของ frame ตำแหน่งที่เรากำหนดนั้นจะเป็นตำแหน่งของมุมซ้ายบนของ frame  ถ้าเรากำหนดตำแหน่งกึ่งกลางจอให้กับ frame ตรง ๆ frame นั้นก็จะเยื้องไปทางขวาล่าง ซึ่งไม่ใช่อย่างที่เราต้องการ ดังนั้นเราต้องคำนวณหาตำแหน่งที่เราควรวางมุมซ้ายบนของ frame ไว้ ทำได้โดยลบค่าของ centerX และ centerY ด้วยขนาดครึ่งหนึ่งของความกว้างและความยาวของ frame ตามลำดับ ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int xPos = centerX - frame.getWidth() / 2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;int yPos = centerY - frame.getHeight() / 2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;(สมมุติให้ frame เป็น reference ของ JFrame)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;4. กำหนดตำแหน่งที่คำนวณได้ให้กับ JFrame ที่เราต้องการ โดยเรียกใช้ method setLocation() อย่างเช่น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;frame.setLocation</description><pubDate>Thu, 21 Jun 2007 03:17:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ปัญหาการใช้งาน File.delete() เพื่อลบ directory ที่มีไฟล์หรือ directory อยู่</title><link>http://www.jhelp.net/article.aspx?id=10078</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำไมเมื่อพยายามจะลบ directory ที่ยังมีไฟล์หรือ directory อยู่ โดยใช้ File.delete() แล้วไม่สามารถลบ directory นั้นได้ ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Cause&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่า File.delete() จะมีข้อจำกัดว่า directory ที่จะลบนั้นต้องไม่มีไฟล์หรือ directory อื่นอยู่ภายใน คือเป็น empty directory เท่านั้น &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;คงต้องเขียนโปรแกรมให้ลบ directory และไฟล์ภายในให้หมดก่อน&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Tue, 19 Jun 2007 19:56:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ทำอย่างไรเราถึงจะให้โปรแกรมจาวาเรียกใช้โปรแกรมที่มีอยู่แล้วบน platform อย่าง Windows หรือ Linux ขึ้นมาทำงานได้ ?</title><link>http://www.jhelp.net/article.aspx?id=10075</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราสามารถเรียกโปรแกรมที่มีอยู่แล้วบน platform หนึ่ง ๆ อย่างเช่น Windows หรือ Linux ขึ้นมาใช้งานได้ โดยเรียกใช้ method Runtime.exec()  ตัวอย่างเช่น ถ้าเราต้องการให้โปรแกรมจาวาที่เราเขียนเรียกใช้โปรแกรม notepad บน Windows ขึ้นมาทำงาน เราสามารถทำได้ โดยเรียกใช้งาน method Runtime.exec() ดังนี้&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;import java.io.*;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class TestExec {&lt;BR&gt;   public static void main(String[] args) throws IOException {&lt;BR&gt;      Runtime.getRuntime().exec("notepad");&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จากตัวอย่าง เราต้องเรียก Runtime.getRuntime() ก่อน เพื่อที่จะได้ instance ของ class Runtime มา  จากนั้นก็เรียก method exec() พร้อมกับส่ง command string ที่เราต้องการเรียกใช้  ในกรณีนี้ เราต้องการเรียกใช้โปรแกรม notepad เราก็ส่ง string "notepad" เป็น argument ให้กับ exec()&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Fri, 15 Jun 2007 02:09:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ทำไมเมื่อเราเรียกใช้คำสั่ง ls -al &gt; test.dat โดยใช้ Runtime.exec() แล้วไม่ได้ผลตามต้องการ ?</title><link>http://www.jhelp.net/article.aspx?id=10076</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำไมเมื่อเราเรียกใช้คำสั่ง ls -al &amp;gt; test.dat โดยใช้ Runtime.exec() ดังตัวอย่างข้างล่างนี้แล้ว ถึงไม่ผลตามที่เราต้องการ คือไม่มีการสร้างไฟล์ test.dat ขึ้นมาใน directory ที่เรารันโปรแกรมจาวา ทั้ง ๆ ที่ ls ก็เป็นโปรแกรมบน Unix (ไม่ใช่คำสั่งของ shell)&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;import java.io.*;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class TestExec {&lt;BR&gt;   public static void main(String[] args) throws IOException {&lt;BR&gt;      Runtime.getRuntime().exec("ls -al &amp;gt; test.dat");&lt;BR&gt;   }&lt;BR&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Cause&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่าเครื่องหมาย &amp;gt; หรือ output redirection นั้น จะใช้ได้ภายใน shell เท่านั้น เวลาที่เราส่ง command string ให้กับ exec() จะเป็นชื่อของโปรแกรมและ argument ของโปรแกรมนั้นเท่านั้น เมื่อเราส่ง &amp;gt; test.dat เข้าไปด้วย ก็จะเป็นเหมือนกับว่าเราส่ง '&amp;gt;' และ test.dat เป็น argument ของโปรแกรม ls ด้วย เนื่องจาก '&amp;gt;' และ test.dat เป็น argument ที่ไม่ถูกต้อง ทำให้โปรแกรม ls ไม่ทำงาน&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าเราต้องการเรียกใช้คำสั่งที่มีบางส่วนที่จะใช้ได้ภายใน shell เท่านั้น อย่างเช่น ls -al &amp;gt; test.dat โดยใช้ Runtime.exec() เราสามารถทำได้โดยอ้อมโดยสร้าง script file ขึ้นมาก่อน โดยพิมพ์คำสั่งที่เราต้องการเรียกใช้ไว้ในไฟล์นี้ อย่างเช่น ในกรณีนี้ (บน Linux) เราอาจสร้างไฟล์ myscript ขึ้นมา โดยพิมพ์ ls -al &amp;gt; test.dat เข้าไป แล้วเปลี่ยน mode ของไฟล์ให้เป็น executable ด้วยคำสั่ง chmod 755 myscript หรือ chmod +x myscript  จากนั้นก็เรียกใช้ script file นี้ด้วย method Runtime.exec() อย่างเช่น&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;import java.io.*;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class Test</description><pubDate>Fri, 15 Jun 2007 01:50:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>แนวความคิดแบบวัตถุหรือ Object-Oriented คืออะไร ?</title><link>http://www.jhelp.net/article.aspx?id=10077</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;บ่อยครั้งที่หลายคนสงสัยว่าแนวคิดแบบวัตถุหรือ object-oriented คืออะไรกันแน่ และแนวคิดเหล่านี้นำมาใช้ในการออกแบบและเขียนโปรแกรมอย่างไร แนวคิดแบบวัตถุเป็นแนวคิดที่นำมาใช้เพื่อจัดการกับความซับซ้อนในการออกแบบและเขียนโปรแกรม โดยเฉพาะระบบหรือโปรแกรมขนาดใหญ่ เพื่อให้เราสามารถทำความเข้าใจ, เขียนโปรแกรมและดูแลรักษาได้ง่ายขึ้น &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;หัวใจของแนวคิดแบบวัตถุก็คืออาศัยลักษณะตามธรรมชาติของมนุษย์ที่เรียนรู้สภาพแวดล้อมต่าง ๆ รอบตัวว่าประกอบไปด้วยวัตถุต่าง ๆ ที่มีความสัมพันธ์หรือเกี่ยวเนื่องกัน และวัตถุเหล่านี้ก็มักมีคุณสมบัติและความสามารถหรือพฤติกรรมบางอย่างที่สามารถทำได้ จะเห็นว่าแนวคิดแบบวัตถุก็คือการมองอย่างเป็นธรรมชาติอย่างที่มนุษย์เราคุ้นเคยกันอยู่แล้วนั่นเอง&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในแนวคิดแบบวัตถุนั้น เราจะมองโปรแกรมที่เราเขียนหรือสร้างขึ้นว่าประกอบไปด้วยวัตถุต่าง ๆ ที่ทำงานร่วมกัน มีปฏิสัมพันธ์ (interaction) หรือการสื่อสารระหว่างกัน โดยการที่โปรแกรมนี้จะทำงานอย่างหนึ่งได้นั้น ก็จะเป็นผลมาจากการที่วัตถุเหล่านี้ทำงานร่วมกัน (collaborate) มีการสื่อสารหรือปฏิสัมพันธ์กัน (interaction) เพื่อให้ได้ผลลัพท์อย่างที่เราต้องการ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในแนวคิดแบบเดิม เราจะมองว่าโปรแกรมนั้นประกอบไปด้วยกลุ่มของ function หรือ routine ต่าง ๆ อย่างเช่น โปรแกรม P ประกอบไปด้วย module A ที่มี function f1(), f2() และ module B ที่มี function f3(), f4() ซึ่งชื่อเหล่านี้ไม่ค่อยจะช่วยให้เราเข้าใจส่วนประกอบของโปรแกรมได้ง่ายเท่าไหร่ ต่างจากแนวคิดแบบวัตถุที่เราจะมองว่าโปรแกรมประกอบไปด้วยวัตถุใน domain งานของโปรแกรมนั้น อย่างเช่น ถ้าโปรแกรมงานห้องสมุด ก็จะประกอบไปด้วยวัตถุของ หนังสือ (book) ผู้ใช้บริการ (patron) โดยวัตถุเหล่านี้ก็จะมีคุณลักษณะ (attribute) และ พฤติกรรม (behavior) ที่เราพอคาดเดาได้อยู่แล้วว่าจะมีอะไรบ้าง พูดง่าย ๆ ก็คือพอเราเห็นชื่อของวัตถุเหล่านี้ เราก็จะพอรู้ได้ทันทีว่า จะมีคุณลักษณะหรือพฤติกรรมอะไรบ้างที่เราสามารถเรียกใช้ได้ นี่ทำให้เราสามารถทำความเข้าใจระบบหรื</description><pubDate>Fri, 15 Jun 2007 00:58:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>Exception in thread "main" java.lang.NoClassDefFoundError กรณีเรียกใช้คลาสใน package</title><link>http://www.jhelp.net/article.aspx?id=10040</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;FONT face=Arial color=#111111 size=3&gt;&lt;P&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial&gt;ทำไมเวลาที่เรารันโปรแกรมจาวาที่เขียนขึ้นโดยมีการระบุชื่อ &lt;/FONT&gt;&lt;FONT face=Arial&gt;package แล้วถึงได้ java.lang.ClassDefNotFoundException ทั้ง ๆ ที่ class file ของโปรแกรมก็อยู่ใน class path อย่างถูกต้อง อย่างเช่น เราเขียนโปรแกรม HelloWorld ขึ้นมา โดยระบุให้อยู่ใน package ที่ชื่อว่า myproject &lt;/FONT&gt;&lt;FONT face=Arial&gt;ดังนี้&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;package myproject;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class HelloWorld {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   public static void main(String[] args) {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;      System.out.println("Hello World !");&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   }&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial&gt;เนื่องจากคลาส &lt;/FONT&gt;&lt;FONT face=Arial&gt;HelloWorld อยู่ใน package myproject เวลาจัดเก็บไฟล์ เราต้องให้ HelloWorld.java อยู่ใน directory \myproject เพื่อในตรงกับโครงสร้างของ package แต่ directory myproject จะอยู่ที่ directory ไหนก็ได้ สมมุติว่าเราให้ HelloWorld.java อยู่ใน d:\java\test\myproject จากนั้นเราก็ compile HelloWorld.java โดยใช้คำสั่ง javac myproject\HelloWorld.java (โดย directory ปัจจุบันเป็น d:\java\test) &lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial&gt;กรณีที่ &lt;/FONT&gt;&lt;FONT face=Arial&gt;(1) เมื่อรันโปรแกรม HelloWorld ด้วยคำสั่ง java HelloWorld ที่ d:\java\test\myproject แล้วกลับได้ &lt;/FONT&gt;&lt;FONT face=Arial&gt;error &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: myproject/HelloWorld)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;at java.lang.ClassLoader.defineClass1(Native Method)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;at java.lang.ClassLoader.defineClass(Unknown Source)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT </description><pubDate>Wed, 13 Jun 2007 19:33:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ถ้าเราต้องการ download JDK หรือ JRE version เฉพาะหรือ version เก่า จะ download ได้จากที่ไหน ?</title><link>http://www.jhelp.net/article.aspx?id=10074</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าเราต้องการ download JDK หรือ JRE version หนึ่งโดยเฉพาะ หรือ version เก่า อย่างเช่น 1.4.2_12 หรือ 1.5.0_06 เราสามารถ download ได้จากหน้า Archive: Java[tm] Technology Products Download ใน web site ของ Sun ที่ URL &lt;/FONT&gt;&lt;A href="http://java.sun.com/products/archive/"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://java.sun.com/products/archive/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;</description><pubDate>Wed, 13 Jun 2007 19:30:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้ง NetBeans Profiler 5.5.1 สำหรับ NetBeans 5.5.1 บน Windows</title><link>http://www.jhelp.net/article.aspx?id=10072</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Summary&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง NetBeans Profiler 5.5.1 มีขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. download และติดตั้งโปรแกรม NetBeans 5.5.1  รายละเอียดอ่านได้จากบทความ "วิธีการติดตั้ง NetBeans 5.5.1 สำหรับ Windows"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. เข้าไปที่หน้าของ NetBeans Profiler ที่ &lt;/FONT&gt;&lt;A href="http://www.netbeans.org/products/profiler/"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://www.netbeans.org/products/profiler/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial color=#111111 size=3&gt; เพื่อ download โปรแกรมเสริม NetBeans Profiler 5.5.1  ให้เลือกที่ Download NetBeans Profiler เพื่อ download&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/ff04dc49-6741-4f1f-aee7-70c5.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในหน้า Download NetBeans Profiler 5.5.1 ให้เลือก Download NetBeans Profiler เพื่อเลือก mirror site ที่เราต้องการใช้ในการ download&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/fd27a3ba-b87c-4443-b65d-a2c4.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ให้เลือก mirror site ที่เราต้องการใช้ อย่างเช่น US Mirror 1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/e72f7105-de14-422e-8fbb-a572.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อ download เสร็จแล้ว เราจะได้ไฟล์ netbeans-profiler-5_5_1-windows.exe มา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. double click ที่ไฟล์ netbeans-profiler-5_5_1-windows.exe เพื่อติดตั้งโปรแกรม NetBeans Profiler 5.5.1 ลงใน NetBeans 5.5.1  โปรแกรม Installer จะขึ้นมาทำงานและแนะนำการติดตั้งเป็นขั้น ๆ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในหน้าที่ 1 โปรแกรม Installer จะแสดงข้อความต้อนรับ ให้ click ที่ Next เพื่อไปหน้าต่อไป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/91058173-0cf6-4dcf-be06-a147.PNG" border=0&gt;&lt;/P&gt;&lt;P&gt;&lt;</description><pubDate>Fri, 08 Jun 2007 03:23:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการติดตั้ง NetBeans 5.5.1 สำหรับ Windows</title><link>http://www.jhelp.net/article.aspx?id=10071</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีการติดตั้ง NetBeans 5.5.1 มีขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. download และติดตั้ง JDK 5 หรือ 6  รายละเอียดอ่านได้จากบทความ "การติดตั้งและรันโปรแกรมจาวาอย่างง่าย"&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;2. เข้าไปที่หน้า download NetBeans เพื่อ download โปรแกรมที่&lt;/FONT&gt;&lt;A href="http://www.netbeans.info/downloads/index.php"&gt;&lt;FONT face=Arial color=#111111 size=3&gt;http://www.netbeans.info/downloads/index.php&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial color=#111111 size=3&gt;  ให้ click ที่ปุ่ม Download NetBeans IDE เพื่อเลือก mirror site ในการ download &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/051f0d6c-d60c-46d7-90be-0627.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในหน้า Download NetBeans 5.5.1 ให้เลือก mirror site ที่ต้องการ อย่างเช่น US Mirror 1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/f508a74d-875b-4067-86d7-e077.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เมื่อ download เสร็จแล้ว เราจะได้ไฟล์ netbeans-5_5_1-windows.exe มา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3. ติดตั้งโปรแกรม NetBeans 5.5.1 โดย double click ที่ไฟล์ netbeans-5_5_1-windows.exe  โปรแกรม Installer จะทำงานและเริ่มกระบวนการติดตั้งเป็นขั้น ๆ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3.1 โปรแกรม Installer แสดงข้อความต้อนรับ  click ที่ Next เพื่อไปหน้าต่อไป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 src="http://www.jhelp.net/Attachments/fc92240f-ee5d-4471-b6de-84b9.PNG" border=0&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;3.2 ในหน้าที่สอง ให้เลือก I accept the terms in the license agreement แล้ว click Next เพื่อไปหน้าต่อไป&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;IMG hspace=0 sr</description><pubDate>Thu, 07 Jun 2007 20:04:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีใช้งาน String.split() ในกรณีที่ String ที่ต้องการแยกส่วนใช้เครื่องหมาย | ในการคั่น String ย่อย</title><link>http://www.jhelp.net/article.aspx?id=10070</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้าเราต้องการแยกส่วน (split) String ที่ใช้เครื่องหมาย | ในการคั่น String ย่อย อย่างเช่น "AAA|BBB|CCC" เราต้องระบุ regular expression ตอนเรียกใช้งาน method String.split() อย่างไร ? &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;อย่างที่พอทราบกันแล้วว่า method split() ของ class String จะใช้ในการแยก String หนึ่ง ออกเป็น String ย่อย ๆ โดยดูจากตัวคั่นที่เราระบุในรูปของ regular expression  ในกรณีที่ใช้ | ในการคั่น String ย่อยใน String ที่เราต้องการแยกนั้น หลายคนมักสับสนว่าจะระบุ argument ที่ส่งให้กับ method split() อย่างไร &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#111111&gt;&lt;FONT face=Arial size=3&gt;ถ้าเราต้องการ split String ที่ใช้ | คั่น เราก็ต้องใช้ regular expression เป็น \| แต่เนื่องจากว่าการใช้งาน \ ใน String ของจาวานั้น เราต้องใช้ในรูปของ escape sequence คือ \\  ดังนั้น ในการ split String s ที่ใช้ | คั่น String ย่อย เราจะเรียกใช้ method split() เป็น s&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;FONT size=3&gt;.split("\\|") &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ตัวอย่างเช่น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial color=#111111&gt;public class TestSplit {&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT face=Arial color=#111111&gt;   public static void main(String[] args) {&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;      String abc = "AAA|BBB|CCC";&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;      String[] arr = abc.split("\\|"); // แยก String ที่ใช้ | คั่น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;      for (int i = 0; i &amp;lt; arr.length; i++)  // พิมพ์ String ย่อยออกหน้าจอ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;         System.out.println("s[" + i + "] = " + arr[i]);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FON</description><pubDate>Fri, 01 Jun 2007 02:53:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>JDBC คืออะไร ?</title><link>http://www.jhelp.net/article.aspx?id=10068</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;JDBC คือ API (Application Programming Interface) หรือ library ในจาวาที่ใช้สำหรับติดต่อกับฐานข้อมูลที่เป็นแบบ relational อย่างเช่น MS SQL, Oracle, MySQL, DB2, Informix เป็นต้น   JDBC จะช่วยให้เราสามารถเพิ่ม แก้ไข ลบ หรือเรียกดูข้อมูลที่เก็บไว้ในฐานข้อมูลจากโปรแกรมจาวาที่เราเขียนขึ้นได้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;สังเกตว่า JDBC จะเป็น API ที่ช่วยให้เราสามารถใช้งานฐานข้อมูลแบบ relational ได้ โดยลักษณะการเพิ่ม แก้ไข ลบ หรือเรียกดูข้อมูลจากฐานข้อมูลนั้นจะมีแนวคิดเป็นแบบ relational ด้วยเช่นกัน คือมองข้อมูลเป็น แถวและตาราง จะเห็นว่าแนวคิดแบบนี้จะไม่เหมือนกับแนวคิดที่เราใช้ในการเขียนโปรแกรมเชิงวัตถุที่เรามองข้อมูลหรือสิ่งต่าง ๆ เป็นวัตถุ นี่ทำให้เกิดความแตกต่างในแนวคิดของการมองข้อมูล   JDBC ยังมองข้อมูลเป็น ตารางและแถว ในขณะที่โปรแกรมจาวาจัดการข้อมูลเป็นแบบวัตถุ&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ด้วยเหตุนี้เอง จึงมีความพยายามที่จะลดความแตกต่างของแนวคิดที่ใช้ในการมองข้อมูล แทนที่เราจะใช้ JDBC ในการติดต่อกับฐานข้อมูลโดยตรง เราก็ใช้ software ที่ทำหน้าที่เป็น object-relational mapping คือเปลี่ยนข้อมูลจากที่อยู่ในรูปของ ตารางและแถวให้อยู่ในรูปของวัตถุ เวลาเราใช้งานฐานข้อมูลแบบ relational เราก็ไม่จำเป็นต้องมองข้อมูลเป็นแบบตารางและแถวอีกต่อไป เราสามารถมองข้อมูลและจัดการข้อมูลเหล่านั้นในรูปของ objects ได้เลย ทำให้สะดวกในการเขียนโปรแกรมเชิงวัตถุมากขึ้น  object-relational mapping ที่หลายคนนิยมใช้กันก็คือ Hibernate  Hibernate จะทำหน้าที่ติดต่อกับฐานข้อมูลที่เป็นแบบ relational แล้วเปลี่ยนข้อมูลเหล่านั้นให้อยู่ในรูปของ objects ที่โปรแกรมของเราสามารถนำไปใช้ได้ง่าย&lt;/FONT&gt;&lt;/P&gt;</description><pubDate>Wed, 30 May 2007 07:06:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>วิธีการตรวจสอบ memory leak ใน Java application อย่างง่าย โดยใช้โปรแกรม jconsole</title><link>http://www.jhelp.net/article.aspx?id=10067</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;FONT face=Arial&gt;&lt;FONT size=3&gt;&lt;P&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#111111 size=3&gt;&lt;STRONG&gt;Problem&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เราจะรู้ได้อย่างไรว่าโปรแกรมจาวาที่เราเขียนขึ้นนั้นมี memory leak หรือไม่ และจะตรวจสอบอย่างไร ? จะใช้โปรแกรมอะไรในการตรวจสอบ ?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Solution&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;วิธีง่าย ๆ ในการตรวจสอบว่าโปรแกรมที่เราเขียนนั้นมี memory leak หรือไม่ ก็ทำได้โดยการใช้โปรแกรมที่ชื่อว่า jconsole ซึ่งเป็นโปรแกรมที่มากับ JDK 1.5   jconsole เป็นโปรแกรมที่ใช้ในการ monitor หรือตรวจสอบการทำงานของโปรแกรม ณ runtime เราสามารถจะดูปริมาณ memory ที่ใช้, จำนวน class ที่โหลด, จำนวน thread ที่สร้างขึ้น ณ runtime ได้ ในรูปแบบที่เป็น graphics ทำให้เราดูค่าเหล่านี้ได้ง่ายและสะดวกมากขึ้น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;การใช้งาน jconsole มีขั้นตอนดังต่อไปนี้&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1. รันโปรแกรมจาวาที่เราเขียนขึ้น โดยระบุ system property com.sun.management.jmxremote เข้าไปด้วย อย่างเช่น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;java -Dcom.sun.management.jmxremote -cp ... ClassName&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ลอง compile และรันโปรแกรมด้านล่างนี้ ซึ่งจะใช้ memory เพิ่มขึ้นไปเรื่อย ๆ เป็นการจำลองการเกิด memory leak โดยการสร้าง int[] ขนาด 1000 ตัว แล้วเพิ่มเข้าไปใน ArrayList ทุก ๆ 1 วินาที&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;import java.util.*;&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class TestMemLeak {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   private static List objects = new ArrayList();&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   public static void main(String[] args) {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;      for (int i = 0; i &amp;lt; 10000; i++) {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;         try {&lt;BR&gt;   &amp;nb</description><pubDate>Wed, 30 May 2007 03:28:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>จาวา (Java) คืออะไร ?</title><link>http://www.jhelp.net/article.aspx?id=10066</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;จาวา (Java) คืออะไร ? ถ้าเราดูความหมายของคำว่า จาวา จะมีความหมายหลายอย่าง ได้แก่&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ภาษาจาวาที่ใช้เขียนโปรแกรมจาวา&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Java platform ที่ใช้ในการรันโปรแกรมจาวา&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เครื่องดื่มกาแฟ (แสลงในภาษาอังกฤษ) นี่เป็นเหตุผลว่าทำไมเรามักเห็นปกหนังสือจาวามีแก้วกาแฟอยู่เสมอ&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เกาะชวาในประเทศอินโดนิเซีย (เกาะชวา จะเขียนในภาษาอังกฤษเป็น Java) &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ความหมายที่เราคุ้นเคยก็คงจะเป็นภาษาจาวาและ Java platform ที่รันโปรแกรมจาวา แต่ถ้าเรามองจาวาในมุมกว้าง จาวาจะเป็น technology ที่ใช้ในการพัฒนาโปรแกรมแบบต่าง ๆ ซึ่งได้แก่ application, applet, web application (servlet &amp;amp; JSP), EJB, และ midlet โดยโปรแกรมเหล่านี้จะมีลักษณะพิเศษที่ต่างจากโปรแกรมที่เขียนขึ้นในภาษาอื่น อย่าง C หรือ C++ คือสามารถทำงานได้หลาย platform* (อย่างเช่น Windows, Solaris, Linux) โดยไม่จำเป็นต้องเขียนใหม่ หรือ compile ใหม่ ทำให้เราสามารถใช้โปรแกรมเดิมที่เคยพัฒนามาแล้วบน platform หนึ่งไปใช้งานบน platform อื่น ๆ ได้โดยง่าย ซึ่งช่วยประหยัดเวลาและทรัพยากรในการที่จะทำให้โปรแกรมหนึ่งทำงานได้มากกว่าหนึ่ง platform  ตัวอย่างเช่น ถ้าเราเขียนโปรแกรมจาวาขึ้นมาบน Windows  โปรแกรมที่เราเขียนขึ้นนี้ก็สามารถที่จะทำงานบน Solaris, Linux หรือ Mac ได้โดยไม่ต้องแก้ไขอะไรเลย ไม่ต้อง compile ใหม่ เราสามารถนำ class files ของโปรแกรมที่เราเขียนขึ้นไปใช้งานบน platform อื่น ๆ ได้ทันที&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;เทคโนโลยีจาวา มีองค์ประกอบหลักที่สำคัญสองอย่าง ที่ทำให้โปรแกรมจาวาสามารถทำงานได้มากกว่าหนึ่ง platform คือ&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ภาษาจาวา ซึ่งเป็นภาษาแบบวัตถุที่ใช้ในการเขียนและพัฒนาโปรแกรมจาวา&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Java platform คือ platform หรือสภาพแวดล้</description><pubDate>Tue, 29 May 2007 06:09:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>เริ่มต้นกับจาวาอย่างไรดี ?</title><link>http://www.jhelp.net/article.aspx?id=10054</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;อาจจะด้วยเหตุผลหรือแรงบันดาลใจที่แตกต่างกัน ที่ทำให้หลาย ๆ คนเริ่มสนใจและอยากที่เรียนรู้การเขียนโปรแกรมด้วยจาวา ไม่ว่าจะเขียนโปรแกรมเป็นงานอดิเรกหรือใช้ในงานประจำ แต่บ่อยครั้ง ทุกคนมักมีคำถามว่าจะเริ่มต้นเรียนรู้การใช้งานจาวายังไงดี และต้องใช้โปรแกรมหรือหนังสืออะไรบ้าง บทความนี้จะช่วยแนะนำแนวทางคร่าว ๆ ของการเรียนรู้และใช้งานจาวา&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ในการเขียนโปรแกรมจาวานั้น เราสามารถเขียนโปรแกรมได้หลายแบบ ไม่ว่าจะเป็น &lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Java application เป็นโปรแกรมจาวาที่เราใช้งานแบบ application ทั่วไป โดยอาจจะทำงานเป็นแบบ command-line หรือมีหน้าจอที่เขียนขึ้นด้วย AWT หรือ Swing  โปรแกรมแบบนี้จะทำงานด้วยตัวของมันเองได้ คือมีเพียง JVM ก็สามารถรันโปรแกรมนี้ได้&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Applet เป็นโปรแกรมจาวาที่ทำงานได้ในหน้า web page ที่แสดงใน web browser อย่างเช่น Internet Explorer หรือ FireFox ส่วนใหญ่มักเป็นโปรแกรมเล็ก ๆ ที่ช่วยเสริมการทำงานในหน้า web page&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Servlet &amp;amp; JSP เป็นโปรแกรมจาวาที่ทำงานบน server-side คือทำงานที่ฝั่ง server  เราใช้ Servlet และ JSP ในการสร้าง web application (โปรแกรมที่มีหน้าจอเป็น web page) โดย Servlet จะทำหน้าที่ควมคุม flow การทำงานและประมวลผล ในขณะที่ JSP จะเป็นส่วนของการสร้างหน้า web page&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;EJB (Enterprise Java Beans) เป็น software component ที่พัฒนาด้วยจาวา เพื่อใช้ในการประมวลผลข้อมูลหรือจัดเก็บข้อมูลลงฐานข้อมูล โดยปรกติเราจะใช้ EJB ในการพัฒนา software ขนาดกลางหรือใหญ่ ที่มีผู้ใช้จำนวนมาก ซึ่งต้องการ performance และ reliability ที่สูงกว่าโปรแกรมทั่วไป เนื่องจาก EJB เป็นเพียง component ที่ทำงานฝั่ง server การรับข้อมูลเข้ามาจะทำที่ฝั่ง client โดย client จะเป็น Java application, web application หรือ applet ก็ได้&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Midlet เป็นโปรแกรมที่งานบน mobi</description><pubDate>Sun, 27 May 2007 19:02:00 GMT</pubDate><dc:creator>admin</dc:creator></item><item><title>ทำไมเราต้องใส่ f ไว้หลังค่าที่เรากำหนดให้กับตัวแปรเมื่อประกาศตัวแปรชนิด float ?</title><link>http://www.jhelp.net/article.aspx?id=10061</link><description>&lt;B&gt;Abstract:&lt;/B&gt; &lt;P&gt;&lt;STRONG&gt;&lt;FONT face=Arial color=#111111 size=3&gt;Problem&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ทำไมเราถึงต้องใส่ f หรือ F ไว้หลังค่าคงที่ที่เรากำหนดให้กับตัวแปรเมื่อประกาศตัวแปรชนิด float ไม่อย่างนั้นจะ compile ไม่ผ่าน อย่างเช่น  ถ้าประกาศตัวแปรชื่อ f พร้อมกับให้ค่าเริ่มต้นเป็น 3.5 โดยไม่ได้ใส่ f ไว้หลังค่า 3.5 ดังตัวอย่างด้านล่างนี้&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;public class TestFloat {&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   public static void main(String[] args) { &lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;      float f = 3.5; &lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;   }&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;FONT color=#111111 size=3&gt;}&lt;/FONT&gt;&lt;/PRE&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ถ้า compile class TestFloat จะได้ compile error เป็น&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;d:\java\test&amp;gt;javac TestFloat.java&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;TestFloat.java:4: possible loss of precision&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;found : double&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;required: float&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;float f = 3.5;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;^&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;1 error&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;&lt;STRONG&gt;Cause&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face=Arial color=#111111 size=3&gt;ที่เป็นแบบนี้ก็เพราะว่า ค่าคงที่ที่เป็นทศนิยม (floating-point literal) อย่างเช่น 3.5, 4.5 จะมีชนิดเป็น double โดย default คือ