SlideShare una empresa de Scribd logo
1 de 322
Descargar para leer sin conexión
Java 101: Intermediate Java
                  Programming Language

        หลกสตร Mini         Master of Java Technology




                                            ผศ.ธนศา เครอไวศยวรรณ
                                             คณะเทคโนโลยสารสนเทศ
                        สถาบนเทคโนโลยพระจอมเกล!าเจ!าค"ณทหารลาดกระบง




ผศ. ธนศา เครอไวศยวรรณ                                    Java Programming i
สารบญ
บทท 1 ความรเบองตนภาษาจาวา.......................................................................................................................................1
  1.1 ระบบคอมพวเตอร#เบราว#เซอร#.................................................................................................................................1
  1.2 ภาษาคอมพวเตอร#....................................................................................................................................................2
  1.3 ต)วแปลภาษา ............................................................................................................................................................6
  1.4 หล)กการของโปรแกรมเชงอ5อบเจกต# ......................................................................................................................7
  1.5 ประว)ตภาษาจาวา.....................................................................................................................................................9
  1.6 เทคโนโลย;จาวา......................................................................................................................................................10
     1.6.1 Java Virtual Machine....................................................................................................................................11
     1.6.2 Java Runtime Environment...........................................................................................................................12
     1.6.3 Java Development Kit...................................................................................................................................13
  1.7 จJดเดLนของภาษาจาวา.............................................................................................................................................15
  1.8 แพลตฟอร#มของเทคโนโลย;จาวา...........................................................................................................................16
     1.8.1 Java Platform, Standard Edition...................................................................................................................18
     1.8.2 Java Platform, Enterprise Edition.................................................................................................................18
     1.8.3 Java Platform, Micro Edition........................................................................................................................19
  1.9 โปรแกรมภาษาจาวา...............................................................................................................................................20
     1.9.1 การสรUางโปรแกรมจาวาประยJกต#..................................................................................................................20
     1.9.2 การสรUางโปรแกรมจาวาแอปเพล5ต................................................................................................................22
  1.10 คVLมอ Java API......................................................................................................................................................24
  สรJปเนYอหาของบท.......................................................................................................................................................25

บทท 2 พนฐานโปรแกรมภาษาจาวา.................................................................................................................................27
  2.1 การเข;ยนโปรแกรมภาษาจาวาเชงอ5อบเจกต#..........................................................................................................27
  2.2 ไวยากรณ#ระด)บของคZา...........................................................................................................................................29
     2.2.1 คอมเม5นต# ......................................................................................................................................................29
     2.2.2 Identifier........................................................................................................................................................30
     2.2.3 ค;ย#เวร#ด...........................................................................................................................................................31

ii     Java Programming                                                                                                                         ผศ. ธนศา เครอไวศยวรรณ
2.2.4 ส)ญล)กษณ#แยกคZา...........................................................................................................................................32
     2.2.5 ชLองวLาง .........................................................................................................................................................33
     2.2.6 ขUอมVลคLาคงท;. .................................................................................................................................................33
  2.3 ชนดขUอมVลแบบพYนฐาน.........................................................................................................................................33
     2.3.1 ชนดขUอมVลตรรกะ..........................................................................................................................................35
     2.3.2 ชนดขUอมVลต)วอ)กขระ.....................................................................................................................................35
     2.3.3 ชนดขUอมVลต)วเลขจZานวนเต5ม ........................................................................................................................36
     2.3.4 ชนดขUอมVลต)วเลขทศนยม..............................................................................................................................37
  2.4 ต)วแปรและคLาคงท;.................................................................................................................................................38
     2.4.1 คZาส)งกZาหนดคLา .............................................................................................................................................39
     2.4.2 คLาคงท;. ...........................................................................................................................................................41
     2.4.3 ขอบเขตของต)วแปรและคLาคงท;....................................................................................................................42
  2.5 ต)วดZาเนนการ .........................................................................................................................................................45
     2.5.1 ต)วดZาเนนการทางคณตศาสตร#.......................................................................................................................46
     2.5.2 ต)วดZาเนนการแบบส)มพ)นธ#............................................................................................................................48
     2.5.3 ต)วดZาเนนการทางตรรกศาสตร#......................................................................................................................50
     2.5.4 ต)วดZาเนนการแบบบต....................................................................................................................................52
     2.5.5 ลZาด)บความสZาค)ญของต)วดZาเนนการ..............................................................................................................53
  2.6 การแปลงชนดขUอมVล..............................................................................................................................................54
     2.6.1 การแปลงขUอมVลในคZาส)งกZาหนดคLา...............................................................................................................55
     2.6.2 Typecasting...................................................................................................................................................57
  2.7 ชนดขUอมVลแบบอUางอง...........................................................................................................................................58
     2.7.1 คลาส String...................................................................................................................................................60
     2.7.2 คลาส Math...................................................................................................................................................62
  2.8 คZาส)งอนพJตและเอาต#พJต........................................................................................................................................64
     2.8.1 System.out.println()......................................................................................................................................64
     2.8.2 การร)บขUอมVลเขUามาทาง Command Line.......................................................................................................65
  สรJปเนYอหาของบท.......................................................................................................................................................66
บทท 3 โครงสรางควบค%ม.................................................................................................................................................69



ผศ. ธนศา เครอไวศยวรรณ                                                                                                                             Java Programming iii
3.1 คZาส)งโครงสรUางควบคJม.........................................................................................................................................69
     3.2 โครงสรUางแบบเลอกทZา..........................................................................................................................................70
        3.2.1 คZาส)ง if...........................................................................................................................................................70
        3.2.2 คZาส)ง if..else..................................................................................................................................................72
        3.2.3 คZาส)ง if แบบซUอน..........................................................................................................................................74
        3.2.4 คZาส)ง switch..................................................................................................................................................78
     3.3 โครงสรUางแบบทZาซYZา .............................................................................................................................................80
        3.3.1 คZาส)ง while....................................................................................................................................................81
        3.3.2 คZาส)ง do..while..............................................................................................................................................83
        3.3.3 คZาส)ง for........................................................................................................................................................84
     3.4 โครงสรUางแบบซUอน (Nested Structure)................................................................................................................86
        3.4.1 คZาส)ง break, continue และ label ...............................................................................................................88
     สรJปเนYอหาของบท.......................................................................................................................................................90

บทท 4 หลกการเช,งอ-อบเจกต.............................................................................................................................................93
  4.1 องค#ประกอบของโปรแกรมเชงอ5อบเจกต#.............................................................................................................93
     4.1.1 อ5อบเจกต#.......................................................................................................................................................93
     4.1.2 คลาส..............................................................................................................................................................94
     4.1.3 คJณล)กษณะ ...................................................................................................................................................95
     4.1.4 เมธอด...........................................................................................................................................................97
  4.2 การเข;ยนโปรแกรมเชงอ5อบเจกต#โดยใชUภาษาจาวา...............................................................................................98
     4.2.1 การประกาศคลาส..........................................................................................................................................98
     4.2.2 การประกาศคJณล)กษณะ................................................................................................................................99
     4.2.3 การประกาศเมธอด........................................................................................................................................99
     4.2.4 การประกาศและสรUางอ5อบเจกต#..................................................................................................................101
     4.2.5 การเร;ยกใชUสมาชกของอ5อบเจกต#................................................................................................................102
  4.3 คJณล)กษณะเดLนของโปรแกรมเชงอ5อบเจกต#........................................................................................................104
     4.3.1 การหLอหJUม ...................................................................................................................................................104
     4.3.2 การสบทอด ................................................................................................................................................106


iv      Java Programming                                                                                                                           ผศ. ธนศา เครอไวศยวรรณ
4.3.3 การม;ไดUหลายรVปแบบ..................................................................................................................................107
    4.4 การเข;ยนโปรแกรมเชงอ5อบเจกต#เพอสรUางคลาสแบบ abstract และอนเตอร#เฟส................................................109
       4.4.1 คลาสแบบ abstract......................................................................................................................................109
       4.4.2 อนเตอร#เฟส.................................................................................................................................................111
    4.5 แพคเก5จ................................................................................................................................................................113
       4.5.1 การประกาศและใชUแพคเก5จ........................................................................................................................114
    4.6Unified Modeling Language................................................................................................................................115
       4.6.1 ไดอะแกรมของคลาส .................................................................................................................................116
       4.6.2 ไดอะแกรมของอ5อบเจกต#............................................................................................................................116
    4.7 ข)นตอนการพ)ฒนาโปรแกรม...............................................................................................................................117
          Y
    สรJปเนYอหาของบท.....................................................................................................................................................119

บทท 5 การสรางส0วนต0อประสานกราฟ3กกบผใช............................................................................................................121
  5.1 Java Foundation Class ........................................................................................................................................121
     5.1.1 แพคเก5จ AWT.............................................................................................................................................122
     5.1.2 แพคเก5จ Swing............................................................................................................................................124
  5.2 คลาสประเภท Container ....................................................................................................................................125
     5.2.1 คลาส Frame................................................................................................................................................125
     5.2.2 คลาส Panel..................................................................................................................................................127
     5.2.3 คลาส Dialog................................................................................................................................................128
     5.2.4 คลาส JFrame...............................................................................................................................................128
  5.3 การจ)ดวางผ)งของสLวนประกอบกราฟmก...............................................................................................................131
     5.3.1 BorderLayout..............................................................................................................................................132
     5.3.2 FlowLayout.................................................................................................................................................135
     5.3.3 GridLayout..................................................................................................................................................137
  5.4 สLวนประกอบกราฟmกในแพคเก5จ Swing..............................................................................................................138
     5.4.1 คลาส JButton.............................................................................................................................................140
     5.4.2 คลาส JLabel...............................................................................................................................................141
     5.4.3 คลาส JTextField........................................................................................................................................144



ผศ. ธนศา เครอไวศยวรรณ                                                                                                                              Java Programming v
5.4.4 คลาส JTextArea.........................................................................................................................................145
        5.4.5 คลาส JcheckBox และ JRadioButton........................................................................................................147
        5.4.6 คลาส JComboBox.....................................................................................................................................150
        5.4.7 คลาส JList..................................................................................................................................................151
     5.5 การสรUางเมนV........................................................................................................................................................153
        5.5.1 การสรUาง JMenuBar...................................................................................................................................154
        5.5.2 การสรUาง JMenu.........................................................................................................................................154
        5.5.3 การสรUาง JMenuItem..................................................................................................................................155
        5.5.4 คลาส JCheckBoxMenuItem......................................................................................................................157
        5.5.5 การสรUางเมนVยLอย.........................................................................................................................................159
     5.6 คJณล)กษณะของคลาส Component......................................................................................................................161
     สรJปเนYอหาของบท.....................................................................................................................................................163

บทท 6 การเขยนโปรแกรมภาษาจาวาเช,งอ-อบเจกต.........................................................................................................165
  6.1 เมธอด .................................................................................................................................................................165
     6.1.1 การเร;ยกใชUเมธอด........................................................................................................................................165
     6.1.2 การสLงผLาน argument ..................................................................................................................................166
     6.1.3 การร)บคLาท;สLงกล)บมา..................................................................................................................................172
     6.1.4 modifier ของเมธอด....................................................................................................................................172
  6.2 การเข;ยนโปรแกรมโดยใชUหล)กการของการหLอหJม.............................................................................................173
                                                                             U
     6.2.1 เมธอดแบบ Accessor..................................................................................................................................175
     6.2.2 ค;ย#เวร#ด this..................................................................................................................................................178
  6.3 การเข;ยนโปรแกรมโดยใชUหล)กการของการสบทอด...........................................................................................179
     6.3.1 การสบทอดท;ถVกตUอง...................................................................................................................................182
     6.3.2 ค;ย#เวร#ด protected ......................................................................................................................................183
     6.3.3 คลาสท;ชอ Object........................................................................................................................................184
                      
     6.3.4 ค;ย#เวร#ด super ..............................................................................................................................................185
  6.4 การม;ไดUหลายรVปแบบ..........................................................................................................................................186
     6.4.1 Dynamic Binding........................................................................................................................................186


vi      Java Programming                                                                                                                       ผศ. ธนศา เครอไวศยวรรณ
6.4.2 การกZาหนดเมธอดใหUม;วธ;การท;ตางก)น.......................................................................................................187
                                                             L
      6.4.3 Virtual Method Invocation..........................................................................................................................190
      6.4.4 การสLงผLาน argument ไดUหลายรVป.............................................................................................................190
      6.4.5 ต)วดZาเนนการ instanceof.............................................................................................................................191
      6.4.6 การ Casting อ5อบเจกต#................................................................................................................................192
   6.5 Constructor..........................................................................................................................................................194
      6.5.1 การเข;ยน Constructor..................................................................................................................................195
      6.5.2 ข)นตอนการทZางานของคZาส)ง new ..............................................................................................................196
               Y
      6.5.3 Constructor แบบ Overloaded.....................................................................................................................197
      6.5.4 เมธอด this()...............................................................................................................................................198
      6.5.5 เมธอด super()..............................................................................................................................................199
      6.5.6 ข)นตอนการทZางานของ Constructor............................................................................................................200
                 Y
   6.6 เมธอดของคลาสท;ชอ Object...............................................................................................................................202
      6.6.1 เมธอด toString().........................................................................................................................................202
      6.6.2 เมธอด equals()............................................................................................................................................203
   6.7 คลาสประเภท Wrapper.......................................................................................................................................204
      6.7.1 Autoboxing..................................................................................................................................................205
   6.8 ค;ย#เวร#ดอนๆ ท;สZาค)ญ...........................................................................................................................................206
      6.8.1 คJณล)กษณะแบบ static.................................................................................................................................206
      6.8.2 เมธอดแบบ static.........................................................................................................................................207
      6.8.3 Static Initializer...........................................................................................................................................208
      6.8.4 ค;ย#เวร#ด final................................................................................................................................................209
   6.9 คลาสภายใน.........................................................................................................................................................210
      6.9.1 คลาสภายในท;อยVLภายในคลาส.....................................................................................................................210
      6.9.2 คลาสภายในท;อยVLภายในเมธอด...................................................................................................................212
   6.10 Generic Types....................................................................................................................................................213
      6.10.1 เมธอดแบบ Generic..................................................................................................................................214
   6.11Annotation..........................................................................................................................................................215
      6.11.1 Annotation Document...............................................................................................................................216



ผศ. ธนศา เครอไวศยวรรณ                                                                                                                         Java Programming vii
6.11.2 Annotation ท;ใชUโดยคอมไพเลอร#..............................................................................................................217
     สรJปเนYอหาของบท.....................................................................................................................................................218

บทท 7 การจดการกบเหต%การณ.กราฟ3ก...........................................................................................................................221
  7.1 เหตJการณ#.............................................................................................................................................................221
  7.2 AWTEvent...........................................................................................................................................................223
  7.2.1 ActionEvent......................................................................................................................................................224
  7.2.2 WindowEvent...................................................................................................................................................225
  7.2.3 MouseEvent......................................................................................................................................................225
  7.2.4 ItemEvent..........................................................................................................................................................226
  7.2.5 Event อนๆ .......................................................................................................................................................227
  7.3 อนเตอร#เฟสประเภท Listener..............................................................................................................................227
  7.4 การจ)ดการก)บเหตJการณ#.......................................................................................................................................230
  7.4.1 การสรUางอ5อบเจกต#ของคลาสภายนอก..............................................................................................................231
  7.5 การสรUางอ5อบเจกต#ของคลาสภายใน....................................................................................................................232
  7.5.1 การสรUางอ5อบเจกต#ภายในคลาสเด;ยวก)น..........................................................................................................234
  7.5.2 การร)บฟwงเหตJการณ#หลายเหตJการณ#.................................................................................................................235
  7.5.3 คลาสประเภท Event Adapter..........................................................................................................................237
  7.5.4 การสรUางคลาสแบบ anonymous .....................................................................................................................238
  สรJปเนYอหาของบท.....................................................................................................................................................239

บทท 8 อะเรย.และคอลเล-กชน..........................................................................................................................................241
  8.1 อะเรย#....................................................................................................................................................................241
  8.2 อะเรย#ของขUอมVลชนดพYนฐาน..............................................................................................................................242
     8.2.1 การประกาศชอต)วแปรอะเรย#ของขUอมVลชนดพYนฐาน.................................................................................242
     8.2.2 การสรUางต)วแปรอะเรย#ของขUอมVลชนดพYนฐาน...........................................................................................243
     8.2.3 การเร;ยกใชUสมาชกของอะเรย#......................................................................................................................245
     8.2.4 การกZาหนดคLาเรมตUนใหUก)บสมาชกของอะเรย# ...........................................................................................246
     8.2.5 การใชUคZาส)ง for เพออUางองสมาชกของอะเรย#.............................................................................................247


viii      Java Programming                                                                                                                        ผศ. ธนศา เครอไวศยวรรณ
8.2.6 ขUอผดพลาดประเภท ArrayIndexOutOfBoundsException .......................................................................248
    8.3 อะเรย#ของขUอมVลชนดคลาส..................................................................................................................................249
       8.3.1 การเก5บคLาของต)วแปรอะเรย#ของขUอมVลชนดคลาส......................................................................................251
    8.4 อะเรย#หลายมต.....................................................................................................................................................252
       8.4.1 การเข;ยนโปรแกรมเพอจ)ดการก)บเมตรกซ#..................................................................................................254
       8.4.2 อะเรย#สองมตท;ม;จZานวนคอล)มน#ตLางก)น......................................................................................................257
       8.4.3 เมธอดท;เก;ยวขUองก)บอะเรย#..........................................................................................................................259
    8.5 คอลเล5กช)น...........................................................................................................................................................261
       8.5.1 อนเตอร#เฟส Collection..............................................................................................................................262
       8.5.2 อนเตอร#เฟส Set .........................................................................................................................................263
       8.5.3 อนเตอร#เฟส List ........................................................................................................................................264
       8.5.4 อนเตอร#เฟส Map .......................................................................................................................................266
       8.5.5 อนเตอร#เฟส Iterator ..................................................................................................................................268
       8.5.6 คลาส Vector .............................................................................................................................................271
       8.5.7 การใชUคZาส)ง for และ Generic......................................................................................................................272
    สรJปเนYอหาของบท.....................................................................................................................................................273

บทท 9 การจดการกบขอผ,ดพลาด...................................................................................................................................275
  9.1 ขUอผดพลาด..........................................................................................................................................................275
  9.2 Exception.............................................................................................................................................................276
  9.3 คZาส)ง try..catch....................................................................................................................................................278
  9.4 การจ)ดการก)บขUอผดพลาดหลายๆ ประเภท..........................................................................................................279
  9.5 บล5อก finally........................................................................................................................................................281
  9.6 การจ)ดการก)บเมธอดท;สLงอ5อบเจกต#ประเภท Exception......................................................................................283
  9.7 การสรUางคลาสประเภท Exception ขxYนใหมL.........................................................................................................285
  9.7.1 การเข;ยนเมธอดเพอสLงอ5อบเจกต#ประเภท Exception.......................................................................................286
  สรJปเนYอหาของบท.....................................................................................................................................................287

บทท 10 คลาสอ,นพ%ตและเอาต.พ%ต...................................................................................................................................289



ผศ. ธนศา เครอไวศยวรรณ                                                                                                                            Java Programming ix
10.1 Stream ...............................................................................................................................................................289
       10.1.1 แพคเก5จ java.io..........................................................................................................................................290
       10.1.2 คลาสประเภท Byte Stream.......................................................................................................................292
       10.1.3 คลาส InputStream.....................................................................................................................................292
       10.1.4 คลาส OutputStream..................................................................................................................................294
       10.1.5 คลาสประเภท Character Stream...............................................................................................................295
    10.2 โหนดสZาหร)บ Stream.........................................................................................................................................296
    10.3 คลาสประเภท Stream ระด)บสVง.........................................................................................................................298
       10.3.1 DataInputStream และ DataOutputStream................................................................................................301
       10.3.2 InputStreamReader และ OutputStreamWriter.........................................................................................304
    10.4 คลาส File...........................................................................................................................................................305
       10.4.1 คลาส RandomAccessFile.........................................................................................................................307
       10.4.2ObjectInputStream และ ObjectOutputStream...........................................................................................308
    สรJปเนYอหาของบท.....................................................................................................................................................310




x     Java Programming                                                                                                                           ผศ. ธนศา เครอไวศยวรรณ
ผศ. ธนศา เครอไวศยวรรณ   Java Programming xi
บทท 1 ความรเบองตนภาษาจาวา
      เนYอหาในบทน;เY ปyนการแนะนZาภาษาจาวา โดยจะเรมจากการแนะนZาหล)กการของภาษาคอมพวเตอร#โดยท)วๆ ไป
                                                                                            
ประว)ตความเปyนมาโดยยLอของภาษาจาวา ขUอแตกตLางของภาษาจาวาก)บภาษาคอมพวเตอร#อนๆ หล)กการการทZางานของ
โปรแกรมภาษาจาวา และความหมายของเครองจ)กรสมมJตท;ใชUในภาษาจาวา พรUอมท)YงแนะนZาเทคโนโลย;และ
แพลตฟอร#มตLางๆ ของภาษาจาวา แนะนZาต)วอยLางการเข;ยนโปรแกรมจาวาประยJกต#และโปรแกรมจาวาแอปเพล5ต และ
ในสLวนทUายของบทไดUม;การแนะนZาวธ;การใชUคVLมอ Java API

1.1   ระบบคอมพ,วเตอร.
      เครองคอมพวเตอร#เปyนเครองอเล5กทรอนกส# ท;ใชUในการคZานวณและจ)ดการก)บระบบขUอมVล องค#ประกอบของ
ระบบคอมพวเตอร#โดยท)วไปจะเปyนด)งแสดงในรVปท; 1.1 ซxงจะประกอบไปดUวยสLวนหล)กสามสLวนคอ
                    
      1. ฮาร#ดแวร# (Hardware) คอสLวนประกอบท;เปyนต)วเครองคอมพวเตอร#ท;ประกอบดUวยหนLวยประมวลผล
         กลาง (Central Processing Unit หรอ CPU) อJปกรณ#สLวนอนพJต อJปกรณ#สLวนเอาต#พJต หนLวยความจZา
         และอJปกรณ#เก5บขUอมVล
      2. ระบบปฏบ)ตการ (Operating System) คอระบบซอฟต#แวร#ท;ตดต)YงเพอใหUโปรแกรมประยJกต#ตLางๆ
         สามารถตดตLอก)บฮาร#ดแวร#ไดU ระบบปฏบ)ตการท;นยมใชUในปwจจJบนม;อยVLหลายระบบ อาทเชLน Windows
                                                                      )
         Vista, Linux และ Solaris เปyนตUน ท)Yงน;Yฮาร#ดแวร#ชนดเด;ยวก)นสามารถท;จะม;ระบบปฏบ)ตการท;แตกตLาง
         ก)นไดU
      3. โปรแกรมประยJกต# (Application Program) คอโปรแกรมท;ใชUงานท)วๆ ไป เชLน โปรแกรม Word
         Processor, เกมส# หรอโปรแกรมเว5บเบราวเซอร# (Web Browser) เปyนตUน โปรแกรมเหลLาน;จะถVกพ)ฒนา
                                                                                              Y
         โดยใชUภาษาคอมพวเตอร#ตLางๆ อาทเชLน ภาษาฟอร#แทรน (FORTRAN) ภาษาโคบอล (COBOL)
         ภาษา C# ภาษา C++ หรอภาษาจาวา เปyนตUน โปรแกรมประยJกต#จะทZางานภายใตUระบบปฏบ)ตการ ด)งน)น          Y
         โปรแกรมประยJกต#ท;ทZางานบนระบบปฏบ)ตการระบบใดระบบหนxงจะไมLสามารถนZาไปใชUในระบบ ปฏบ)ต
                                                                        
         การอนไดU




ผศ. ธนศา เครอไวศยวรรณ                                                             ความรVUเบYองตUนภาษาจาวา   1
รปท 1.1 องคประกอบของระบบคอมพวเตอร


       เกร%ดความร!

                EDSAC เปนเครองคอมพวเตอรรนแรกๆของโลกสรางขนเมอเดอนพฤษภาคม คศ. 1949 โดยม%
      หนวยความจ(าหล)กเพ%ยง 512 ค(า (words) และสามารถค(านวณค(าส)งได 600 ค(าส)งตอวนาท% และม%ขนาด
      ใหญด)งร1ป




1.2    ภาษาคอมพ,วเตอร.
       ภาษาคอมพวเตอร#คอคZาส)งท;น)กพ)ฒนาโปรแกรม (programmer) พ)ฒนาขxนเพอส)งใหUเครองคอมพวเตอร#
                                                                     Y
ทZางานตามท;ตUองการ ภาษาคอมพวเตอร#แบLงออกเปyนสามประเภทคอ


2     ความรVUเบYองตUนภาษาจาวา                                                      ผศ. ธนศา เครอไวศยวรรณ
1.   ภาษาเครอง (Machine Language) เปyนภาษาเด;ยวท;เครองคอมพวเตอร#สามารถเขUาใจไดU ภาษาเครองจะ
             ประกอบไปดUวยคZาส)งท;เปyนชJดของเลขฐานสองเชLน 01010110 ซxงจะถVกกZาหนดโดยฮาร#ดแวร#ของเครอง
             คอมพวเตอร# ท)Yงน;YภาษาเครองจะขxนอยVLก)บชนดของหนLวยประมวลผลกลางของเครองคอมพวเตอร#แตLละ
                                               Y
             เครอง โดยปกตแลUวน)กพ)ฒนาโปรแกรมไมLสามารถท;จะพ)ฒนาโปรแกรมโดยเข;ยนภาษาเครองไดUโดยตรง
             ท)Yงน;Yเนองจากเปyนภาษาท;ใชUเลขฐานสองซxงไมLใชLชJดคZาส)งท;มนJษย#จะสามารถเขUาใจไดUโดยงLาย ต)วอยLางของ
             คZาส)งภาษาเครองม;ด)งน;Y
                         10110011     00011001
                         01111010     11010001 10010100
                         10011111     00011001
                         01011100     11010001 10010000
                         10111011     11010001 10010110

        2.   ภาษาแอสเซมบล; (Assembly Language) เปyนภาษาคอมพวเตอร#ท;แทนชJดคZาส)งเลขฐานสองดUวยคZา
             ส)ญล)กษณ#ท;เปyนภาษาอ)งกฤษ เชLน 10110011 อาจแทนดUวย MOV เปyนตUน ทZาใหUน)กพ)ฒนาโปรแกรมเข;ยน
             และเขUาใจโปรแกรมไดUงLายขxYน การทZางานของโปรแกรมภาษาแอสเซมบล; จะตUองม;การแปลภาษา แอส
             เซมบล;ใหUเปyนภาษาเครองกLอนจxงจะทZางานไดU แมUภาษาแอสเซมบล;จะม;ชJดคZาส)งท;เปyนคZาภาษาอ)งกฤษ แตL
             น)กพ)ฒนาโปรแกรมภาษาแอสเซมบล;จะตUองม;ความเขUาใจโครงสรUางฮาร#ดแวร#ของระบบคอมพวเตอร#จxงจะ
             สามารถเข;ยนโปรแกรมไดU ด)งน)YนทZาใหUภาษาแอสเซมบล;ไมLเปyนท;นยมใชU ต)วอยLางของโปรแกรมภาษาแอส
             เซมบล;ม;ด)งน;Y
                          MOV     0, SUM
                          MOV     NUM, AC
                          ADD     SUM, AC
                          STO     SUM, TOT

        3.   ภาษาระด)บสVง (High-level Language) การพ)ฒนาโปรแกรมโดยท)วไปจะใชUโปรแกรมภาษาคอมพวเตอร#
             ระด)บสVง ภาษาคอมพวเตอร#ระด)บสVงจะใชUชJดคZาส)งท;คนท)วไปเขUาใจไดUงLาย เหมอนการใชUคZาส)งในภาษา
                                                                     
             อ)งกฤษหรอการเข;ยนสมการคณตศาสตร#ทวไป น)กพ)ฒนาโปรแกรมไมLจZาเปyนตUองเขUาใจหล)กการทZางานของ
                                                      )
             ฮาร#ดแวร#ก5สามารถท;จะพ)ฒนาโปรแกรมภาษาคอมพวเตอร#ระด)บสVงไดU โปรแกรมภาษาคอมพวเตอร#ระด)บ
             สVง จะตUองการต)วแปลภาษาท;ทZาหนUาท;เปล;ยนชJดคZาส)งใหUมาเปyนภาษาแอสเซมบล;หรอภาษาเครองจxงจะ
             ทZางานไดU เมอเท;ยบก)บภาษาแอสเซมบล;แลUว ภาษาคอมพวเตอร#ระด)บสVงจะชLวยใหUน)กพ)ฒนาโปรแกรม
             พ)ฒนาโปรแกรมไดUรวดเร5วกวLา แตLโปรแกรมท;พ)ฒนาขxนจะทZางานไดUชUากวLา
                                                                   Y

        ในปwจจJบ)นม;โปรแกรมภาษาคอมพวเตอร#ระด)บสVงอยVLหลายรUอยภาษา แตLท;นยมใชUและไดUร)บการยอมร)บม;เพ;ยง



ผศ. ธนศา เครอไวศยวรรณ                                                                       ความรVUเบYองตUนภาษาจาวา   3
ไมLก;ภาษา ภาษาคอมพวเตอร#ในยJคแรกท;นยมใชUม;หลายภาษาอาทเชLน
         • ภาษาฟอร#แทรน (FORTRAN ยLอมาจาก FORmula TRANslator) พ)ฒนาโดยบรษ)ท IBM ระหวLางป}
            ค.ศ. 1954 ถxง ค.ศ. 1957 ภาษาน;ใชUสZาหร)บการพ)ฒนาโปรแกรมประยJกต#ดUานวทยาศาสตร#และ
                                          Y
            วศวกรรมศาสตร# ท;ตUองใชUในการคZานวณสมการคณตศาสตร#ท;ซ)บซUอน ปwจจJบนภาษาฟอร#แทรนย)งเปyนท;
                                                                                )
            นยมใชUในการพ)ฒนาโปรแกรมดUานวทยาศาสตร#และวศวกรรมศาสตร#
         • ภาษาโคบอล (COBOL ยLอมาจาก COmmon Business Oriented Language) พ)ฒนาขxนในป} ค.ศ.  Y
            1959 เปyนภาษาท;พ)ฒนาขxนมาเพอใชUในการพ)ฒนาโปรแกรมประยJกต#ดUานธJรกจและการคUา ปwจจJบ)น
                                    Y
            โปรแกรมท;ใชUในดUานธJรกจจZานวนมากอาทเชLนโปรแกรมในสถาบ)นการเงน ย)งเปyนโปรแกรมท;พ)ฒนามา
            จากภาษาโคบอล
         • ภาษาเบสก (BASIC ยLอมาจาก Beginners All-purpose Symbolic Instructional Code) เปyนภาษาท;
            พ)ฒนาขxนโดยม;จดประสงค#เพอใหUผเVU รมตUนพ)ฒนาโปรแกรมสามารถเร;ยนรVและเขUาใจการพ)ฒนาโปรแกรม
                     Y      J                                                U
            อยLางงLาย ภาษาเบสกเปyนภาษา คอมพวเตอร#ภาษาแรกท;ใชUในเครองไมโครคอมพวเตอร#

     เกร%ดความร!

            การเข%ยนโปรแกรมภาษาฟอรแทรนหรอภาษาโคบอลในยคแรกจะใชเครองคอมพวเตอรท%อาน
    โปรแกรมจาก punch card ท%ตองใชการดหนงใบตอหนงค(าส)ง ซงเครองคอมพวเตอรท%ใช punch card
    ย)งม%การใชในการเร%ยนการสอนในประเทศไทยจนถงป6 พ.ศ. 2529 จนกระท)งเครองคอมพวเตอรพ%ซ%เขา
    มาแทนท%




         ภาษาคอมพวเตอร#ท;พ)ฒนาขxYนในยJคแรก ย)งม;ขUอจZาก)ดในการท;จะพ)ฒนาโปรแกรมขนาดใหญL ท)Yงน;เY นองจาก
                                                                 
ภาษาคอมพวเตอร#เหลLาน)YนขาดโครงสรUางท;ด; ทZาใหUการพ)ฒนาโปรแกรมท;ม;ขนาดใหญLและม;ความซ)บซUอนเปyนไปไดU
ยาก ในชLวงตUนป} ค.ศ. 1970 จxงม;ภาษาคอมพวเตอร#ท;เปyนภาษาเชงกระบวนการ (Procedural หรอ Structural
Language) เกดขxYน ภาษาคอมพวเตอร#ประเภทน;จะม;ความยดหยJLนในการพ)ฒนาโปรแกรม ทZาใหUสามารถแกUไขและ
                                             Y
บZารJงร)กษาไดUงLาย เนองจากโปรแกรมถVกแยกออกเปyนสLวนๆ ภาษาคอมพวเตอร#ท;เปyนภาษาเชงกระบวนการท;สZาค)ญคอ


4   ความรVUเบYองตUนภาษาจาวา                                                          ผศ. ธนศา เครอไวศยวรรณ
•   ภาษาปาสคาล (Pascal) พ)ฒนาโดย Nicklaus Wirth ในป} ค.ศ. 1971 โดยม;จJดประสงค#เพอใชUในการ
            สอนการเข;ยนโปรแกรมภาษาเชงกระบวนการ ในมหาวทยาล)ย แตLเนองจากภาษาปาสคาลไมLม;คJณล)กษณะท;
            จะสน)บสนJนการพ)ฒนาโปรแกรมดUานธJรกจและอJตสาหกรรมจxงไมLไดUร)บความนยมมากน)ก
        •   ภาษาซ; (C) พ)ฒนาขxนในชLวงเด;ยวก)บภาษาปาสคาล โดยน)กวจ)ยท;หUองปฏบ)ตการ AT&T Bell ซxงไดUนZาเอา
                              Y
            จJดเดLนของภาษา BCPL และภาษา B มาใชUและไดUเพมคJณล)กษณะและชนดขUอมVลอนเขUามาดUวย เดมภาษาซ;
            ถอวLาเปyนภาษาคอมพวเตอร#ท;สZาค)ญในการพ)ฒนาโปรแกรมบนระบบปฏบ)ตการยVนกส# (Unix) ซxงเปyนภาษา
            คอมพวเตอร#ท;สามารถสรUางโปรแกรมประยJกต#ท;ทZางานไดUรวดเร5วมาก เมอเท;ยบก)บภาษาคอมพวเตอร#อนๆ

            จJดดUอยของการพ)ฒนาโปรแกรมภาษาเชงกระบวนการคอ จะม;ตUนทJนในการพ)ฒนาโปรแกรมท;คLอนขUางสVง
เนองจากจะตUองม;การออกแบบโปรแกรมใหUแยกออกเปyนสLวนๆ ท;เร;ยกวLาโมดVล (module) ซxงจะตUองเปyนอสระจากก)น
การออกแบบใหUมความเปyนอสระตLอก)นน)นทZาไดUยาก ซxงหากออกแบบมาไมLด;จะทZาใหUการแกUไขและบZารJงร)กษา
                      ;                   Y
โปรแกรมเปyนไปไดUยาก ด)งน)นจxงม;การพ)ฒนาภาษาคอมพวเตอร#ในแบบท;เร;ยกวLา ภาษาเชงอ5อบเจกต# (Object-
                                    Y
Oriented Programming) ท;พยายามใหUการพ)ฒนาโปรแกรมเปyนการเล;ยนแบบการทZางานของอ5อบเจกต#ตLางๆ ในโลก
ท)Yงน;เY พอใหUงLายตLอการพ)ฒนาโปรแกรมและสามารถนZาโปรแกรมกล)บมาใชUใหมL (reuse) ไดUด;กวLาภาษาเชงกระบวนการ
ภาษาคอมพวเตอร#ท;เปyนภาษาเชงอ5อบเจกต#ท;สZาค)ญคอ
            • ภาษา C++ เปyนภาษาท;พ)ฒนามาจากภาษาซ;เมอตUน ค.ศ. 1980 โดยน)กวจ)ยท;หUองปฏบ)ตการ Bell โดยไดU
               เพมหล)กการเชงอ5อบเจกต#ขxYนมาจากภาษาซ; ด)งน)นน)กพ)ฒนาโปรแกรมภาษา C++ สามารถท;จะพ)ฒนา
                                                           Y
               โปรแกรมท)Yงในเชงอ5อบเจกต#และเชงกระบวนการ (ตามแบบภาษาซ;) ไดU ทZาใหUปwจจJบนภาษา C++ ย)งเปyนท;
                                                                                               )
               นยมใชUก)นอยLางแพรLหลาย
            • ภาษา Smalltalk เปyนภาษาเชงอ5อบเจกต#ท;พ)ฒนาโดยน)กวจ)ยท; Xerox’s Palo Alto Research Center
               (PARC) ซxงเปyนภาษาคอมพวเตอร#ท;เปyนภาษาเชงอ5อบเจกต# อยLางแทUจรง แตLภาษา Smalltalk ไมLไดUร)บ
               ความนยมในการนZาไปใชUงานมากน)กเมอเท;ยบก)บภาษา C++ หรอภาษาจาวา
            • ภาษาจาวาเปyนภาษาคอมพวเตอร#ท;พ)ฒนาโดย น)กวจ)ยของบรษ)ทซ)นไมโครซสเต5มส# (Sun Microsystems)
               โดยเรมม;การนZามาเผยแพรLเมอป} ค.ศ. 1995 ปwจจJบ)นเปyนภาษาเชงอ5อบเจกต#ท;เปyนท;นยมใชUก)นมากภาษา
                                                                                             
               หนxง ซxงไดUร)บการยอมร)บในการพ)ฒนาโปรแกรมทางธJรกจและอJตสาหกรรม และย)งเปyนท;นยมใชUเพอการ
                                                                                                
               ศxกษาหล)กการการเข;ยนโปรแกรมคอมพวเตอร#โดยใชUภาษาเชงอ5อบเจกต#อ;กดUวย นอกจากน;Yภาษาจาวาย)ง
               เปyนซอฟต#แวร#แบบเปmดเผยซอร#สโคUด (Open source code)
            • ภาษา C# เปyนภาษาคอมพวเตอร#ท;ม;ล)กษณะคลUายก)บภาษาจาวาท;พ)ฒนาโดยบรษ)ท Microsoft โดยม;
               จJดประสงค#เพอใหUน)กพ)ฒนาโปรแกรมสามารถพ)ฒนาโปรแกรมเชงอ5อบเจกต#ท;จะร)นบนระบบปฎบ)ตการ
               Windows ไดUงLายขxน Y


ผศ. ธนศา เครอไวศยวรรณ                                                                ความรVUเบYองตUนภาษาจาวา   5
1.3    ตวแปลภาษา

         ภาษาคอมพวเตอร#ระด)บสVงจะตUองการต)วแปลภาษา (Language Translator) เพอแปลโปรแกรมท;เข;ยนขxน     Y
หรอท;เร;ยกวLาซอร#ดโคUด (Source Code) ของภาษาคอมพวเตอร#แตLละภาษาใหUเปyนภาษาแอสเซมบล;หรอภาษาเครองท;
เครองคอมพวเตอร#สามารถเขUาใจไดU ต)วแปลภาษาแบLงออกเปyนสองแบบคอ
          1. คอมไพเลอร# (Compiler) ต)วแปลภาษาประเภทน;YจะแปลชJดคZาส)งในซอร#ดโคUดท)YงหมดใหUเปyนโปรแกรม
              executable code ด)งแสดงในรVปท; 1.2 ต)วอยLางเชLน แปลซอร#ดโคUดภาษาซ;จากโปรแกรม Hello.c ใหU
              เปyนโปรแกรม executable code ท;ชอ Hello.exe โดยโปรแกรม executable code ท;ไดUจากการแปล
              ภาษาคอมพวเตอร#ระด)บสVงจะสามารถทZางานไดUอยLางรวดเร5ว ท)Yงน;YเนองจากโคUดอยVLในรVปของเลขฐานสอง
              ท;สามารถตดตLอก)บเครองคอมพวเตอร#ไดUโดยตรง ต)วอยLางของภาษา คอมพวเตอร#ท;ใชUคอมไพเลอร# คอ
              ภาษาซ; C++ ฟอร#แทรน และปาสคาล เปyนตUน
                        คอมไพเลอร#จะสรUางโปรแกรม executable code ท;ขxYนอยVLก)บแพลตฟอร#ม (ฮาร#ดแวร#และระบบ
              ปฏบ)ตการ) ด)งน)นผVUใชUจะไมLสามารถนZาโปรแกรม executable code ท;ไดUจากการแปลของคอมไพเลอร#
                              Y
              บนแพลตฟอร#มหนxงไปใชUบนแพลตฟอร#มอนๆ ไดU ในกรณ;ท;น)กพ)ฒนาโปรแกรมตUองการนZาโปรแกรมท;
              พ)ฒนาขxนไปใชUบนแพลตฟอร#มอนๆ น)กพ)ฒนาโปรแกรมจะตUองทZาการแปลซอร#ดโคUด ของโปรแกรม
                      Y
              ใหมL โดยจะตUองใชUคอมไพเลอร#ท;สรUางโปรแกรม executable code สZาหร)บแพลตฟอร#มท;ตUองการใชU
              งานน)นๆ
                    Y




                                รปท 1.2 ขนตอนการทางานของคอมไพเลอร



6     ความรVUเบYองตUนภาษาจาวา                                                          ผศ. ธนศา เครอไวศยวรรณ
2.   อนเตอร#พร;ตเตอร# (Interpreter) ต)วแปลภาษาประเภทน;จะแปลชJดคZาส)งของภาษาคอมพวเตอร#ระด)บสVง
                                                                   Y
               ท;ละคZาส)งใหUเปyนโปรแกรม executable code แลUวจะส)งใหUเครองคอมพวเตอร#ทZางานท)นท;ด)งแสดงใน
               รVปท; 1.3 โปรแกรมภาษาคอมพวเตอร#ท;ใชUอนเตอร#พร;ตเตอร# จะทZางานไดUชากวLาโปรแกรมภาษา
                                                                                   U
               คอมพวเตอร#ท;ใชUคอมไพเลอร# แตLขUอด;ของโปรแกรมภาษาคอมพวเตอร#ทใชUอนเตอร#พร;ตเตอร#คอจะ
                                                                                ;
               สามารถใชUงานขUามแพลตฟอร#มไดU ท)Yงน;Yเนองจากข)YนตอนการแปลภาษากระทZาอยVLในชLวงการร)น
               โปรแกรม นอกจากน;โปรแกรมอนเตอร#พร;ตเตอร#จะพ)ฒนาไดUงLายกวLาเนองจากม;ขนาดเล5ก ต)วอยLางของ
                                    Y
               ภาษาคอมพวเตอร#ท;ใชUอนเตอร#พร;ตเตอร#คอ ภาษาเบสก โปรล5อก (Prolog) และ Smalltalk เปyนตUน




                                รปท 1.3 ขนตอนการทางานของอนเตอรพรตเตอร


1.4   หลกการของโปรแกรมเช,งอ-อบเจกต.

      การเข;ยนโปรแกรมโดยใชUภาษาคอมพวเตอร#ระด)บสVงในปwจจJบนจะม;แนววธ;การคดอยVLสองรVปแบบท;สZาค)ญคอ
                                                            )
แนวคดเชงกระบวนการ และแนวคดเชงอ5อบเจกต# ด)งท;กลLาวไวUในห)วขUอท; 1.2 การเข;ยนโปรแกรมโดยใชUภาษาเชง
กระบวนการ จะเรมตUนจากการวเคราะห#ปญหาโดยพจารณาจากกระบวนการและลZาด)บการทZางาน และจะพยายามแบLง
                                  w
โปรแกรมออกเปyนสLวนๆ ตามฟwงก#ช)นของการทZางานอาทเชLน การพ)ฒนาโปรแกรมระบบทะเบ;ยนน)กเร;ยนโดยใชU
โปรแกรมเชงกระบวนการอาจจะพจารณาแบLงโปรแกรมตามลZาด)บการทZางาน โดยอาจม;ฟwงก#ชนในการทZางานสZาหร)บ
                                                                                 )
การลงทะเบ;ยนรายวชา การชZาระเงน หรอการเพมหรอถอนรายวชา เปyนตUน




ผศ. ธนศา เครอไวศยวรรณ                                                               ความรVUเบYองตUนภาษาจาวา   7
ฟwงก#ชนแตLละสLวนของโปรแกรมเชงกระบวนการ จะม;ต)วแปรท;จะสLงผLานขUอมVลระหวLางก)น การออกแบบ
             )
โปรแกรมเชงกระบวนการท;ด;จะตUองพยายามแบLงฟwงก#ชนใหUเปyนอสระตLอก)นใหUมากท;สJด และตUองพยายามท;จะเข;ยนข)น
                                                 )                                                    Y
ตอนหรอลZาด)บการทZางานใหUสมบVรณ#ท;สJดต)YงแตLขนตอนการออกแบบ จxงทZาใหUการปร)บปรJงหรอแกUไขโปรแกรมท;
                                             )Y
พ)ฒนาจากภาษาเชงกระบวนการทZาไดUยากเมอเท;ยบก)บโปรแกรมท;พ)ฒนาจากภาษาเชงอ5อบเจกต# ท)Yงน;เY นองจาก
กระบวนการการพ)ฒนาโปรแกรมน)นไมLสามารถท;จะออกแบบโปรแกรมใหUสมบVรณ#ต)YงแตLตUนโดยไมLม;การนZากล)บมา
                             Y
แกUไขปร)บปรJงอ;กไดU

           การพ)ฒนาโปรแกรมเชงอ5อบเจกต#จะม;แนวคดในการแกUปwญหา โดยมองปwญหาวLาประกอบไปดUวยอ5อบเจกต#
ตLางๆ ซxงแนวคดน;YจะเขUาใกลUเค;ยงก)บธรรมชาตของมนJษย#มากท;สJด เนองจากมนJษย#มองสงตLางๆ รอบต)วเปyนอ5อบเจกต#
ท)Yงท;เปyนรVปธรรม (ว)ตถJ) เชLน ปากกา น)กศxกษา หรอใบลงทะเบ;ยน เปyนตUน และท;เปyนนามธรรมเชLน คะแนน หรอราย
ชอวชา เปyนตUน

        การเข;ยนโปรแกรมเชงอ5อบเจกต#จะเปyนขบวนการการวเคราะห#ปญหา โดยการจZาลองคJณล)กษณะและ
                                                                 w
พฤตกรรมของอ5อบเจกต#ในระบบจรง ใหUอยVLในรVปของโปรแกรมคอมพวเตอร# ต)วอยLางเชLน การพ)ฒนาโปรแกรมระบบ
ทะเบ;ยนน)กศxกษาอาจแบLงโปรแกรมใหUประกอบดUวยอ5อบเจกต#ตLางๆ อาทเชLน น)กศxกษา ใบลงทะเบ;ยน และรายวชา
เปyนตUน อ5อบเจกต#ชนดน)กศxกษาอาจม;คJณล)กษณะตLางๆ เชLน ชอ รห)ส และเกรดเฉล;ย เปyนตUน และอาจม;พฤตกรรมท;
น)กศxกษาสามารถกระทZาไดUเชLน ลงทะเบ;ยน และเพมหรอถอนวชา เปyนตUน

        การพ)ฒนาโปรแกรมโดยใชUภาษาคอมพวเตอร#เชงอ5อบเจกต# จะทZาใหUขบวนการพ)ฒนาโปรแกรมทZาไดUรวดเร5ว
ขxYนและสามารถปร)บปรJงแกUไขโปรแกรมไดUงLาย ซxงเหมาะก)บการพ)ฒนาโปรแกรมขนาดใหญLท;จะตUองม;การปร)บปรJง
แกUไขโปรแกรมอยVLตลอด นอกจากน;โปรแกรมเชงอ5อบเจกต#ย)งม;คJณล)กษณะเดLนอนๆ อ;กด)งน;Y
                                 Y
        • การหLอหJUม (Encapsulation) เปyนคJณล)กษณะท;ทZาใหUอ5อบเจกต#แตLละต)วเปyนอสระตLอก)น ซxงทZาใหUสามารถ
           แบLงการพ)ฒนาโปรแกรมออกเปyนสLวนๆ ไดUงLาย
        • การสบทอด (Inheritance) เปyนคJณล)กษณะท;ทZาใหUสามารถนZาโปรแกรมท;พ)ฒนาแลUวกล)บมาใชUใหมLไดU
           งLายกวLาการเข;ยนโปรแกรมเชงกระบวนการ
        • การม;ไดUหลายรVปแบบ (Polymorphism) เปyนคJณล)กษณะท;ทZาใหUน)กพ)ฒนาโปรแกรมสามารถเพมเตมสLวน
           ตLางๆ ของโปรแกรมไดUงLาย




8   ความรVUเบYองตUนภาษาจาวา                                                             ผศ. ธนศา เครอไวศยวรรณ
1.5   ประวต,ภาษาจาวา
         ภาษาจาวาเปyนภาษาคอมพวเตอร#ท;พ)ฒนาขxYน โดยท;มวจ)ยของบรษ)ทซ)นไมโครซสเต5มส# ซxงเรมตUนเมอป} ค .ศ.
1991 โดยทางบรษ)ทซ)นไมโครซสเต5มส#ไดUสน)บสนJนใหUม;การพ)ฒนาโครงการท;ชอ Green Project ท;ม;จJดมJLงหมายท;
จะออกแบบภาษาคอมพวเตอร#ขนาดเล5กเพอใชUก)บอJปกรณ#อเล5กทรอนกส#ตLางๆ เชLน สวทซ#บล5อกของเคเบYลท;ว; ซxง
อJปกรณ#เหลLาน;Yจะม;ขUอจZาก)ดในดUานหนLวยความจZาและหนLวยประมวลผลกลางท;จะม;ความแตกตLางก)น ด)งน)นภาษาY
คอมพวเตอร#ท;พ)ฒนาขxนจะตUองไมLขนอยVLก)บแพลตฟอร#ม (Platform Independent) ผลงานของท;มวจ)ยน;YทZาใหUไดUภาษา
                      Y             xY
คอมพวเตอร#ใหมLท;ชอวLา “Oak” ซxงม;โครงสรUางและคZาส)งคลUายภาษา C++ ท)Yงน;เY นองจากท;มวจ)ยของบรษ)ทซ)นไมโคร
ซสเต5มส#ม;ความคJนเคยก)บระบบปฏบ)ตการยVนกส#ซxงม)กจะใชUภาษา C++ ในการพ)ฒนาโปรแกรม ภาษา “Oak” ตLอมาไดU
                 U
เปล;ยนมาเปyนชอ “จาวา” ท)Yงน;Yเนองจากท;มวจ)ยไดUทราบภายหล)งวLา ” Oak” เปyนชอภาษาคอมพวเตอร#ท;ม;อยVLแลUว
         ภาษาจาวาเปyนภาษาคอมพวเตอร#เชงอ5อบเจกต# (Object Oriented Programming หรอเร;ยกยLอวLา OOP) โดย
ม;จJดเดLนตรงท;สามารถทZางานไดUก)บระบบคอมพวเตอร#หลายแพลตฟอร#ม ท;มวจ)ยของโครงการ Green Project ไดU
สรUางเครองตUนแบบท;เร;ยกวLา “*7” ซxงเปyนร;โมทคอนโทรล เพอสาธตเทคโนโลย;ภาษาจาวาท;คUนคดขxนมาน;Yเมอป} ค .ศ.
                                                                                              Y
1992 โดยทางบรษ)ทซ)นไมโครซสเต5มส#ไดUพยายามหาผVซYอเทคโนโลย;ด)งกลLาว แตLก5ไมLประสบความสZาเร5จมากน)ก
                                                     U

      เกร%ดความร!

                            James Gosling เปนผ1ท%คดคนภาษาจาวาจนไดร)บการยกยองวาเปนบดาของ
                            ภาษาจาวา โดยเขาเกดท%ประเทศ Canada จบการศกษาระด)บปรญญาเอกท%
                            มหาวทยาล)ย Carnegie Mellon และเขาท(างานท%บรษ)ท Sun Microsystems
      ต)งแตป6 ค.ศ. 1984 และในป6 ค.ศ. 2007 เขาไดร)บการยกยองจากประเทศ Canada ใหเปน Officer ของ
      Order of Canada ซงเปนเก%ยรตยศท%มอบใหก)บพลเมองของประเทศ

                            โลโกของภาษาจาวาจะเปนร1ปแกวกาแฟท%ม%คว)นรอนระอขนมา โดยทางบรษ)ท
                            Sun Microsystems ไดเปล%ยนร1ปโลโกเดมมาเปนร1ปลาสดด)งท%แสดงใหเห9น




                              Duke เปน mascot ของภาษาจาวา ซงจะม%การใชส)ญล)กษณในทาทางท%แตก
                              ตางก)น และในงานประชม Java One Conference ท%จ)ดเปนประจ(าทกป6 ก9จะ
                              ม%การมอบรางว)ลใหแกซอฟตแวรหรอน)กพ)ฒนาท%ใชเทคโนโลย%จาวาและม%นว)ต
                              กรรมด%เดนท%เร%ยกวา Duke's Choice Awards



ผศ. ธนศา เครอไวศยวรรณ                                                               ความรVUเบYองตUนภาษาจาวา   9
ในชLวงด)งกลLาว ระบบอนเทอร#เน5ตไดUเรมม;การใชUงานอยLางแพรLหลายมากขxYน โดย เฉพาะการใชUงานของ
โปรแกรมเว5บเบราวเซอร# (Web Browser) เพอท;จะเร;ยกดVเอกสารในรVปแบบของไฟล# HTML เนองจากระบบ
อนเทอร#เน5ตจะประกอบไปดUวยเครองคอมพวเตอร#ท;ม;แพลตฟอร#มแตกตLางก)น ทางบรษ)ทซ)นไมโครซสเต5มส#จxงไดUเห5น
ความจZาเปyนท;จะตUองม;ภาษาคอมพวเตอร#ท;สามารถสรUางโปรแกรมท;ทZางานบนแพลตฟอร#มใดๆ ก5ไดU จxงไดUนZาภาษา
จาวามาพ)ฒนาอ;กคร)Yงหนxง โดยไดUพ)ฒนาโปรแกรมเว5บเบราว#เซอร#ท;ชอ Hot Java ท;สามารถร)นโปรแกรมจาวา
แอปเพล5ต (Java Applet) ไดUเพอพสVจน#การทZางานของเทคโนโลย;จาวา (Proof of Technology) และไดUนZาผลงาน
ด)งกลLาวมาแสดงในงาน Sun World’95 ในเดอนพฤษภาคม ป} ค.ศ. 1995

          จากน)นภาษาจาวาเรมเปyนท;นยมแพรLหลายขxนในชLวงปลายป} ค.ศ. 1995 เมอบรษ)ท Netscape ไดUพ)ฒนาโปร
               Y                              Y
แกรมเว5บเบราว#เซอร# Netscape 2.0 และไดUรวมเอาการทZางานของ โปรแกรมจาวาแอปเพล5ต (Java Applet) เขUามา
เปyนคJณล)กษณะเดLนของโปรแกรม ซxงบรษ)ทอนๆ อาทเชLน IBM, Symantec, Inspire หรอ Microsoft ตLางก5ประกาศ
สน)บสนJนการใชUงานของโปรแกรมภาษาจาวาในเวลาตLอมา ในชLวงเด;ยวก)นทางบรษ)ทซ)นไมโครซสเต5มส#ไดUนZาชJด
พ)ฒนาโปรแกรมภาษาจาวาเวอร#ช)นแรก (Java Development Kit 1.0 หรอท;เร;ยกยLอวLา JDK 1.0) ออกมาแจกจLาย
ตLอมาในป} ค.ศ. 1998 ทางบรษ)ทซ)นไมโครซสเต5มส#ไดUเผยแพรLโปรแกรมภาษาจาวา JDK 1.2 (แตLตLอมาไดUเปล;ยนชอ
เปyน Java 2) และไดUแยกแพลตฟอร#มในการพ)ฒนาโปรแกรมภาษาจาวาเปyนหลายแพลตฟอร#มคอ J2EE สZาหร)บการ
พ)ฒนาโปรแกรมประยJกต#บนเครองแมLขLาย (Server) J2ME สZาหร)บการพ)ฒนาโปรแกรมบนเครองโทรศ)พท#มอถอ และ
J2SE สZาหร)บโปรแกรมมาตรฐานจาวาท;พ)ฒนาบนเครองคอมพวเตอร#พYนฐาน และป} ค .ศ. 2006 ทางซ)นไมโครซสเต5ม
ส#ไดUเปล;ยนชอ J2 ท)Yงสามเปyน JavaEE, JavaME และ JavaSE ตามลZาด)บ

         ในเดอนมกราคม ป} ค.ศ. 2010 บรษ)ทออราเคล (Oracle Corporation) ซxงเปyนซอฟต#แวร#ท;พ)ฒนาโปรแกรม
ฐานขUอมVล และซอฟต#แวร#ประยJกต#อนๆ ไดUเขUามาซYอกจการบรษ)ทซ)นไมโครซสเต5มส# ทZาใหUผVUพ)ฒนาเทคโนโลย;จาวาราย
สZาค)ญไดUเปล;ยนเปyนบรษ)ทออราเคล ซxงไดUใชUเทคโนโลย;จาวาในซอฟต#แวร#ตางๆ จZานวนมาก ท)Yงน;Y บรษ)ทออราเคลก5จะ
                                                                    L
ย)งคงไวUในหล)กการของเทคโนโลย;จาวาท;จะใหUมาตรฐานเปmด โปรแกรมเปmดรห)ส (Open Source) และสามารถทZางาน
บนแพลตฟอร#มท;หลากหลายไดUเชLนเดม

1.6   เทคโนโลยจาวา

        เทคโนโลย;จาวาประกอบไปดUวยองค#ประกอบหล)กๆ สามสLวนด)งแสดงในรVปท; 1.4 คอ
        1. Java Virtual Machine (JVM) เปyนเทคโนโลย;จาวาท;ทZาหนUาท;เปyนอนเตอร#พร;ตเตอร# ท;จะแปลโปรแกรม
                                                             
           จาวาไบท#โคUด (Java Bytecode) ใหUเปyนภาษาท;เครองเขUาใจไดU


10    ความรVUเบYองตUนภาษาจาวา                                                         ผศ. ธนศา เครอไวศยวรรณ
2. Java Runtime Environment (JRE) เปyนเทคโนโลย;จาวาท;ใชUในการร)นโปรแกรมภาษาจาวาอาทเชLน
           โปรแกรมจาวาประยJกต# (Java Application) และโปรแกรมจาวาแอปเพล5ต (Java Applet) JRE จะ
           ประกอบดUวย JVM และ Java Application Programming Interface (Java API) ท;จะรวบรวมคลาส
           และอนเตอร#เฟสตLางๆ ท;จZาเปyนตLอการใชUงานของโปรแกรมภาษาจาวา
        3. Java Software Developer Kit (JDK) เปyนชJดพ)ฒนาโปรแกรมภาษาจาวาท;จะประกอบไปดUวย JVM ต)ว
                                                                           
           แปลภาษาจาวา (Java Compiler) เครองมอ (tool) อนๆ ในการพ)ฒนาโปรแกรม และ API ท)Yงหมดใน
           ภาษาจาวา ซxง API จะเปyนมาตรฐานคZาส)งตLางๆ ของภาษาจาวา




                                  รปท 1.4 องคประกอบของเทคโนโลยจาวา

1.6.1 Java Virtual Machine
        ภาษาจาวาออกแบบมาเพอใหUสามารถประมวลผลไดUก)บทJกแพลตฟอร#ม โดยไดUรวมหล)กการของต)วแปลภาษา
ท)Yงคอมไพเลอร#และอนเตอร#พร;ตเตอร#ไวU โดยคอมไพเลอร#ของภาษาจาวาจะทZาหนUาท;แปลซอร#ดโคUดของโปรแกรม (ชอ
ไฟล#.java) ใหUเปyนโปรแกรมไบท#โคUด (ชอไฟล#.class) โปรแกรมไบท#โคUดจะแตกตLางจากโปรแกรมภาษาเครองท;
สามารถประมวลผลบนระบบปฏบ)ตการไดUโดยตรง แตLโปรแกรมไบท#โคUดจะประมวลผลไดUโดยผLานอนเตอร#พร;ตเตอร#
ซxงจะแปลโปรแกรมไบท#โคUดแลUวส)งงานไปย)งเครองคอมพวเตอร# อนเตอร#พร;ตเตอร#แบบน;ม;ชอเร;ยกวLา JVM (Java
                                                                              Y
Virtual Machine หรอเครองจ)กรสมมJตจาวา) ซxงข)YนตอนการทZางานของโปรแกรมภาษาจาวาสามารถแสดงไดUด)งรVปท;
1.5
        JVM จะทZาหนUาท;แปลโปรแกรมไบท#โคUดใหUเปyนภาษาเครองท;ขxYนอยVLก)บแพลตฟอร#มโปรแกรมไบท#โคUดท;
ประมวลผลโดยใชU JVM จะทZางานไดUเร5วกวLาโปรแกรมภาษาคอมพวเตอร#อนๆ ท;ใชUอนเตอร#พร;ตเตอร#ปกตในการ
                                                                          
ประมวลผล ท)Yงน;เY นองจาก JVM จะม;ชJดคZาส)งท;ใกลUเค;ยงก)บชJดคZาส)งภาษาเครองของหนLวยประมวลผลกลางท;ใชUงาน
ด)งน)น JVM จxงสามารถแปลคZาส)งของโปรแกรมไบท#โคUดไปเปyนคZาส)งภาษาเครองของหนLวยประมวลผลกลางท;ใชUงาน
     Y
ไดUงLายกวLา นอกจากน;โปรแกรมไบท#โคUดจะไมLขxYนอยVLก)บแพลตฟอร#ม ด)งน)นเราสามารถท;จะนZาโปรแกรมไบท#โคUดท;
                     Y                                                  Y


ผศ. ธนศา เครอไวศยวรรณ                                                              ความรVUเบYองตUนภาษาจาวา   11
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)
Intermediate Java Programming Language (in Thai)

Más contenido relacionado

La actualidad más candente

ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์พัน พัน
 

La actualidad más candente (6)

แผนการจัดการเรียนรู้ที่4
แผนการจัดการเรียนรู้ที่4แผนการจัดการเรียนรู้ที่4
แผนการจัดการเรียนรู้ที่4
 
แผนการจัดการเรียนรู้ที่6
แผนการจัดการเรียนรู้ที่6แผนการจัดการเรียนรู้ที่6
แผนการจัดการเรียนรู้ที่6
 
แผนการจัดการเรียนรู้ที่9
แผนการจัดการเรียนรู้ที่9แผนการจัดการเรียนรู้ที่9
แผนการจัดการเรียนรู้ที่9
 
แผนการจัดการเรียนรู้ที่3
แผนการจัดการเรียนรู้ที่3แผนการจัดการเรียนรู้ที่3
แผนการจัดการเรียนรู้ที่3
 
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์
 
แผนการจัดการเรียนรู้ที่2
แผนการจัดการเรียนรู้ที่2แผนการจัดการเรียนรู้ที่2
แผนการจัดการเรียนรู้ที่2
 

Destacado

Java Development with MongoDB (James Williams)
Java Development with MongoDB (James Williams)Java Development with MongoDB (James Williams)
Java Development with MongoDB (James Williams)MongoSF
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Using MongoDB With Groovy
Using MongoDB With GroovyUsing MongoDB With Groovy
Using MongoDB With GroovyJames Williams
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsJames Williams
 
Introduction to Griffon
Introduction to GriffonIntroduction to Griffon
Introduction to GriffonJames Williams
 

Destacado (6)

Java Development with MongoDB (James Williams)
Java Development with MongoDB (James Williams)Java Development with MongoDB (James Williams)
Java Development with MongoDB (James Williams)
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Using MongoDB With Groovy
Using MongoDB With GroovyUsing MongoDB With Groovy
Using MongoDB With Groovy
 
Ratpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web AppsRatpack - Classy and Compact Groovy Web Apps
Ratpack - Classy and Compact Groovy Web Apps
 
Introduction to Griffon
Introduction to GriffonIntroduction to Griffon
Introduction to Griffon
 
วิธีใช้ Git เบื้องต้น
วิธีใช้ Git เบื้องต้นวิธีใช้ Git เบื้องต้น
วิธีใช้ Git เบื้องต้น
 

Similar a Intermediate Java Programming Language (in Thai)

Hand-on Exercise Java Web Programming
Hand-on Exercise Java Web Programming Hand-on Exercise Java Web Programming
Hand-on Exercise Java Web Programming IMC Institute
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Thanachart Numnonda
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansJava Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansIMC Institute
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์Thanakon504
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์jakkirt504
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์Nattawatking
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์weerapon0955652023
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and TomcatIMC Institute
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์weerachai504
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์weerachai504
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์kamonrat5626
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์Aunchisa Phongchana
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์kitkatbody18
 
ใบงานที่ 1
ใบงานที่ 1ใบงานที่ 1
ใบงานที่ 1krupick
 

Similar a Intermediate Java Programming Language (in Thai) (20)

Hand-on Exercise Java Web Programming
Hand-on Exercise Java Web Programming Hand-on Exercise Java Web Programming
Hand-on Exercise Java Web Programming
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansJava Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
 
Java Web programming Using NetBeans
Java Web programming Using NetBeansJava Web programming Using NetBeans
Java Web programming Using NetBeans
 
Typecom
TypecomTypecom
Typecom
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
webprogramming eclipse-jsp
webprogramming eclipse-jspwebprogramming eclipse-jsp
webprogramming eclipse-jsp
 
Java Web programming Using Eclipse
Java Web programming Using EclipseJava Web programming Using Eclipse
Java Web programming Using Eclipse
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์การเขียนรายงานโครงงานคอมพิวเตอร์
การเขียนรายงานโครงงานคอมพิวเตอร์
 
ใบงานที่ 1
ใบงานที่ 1ใบงานที่ 1
ใบงานที่ 1
 
Computer12
Computer12Computer12
Computer12
 
Microsoft Office Word 2007
Microsoft Office Word 2007Microsoft Office Word 2007
Microsoft Office Word 2007
 

Más de Thanachart Numnonda

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thanachart Numnonda
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขThanachart Numnonda
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยThanachart Numnonda
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Thanachart Numnonda
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?Thanachart Numnonda
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT IndustryThanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]Thanachart Numnonda
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่Thanachart Numnonda
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย Thanachart Numnonda
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆThanachart Numnonda
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทยThanachart Numnonda
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android Thanachart Numnonda
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryThanachart Numnonda
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี Thanachart Numnonda
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตThanachart Numnonda
 

Más de Thanachart Numnonda (20)

Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021Thailand Digital Industry Survey Result 2021
Thailand Digital Industry Survey Result 2021
 
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุขประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
ประวัติ (ศาสตร์) อันแสนสุขของ แถมสุข
 
Planning on Mobile Strategy
Planning on Mobile StrategyPlanning on Mobile Strategy
Planning on Mobile Strategy
 
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทยข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
ข้อบังคับ สมาคมสถาปนิกเทคโนโลยีสารสนเทศประเทศไทย
 
Software Trends Towards AEC 2015
Software Trends Towards AEC 2015Software Trends Towards AEC 2015
Software Trends Towards AEC 2015
 
Personal Cloud
Personal CloudPersonal Cloud
Personal Cloud
 
How would cloud computing Effect to Software Industry?
How would cloud computing  Effect to Software Industry?How would cloud computing  Effect to Software Industry?
How would cloud computing Effect to Software Industry?
 
Impact of cloud computing to Asian IT Industry
Impact of cloud computing  to Asian IT IndustryImpact of cloud computing  to Asian IT Industry
Impact of cloud computing to Asian IT Industry
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
รายชื่อผู้สมควรได้รับใบประกาศเกียรติคุณโครงการวิทยาศาสตร์สู่ความเป็นเลิศ]
 
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
พิชิตคู่แข่ง แซงหน้าด้วยไอที ยุคใหม่
 
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
ไอซีทีกับการเปลี่ยนแปลงของสังคมไทย
 
Cloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆCloud Computing กับการใช้งานในองค์กรต่างๆ
Cloud Computing กับการใช้งานในองค์กรต่างๆ
 
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
3G กับอนาคต ธุรกิจแอพพลิเคชันในเมืองไทย
 
บทความ Google vs. Android
บทความ Google vs. Android  บทความ Google vs. Android
บทความ Google vs. Android
 
IT trends for co-creation
IT trends for co-creationIT trends for co-creation
IT trends for co-creation
 
Technology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software IndustryTechnology Trends & The Impact for Software Industry
Technology Trends & The Impact for Software Industry
 
อยากอยู่ 110 ปี
อยากอยู่ 110 ปี อยากอยู่ 110 ปี
อยากอยู่ 110 ปี
 
Open
OpenOpen
Open
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
 

Intermediate Java Programming Language (in Thai)

  • 1. Java 101: Intermediate Java Programming Language หลกสตร Mini Master of Java Technology ผศ.ธนศา เครอไวศยวรรณ คณะเทคโนโลยสารสนเทศ สถาบนเทคโนโลยพระจอมเกล!าเจ!าค"ณทหารลาดกระบง ผศ. ธนศา เครอไวศยวรรณ Java Programming i
  • 2. สารบญ บทท 1 ความรเบองตนภาษาจาวา.......................................................................................................................................1 1.1 ระบบคอมพวเตอร#เบราว#เซอร#.................................................................................................................................1 1.2 ภาษาคอมพวเตอร#....................................................................................................................................................2 1.3 ต)วแปลภาษา ............................................................................................................................................................6 1.4 หล)กการของโปรแกรมเชงอ5อบเจกต# ......................................................................................................................7 1.5 ประว)ตภาษาจาวา.....................................................................................................................................................9 1.6 เทคโนโลย;จาวา......................................................................................................................................................10 1.6.1 Java Virtual Machine....................................................................................................................................11 1.6.2 Java Runtime Environment...........................................................................................................................12 1.6.3 Java Development Kit...................................................................................................................................13 1.7 จJดเดLนของภาษาจาวา.............................................................................................................................................15 1.8 แพลตฟอร#มของเทคโนโลย;จาวา...........................................................................................................................16 1.8.1 Java Platform, Standard Edition...................................................................................................................18 1.8.2 Java Platform, Enterprise Edition.................................................................................................................18 1.8.3 Java Platform, Micro Edition........................................................................................................................19 1.9 โปรแกรมภาษาจาวา...............................................................................................................................................20 1.9.1 การสรUางโปรแกรมจาวาประยJกต#..................................................................................................................20 1.9.2 การสรUางโปรแกรมจาวาแอปเพล5ต................................................................................................................22 1.10 คVLมอ Java API......................................................................................................................................................24 สรJปเนYอหาของบท.......................................................................................................................................................25 บทท 2 พนฐานโปรแกรมภาษาจาวา.................................................................................................................................27 2.1 การเข;ยนโปรแกรมภาษาจาวาเชงอ5อบเจกต#..........................................................................................................27 2.2 ไวยากรณ#ระด)บของคZา...........................................................................................................................................29 2.2.1 คอมเม5นต# ......................................................................................................................................................29 2.2.2 Identifier........................................................................................................................................................30 2.2.3 ค;ย#เวร#ด...........................................................................................................................................................31 ii Java Programming ผศ. ธนศา เครอไวศยวรรณ
  • 3. 2.2.4 ส)ญล)กษณ#แยกคZา...........................................................................................................................................32 2.2.5 ชLองวLาง .........................................................................................................................................................33 2.2.6 ขUอมVลคLาคงท;. .................................................................................................................................................33 2.3 ชนดขUอมVลแบบพYนฐาน.........................................................................................................................................33 2.3.1 ชนดขUอมVลตรรกะ..........................................................................................................................................35 2.3.2 ชนดขUอมVลต)วอ)กขระ.....................................................................................................................................35 2.3.3 ชนดขUอมVลต)วเลขจZานวนเต5ม ........................................................................................................................36 2.3.4 ชนดขUอมVลต)วเลขทศนยม..............................................................................................................................37 2.4 ต)วแปรและคLาคงท;.................................................................................................................................................38 2.4.1 คZาส)งกZาหนดคLา .............................................................................................................................................39 2.4.2 คLาคงท;. ...........................................................................................................................................................41 2.4.3 ขอบเขตของต)วแปรและคLาคงท;....................................................................................................................42 2.5 ต)วดZาเนนการ .........................................................................................................................................................45 2.5.1 ต)วดZาเนนการทางคณตศาสตร#.......................................................................................................................46 2.5.2 ต)วดZาเนนการแบบส)มพ)นธ#............................................................................................................................48 2.5.3 ต)วดZาเนนการทางตรรกศาสตร#......................................................................................................................50 2.5.4 ต)วดZาเนนการแบบบต....................................................................................................................................52 2.5.5 ลZาด)บความสZาค)ญของต)วดZาเนนการ..............................................................................................................53 2.6 การแปลงชนดขUอมVล..............................................................................................................................................54 2.6.1 การแปลงขUอมVลในคZาส)งกZาหนดคLา...............................................................................................................55 2.6.2 Typecasting...................................................................................................................................................57 2.7 ชนดขUอมVลแบบอUางอง...........................................................................................................................................58 2.7.1 คลาส String...................................................................................................................................................60 2.7.2 คลาส Math...................................................................................................................................................62 2.8 คZาส)งอนพJตและเอาต#พJต........................................................................................................................................64 2.8.1 System.out.println()......................................................................................................................................64 2.8.2 การร)บขUอมVลเขUามาทาง Command Line.......................................................................................................65 สรJปเนYอหาของบท.......................................................................................................................................................66 บทท 3 โครงสรางควบค%ม.................................................................................................................................................69 ผศ. ธนศา เครอไวศยวรรณ Java Programming iii
  • 4. 3.1 คZาส)งโครงสรUางควบคJม.........................................................................................................................................69 3.2 โครงสรUางแบบเลอกทZา..........................................................................................................................................70 3.2.1 คZาส)ง if...........................................................................................................................................................70 3.2.2 คZาส)ง if..else..................................................................................................................................................72 3.2.3 คZาส)ง if แบบซUอน..........................................................................................................................................74 3.2.4 คZาส)ง switch..................................................................................................................................................78 3.3 โครงสรUางแบบทZาซYZา .............................................................................................................................................80 3.3.1 คZาส)ง while....................................................................................................................................................81 3.3.2 คZาส)ง do..while..............................................................................................................................................83 3.3.3 คZาส)ง for........................................................................................................................................................84 3.4 โครงสรUางแบบซUอน (Nested Structure)................................................................................................................86 3.4.1 คZาส)ง break, continue และ label ...............................................................................................................88 สรJปเนYอหาของบท.......................................................................................................................................................90 บทท 4 หลกการเช,งอ-อบเจกต.............................................................................................................................................93 4.1 องค#ประกอบของโปรแกรมเชงอ5อบเจกต#.............................................................................................................93 4.1.1 อ5อบเจกต#.......................................................................................................................................................93 4.1.2 คลาส..............................................................................................................................................................94 4.1.3 คJณล)กษณะ ...................................................................................................................................................95 4.1.4 เมธอด...........................................................................................................................................................97 4.2 การเข;ยนโปรแกรมเชงอ5อบเจกต#โดยใชUภาษาจาวา...............................................................................................98 4.2.1 การประกาศคลาส..........................................................................................................................................98 4.2.2 การประกาศคJณล)กษณะ................................................................................................................................99 4.2.3 การประกาศเมธอด........................................................................................................................................99 4.2.4 การประกาศและสรUางอ5อบเจกต#..................................................................................................................101 4.2.5 การเร;ยกใชUสมาชกของอ5อบเจกต#................................................................................................................102 4.3 คJณล)กษณะเดLนของโปรแกรมเชงอ5อบเจกต#........................................................................................................104 4.3.1 การหLอหJUม ...................................................................................................................................................104 4.3.2 การสบทอด ................................................................................................................................................106 iv Java Programming ผศ. ธนศา เครอไวศยวรรณ
  • 5. 4.3.3 การม;ไดUหลายรVปแบบ..................................................................................................................................107 4.4 การเข;ยนโปรแกรมเชงอ5อบเจกต#เพอสรUางคลาสแบบ abstract และอนเตอร#เฟส................................................109 4.4.1 คลาสแบบ abstract......................................................................................................................................109 4.4.2 อนเตอร#เฟส.................................................................................................................................................111 4.5 แพคเก5จ................................................................................................................................................................113 4.5.1 การประกาศและใชUแพคเก5จ........................................................................................................................114 4.6Unified Modeling Language................................................................................................................................115 4.6.1 ไดอะแกรมของคลาส .................................................................................................................................116 4.6.2 ไดอะแกรมของอ5อบเจกต#............................................................................................................................116 4.7 ข)นตอนการพ)ฒนาโปรแกรม...............................................................................................................................117 Y สรJปเนYอหาของบท.....................................................................................................................................................119 บทท 5 การสรางส0วนต0อประสานกราฟ3กกบผใช............................................................................................................121 5.1 Java Foundation Class ........................................................................................................................................121 5.1.1 แพคเก5จ AWT.............................................................................................................................................122 5.1.2 แพคเก5จ Swing............................................................................................................................................124 5.2 คลาสประเภท Container ....................................................................................................................................125 5.2.1 คลาส Frame................................................................................................................................................125 5.2.2 คลาส Panel..................................................................................................................................................127 5.2.3 คลาส Dialog................................................................................................................................................128 5.2.4 คลาส JFrame...............................................................................................................................................128 5.3 การจ)ดวางผ)งของสLวนประกอบกราฟmก...............................................................................................................131 5.3.1 BorderLayout..............................................................................................................................................132 5.3.2 FlowLayout.................................................................................................................................................135 5.3.3 GridLayout..................................................................................................................................................137 5.4 สLวนประกอบกราฟmกในแพคเก5จ Swing..............................................................................................................138 5.4.1 คลาส JButton.............................................................................................................................................140 5.4.2 คลาส JLabel...............................................................................................................................................141 5.4.3 คลาส JTextField........................................................................................................................................144 ผศ. ธนศา เครอไวศยวรรณ Java Programming v
  • 6. 5.4.4 คลาส JTextArea.........................................................................................................................................145 5.4.5 คลาส JcheckBox และ JRadioButton........................................................................................................147 5.4.6 คลาส JComboBox.....................................................................................................................................150 5.4.7 คลาส JList..................................................................................................................................................151 5.5 การสรUางเมนV........................................................................................................................................................153 5.5.1 การสรUาง JMenuBar...................................................................................................................................154 5.5.2 การสรUาง JMenu.........................................................................................................................................154 5.5.3 การสรUาง JMenuItem..................................................................................................................................155 5.5.4 คลาส JCheckBoxMenuItem......................................................................................................................157 5.5.5 การสรUางเมนVยLอย.........................................................................................................................................159 5.6 คJณล)กษณะของคลาส Component......................................................................................................................161 สรJปเนYอหาของบท.....................................................................................................................................................163 บทท 6 การเขยนโปรแกรมภาษาจาวาเช,งอ-อบเจกต.........................................................................................................165 6.1 เมธอด .................................................................................................................................................................165 6.1.1 การเร;ยกใชUเมธอด........................................................................................................................................165 6.1.2 การสLงผLาน argument ..................................................................................................................................166 6.1.3 การร)บคLาท;สLงกล)บมา..................................................................................................................................172 6.1.4 modifier ของเมธอด....................................................................................................................................172 6.2 การเข;ยนโปรแกรมโดยใชUหล)กการของการหLอหJม.............................................................................................173 U 6.2.1 เมธอดแบบ Accessor..................................................................................................................................175 6.2.2 ค;ย#เวร#ด this..................................................................................................................................................178 6.3 การเข;ยนโปรแกรมโดยใชUหล)กการของการสบทอด...........................................................................................179 6.3.1 การสบทอดท;ถVกตUอง...................................................................................................................................182 6.3.2 ค;ย#เวร#ด protected ......................................................................................................................................183 6.3.3 คลาสท;ชอ Object........................................................................................................................................184 6.3.4 ค;ย#เวร#ด super ..............................................................................................................................................185 6.4 การม;ไดUหลายรVปแบบ..........................................................................................................................................186 6.4.1 Dynamic Binding........................................................................................................................................186 vi Java Programming ผศ. ธนศา เครอไวศยวรรณ
  • 7. 6.4.2 การกZาหนดเมธอดใหUม;วธ;การท;ตางก)น.......................................................................................................187 L 6.4.3 Virtual Method Invocation..........................................................................................................................190 6.4.4 การสLงผLาน argument ไดUหลายรVป.............................................................................................................190 6.4.5 ต)วดZาเนนการ instanceof.............................................................................................................................191 6.4.6 การ Casting อ5อบเจกต#................................................................................................................................192 6.5 Constructor..........................................................................................................................................................194 6.5.1 การเข;ยน Constructor..................................................................................................................................195 6.5.2 ข)นตอนการทZางานของคZาส)ง new ..............................................................................................................196 Y 6.5.3 Constructor แบบ Overloaded.....................................................................................................................197 6.5.4 เมธอด this()...............................................................................................................................................198 6.5.5 เมธอด super()..............................................................................................................................................199 6.5.6 ข)นตอนการทZางานของ Constructor............................................................................................................200 Y 6.6 เมธอดของคลาสท;ชอ Object...............................................................................................................................202 6.6.1 เมธอด toString().........................................................................................................................................202 6.6.2 เมธอด equals()............................................................................................................................................203 6.7 คลาสประเภท Wrapper.......................................................................................................................................204 6.7.1 Autoboxing..................................................................................................................................................205 6.8 ค;ย#เวร#ดอนๆ ท;สZาค)ญ...........................................................................................................................................206 6.8.1 คJณล)กษณะแบบ static.................................................................................................................................206 6.8.2 เมธอดแบบ static.........................................................................................................................................207 6.8.3 Static Initializer...........................................................................................................................................208 6.8.4 ค;ย#เวร#ด final................................................................................................................................................209 6.9 คลาสภายใน.........................................................................................................................................................210 6.9.1 คลาสภายในท;อยVLภายในคลาส.....................................................................................................................210 6.9.2 คลาสภายในท;อยVLภายในเมธอด...................................................................................................................212 6.10 Generic Types....................................................................................................................................................213 6.10.1 เมธอดแบบ Generic..................................................................................................................................214 6.11Annotation..........................................................................................................................................................215 6.11.1 Annotation Document...............................................................................................................................216 ผศ. ธนศา เครอไวศยวรรณ Java Programming vii
  • 8. 6.11.2 Annotation ท;ใชUโดยคอมไพเลอร#..............................................................................................................217 สรJปเนYอหาของบท.....................................................................................................................................................218 บทท 7 การจดการกบเหต%การณ.กราฟ3ก...........................................................................................................................221 7.1 เหตJการณ#.............................................................................................................................................................221 7.2 AWTEvent...........................................................................................................................................................223 7.2.1 ActionEvent......................................................................................................................................................224 7.2.2 WindowEvent...................................................................................................................................................225 7.2.3 MouseEvent......................................................................................................................................................225 7.2.4 ItemEvent..........................................................................................................................................................226 7.2.5 Event อนๆ .......................................................................................................................................................227 7.3 อนเตอร#เฟสประเภท Listener..............................................................................................................................227 7.4 การจ)ดการก)บเหตJการณ#.......................................................................................................................................230 7.4.1 การสรUางอ5อบเจกต#ของคลาสภายนอก..............................................................................................................231 7.5 การสรUางอ5อบเจกต#ของคลาสภายใน....................................................................................................................232 7.5.1 การสรUางอ5อบเจกต#ภายในคลาสเด;ยวก)น..........................................................................................................234 7.5.2 การร)บฟwงเหตJการณ#หลายเหตJการณ#.................................................................................................................235 7.5.3 คลาสประเภท Event Adapter..........................................................................................................................237 7.5.4 การสรUางคลาสแบบ anonymous .....................................................................................................................238 สรJปเนYอหาของบท.....................................................................................................................................................239 บทท 8 อะเรย.และคอลเล-กชน..........................................................................................................................................241 8.1 อะเรย#....................................................................................................................................................................241 8.2 อะเรย#ของขUอมVลชนดพYนฐาน..............................................................................................................................242 8.2.1 การประกาศชอต)วแปรอะเรย#ของขUอมVลชนดพYนฐาน.................................................................................242 8.2.2 การสรUางต)วแปรอะเรย#ของขUอมVลชนดพYนฐาน...........................................................................................243 8.2.3 การเร;ยกใชUสมาชกของอะเรย#......................................................................................................................245 8.2.4 การกZาหนดคLาเรมตUนใหUก)บสมาชกของอะเรย# ...........................................................................................246 8.2.5 การใชUคZาส)ง for เพออUางองสมาชกของอะเรย#.............................................................................................247 viii Java Programming ผศ. ธนศา เครอไวศยวรรณ
  • 9. 8.2.6 ขUอผดพลาดประเภท ArrayIndexOutOfBoundsException .......................................................................248 8.3 อะเรย#ของขUอมVลชนดคลาส..................................................................................................................................249 8.3.1 การเก5บคLาของต)วแปรอะเรย#ของขUอมVลชนดคลาส......................................................................................251 8.4 อะเรย#หลายมต.....................................................................................................................................................252 8.4.1 การเข;ยนโปรแกรมเพอจ)ดการก)บเมตรกซ#..................................................................................................254 8.4.2 อะเรย#สองมตท;ม;จZานวนคอล)มน#ตLางก)น......................................................................................................257 8.4.3 เมธอดท;เก;ยวขUองก)บอะเรย#..........................................................................................................................259 8.5 คอลเล5กช)น...........................................................................................................................................................261 8.5.1 อนเตอร#เฟส Collection..............................................................................................................................262 8.5.2 อนเตอร#เฟส Set .........................................................................................................................................263 8.5.3 อนเตอร#เฟส List ........................................................................................................................................264 8.5.4 อนเตอร#เฟส Map .......................................................................................................................................266 8.5.5 อนเตอร#เฟส Iterator ..................................................................................................................................268 8.5.6 คลาส Vector .............................................................................................................................................271 8.5.7 การใชUคZาส)ง for และ Generic......................................................................................................................272 สรJปเนYอหาของบท.....................................................................................................................................................273 บทท 9 การจดการกบขอผ,ดพลาด...................................................................................................................................275 9.1 ขUอผดพลาด..........................................................................................................................................................275 9.2 Exception.............................................................................................................................................................276 9.3 คZาส)ง try..catch....................................................................................................................................................278 9.4 การจ)ดการก)บขUอผดพลาดหลายๆ ประเภท..........................................................................................................279 9.5 บล5อก finally........................................................................................................................................................281 9.6 การจ)ดการก)บเมธอดท;สLงอ5อบเจกต#ประเภท Exception......................................................................................283 9.7 การสรUางคลาสประเภท Exception ขxYนใหมL.........................................................................................................285 9.7.1 การเข;ยนเมธอดเพอสLงอ5อบเจกต#ประเภท Exception.......................................................................................286 สรJปเนYอหาของบท.....................................................................................................................................................287 บทท 10 คลาสอ,นพ%ตและเอาต.พ%ต...................................................................................................................................289 ผศ. ธนศา เครอไวศยวรรณ Java Programming ix
  • 10. 10.1 Stream ...............................................................................................................................................................289 10.1.1 แพคเก5จ java.io..........................................................................................................................................290 10.1.2 คลาสประเภท Byte Stream.......................................................................................................................292 10.1.3 คลาส InputStream.....................................................................................................................................292 10.1.4 คลาส OutputStream..................................................................................................................................294 10.1.5 คลาสประเภท Character Stream...............................................................................................................295 10.2 โหนดสZาหร)บ Stream.........................................................................................................................................296 10.3 คลาสประเภท Stream ระด)บสVง.........................................................................................................................298 10.3.1 DataInputStream และ DataOutputStream................................................................................................301 10.3.2 InputStreamReader และ OutputStreamWriter.........................................................................................304 10.4 คลาส File...........................................................................................................................................................305 10.4.1 คลาส RandomAccessFile.........................................................................................................................307 10.4.2ObjectInputStream และ ObjectOutputStream...........................................................................................308 สรJปเนYอหาของบท.....................................................................................................................................................310 x Java Programming ผศ. ธนศา เครอไวศยวรรณ
  • 12. บทท 1 ความรเบองตนภาษาจาวา เนYอหาในบทน;เY ปyนการแนะนZาภาษาจาวา โดยจะเรมจากการแนะนZาหล)กการของภาษาคอมพวเตอร#โดยท)วๆ ไป ประว)ตความเปyนมาโดยยLอของภาษาจาวา ขUอแตกตLางของภาษาจาวาก)บภาษาคอมพวเตอร#อนๆ หล)กการการทZางานของ โปรแกรมภาษาจาวา และความหมายของเครองจ)กรสมมJตท;ใชUในภาษาจาวา พรUอมท)YงแนะนZาเทคโนโลย;และ แพลตฟอร#มตLางๆ ของภาษาจาวา แนะนZาต)วอยLางการเข;ยนโปรแกรมจาวาประยJกต#และโปรแกรมจาวาแอปเพล5ต และ ในสLวนทUายของบทไดUม;การแนะนZาวธ;การใชUคVLมอ Java API 1.1 ระบบคอมพ,วเตอร. เครองคอมพวเตอร#เปyนเครองอเล5กทรอนกส# ท;ใชUในการคZานวณและจ)ดการก)บระบบขUอมVล องค#ประกอบของ ระบบคอมพวเตอร#โดยท)วไปจะเปyนด)งแสดงในรVปท; 1.1 ซxงจะประกอบไปดUวยสLวนหล)กสามสLวนคอ 1. ฮาร#ดแวร# (Hardware) คอสLวนประกอบท;เปyนต)วเครองคอมพวเตอร#ท;ประกอบดUวยหนLวยประมวลผล กลาง (Central Processing Unit หรอ CPU) อJปกรณ#สLวนอนพJต อJปกรณ#สLวนเอาต#พJต หนLวยความจZา และอJปกรณ#เก5บขUอมVล 2. ระบบปฏบ)ตการ (Operating System) คอระบบซอฟต#แวร#ท;ตดต)YงเพอใหUโปรแกรมประยJกต#ตLางๆ สามารถตดตLอก)บฮาร#ดแวร#ไดU ระบบปฏบ)ตการท;นยมใชUในปwจจJบนม;อยVLหลายระบบ อาทเชLน Windows ) Vista, Linux และ Solaris เปyนตUน ท)Yงน;Yฮาร#ดแวร#ชนดเด;ยวก)นสามารถท;จะม;ระบบปฏบ)ตการท;แตกตLาง ก)นไดU 3. โปรแกรมประยJกต# (Application Program) คอโปรแกรมท;ใชUงานท)วๆ ไป เชLน โปรแกรม Word Processor, เกมส# หรอโปรแกรมเว5บเบราวเซอร# (Web Browser) เปyนตUน โปรแกรมเหลLาน;จะถVกพ)ฒนา Y โดยใชUภาษาคอมพวเตอร#ตLางๆ อาทเชLน ภาษาฟอร#แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษา C# ภาษา C++ หรอภาษาจาวา เปyนตUน โปรแกรมประยJกต#จะทZางานภายใตUระบบปฏบ)ตการ ด)งน)น Y โปรแกรมประยJกต#ท;ทZางานบนระบบปฏบ)ตการระบบใดระบบหนxงจะไมLสามารถนZาไปใชUในระบบ ปฏบ)ต การอนไดU ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 1
  • 13. รปท 1.1 องคประกอบของระบบคอมพวเตอร เกร%ดความร! EDSAC เปนเครองคอมพวเตอรรนแรกๆของโลกสรางขนเมอเดอนพฤษภาคม คศ. 1949 โดยม% หนวยความจ(าหล)กเพ%ยง 512 ค(า (words) และสามารถค(านวณค(าส)งได 600 ค(าส)งตอวนาท% และม%ขนาด ใหญด)งร1ป 1.2 ภาษาคอมพ,วเตอร. ภาษาคอมพวเตอร#คอคZาส)งท;น)กพ)ฒนาโปรแกรม (programmer) พ)ฒนาขxนเพอส)งใหUเครองคอมพวเตอร# Y ทZางานตามท;ตUองการ ภาษาคอมพวเตอร#แบLงออกเปyนสามประเภทคอ 2 ความรVUเบYองตUนภาษาจาวา ผศ. ธนศา เครอไวศยวรรณ
  • 14. 1. ภาษาเครอง (Machine Language) เปyนภาษาเด;ยวท;เครองคอมพวเตอร#สามารถเขUาใจไดU ภาษาเครองจะ ประกอบไปดUวยคZาส)งท;เปyนชJดของเลขฐานสองเชLน 01010110 ซxงจะถVกกZาหนดโดยฮาร#ดแวร#ของเครอง คอมพวเตอร# ท)Yงน;YภาษาเครองจะขxนอยVLก)บชนดของหนLวยประมวลผลกลางของเครองคอมพวเตอร#แตLละ Y เครอง โดยปกตแลUวน)กพ)ฒนาโปรแกรมไมLสามารถท;จะพ)ฒนาโปรแกรมโดยเข;ยนภาษาเครองไดUโดยตรง ท)Yงน;Yเนองจากเปyนภาษาท;ใชUเลขฐานสองซxงไมLใชLชJดคZาส)งท;มนJษย#จะสามารถเขUาใจไดUโดยงLาย ต)วอยLางของ คZาส)งภาษาเครองม;ด)งน;Y 10110011 00011001 01111010 11010001 10010100 10011111 00011001 01011100 11010001 10010000 10111011 11010001 10010110 2. ภาษาแอสเซมบล; (Assembly Language) เปyนภาษาคอมพวเตอร#ท;แทนชJดคZาส)งเลขฐานสองดUวยคZา ส)ญล)กษณ#ท;เปyนภาษาอ)งกฤษ เชLน 10110011 อาจแทนดUวย MOV เปyนตUน ทZาใหUน)กพ)ฒนาโปรแกรมเข;ยน และเขUาใจโปรแกรมไดUงLายขxYน การทZางานของโปรแกรมภาษาแอสเซมบล; จะตUองม;การแปลภาษา แอส เซมบล;ใหUเปyนภาษาเครองกLอนจxงจะทZางานไดU แมUภาษาแอสเซมบล;จะม;ชJดคZาส)งท;เปyนคZาภาษาอ)งกฤษ แตL น)กพ)ฒนาโปรแกรมภาษาแอสเซมบล;จะตUองม;ความเขUาใจโครงสรUางฮาร#ดแวร#ของระบบคอมพวเตอร#จxงจะ สามารถเข;ยนโปรแกรมไดU ด)งน)YนทZาใหUภาษาแอสเซมบล;ไมLเปyนท;นยมใชU ต)วอยLางของโปรแกรมภาษาแอส เซมบล;ม;ด)งน;Y MOV 0, SUM MOV NUM, AC ADD SUM, AC STO SUM, TOT 3. ภาษาระด)บสVง (High-level Language) การพ)ฒนาโปรแกรมโดยท)วไปจะใชUโปรแกรมภาษาคอมพวเตอร# ระด)บสVง ภาษาคอมพวเตอร#ระด)บสVงจะใชUชJดคZาส)งท;คนท)วไปเขUาใจไดUงLาย เหมอนการใชUคZาส)งในภาษา อ)งกฤษหรอการเข;ยนสมการคณตศาสตร#ทวไป น)กพ)ฒนาโปรแกรมไมLจZาเปyนตUองเขUาใจหล)กการทZางานของ ) ฮาร#ดแวร#ก5สามารถท;จะพ)ฒนาโปรแกรมภาษาคอมพวเตอร#ระด)บสVงไดU โปรแกรมภาษาคอมพวเตอร#ระด)บ สVง จะตUองการต)วแปลภาษาท;ทZาหนUาท;เปล;ยนชJดคZาส)งใหUมาเปyนภาษาแอสเซมบล;หรอภาษาเครองจxงจะ ทZางานไดU เมอเท;ยบก)บภาษาแอสเซมบล;แลUว ภาษาคอมพวเตอร#ระด)บสVงจะชLวยใหUน)กพ)ฒนาโปรแกรม พ)ฒนาโปรแกรมไดUรวดเร5วกวLา แตLโปรแกรมท;พ)ฒนาขxนจะทZางานไดUชUากวLา Y ในปwจจJบ)นม;โปรแกรมภาษาคอมพวเตอร#ระด)บสVงอยVLหลายรUอยภาษา แตLท;นยมใชUและไดUร)บการยอมร)บม;เพ;ยง ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 3
  • 15. ไมLก;ภาษา ภาษาคอมพวเตอร#ในยJคแรกท;นยมใชUม;หลายภาษาอาทเชLน • ภาษาฟอร#แทรน (FORTRAN ยLอมาจาก FORmula TRANslator) พ)ฒนาโดยบรษ)ท IBM ระหวLางป} ค.ศ. 1954 ถxง ค.ศ. 1957 ภาษาน;ใชUสZาหร)บการพ)ฒนาโปรแกรมประยJกต#ดUานวทยาศาสตร#และ Y วศวกรรมศาสตร# ท;ตUองใชUในการคZานวณสมการคณตศาสตร#ท;ซ)บซUอน ปwจจJบนภาษาฟอร#แทรนย)งเปyนท; ) นยมใชUในการพ)ฒนาโปรแกรมดUานวทยาศาสตร#และวศวกรรมศาสตร# • ภาษาโคบอล (COBOL ยLอมาจาก COmmon Business Oriented Language) พ)ฒนาขxนในป} ค.ศ. Y 1959 เปyนภาษาท;พ)ฒนาขxนมาเพอใชUในการพ)ฒนาโปรแกรมประยJกต#ดUานธJรกจและการคUา ปwจจJบ)น Y โปรแกรมท;ใชUในดUานธJรกจจZานวนมากอาทเชLนโปรแกรมในสถาบ)นการเงน ย)งเปyนโปรแกรมท;พ)ฒนามา จากภาษาโคบอล • ภาษาเบสก (BASIC ยLอมาจาก Beginners All-purpose Symbolic Instructional Code) เปyนภาษาท; พ)ฒนาขxนโดยม;จดประสงค#เพอใหUผเVU รมตUนพ)ฒนาโปรแกรมสามารถเร;ยนรVและเขUาใจการพ)ฒนาโปรแกรม Y J U อยLางงLาย ภาษาเบสกเปyนภาษา คอมพวเตอร#ภาษาแรกท;ใชUในเครองไมโครคอมพวเตอร# เกร%ดความร! การเข%ยนโปรแกรมภาษาฟอรแทรนหรอภาษาโคบอลในยคแรกจะใชเครองคอมพวเตอรท%อาน โปรแกรมจาก punch card ท%ตองใชการดหนงใบตอหนงค(าส)ง ซงเครองคอมพวเตอรท%ใช punch card ย)งม%การใชในการเร%ยนการสอนในประเทศไทยจนถงป6 พ.ศ. 2529 จนกระท)งเครองคอมพวเตอรพ%ซ%เขา มาแทนท% ภาษาคอมพวเตอร#ท;พ)ฒนาขxYนในยJคแรก ย)งม;ขUอจZาก)ดในการท;จะพ)ฒนาโปรแกรมขนาดใหญL ท)Yงน;เY นองจาก ภาษาคอมพวเตอร#เหลLาน)YนขาดโครงสรUางท;ด; ทZาใหUการพ)ฒนาโปรแกรมท;ม;ขนาดใหญLและม;ความซ)บซUอนเปyนไปไดU ยาก ในชLวงตUนป} ค.ศ. 1970 จxงม;ภาษาคอมพวเตอร#ท;เปyนภาษาเชงกระบวนการ (Procedural หรอ Structural Language) เกดขxYน ภาษาคอมพวเตอร#ประเภทน;จะม;ความยดหยJLนในการพ)ฒนาโปรแกรม ทZาใหUสามารถแกUไขและ Y บZารJงร)กษาไดUงLาย เนองจากโปรแกรมถVกแยกออกเปyนสLวนๆ ภาษาคอมพวเตอร#ท;เปyนภาษาเชงกระบวนการท;สZาค)ญคอ 4 ความรVUเบYองตUนภาษาจาวา ผศ. ธนศา เครอไวศยวรรณ
  • 16. ภาษาปาสคาล (Pascal) พ)ฒนาโดย Nicklaus Wirth ในป} ค.ศ. 1971 โดยม;จJดประสงค#เพอใชUในการ สอนการเข;ยนโปรแกรมภาษาเชงกระบวนการ ในมหาวทยาล)ย แตLเนองจากภาษาปาสคาลไมLม;คJณล)กษณะท; จะสน)บสนJนการพ)ฒนาโปรแกรมดUานธJรกจและอJตสาหกรรมจxงไมLไดUร)บความนยมมากน)ก • ภาษาซ; (C) พ)ฒนาขxนในชLวงเด;ยวก)บภาษาปาสคาล โดยน)กวจ)ยท;หUองปฏบ)ตการ AT&T Bell ซxงไดUนZาเอา Y จJดเดLนของภาษา BCPL และภาษา B มาใชUและไดUเพมคJณล)กษณะและชนดขUอมVลอนเขUามาดUวย เดมภาษาซ; ถอวLาเปyนภาษาคอมพวเตอร#ท;สZาค)ญในการพ)ฒนาโปรแกรมบนระบบปฏบ)ตการยVนกส# (Unix) ซxงเปyนภาษา คอมพวเตอร#ท;สามารถสรUางโปรแกรมประยJกต#ท;ทZางานไดUรวดเร5วมาก เมอเท;ยบก)บภาษาคอมพวเตอร#อนๆ จJดดUอยของการพ)ฒนาโปรแกรมภาษาเชงกระบวนการคอ จะม;ตUนทJนในการพ)ฒนาโปรแกรมท;คLอนขUางสVง เนองจากจะตUองม;การออกแบบโปรแกรมใหUแยกออกเปyนสLวนๆ ท;เร;ยกวLาโมดVล (module) ซxงจะตUองเปyนอสระจากก)น การออกแบบใหUมความเปyนอสระตLอก)นน)นทZาไดUยาก ซxงหากออกแบบมาไมLด;จะทZาใหUการแกUไขและบZารJงร)กษา ; Y โปรแกรมเปyนไปไดUยาก ด)งน)นจxงม;การพ)ฒนาภาษาคอมพวเตอร#ในแบบท;เร;ยกวLา ภาษาเชงอ5อบเจกต# (Object- Y Oriented Programming) ท;พยายามใหUการพ)ฒนาโปรแกรมเปyนการเล;ยนแบบการทZางานของอ5อบเจกต#ตLางๆ ในโลก ท)Yงน;เY พอใหUงLายตLอการพ)ฒนาโปรแกรมและสามารถนZาโปรแกรมกล)บมาใชUใหมL (reuse) ไดUด;กวLาภาษาเชงกระบวนการ ภาษาคอมพวเตอร#ท;เปyนภาษาเชงอ5อบเจกต#ท;สZาค)ญคอ • ภาษา C++ เปyนภาษาท;พ)ฒนามาจากภาษาซ;เมอตUน ค.ศ. 1980 โดยน)กวจ)ยท;หUองปฏบ)ตการ Bell โดยไดU เพมหล)กการเชงอ5อบเจกต#ขxYนมาจากภาษาซ; ด)งน)นน)กพ)ฒนาโปรแกรมภาษา C++ สามารถท;จะพ)ฒนา Y โปรแกรมท)Yงในเชงอ5อบเจกต#และเชงกระบวนการ (ตามแบบภาษาซ;) ไดU ทZาใหUปwจจJบนภาษา C++ ย)งเปyนท; ) นยมใชUก)นอยLางแพรLหลาย • ภาษา Smalltalk เปyนภาษาเชงอ5อบเจกต#ท;พ)ฒนาโดยน)กวจ)ยท; Xerox’s Palo Alto Research Center (PARC) ซxงเปyนภาษาคอมพวเตอร#ท;เปyนภาษาเชงอ5อบเจกต# อยLางแทUจรง แตLภาษา Smalltalk ไมLไดUร)บ ความนยมในการนZาไปใชUงานมากน)กเมอเท;ยบก)บภาษา C++ หรอภาษาจาวา • ภาษาจาวาเปyนภาษาคอมพวเตอร#ท;พ)ฒนาโดย น)กวจ)ยของบรษ)ทซ)นไมโครซสเต5มส# (Sun Microsystems) โดยเรมม;การนZามาเผยแพรLเมอป} ค.ศ. 1995 ปwจจJบ)นเปyนภาษาเชงอ5อบเจกต#ท;เปyนท;นยมใชUก)นมากภาษา หนxง ซxงไดUร)บการยอมร)บในการพ)ฒนาโปรแกรมทางธJรกจและอJตสาหกรรม และย)งเปyนท;นยมใชUเพอการ ศxกษาหล)กการการเข;ยนโปรแกรมคอมพวเตอร#โดยใชUภาษาเชงอ5อบเจกต#อ;กดUวย นอกจากน;Yภาษาจาวาย)ง เปyนซอฟต#แวร#แบบเปmดเผยซอร#สโคUด (Open source code) • ภาษา C# เปyนภาษาคอมพวเตอร#ท;ม;ล)กษณะคลUายก)บภาษาจาวาท;พ)ฒนาโดยบรษ)ท Microsoft โดยม; จJดประสงค#เพอใหUน)กพ)ฒนาโปรแกรมสามารถพ)ฒนาโปรแกรมเชงอ5อบเจกต#ท;จะร)นบนระบบปฎบ)ตการ Windows ไดUงLายขxน Y ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 5
  • 17. 1.3 ตวแปลภาษา ภาษาคอมพวเตอร#ระด)บสVงจะตUองการต)วแปลภาษา (Language Translator) เพอแปลโปรแกรมท;เข;ยนขxน Y หรอท;เร;ยกวLาซอร#ดโคUด (Source Code) ของภาษาคอมพวเตอร#แตLละภาษาใหUเปyนภาษาแอสเซมบล;หรอภาษาเครองท; เครองคอมพวเตอร#สามารถเขUาใจไดU ต)วแปลภาษาแบLงออกเปyนสองแบบคอ 1. คอมไพเลอร# (Compiler) ต)วแปลภาษาประเภทน;YจะแปลชJดคZาส)งในซอร#ดโคUดท)YงหมดใหUเปyนโปรแกรม executable code ด)งแสดงในรVปท; 1.2 ต)วอยLางเชLน แปลซอร#ดโคUดภาษาซ;จากโปรแกรม Hello.c ใหU เปyนโปรแกรม executable code ท;ชอ Hello.exe โดยโปรแกรม executable code ท;ไดUจากการแปล ภาษาคอมพวเตอร#ระด)บสVงจะสามารถทZางานไดUอยLางรวดเร5ว ท)Yงน;YเนองจากโคUดอยVLในรVปของเลขฐานสอง ท;สามารถตดตLอก)บเครองคอมพวเตอร#ไดUโดยตรง ต)วอยLางของภาษา คอมพวเตอร#ท;ใชUคอมไพเลอร# คอ ภาษาซ; C++ ฟอร#แทรน และปาสคาล เปyนตUน คอมไพเลอร#จะสรUางโปรแกรม executable code ท;ขxYนอยVLก)บแพลตฟอร#ม (ฮาร#ดแวร#และระบบ ปฏบ)ตการ) ด)งน)นผVUใชUจะไมLสามารถนZาโปรแกรม executable code ท;ไดUจากการแปลของคอมไพเลอร# Y บนแพลตฟอร#มหนxงไปใชUบนแพลตฟอร#มอนๆ ไดU ในกรณ;ท;น)กพ)ฒนาโปรแกรมตUองการนZาโปรแกรมท; พ)ฒนาขxนไปใชUบนแพลตฟอร#มอนๆ น)กพ)ฒนาโปรแกรมจะตUองทZาการแปลซอร#ดโคUด ของโปรแกรม Y ใหมL โดยจะตUองใชUคอมไพเลอร#ท;สรUางโปรแกรม executable code สZาหร)บแพลตฟอร#มท;ตUองการใชU งานน)นๆ Y รปท 1.2 ขนตอนการทางานของคอมไพเลอร 6 ความรVUเบYองตUนภาษาจาวา ผศ. ธนศา เครอไวศยวรรณ
  • 18. 2. อนเตอร#พร;ตเตอร# (Interpreter) ต)วแปลภาษาประเภทน;จะแปลชJดคZาส)งของภาษาคอมพวเตอร#ระด)บสVง Y ท;ละคZาส)งใหUเปyนโปรแกรม executable code แลUวจะส)งใหUเครองคอมพวเตอร#ทZางานท)นท;ด)งแสดงใน รVปท; 1.3 โปรแกรมภาษาคอมพวเตอร#ท;ใชUอนเตอร#พร;ตเตอร# จะทZางานไดUชากวLาโปรแกรมภาษา U คอมพวเตอร#ท;ใชUคอมไพเลอร# แตLขUอด;ของโปรแกรมภาษาคอมพวเตอร#ทใชUอนเตอร#พร;ตเตอร#คอจะ ; สามารถใชUงานขUามแพลตฟอร#มไดU ท)Yงน;Yเนองจากข)YนตอนการแปลภาษากระทZาอยVLในชLวงการร)น โปรแกรม นอกจากน;โปรแกรมอนเตอร#พร;ตเตอร#จะพ)ฒนาไดUงLายกวLาเนองจากม;ขนาดเล5ก ต)วอยLางของ Y ภาษาคอมพวเตอร#ท;ใชUอนเตอร#พร;ตเตอร#คอ ภาษาเบสก โปรล5อก (Prolog) และ Smalltalk เปyนตUน รปท 1.3 ขนตอนการทางานของอนเตอรพรตเตอร 1.4 หลกการของโปรแกรมเช,งอ-อบเจกต. การเข;ยนโปรแกรมโดยใชUภาษาคอมพวเตอร#ระด)บสVงในปwจจJบนจะม;แนววธ;การคดอยVLสองรVปแบบท;สZาค)ญคอ ) แนวคดเชงกระบวนการ และแนวคดเชงอ5อบเจกต# ด)งท;กลLาวไวUในห)วขUอท; 1.2 การเข;ยนโปรแกรมโดยใชUภาษาเชง กระบวนการ จะเรมตUนจากการวเคราะห#ปญหาโดยพจารณาจากกระบวนการและลZาด)บการทZางาน และจะพยายามแบLง w โปรแกรมออกเปyนสLวนๆ ตามฟwงก#ช)นของการทZางานอาทเชLน การพ)ฒนาโปรแกรมระบบทะเบ;ยนน)กเร;ยนโดยใชU โปรแกรมเชงกระบวนการอาจจะพจารณาแบLงโปรแกรมตามลZาด)บการทZางาน โดยอาจม;ฟwงก#ชนในการทZางานสZาหร)บ ) การลงทะเบ;ยนรายวชา การชZาระเงน หรอการเพมหรอถอนรายวชา เปyนตUน ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 7
  • 19. ฟwงก#ชนแตLละสLวนของโปรแกรมเชงกระบวนการ จะม;ต)วแปรท;จะสLงผLานขUอมVลระหวLางก)น การออกแบบ ) โปรแกรมเชงกระบวนการท;ด;จะตUองพยายามแบLงฟwงก#ชนใหUเปyนอสระตLอก)นใหUมากท;สJด และตUองพยายามท;จะเข;ยนข)น ) Y ตอนหรอลZาด)บการทZางานใหUสมบVรณ#ท;สJดต)YงแตLขนตอนการออกแบบ จxงทZาใหUการปร)บปรJงหรอแกUไขโปรแกรมท; )Y พ)ฒนาจากภาษาเชงกระบวนการทZาไดUยากเมอเท;ยบก)บโปรแกรมท;พ)ฒนาจากภาษาเชงอ5อบเจกต# ท)Yงน;เY นองจาก กระบวนการการพ)ฒนาโปรแกรมน)นไมLสามารถท;จะออกแบบโปรแกรมใหUสมบVรณ#ต)YงแตLตUนโดยไมLม;การนZากล)บมา Y แกUไขปร)บปรJงอ;กไดU การพ)ฒนาโปรแกรมเชงอ5อบเจกต#จะม;แนวคดในการแกUปwญหา โดยมองปwญหาวLาประกอบไปดUวยอ5อบเจกต# ตLางๆ ซxงแนวคดน;YจะเขUาใกลUเค;ยงก)บธรรมชาตของมนJษย#มากท;สJด เนองจากมนJษย#มองสงตLางๆ รอบต)วเปyนอ5อบเจกต# ท)Yงท;เปyนรVปธรรม (ว)ตถJ) เชLน ปากกา น)กศxกษา หรอใบลงทะเบ;ยน เปyนตUน และท;เปyนนามธรรมเชLน คะแนน หรอราย ชอวชา เปyนตUน การเข;ยนโปรแกรมเชงอ5อบเจกต#จะเปyนขบวนการการวเคราะห#ปญหา โดยการจZาลองคJณล)กษณะและ w พฤตกรรมของอ5อบเจกต#ในระบบจรง ใหUอยVLในรVปของโปรแกรมคอมพวเตอร# ต)วอยLางเชLน การพ)ฒนาโปรแกรมระบบ ทะเบ;ยนน)กศxกษาอาจแบLงโปรแกรมใหUประกอบดUวยอ5อบเจกต#ตLางๆ อาทเชLน น)กศxกษา ใบลงทะเบ;ยน และรายวชา เปyนตUน อ5อบเจกต#ชนดน)กศxกษาอาจม;คJณล)กษณะตLางๆ เชLน ชอ รห)ส และเกรดเฉล;ย เปyนตUน และอาจม;พฤตกรรมท; น)กศxกษาสามารถกระทZาไดUเชLน ลงทะเบ;ยน และเพมหรอถอนวชา เปyนตUน การพ)ฒนาโปรแกรมโดยใชUภาษาคอมพวเตอร#เชงอ5อบเจกต# จะทZาใหUขบวนการพ)ฒนาโปรแกรมทZาไดUรวดเร5ว ขxYนและสามารถปร)บปรJงแกUไขโปรแกรมไดUงLาย ซxงเหมาะก)บการพ)ฒนาโปรแกรมขนาดใหญLท;จะตUองม;การปร)บปรJง แกUไขโปรแกรมอยVLตลอด นอกจากน;โปรแกรมเชงอ5อบเจกต#ย)งม;คJณล)กษณะเดLนอนๆ อ;กด)งน;Y Y • การหLอหJUม (Encapsulation) เปyนคJณล)กษณะท;ทZาใหUอ5อบเจกต#แตLละต)วเปyนอสระตLอก)น ซxงทZาใหUสามารถ แบLงการพ)ฒนาโปรแกรมออกเปyนสLวนๆ ไดUงLาย • การสบทอด (Inheritance) เปyนคJณล)กษณะท;ทZาใหUสามารถนZาโปรแกรมท;พ)ฒนาแลUวกล)บมาใชUใหมLไดU งLายกวLาการเข;ยนโปรแกรมเชงกระบวนการ • การม;ไดUหลายรVปแบบ (Polymorphism) เปyนคJณล)กษณะท;ทZาใหUน)กพ)ฒนาโปรแกรมสามารถเพมเตมสLวน ตLางๆ ของโปรแกรมไดUงLาย 8 ความรVUเบYองตUนภาษาจาวา ผศ. ธนศา เครอไวศยวรรณ
  • 20. 1.5 ประวต,ภาษาจาวา ภาษาจาวาเปyนภาษาคอมพวเตอร#ท;พ)ฒนาขxYน โดยท;มวจ)ยของบรษ)ทซ)นไมโครซสเต5มส# ซxงเรมตUนเมอป} ค .ศ. 1991 โดยทางบรษ)ทซ)นไมโครซสเต5มส#ไดUสน)บสนJนใหUม;การพ)ฒนาโครงการท;ชอ Green Project ท;ม;จJดมJLงหมายท; จะออกแบบภาษาคอมพวเตอร#ขนาดเล5กเพอใชUก)บอJปกรณ#อเล5กทรอนกส#ตLางๆ เชLน สวทซ#บล5อกของเคเบYลท;ว; ซxง อJปกรณ#เหลLาน;Yจะม;ขUอจZาก)ดในดUานหนLวยความจZาและหนLวยประมวลผลกลางท;จะม;ความแตกตLางก)น ด)งน)นภาษาY คอมพวเตอร#ท;พ)ฒนาขxนจะตUองไมLขนอยVLก)บแพลตฟอร#ม (Platform Independent) ผลงานของท;มวจ)ยน;YทZาใหUไดUภาษา Y xY คอมพวเตอร#ใหมLท;ชอวLา “Oak” ซxงม;โครงสรUางและคZาส)งคลUายภาษา C++ ท)Yงน;เY นองจากท;มวจ)ยของบรษ)ทซ)นไมโคร ซสเต5มส#ม;ความคJนเคยก)บระบบปฏบ)ตการยVนกส#ซxงม)กจะใชUภาษา C++ ในการพ)ฒนาโปรแกรม ภาษา “Oak” ตLอมาไดU U เปล;ยนมาเปyนชอ “จาวา” ท)Yงน;Yเนองจากท;มวจ)ยไดUทราบภายหล)งวLา ” Oak” เปyนชอภาษาคอมพวเตอร#ท;ม;อยVLแลUว ภาษาจาวาเปyนภาษาคอมพวเตอร#เชงอ5อบเจกต# (Object Oriented Programming หรอเร;ยกยLอวLา OOP) โดย ม;จJดเดLนตรงท;สามารถทZางานไดUก)บระบบคอมพวเตอร#หลายแพลตฟอร#ม ท;มวจ)ยของโครงการ Green Project ไดU สรUางเครองตUนแบบท;เร;ยกวLา “*7” ซxงเปyนร;โมทคอนโทรล เพอสาธตเทคโนโลย;ภาษาจาวาท;คUนคดขxนมาน;Yเมอป} ค .ศ. Y 1992 โดยทางบรษ)ทซ)นไมโครซสเต5มส#ไดUพยายามหาผVซYอเทคโนโลย;ด)งกลLาว แตLก5ไมLประสบความสZาเร5จมากน)ก U เกร%ดความร! James Gosling เปนผ1ท%คดคนภาษาจาวาจนไดร)บการยกยองวาเปนบดาของ ภาษาจาวา โดยเขาเกดท%ประเทศ Canada จบการศกษาระด)บปรญญาเอกท% มหาวทยาล)ย Carnegie Mellon และเขาท(างานท%บรษ)ท Sun Microsystems ต)งแตป6 ค.ศ. 1984 และในป6 ค.ศ. 2007 เขาไดร)บการยกยองจากประเทศ Canada ใหเปน Officer ของ Order of Canada ซงเปนเก%ยรตยศท%มอบใหก)บพลเมองของประเทศ โลโกของภาษาจาวาจะเปนร1ปแกวกาแฟท%ม%คว)นรอนระอขนมา โดยทางบรษ)ท Sun Microsystems ไดเปล%ยนร1ปโลโกเดมมาเปนร1ปลาสดด)งท%แสดงใหเห9น Duke เปน mascot ของภาษาจาวา ซงจะม%การใชส)ญล)กษณในทาทางท%แตก ตางก)น และในงานประชม Java One Conference ท%จ)ดเปนประจ(าทกป6 ก9จะ ม%การมอบรางว)ลใหแกซอฟตแวรหรอน)กพ)ฒนาท%ใชเทคโนโลย%จาวาและม%นว)ต กรรมด%เดนท%เร%ยกวา Duke's Choice Awards ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 9
  • 21. ในชLวงด)งกลLาว ระบบอนเทอร#เน5ตไดUเรมม;การใชUงานอยLางแพรLหลายมากขxYน โดย เฉพาะการใชUงานของ โปรแกรมเว5บเบราวเซอร# (Web Browser) เพอท;จะเร;ยกดVเอกสารในรVปแบบของไฟล# HTML เนองจากระบบ อนเทอร#เน5ตจะประกอบไปดUวยเครองคอมพวเตอร#ท;ม;แพลตฟอร#มแตกตLางก)น ทางบรษ)ทซ)นไมโครซสเต5มส#จxงไดUเห5น ความจZาเปyนท;จะตUองม;ภาษาคอมพวเตอร#ท;สามารถสรUางโปรแกรมท;ทZางานบนแพลตฟอร#มใดๆ ก5ไดU จxงไดUนZาภาษา จาวามาพ)ฒนาอ;กคร)Yงหนxง โดยไดUพ)ฒนาโปรแกรมเว5บเบราว#เซอร#ท;ชอ Hot Java ท;สามารถร)นโปรแกรมจาวา แอปเพล5ต (Java Applet) ไดUเพอพสVจน#การทZางานของเทคโนโลย;จาวา (Proof of Technology) และไดUนZาผลงาน ด)งกลLาวมาแสดงในงาน Sun World’95 ในเดอนพฤษภาคม ป} ค.ศ. 1995 จากน)นภาษาจาวาเรมเปyนท;นยมแพรLหลายขxนในชLวงปลายป} ค.ศ. 1995 เมอบรษ)ท Netscape ไดUพ)ฒนาโปร Y Y แกรมเว5บเบราว#เซอร# Netscape 2.0 และไดUรวมเอาการทZางานของ โปรแกรมจาวาแอปเพล5ต (Java Applet) เขUามา เปyนคJณล)กษณะเดLนของโปรแกรม ซxงบรษ)ทอนๆ อาทเชLน IBM, Symantec, Inspire หรอ Microsoft ตLางก5ประกาศ สน)บสนJนการใชUงานของโปรแกรมภาษาจาวาในเวลาตLอมา ในชLวงเด;ยวก)นทางบรษ)ทซ)นไมโครซสเต5มส#ไดUนZาชJด พ)ฒนาโปรแกรมภาษาจาวาเวอร#ช)นแรก (Java Development Kit 1.0 หรอท;เร;ยกยLอวLา JDK 1.0) ออกมาแจกจLาย ตLอมาในป} ค.ศ. 1998 ทางบรษ)ทซ)นไมโครซสเต5มส#ไดUเผยแพรLโปรแกรมภาษาจาวา JDK 1.2 (แตLตLอมาไดUเปล;ยนชอ เปyน Java 2) และไดUแยกแพลตฟอร#มในการพ)ฒนาโปรแกรมภาษาจาวาเปyนหลายแพลตฟอร#มคอ J2EE สZาหร)บการ พ)ฒนาโปรแกรมประยJกต#บนเครองแมLขLาย (Server) J2ME สZาหร)บการพ)ฒนาโปรแกรมบนเครองโทรศ)พท#มอถอ และ J2SE สZาหร)บโปรแกรมมาตรฐานจาวาท;พ)ฒนาบนเครองคอมพวเตอร#พYนฐาน และป} ค .ศ. 2006 ทางซ)นไมโครซสเต5ม ส#ไดUเปล;ยนชอ J2 ท)Yงสามเปyน JavaEE, JavaME และ JavaSE ตามลZาด)บ ในเดอนมกราคม ป} ค.ศ. 2010 บรษ)ทออราเคล (Oracle Corporation) ซxงเปyนซอฟต#แวร#ท;พ)ฒนาโปรแกรม ฐานขUอมVล และซอฟต#แวร#ประยJกต#อนๆ ไดUเขUามาซYอกจการบรษ)ทซ)นไมโครซสเต5มส# ทZาใหUผVUพ)ฒนาเทคโนโลย;จาวาราย สZาค)ญไดUเปล;ยนเปyนบรษ)ทออราเคล ซxงไดUใชUเทคโนโลย;จาวาในซอฟต#แวร#ตางๆ จZานวนมาก ท)Yงน;Y บรษ)ทออราเคลก5จะ L ย)งคงไวUในหล)กการของเทคโนโลย;จาวาท;จะใหUมาตรฐานเปmด โปรแกรมเปmดรห)ส (Open Source) และสามารถทZางาน บนแพลตฟอร#มท;หลากหลายไดUเชLนเดม 1.6 เทคโนโลยจาวา เทคโนโลย;จาวาประกอบไปดUวยองค#ประกอบหล)กๆ สามสLวนด)งแสดงในรVปท; 1.4 คอ 1. Java Virtual Machine (JVM) เปyนเทคโนโลย;จาวาท;ทZาหนUาท;เปyนอนเตอร#พร;ตเตอร# ท;จะแปลโปรแกรม จาวาไบท#โคUด (Java Bytecode) ใหUเปyนภาษาท;เครองเขUาใจไดU 10 ความรVUเบYองตUนภาษาจาวา ผศ. ธนศา เครอไวศยวรรณ
  • 22. 2. Java Runtime Environment (JRE) เปyนเทคโนโลย;จาวาท;ใชUในการร)นโปรแกรมภาษาจาวาอาทเชLน โปรแกรมจาวาประยJกต# (Java Application) และโปรแกรมจาวาแอปเพล5ต (Java Applet) JRE จะ ประกอบดUวย JVM และ Java Application Programming Interface (Java API) ท;จะรวบรวมคลาส และอนเตอร#เฟสตLางๆ ท;จZาเปyนตLอการใชUงานของโปรแกรมภาษาจาวา 3. Java Software Developer Kit (JDK) เปyนชJดพ)ฒนาโปรแกรมภาษาจาวาท;จะประกอบไปดUวย JVM ต)ว แปลภาษาจาวา (Java Compiler) เครองมอ (tool) อนๆ ในการพ)ฒนาโปรแกรม และ API ท)Yงหมดใน ภาษาจาวา ซxง API จะเปyนมาตรฐานคZาส)งตLางๆ ของภาษาจาวา รปท 1.4 องคประกอบของเทคโนโลยจาวา 1.6.1 Java Virtual Machine ภาษาจาวาออกแบบมาเพอใหUสามารถประมวลผลไดUก)บทJกแพลตฟอร#ม โดยไดUรวมหล)กการของต)วแปลภาษา ท)Yงคอมไพเลอร#และอนเตอร#พร;ตเตอร#ไวU โดยคอมไพเลอร#ของภาษาจาวาจะทZาหนUาท;แปลซอร#ดโคUดของโปรแกรม (ชอ ไฟล#.java) ใหUเปyนโปรแกรมไบท#โคUด (ชอไฟล#.class) โปรแกรมไบท#โคUดจะแตกตLางจากโปรแกรมภาษาเครองท; สามารถประมวลผลบนระบบปฏบ)ตการไดUโดยตรง แตLโปรแกรมไบท#โคUดจะประมวลผลไดUโดยผLานอนเตอร#พร;ตเตอร# ซxงจะแปลโปรแกรมไบท#โคUดแลUวส)งงานไปย)งเครองคอมพวเตอร# อนเตอร#พร;ตเตอร#แบบน;ม;ชอเร;ยกวLา JVM (Java Y Virtual Machine หรอเครองจ)กรสมมJตจาวา) ซxงข)YนตอนการทZางานของโปรแกรมภาษาจาวาสามารถแสดงไดUด)งรVปท; 1.5 JVM จะทZาหนUาท;แปลโปรแกรมไบท#โคUดใหUเปyนภาษาเครองท;ขxYนอยVLก)บแพลตฟอร#มโปรแกรมไบท#โคUดท; ประมวลผลโดยใชU JVM จะทZางานไดUเร5วกวLาโปรแกรมภาษาคอมพวเตอร#อนๆ ท;ใชUอนเตอร#พร;ตเตอร#ปกตในการ ประมวลผล ท)Yงน;เY นองจาก JVM จะม;ชJดคZาส)งท;ใกลUเค;ยงก)บชJดคZาส)งภาษาเครองของหนLวยประมวลผลกลางท;ใชUงาน ด)งน)น JVM จxงสามารถแปลคZาส)งของโปรแกรมไบท#โคUดไปเปyนคZาส)งภาษาเครองของหนLวยประมวลผลกลางท;ใชUงาน Y ไดUงLายกวLา นอกจากน;โปรแกรมไบท#โคUดจะไมLขxYนอยVLก)บแพลตฟอร#ม ด)งน)นเราสามารถท;จะนZาโปรแกรมไบท#โคUดท; Y Y ผศ. ธนศา เครอไวศยวรรณ ความรVUเบYองตUนภาษาจาวา 11