บทความ

กำลังแสดงโพสต์จาก พฤศจิกายน, 2011

Java Object พื้นฐาน OOP กับ ภาษา Java คุณแน่นพอหรือยัง

บทความเกี่ยวกับ : Java Object พื้นฐาน OOP กับ ภาษา Java คุณแน่นพอหรือยัง ผมเชื่อว่าเมื่อเริ่มเรียน OOP อาจารย์มักจะหยิบเอาภาษา Java มาเป็นภาษาที่ใช้ในการสอน เนื่องจาก Java เป็นภาษาที่มีโครงสร้างแบบ OOP นั่นเอง สิ่งแรกที่อาจารย์สอนให้เรารู้จักก็คือ Class กับ Object แบบว่าเข้าเรียนชั่วโมงแรกก็ต้องได้ยกตัวอย่าง Class กับ Object กันแล้ว ในตำราตั้งแต่สมัยเรียนบอกไว้่ว่า Class คือแบบแปลนหรือ พิมพ์เขียว Object คือ สิ่งที่ผลิตจาก แบบแปลน หรือ Class นั้นๆ หุหุแค่นี้เองไม่เห็นจะยาก ชิมิ ลองมาดูคำตอบของเพื่อนๆแต่ละคนกันผมเชื่อว่าเกิน 80 % จะเจอคำตอบประมาณนี้  - Class ของ ต้นมะม่วง คือ แบบแปลนต้นมะม่วง  Object ของ ต้นมะม่วง คือ ลูกมะม่วง  .. Fail  !!!    ที่ตอบแบบนี้เพราะ เข้าใจว่าลูกมะม่วงคือสิ่งที่ผลิตออกมาจากต้นมะม่วงสินะ T_T -  Class ของห้องเรียน คือ แปบแปลนห้องเรียน Object ของห้องเรียน คือ กระดานดำ , เก้าอี้   .. Fail !!!     ที่ตอบแบบนี้เพราะเข้าใจว่า Class คือ ห้อง ส่วน Object คือ วัตถุ ในห้อง 555+ อันนี้หนักกว่า ขนาดอ่านความหมายมาแล้วยังตอบกันแบบ Fail !!  

Java Virtual Machine (JVM) คืออะไร

บทความเกี่ยวกับ : Java Virtual Machin e(JVM) คืออะไร Java Virtual Machine  หรือ JVM คือ เครื่องจักรกลเสมือนที่จำลองตนไว้พื่อ Run งานที่เป็นภาษา Java เรียกได้ว่าถ้าคุณจะ Run Program ที่พัฒนาด้วยภาษา Java คุณจะต้องมี JVM ภายใน JVM ต้องการ Resource จาก Machine หลักไม่ว่าจะเป็น ... หน่วยความจำ เรียกว่า Heap memory เพื่อการใช้งานสำหรับ Java application   ต่างๆ รวมทั้งยังมีการทำงานของ garbage collection ที่จะตื่นมาเพื่อ clear memory ที่จองไว้แล้วไม่ได้ใช้ ออกไปเพื่อให้ JVM ใช้งาน Memory ได้อย่างมีประสิทธิภาพนั่นเอง Java Virtual Machine ( JVM ) ประกอบด้วยการทำงานหลักๆ สามส่วนได้แก่     Class Loader เป็นตัวอ่านไฟล์ .class เข้ามาทำงานใน Heap Memory  บน JVM     Runtime Data Area (JVM Memory) ส่วนนี้เป็นการจัดสรรพื้นที่ Memory เพื่อใช้งานในแต่ละส่วน โดยประกอบไปด้วย Method area , Heap Area ,Stack Area , PC Register , Native Method Stack ซึ่งแต่ละส่วนก็จัดเก็บข้อมูลแยกกันไป     Execution Engine ส่วนนี้เป็นตัวควบคุมกระบวนการทำงานต่างๆ ได้แก่ Interpreter เป็นตัวอ่าน byte cod

Java jar , war,ear นามสกุลไฟล์สำหรับ Deploy ในรูปแบบต่างๆของ Java

บทความเกี่ยวกับ : Java jar , war,ear นามสกุลไฟล์สำหรับ Deploy ในรูปแบบต่างๆของ Java พูดถึงไฟล์ ดอท .jar  แล้วหลายคนคงพอรู้จัก แต่ถ้าบอกว่า ดอท .war  , ดอท .ear แล้วคงจะได้ยินกันใหนหมู่ Enterprise ที่พัฒนากันในรูปแบบ Web Application เนื่องจาก Source ในภาษา Java จะถูก Compile ออกมาเป็น Class มากมาย ทำให้ไม่สะดวกเวลาเอาไปใช้งานจึงทำให้เกิด zip Format ออกมาเป็นนามสกุลต่างๆ เช่น - ไฟล์ java  .jar   หมายถึง Java Library ทั่วไปที่ Compile แล้ว Pack หรือ Zip ไว้ในรูปแบบของ jar file - ไฟล์ Web Application .war เ็ป็น Zip ไฟล์ที่เกิดจากการ Pack Code ตามโครงสร้าของ Web Application  - ไฟล์ Enterprise Application  .ear เป็นไฟล์ที่ใหญ่ที่สุดที่อาจรวม หลายๆ war ไว้ข้างใน หรือ หลาย application ไว้ข้างใน ไฟล์ .ear เกิดขึ้นมาพร้อมๆ กับ ยุคของ EJB ที่มีการกำหนด Deployment Format ไว้ ไฟล์แต่ละนามสกุลก็จะมีโครงสร้างภายในแตกต่างกันและถูกนำไปใช้งานแตกต่างกันไป ไว้บทความต่อไปค่อยมาลงลึกทีละ Format กัน

Java XML Read and Write XML บนภาษา Java ด้วย jdom

บทความเกี่ยวกับ : Java XML Read and Write XML บนภาษา Java ด้วย jdom XML เป็นโครงสร้างภาษาในรูปแบบ Tag ที่ปัจจุบันนำมาใช้อย่างแพร่หลายไม่ว่าจะเป็นพวก Configuration หรือ Data Format ต่างๆ ทำให้เราเลี่ยงไม่ได้ที่จะต้องมีการเขียนโปรแกรมเพื่อ Read หรือ Write เอกสาร XML ตัวอย่างต่อไปนี้จะเป็นการใช้ Jdom ซึ่งเป็น Library ที่สามารถ download มาใช้ได้แบบฟรีๆ ยกตัวอย่างเรามี XML ที่เป็นโครงสร้างง่ายๆ ชื่อ tets.xml ตามนี้ <XML>     <ELM1>Value</ELM1> </XML> ก่อนอื่นทำการสร้าง Document ด้วยคำสั่งนี้ Document d = new SAXBuilder().build("c:\test.xml"); ด้วยคำสั่งนี้เราจะได้ Object ของ Documetn มา ซึ่งเราสามารถนำ Object นี้มาเล่นต่อได้ครับเช่น Element root=doc.getRootElement(); จะทำให้เราได้ Object ของ Root Element ออกมา หากต้องการ วน Loop ทุก Element ออกมาสามารถใช้ Iterator ช่วยได้ครับ เช่น Iterator itr = root.getChildren().iterator(); method getChildren() จะ return list ของ Element ลูกที่อยู่ในระดับถัดมา 1 ระดับจาก Element ท

java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

บทความเกี่ยวกับ : java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory หลายคนคงจะเจอปัญหา out of memory เนื่องจากแรมไม่พอให้ JVM ใช้งาน เหตุการแบบนี้อาจะเกิดจากความผิดพลาดในการคืน resource ของ Programmer เอง แต่บางครั้ง Program ที่เขียนก็มีความต้องการใช้ Memory จำนวนมากจริงๆ เกินกว่าค่า default ที่กำหนดไว้ ซึ่งหากเราต้องการปรับแก้ให้ใช้คำสั่ง    - java -Xms init ค่า heap size     โดย Xms นั้นจะเป็นการกำหนดค่า ตั้งต้นของ Memory ไว้เป็นขั้นต่ำจากนั้นจะค่อยๆ เพิ่ม      ถ้าหากมีความจำเป็นต้องการใช้ Memory  ในบางช่วง Peak โดยมากสุดจะไม่เกิน Xmx      ค่าตั้งต้นควรกำหนดให้เหมาะสม ถ้าน้อยเกินไปก็จะทำให้ต้องเสียเวลานในการขยาย      แต่ถ้ามากเกินไปก็จะเป็นการจอง Memory ไว้จนเกินความจำเป็น    - java -Xmx max heap size      ค่านี้เป็นค่าสูงสุดที่ Java จะทำการขยาย Memory เพื่อให้รองรับ load งานต่างๆ ของเราได้      การกำหนด Value ตรงนี้น้อยไปอาจมีผลเสีย กรณีที่ระบบเรา Peak ขึ้นมาในบางช่วง      ในทางตรงกันข้ามหากกำหนดไว้มากเกินไปจะมีผลให้ Memory ถูกจองมาใช้เยอ

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java

บทความเกี่ยวกับ : Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java คำสั่ง this กับ super มีความสำคัญกับการเขียนโปรแกรมในภาษา Java แน่นอน เนื่องจาก ภาษา Java มีโครงสร้างภาษาแบบ OOP ซึ่งจุดเด่นที่ขาดไม่ได้คือ เรื่องของ การสืบทอดคุณสมบัติ แล้วการสืบทอดคุณสมบัติ หรือ Inherit มันเกี่ยวกับ this หรือ super ยังไง เรามาดูกัน แน่นอนเมื่อมีการสืบทอดมันก็ย่อมมีเรื่องของการทับซ้อนของ method ต่างๆ ของ Class แม่กับ Class ลูก อาจเนื่องมาจากการทำ Override Method เมื่อเกิดเหตุการณ์แบบนี้ขึ้น คำถามก็มีอยู่ว่า เราจะแยกแยะ Method ที่เหมือนกันของ Class แม่กับ class ปัจจุบันยังไง นี่คือที่มาที่ทำให้เราต้องเรียกใช้ คำสั่ง this และ super - this  ใช้เพื่อเรียก ตัวแปร หรือ method ของ Class เราเอง - super ใช้เพื่อเรียก ตัวแปร หรือ method ของ Classแม่ที่เราสืบทอดมา

Java if else เช็คเงื่อนไข and or not พื้นฐานการเขียนโปรแกรมที่ต้องรู้

บทความเกี่ยวกับ : Java if else เช็คเงื่อนไข and or not พื้นฐานการเขียนโปรแกรมที่ต้องรู้ การเช็คเงื่อนไขเป็นสิ่งที่ขาดเสียไม่ได้ในการเขียนโปรแกรมไม่ว่าจะภาษาใหนๆ ก็ตาม วันนี้จะนำเสนอตัวอย่างการเช็คเงื่อนไข  if ใน ภาษา Java ในการเช็ค Logic  AND OR ..NOT โครงสร้าง if ในภาษา Java if(เงื่อนไข) {    //Statement     //Statement }else if(เงื่อนไข){    //Statement    //Statement   }else{    //Statement } ตัวอย่าง Code การเช็คเงื่อนไข if ใน Java ตัวอย่างแรกการเช็คเงื่อนไข if กับค่าตัวแปร int Operator ในการเปรียบเทียบ Logic แบบ พื้นฐาน ประกอบด้วย ==  เท่ากับ !=   ไม่เท่ากับ >    มากกว่า <    น้อยกว่า >=  มากกว่าหรือเท่ากับ <=  น้อยกว่าหรือเท่ากับ         int i = 10;         if(i==10){             System.out.println("If 1 is true");         }else if(i != 9){             System.out.println("If 2 is true");         }else{             System.out.println("If 3 is true");         }  จาก Code ตัวอย่างข้างต้น

Java loop for เขียนโปรแกรมวน Loop ใน ภาษา Java

บทความเกี่ยวกับ : Java loop for เขียนโปรแกรมวน Loop ใน ภาษา Java Java loop for เขียนโปรแกรมวน Loop ใน ภาษา Java การเขียนโปรแกรมไม่ว่าภาษาใดๆ ก็ตาม พื้นฐานที่เราต้องรู้จะมีอยู่ไม่กี่เรื่อง หลักๆ เ่ช่น การใช้งานตัวแปร, การเช็คเงื่อนไข และก็ การทำงานซ้ำๆ หรือการ วน Loop นั่นเอง วันนี้จะสอนวิธีการ วน Loop ใน ภาษาจาวา การวน Loop ในภาษา จาวา มีหลายแบบ แบบที่จะพูดถึงวันนี้คือ For Loop โครงสร้าง คือ For (เงื่อนไข) {    --  Statement    --  Stetement } ตัวอย่าง Code Java Loop For ตัวอย่างวน Loop ค่า i ตั้งแต่ 1 ถึง 10         for(int i=0;i<=10;i++){             System.out.println("i Value "+i);         } ตัวอย่างการวน Loop ค่าจาก Vector         Vector<String> v =new Vector<String>();         v.add("d1");         v.add("d2");         v.add("d3");         v.add("d4");         for(int i=0;i<v.size();i++){             System.out.println(v.get(i));         }         หรือจะเป็นแบบนี้ก็ได้ สั้นๆ   

การใช้งาน StringBuffer เพื่อเพิ่มความเร็วใน Java Program

บทความเกี่ยวกับ : การใช้งาน StringBuffer เพื่อเพิ่มความเร็วใน Java Program เพื่อนๆ หลายคนคงจะเคยเขียนโปรแกรมโดยการ ประกาศตัวแปร String แล้วมีการ วน Loop ต่อ String ยาวๆ เคยสังเกตมั้ยครับว่ามันทำงานช้ามากๆ ยิ่งถ้าต่อ String เยอะเข้าจริงๆ แล้วยิ่งจะทำให้ โปรแกรม เดี้ยงไปเลย ลองเปลี่ยนมาใช้ StringBuffer  ครับ append ไปเรื่อยๆ แล้วค่อยไป toString ตอนที่จะเอาไปใช้งาน รับรอง ผลได้เลยครับ