วันอาทิตย์ที่ 13 มีนาคม พ.ศ. 2554

วิวัฒนาการของภาษา java

ประวัติและวิวัฒนาการของภาษา java
กำเนิดภาษา Java  มีสาเหตุเริ่มต้นจากความยุ่งยากในการพัฒนาโปรแกรมใช้งาน (application) สำหรับระบบ Internet ทั้งนี้เพราะระบบ Internet ถูกออกแบบให้เป็นระบบเปิด (open system) โดยมีจุดประสงค์ให้สามารถใช้งานได้จากเครื่องคอมพิวเตอร์ทุกประเภท ไม่ว่าจะเป็นเครื่องแบบ PC เครื่อง Macintosh เครื่อง UNIX หรือ เครื่อง Mini Computer ไปจนถึงเครื่องระดับ Super Computer ดังนั้นในปี พ.ศ. 2534 บริษัท ซัน ไมโครซิสเต็มส์ (Sun Microsystems, Inc.) จึงได้พัฒนาภาษาคอมพิวเตอร์ใหม่ที่มีประสิทธิภาพในการทำงาน โดยตั้งวัตถุประสงค์ไว้ให้เป็นภาษาชนิดไม่ยึดติดกับ PlateForm ใดเลย ขึ้นมา James Gosling และทีมงานพัฒนาของ Sun Microsystem ได้ตั้งชื่อภาษานี้ว่า Java ขึ้นมาตามชื่อกาแฟที่พวกเขาใช้ดื่มขณะพัฒนาภาษา Java นับเป็นภาษาคอมพิวเตอร์ภาษาแรกของโลกที่ถูกออกแบบให้มีคุณสมบัติพิเศษด้านเทคนิค สามารถสร้างโปรแกรมใช้งานจากเครื่องคอมพิวเตอร์ประเภทหนึ่ง แล้วนำไปใช้ได้กับเครื่องอีกประเภทหนึ่งที่อยู่ภายในเครือข่ายเดียวกัน หรือต่างเครือข่ายได้โดยไม่ยึดติดกับ PlateForm หรือประเภทของเครื่องคอมพิวเตอร์อีกต่อไป
รุ่นต่าง ๆ ของภาษา java
  • 1.0 (ค.ศ. 1996)  ออกครั้งแรกสุด
  • 1.1 (ค.ศ. 1997)  ปรับปรุงครั้งใหญ่ โดยเพิ่ม inner class
  • 1.2 (4 ธันวาค, ค.ศ. 1998)  รหัส Playground ด้านจาวาแพลตฟอร์มได้รับการเปลี่ยนแปลงครั้งใหญ่ใน API และ JVM (API สำคัญที่เพิ่มมาคือ Java Collections Framework และ Swing; ส่วนใน JVM เพิ่ม JIT compiler) แต่ตัวภาษาจาวานั้น เปลี่ยนแปลงเพียงเล็กน้อย (เพิ่มคีย์เวิร์ด strictfp) และทั้งหมดถูกเรียกชื่อใหม่ว่า "จาวา 2" แต่ระบบเลขรุ่นยังไม่เปลี่ยนแปลง
  • 1.3 (8 พฤษภาคม, ค.ศ. 2000)  รหัส Kestrel แก้ไขเล็กน้อย
  • 1.4 (13 กุมภาพันธ์, ค.ศ. 2002)  รหัส Merlin เป็นรุ่นที่ถูกใช้งานมากที่สุดในปัจจุบัน (ขณะที่เขียน ค.ศ. 2005)
  • 5.0 (29 กันยายน, ค.ศ. 2004)  รหัส Tiger (เดิมทีนับเป็น 1.5) เพิ่มคุณสมบัติใหม่ในภาษาจาวา เช่น Annotations ซึ่งเป็นที่ถกเถียงกันว่านำมาจากภาษาซีชาร์ป ของบริษัทไมโครซอฟท์, Enumerations, Varargs, Enhanced for loop, Autoboxing, และที่สำคัญคือ Generics
  • 6.0 (11 ธันวาคม, ค.ศ. 2006)  รหัส Mustang เป็นรุ่นในการพัฒนาของ Java SDK 6.0 ที่ออกมาให้ทดลองใช้ในเดือนพฤศจิกายน ค.ศ. 2004
  • 7.0 (กำลังพัฒนา กำหนดออก ค.ศ. 2008)  รหัส Dolphin กำลังพัฒนา
รูปแบบการเขียนโปรแกรม
 Java เป็นภาษาแบบ Compiler คำสั่งในภาษา Java หรือ Source Code จึงต้องเขียนเก็บไว้เป็น text file มีส่วนขยายเป็น .java หลังจากนั้นต้องนำไฟล์ดังกล่าวไปทำการ Compile จาก Source Code ให้กลายเป็นรหัสภาษากลางที่เรียกว่า Binary File หรือ Byte Code (ไฟล์ที่มีส่วนขยายเป็น .class) มีคุณลักษณะเด่นคือ มีขนาดเล็ก สามารถนำไปประยุกต์ใช้งานได้สะดวกรวดเร็ว โดยเตรียมโปรแกรมดังกล่าวไว้บนเครื่อง Server และเมื่อมีการเรียกใช้งานจาก Web Browser ตัว Server จะทำการส่งข้อมูลดังกล่าวกลับ เพื่อให้ Web Browser สั่งให้ทำงานต่อไป Java ถูกจัดให้เป็นภาษาคอมพิวเตอร์ระดับสูงเช่นเดียวกับภาษา Fortran, Cobol, C, Pascal หรือ Basic เป็นภาษาที่มีเสถียรภาพการทำงานสูง ใช้โครงสร้างการเขียนโปรแกรมเป็น Object-Oriented Programming หรือ OOP มีโครงสร้างของภาษาคล้ายกับภาษา C++ เนื่องจาก Java ใช้ภาษา C++ เป็นต้นแบบในการพัฒนาขึ้นมาการทำงานและความปลอดภัยของ Java นั้น เมื่อผู้ส่งคำร้องขอข้อมูล Web Page ไปยัง Web Server หากภายใน Web Page นั้นมีรหัสคำสั่ง สำหรับกำหนด Java Applet ที่ต้องการนำมาใช้งาน Server ก็จะเพียงทำหน้าที่ส่งข้อมูลต่างๆ เกี่ยวกับ Applet นั้นไปยังเครื่องคอมพิวเตอร์ของผู้ใช้ จากนั้น Web Browser ที่เครื่องคอมพิวเตอร์ของผู้ใช้จะนำ Binary File (Byte Code) ที่ได้นั้นไปเรียกใช้งานต่อไปอีกที ส่วนควบคุมการทำงานของ Java (Java runtime) โดยปกติจะฝังตัวอยู่ในโปรแกรม Web Browser เพื่อทำหน้าที่ควบคุมการทำงานของโปรแกรม Java ที่ส่งมาจาก Server และเมื่อ Web Browser นั้นพบ Web Page ที่มีรหัสคำสั่ง ข้อมูลต่างๆที่ใช้ในการทำงานร่วมกับ Applet นั้นจะถูกส่งกลับคืนมายัง Browser ของผู้ใช้ให้โดยอัตโนมัติ การจัดการกับ JAVA Applet จะเรียบร้อยเมื่อเราได้เห็นภาพและได้ยินตามที่ได้มีการกำหนดมา เนื่องจาก JAVA ถูกสร้างขึ้นเพื่อใช้ทำงานร่วมกับระบบเครือข่าย จึงถูกเน้นให้มีระบบการรักษาความปลอดภัยที่รัดกุม เพื่อป้องกันอันตรายที่อาจเกิดจากไวรัสคอมพิวเตอร์ หรือโปรแกรมคอมพิวเตอร์ที่มีโอกาสทำงานผิดพลาดได้ และเพื่อตัดปัญหามิให้เป็นอันตรายต่อระบบการทำงานของเครื่องคอมพิวเตอร์ที่เรียกใช้มัน ภาษา Java จึงไม่มีคุณสมบัติในการเข้าถึงหน่วยความจำของระบบในระดับลึก และเนื่องจาก Java ต้องทำงานผ่าน Web Browser ดังนั้น Web Browser จึงทำหน้าที่เป็นผู้ตรวจทานรหัสคำสั่งของ Java ก่อนว่าไม่มีการเขียนรหัสคำสั่งที่เป็นอันตรายต่อระบบจากนั้นจึงผ่านให้ Java Class Loader เพื่อสั่งให้โปรแกรมทำงานต่อไป ฉะนั้น Java จึงเหมาะกับการใช้งานที่ต้องการความปลอดภัยสูงผ่านระบบ NetWork หรือการทำธุรกิจในระบบ Internet (E-commerce) โดย Java ได้มีการแบ่งระบบรักษาความปลอดภัยไว้เป็น 3 ระดับดังนี้
1.การตรวจสอบความถูกต้องของรหัสคำสั่ง

2.การกำหนดไฟล์ที่สามารถใช้งานได้

3.การตรวจสอบขณะเรียกใช้งาน


ข้อดีและข้อเสียของจาวา
ข้อดี
  • โปรแกรมจาวาที่เขียนขึ้นสามารถทำงานได้หลาย platform โดยไม่จำเป็นต้องแก้ไขหรือ compile ใหม่ ทำให้ช่วยลดค่าใช้จ่ายและเวลาที่ต้องเสียไปในการ port หรือทำให้โปรแกรมใช้งานได้หลาย platform
  • ภาษาจาวาเป็นภาษาเชิงวัตถุ ซึ่งเหมาะสำหรับพัฒนาระบบที่มีความซับซ้อน การพัฒนาโปรแกรมแบบวัตถุจะช่วยให้เราสามารถใช้คำหรือชื่อ ต่าง ๆ ที่มีอยู่ในระบบงานนั้นมาใช้ในการออกแบบโปรแกรมได้ ทำให้เข้าใจได้ง่ายขึ้น
  • ภาษาจาวามีความซับซ้อนน้อยกว่าภาษา C++ ทำให้ใช้งานได้ง่ายกว่าและลดความผิดพลาดได้มากขึ้น
  • ภาษาจาวามีการตรวจสอบข้อผิดพลาดทั้งตอน compile time และ runtime ทำให้ลดข้อผิดพลาดที่อาจเกิดขึ้นในโปรแกรม และช่วยให้ debug โปรแกรมได้ง่าย
  • ภาษาจาวาถูกออกแบบมาให้มีความปลอดภัยสูงตั้งแต่แรก ทำให้โปรแกรมที่เขียนขึ้นด้วยจาวามีความปลอดภัยมากกว่าโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น
  • มี IDE, application server, และ library ต่าง ๆ มากมายสำหรับจาวาที่เราสามารถใช้งานได้โดยไม่ต้องเสียค่าใช้จ่าย ทำให้เราสามารถลดค่าใช้จ่ายที่ต้องเสียไปกับการซื้อ tool และ s/w ต่าง ๆ

ข้อเสีย
  • ทำงานได้ช้ากว่า native code (โปรแกรมที่ compile ให้อยู่ในรูปของภาษาเครื่อง) หรือโปรแกรมที่เขียนขึ้นด้วยภาษาอื่น อย่างเช่น C หรือ C++ ทั้งนี้ก็เพราะว่าโปรแกรมที่เขียนขึ้นด้วยภาษาจาวาจะถูกแปลงเป็นภาษากลางก่อน แล้วเมื่อโปรแกรมทำงานคำสั่งของภาษากลางนี้จะถูกเปลี่ยนเป็นภาษาเครื่องอีกทีหนึ่ง ทีล่ะคำสั่ง (หรือกลุ่มของคำสั่ง) ณ runtime ทำให้ทำงานช้ากว่า native code ซึ่งอยู่ในรูปของภาษาเครื่องแล้วตั้งแต่ compile  โปรแกรมที่ต้องการความเร็วในการทำงานจึงไม่นิยมเขียนด้วยจาวา
  • tool ที่มีในการใช้พัฒนาโปรแกรมจาวามักไม่ค่อยเก่ง ทำให้หลายอย่างโปรแกรมเมอร์จะต้องเป็นคนทำเอง ทำให้ต้องเสียเวลาทำงานในส่วนที่ tool ทำไม่ได้ ถ้าดู tool ของ MS จะใช้งานได้ง่ายกว่า และพัฒนาได้เร็วกว่า (แต่ต้องซื้อ tool ของ MS และก็ต้องรันบน platform ของ MS
ตัวอย่าง SOURCE CODE
JavaDoc สำหรับเอกสารอธิบาย class ต้องประกอบด้วย:
  • บทสรุป และสาระสำคัญ
  • คำอธิบายในรายละเอียด
  • ตัวอย่างโค้ดและตัวอย่างการใช้ class
  • รายชื่อของผู้เขียนโดยใช้ JavaDoc @author tag                                                                                              
เพราะ "feature" ใน JavaDoc ทำให้เราต้องใส่เครื่องหมายดอกจันไว้หน้าบรรทัดเพื่อรักษาย่อหน้าของเราไว้.
ตัวอย่าง
    /** A vector class optimized for working with ints. <p>


        Like the Vector object, except rather than tracking a dynamic

        array of pointers to different objects, this is simply a

        dynamic array of ints.  The advantage is speed and memory

        savings.<p>

        Example:

        <pre>

    *
    *        // report longest lines
    *        TextFileIn f = new TextFileIn("blather.txt");
    *        IntVector v = new IntVector();
    *        int longestLine = 0 ;
    *        boolean done = false ;
    *        while ( ! done )
    *        {
    *            String s = f.readLine();
    *            if ( s == null )
    *            {
    *                done = true ;
    *            }
    *            else
    *            {
    *                int sLength = s.length() ;
    *                if ( sLength > longestLine )
    *                {
    *                    longestLine = sLength ;
    *                }
    *                v.append( sLength );
    *            }
    *        }
    *        f.close();
    *        System.out.println("The longest lines are on line numbers:");
    *        for ( int i = 0 ; i < v.length() ; i++ )
    *        {
    *            if ( v.get( i ) == longestLine )
    *            {
    *                System.out.println( i );
    *            }
    *        }
        </pre>
        @author Adam Baum
        @author Justin Case
    */
    public class IntVector
    {

ไม่มีความคิดเห็น:

แสดงความคิดเห็น