home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / Documents / FAQ Java / javafaq.txt < prev   
Encoding:
Text File  |  2001-02-03  |  195.8 KB  |  4,608 lines

  1. Frequently Asked Questions (with answers) for Java programmers
  2.  
  3.            _____________________________________________________
  4.   ________|                                                     |________
  5.   \       |   Java Programmers FAQ         http://www.afu.com   |       /
  6.    \      |   Last modified Feb 20, 1999   Peter van der Linden |      /
  7.    /      |_____________________________________________________|      \
  8.   /___________)                                              (__________\
  9.  
  10.   ╧σpσΓσΣσφε φα p≤±±ΩΦΘ  τ√Ω:
  11.  
  12. Andrew Kuksov, 2:5030/731.71
  13. └δσΩ±αφΣp, kab@vsi.vrn.ru
  14. Andrew Ter╕shechkin, 2:5004/21.28
  15. └δσΩ±σΘ ╧εΣεδ ΩΦφ, aleksey@astrologicalrobot.com
  16. George Djioev, 345:817/2.18@RemoteAccessNetwork
  17. bii714@cclib.nsu.ru
  18. dm@aspec.ru
  19. pm27sdw@beta.math.spbu.ru
  20. lavris@lutsk.ukrpack.net
  21. Leonid Volkanin, 2:5080/80.42
  22. Dennis Adamchuck, 2:5020/1469
  23. Wowa Bushin, 777:5030/42.11
  24. ┬εpεφΩεΓ └δσΩ±σΘ, otk.unets.ru!vaa@otk.unets.ru
  25. Igor Philippov, 2:450/129.13
  26. Dmitry Melamud, 2:467/28.40
  27.  
  28. > ╟Σσ±ⁿ ∞επ≤≥ ß√≥ⁿ ┬α°Φ Φ∞σφα ;)
  29.  
  30. JAVA FAQ ∩pσΣφατφα≈σφ Σδ  δ■ΣσΘ, ≤µσ Φ∞σ■∙Φ⌡ φσΩε≥εp√Θ ε∩√≥
  31. ∩pεπpα∞∞ΦpεΓαφΦ , ∩≤±≥ⁿ Σαµσ φα  τ√Ωα⌡, ε≥δΦ≈φ√⌡ ε≥ Java.
  32.  
  33. ╟αΘΣΦ≥σ φα FAQ home page φα http://www.afu.com Σδ  ∩εδ≤≈σφΦ  ∩pε≈σΘ
  34. Φφ⌠εp∞α÷ΦΦ ∩ε Java, α ≥αΩµσ ßεδσσ φεΓεΘ Γσp±ΦΦ ²≥επε FAQ. ┬±σ Γα°Φ
  35. ∩pσΣδεµσφΦ , Ωα±α■∙Φσ±ⁿ ²≥επε FAQ, ε≥±√δαΘ≥σ ∩ε αΣpσ±≤ afu.com.
  36.  
  37.   ------------------------------------------------------------------------
  38.  
  39. ─αφφ√Θ Java FAQ ±ε±≥εΦ≥ Φτ ±δσΣ≤■∙Φ⌡ ≈α±≥σΘ:
  40.  
  41.    * 1. ╚φ⌠εp∞α÷Φ  ε ΩφΦπα⌡ ∩ε Java
  42.    * 2. ┴√±≥p√Θ ±≥αp≥
  43.    * 2.5 ╧σpσφε±Φ∞ε±≥ⁿ
  44.    * 3. ╬ß∙α  Φφ⌠εp∞α÷Φ 
  45.    * 4. ╩ε∞∩Φδ ≥εp√ Φ ≤≥ΦδΦ≥√
  46.    * 5. ╤εεß∙σφΦ  Ωε∞∩Φδ ≥εpα
  47.    * 6. ╥p≤Σφε±≥Φ, ΓετφΦΩα■∙Φσ ∩pΦ ∩pεπpα∞∞ΦpεΓαφΦΦ φα  τ√Ωσ Java
  48.    * 7. I/O (┬ΓεΣ/Γ√ΓεΣ)
  49.    * 8. ╤δεµφε±≥Φ ∩pΦ pαßε≥σ ±ε ±≥αφΣαp≥φ√∞Φ ßΦßδΦε≥σΩα∞Φ
  50.    * 9. ─α≥α Φ Γpσ∞ 
  51.    * 10. AWT
  52.    * 11. Swing
  53.    * 12. ┴pα≤τσp√
  54.    * 13. └∩∩δσ≥√
  55.    * 14. ╠≤δⁿ≥Φ∞σΣΦα
  56.    * 15. ╨αßε≥α ± ±σ≥ ∞Φ
  57.    * 16. ┴στε∩α±φε±≥ⁿ
  58.  
  59. > Hα ²≥ε∞ ≥ε≥ FAQ, Ωε≥εp√Θ ≤ ∞σφ , ±≥pαφφ√∞ εßpατε∞ εßp√Γασ≥± . ╧ε²≥ε∞≤
  60. > φ≤µφ√ 16,17,18,19,20,21 ≈α±≥Φ.
  61.  
  62.    * 17. For C, C++ Afficionados
  63.    * 18. Java Idioms
  64.    * 19. Java Gotcha's
  65.    * 20. Further Resources
  66.    * 21. Acknowledgements
  67.  
  68.                        ------------------------------
  69.  
  70. 1. ╚φ⌠εp∞α÷Φ  ε ΩφΦπα⌡ ∩ε Java
  71.  
  72.   1. (╫α±≥ⁿ 1) ╩αΩ≤■ ΩφΦπ≤ ∩ε Java ∞φσ Γ√ßpα≥ⁿ?
  73.  
  74.      [*] ╬Σφετφα≈φεπε ε≥Γσ≥α φα Γε∩pε± "ΩαΩ≤■ ΩφΦπ≤ ∩ε Java ∞φσ Γ√ßpα≥ⁿ?"
  75.      φσ ±≤∙σ±≥Γ≤σ≥.
  76.      ╠φεπεσ ταΓΦ±Φ≥ ε≥ ≥επε, ±ΩεδⁿΩε ┬√ ≤µσ τφασ≥σ, α ≥αΩµσ ε≥
  77.      ≥επε, ΩαΩ Γα∞ ßεδⁿ°σ φpαΓΦ≥ⁿ±  εß≤≈α≥ⁿ± .
  78.      ┼±δΦ ≤ ┬α± ≤µσ σ±≥ⁿ ε∩√≥ ∩pεπpα∞∞ΦpεΓαφΦ  φα ΩαΩε∞-δΦßε  τ√Ωσ,
  79.      ε≥δΦ≈φε∞ ε≥ Java, Φ ┬√ ⌡ε≥Φ≥σ Φτ≤≈Φ≥ⁿ ╥εδⁿΩε ±α∞ ∩pΦφ÷Φ∩ Java,
  80.      εßpα≥Φ≥σ ±Γεσ ΓφΦ∞αφΦσ φα ΩφΦπ≤ αΓ≥εpα ²≥επε FAQ Just Java 1.2
  81.  
  82.      ┬±  Φφ⌠εp∞α÷Φ  ≤Σεßφε pα±∩εδεµσφα Γ εΣφε∞ ≥ε∞σ (ε±φεΓ√  τ√Ωα, Swing,
  83.      pαßε≥α ± ±σ≥ ∞Φ, ΓΓεΣ/Γ√ΓεΣ Φφ⌠εp∞α÷ΦΦ, Σε±≥≤∩ Ω ßατα∞ Σαφφ√⌡ Φ ≥.∩.).
  84.      ╩ ΩφΦπσ ∩pΦδαπασ≥±  CD ± επpε∞φ√∞ ΩεδΦ≈σ±≥Γε∞ Java α∩∩δσ≥εΓ, Φπp,
  85.      ∩pΦδεµσφΦΘ, ∩pΦ≈σ∞ Γ±σ ²≥ε ± Φ±⌡εΣφ√∞√∞ ≥σΩ±≥ε∞. ╩pε∞σ ²≥επε, φα CD
  86.      σ±≥ⁿ σ∙σ ∞φεπε Γ±σπε ∩εδστφεπε Φ Φφ≥σpσ±φεπε (Ωε∞∩Φδ ≥εp√ Java Σδ 
  87.      Windows, Mac, Linux, Solaris (sparc Φ x86). ─ε∩εδφΦ≥σδⁿφα  Φφ⌠εp∞α÷Φ 
  88.  
  89.       ┼±δΦ ┬α∞ φσΣε±≥α≥ε≈φε Φφ⌠εp∞α÷ΦΦ ∩ε ≥σ⌡φεδεπΦΦ Java, thin
  90.       clients, CORBA, TCP/IP, Java beans, Φ ≥.∩., ∩ε±∞ε≥pΦ≥σ
  91.       ΩφΦπ≤ Not Just Java αΓ≥εpα FAQ.
  92.                                                                    [Image]
  93.       ▌≥α ΩφΦπα φσ φα≤≈Φ≥ ┬α± ∩pεπpα∞∞ΦpεΓαφΦ■ φα Java; εφα
  94.       ∩ε∞εµσ≥ ┬α∞ ≤πδ≤ßΦ≥ⁿ τφαφΦ  Γ ²≥εΘ εßδα±≥Φ. ─ε∩εδφΦ≥σδⁿφα 
  95.       Φφ⌠εp∞α÷Φ 
  96.  
  97.      ╥Φ∩εΓ√σ πδαΓ√ (Φτ ±≥αp√⌡ ΦτΣαφΦΘ) φα⌡εΣ ≥±  φα web-±≥pαφΦ÷σ Sun
  98.      Microsystems: http://www.sun.com/.
  99.      ╧pΦ Γ√ßεpσ ΩφΦπΦ ∩ε Java εßpα≥Φ≥σ ΓφΦ∞αφΦσ φα ±δσΣ≤■∙σσ:
  100.         o ╧pσµΣσ Γ±σπε, φ≤µφε ≤Σε±≥εΓσpΦ≥ⁿ± , ≈≥ε ²≥ε - ΩφΦπα ∩ε Java. ┼±δΦ
  101.           εφα ∩ε±≥αΓδ σ≥±  ± CD, ±δσΣ≤σ≥ ∩pεΓσpΦ≥ⁿ, σ±≥ⁿ δΦ φα φσ∞
  102.           Ωε∞∩Φδ ≥εp Java. J++  Γδ σ≥±  Σp≤πΦ∞  τ√Ωε∞ Γ Φτ-τα φσΩε≥εp√⌡ σπε
  103.           ε≥δΦ≈ΦΘ ε≥ εpΦπΦφαδⁿφεπε  τ√Ωα Java. ╩pε∞σ ≥επε, Γ J++
  104.           ε≥±≤≥±≥Γ≤■≥ φσΩε≥p√σ ∩ε±δσΣφΦσ ßΦßδΦε≥σΩΦ Java (Swing,
  105.           Collections, JFC, RMI).
  106.           ┼±δΦ ┬√ Φφ≥σpσ±≤σ≥σ±ⁿ Java, ε±≥αΓⁿ≥σ ΩφΦπ≤ ∩ε J++ ∩√δΦ≥ⁿ±  φα
  107.           ∩εδΩσ.
  108.         o ╤εε≥Γσ≥±Γ≤σ≥ δΦ Φφ⌠εp∞α÷Φ , ∩pσΣ±≥αΓδσφφα  Γ ΩφΦπσ, ≥σΩ≤∙σ∞≤
  109.           ≤pεΓφ■ pατΓΦ≥Φ  Java (Java 1.2 [aka Java 2])? ╧ε±∞ε≥pΦ≥σ,
  110.           ∩pΦ±≤≥±Γ≤σ≥ δΦ "JApplet" Γ ∩pσΣ∞σ≥φε∞ ≤Ωατα≥σδσ. ┼±δΦ φσ≥, ≥ε,
  111.           Γετ∞εµφε, ┬α∞ φ≤µφα ßεδσσ ±εΓpσ∞σφφα  ΩφΦπα.
  112.         o ╧pεΓσpⁿ≥σ, Φ∞σσ≥ δΦ ΩφΦπα Σε±≥α≥ε≈φεσ ΩεδΦ≈σ±≥Γε ±⌡σ∞, ΣΦαπpα∞∞ Φ
  113.           pΦ±≤φΩεΓ. ╬≈σφⁿ ±δεµφε εß· ±φΦ≥ⁿ (∩pαΩ≥Φ≈σ±ΩΦ φσΓετ∞εµφε)
  114.           ∩pεπpα∞∞ΦpεΓαφΦσ ±Φ±≥σ∞ εΩεφ ßστ pΦ±≤φΩεΓ Φ ΣΦαπpα∞∞. ╥αΩµσ,
  115.           pΦ±≤φΩΦ ε≈σφⁿ ≈α±≥ε ∩ε∞επα■≥ ∩εφ ≥ⁿ ±∞√±δ ≥σΩ±≥α.
  116.         o ╧pε≈Φ≥αΘ≥σ αφφε≥α÷Φ■ Ω ΩφΦπσ. ┬ φσΘ πεΓεpΦ≥ⁿ± , ≈≥ε εφα Σδ 
  117.           ∩pε⌠σ±±ΦεφαδεΓ Γ ∩pεπpα∞∞ΦpεΓαφΦΦΦ φα Java? ╩φΦπα ∞εµσ≥ Γ√±≥≤∩α≥ⁿ
  118.           Γ pεδΦ "╩pσ∩Ωεπε εpσ°Ωα Java" Φ "Java-αδⁿ∞αφα⌡α". ┬√∞ ²≥ε φ≤µφε,
  119.           ΦδΦ ┬√ ∩pσΣ∩ε≈Φ≥ασ≥σ ΩφΦπ≤, Γ Ωε≥εpεΘ εß≤≈σφΦσ ε±φεΓαφε φα
  120.           ∩pΦ∞σpα⌡ Φ ∩ε ±φσφΦ ⌡?
  121.         o Hσ ∩ε∞σ°ασ≥ ετφαΩε∞Φ≥ⁿ±  ± ∩pσΩpα±φ√∞Φ ±εΓσ≥α∞Φ Peter'α Norvig'α
  122.           ∩ε Φτ≤≈σφΦ■  τ√ΩεΓ ∩pεπpα∞∞ΦpεΓαφΦ .
  123.         o ╬÷σφΦ≥σ ±ΓεΘ ±εß±≥Γσφφ√Θ ≤pεΓσφⁿ τφαφΦΘ:  Γδ σ≥σ±ⁿ δΦ ┬√ ε∩√≥φ√∞
  124.           ∩pεπpα∞∞Φ±≥ε∞ φα ΩαΩε∞-δΦßε Σp≤πε∞  τ√Ωσ ΦδΦ ┬√ Φτ≤≈ασ≥σ
  125.           ∩pεπpα∞∞ΦpεΓαφΦσ "± φ≤δ "? ╤εε≥Γσ≥±≥Γ≤σ≥ δΦ ΩφΦπα ┬α°σ∞≤ ≤pεΓφ■
  126.           τφαφΦΘ?
  127.         o ╧pε≈Φ≥αΘ≥σ ≈α±≥ⁿ ΩφΦπΦ. ┬√ ταΦφ≥σpσ±εΓαδΦ±ⁿ ≥σ∞, ≈≥ε ┬√
  128.           ∩pε≈Φ≥αδΦ? ┬α∞ φσ φα±Ω≤≈Φ≥ ²≥α ΩφΦπα ∩ε±δσ ≥επε, ΩαΩ ┬√
  129.           ∩pε≈Φ≥ασ≥σφσ±ΩεδⁿΩε ±≥pαφΦ÷? ╠εµσ≥, ΩφΦπα ±δΦ°Ωε∞ ΓσδΦΩα Σδ 
  130.           φα≈αδα?
  131.         o ┼±δΦ Ω ΩφΦπσ ∩pΦδαπασ≥±  CD, ≥ε ΩαΩ ∞φεπε φα φσ∞ ∩pεπpα∞∞φεπε
  132.           εßσ±∩σ≈σφΦ ? ┬√ Σεδµφ√ ß√≥ⁿ ταΦφ≥σpσ±εΓαφ√ Γ ≥ε∞, ≈≥ε φα ²≥ε∞ CD
  133.           σ±≥ⁿ, ∩ε ΩpαΘφσΘ ∞σpσ, Ωε∞∩Φδ ≥εp Java, α ≥αΩµσ Γ±σ ∩pΦ∞σp√ Φτ
  134.           ²≥εΘ ΩφΦπΦ. ┴≤Σσ≥ δΦ Ωε∞∩Φδ ≥εp Java pαßε≥α≥ⁿ φα ┬α°σΘ ∩δα≥⌠εp∞σ
  135.           (Mac, Linux Φ ≥.∩.)?
  136.  
  137.      ╠φεπΦσ δ■ΣΦ ∩εΩ≤∩α■≥ Σδ  φα≈αδα εΣφ≤ ΩφΦπ≤, τα≥σ∞ σ∙σ φσ±ΩεδⁿΩε,
  138.      ∩ε±ΩεδⁿΩ≤ µσδα■≥ ∩εδ≤≈Φ≥ⁿ Σε∩εδφΦ≥σδⁿφ≤■ Φφ⌠εp∞α÷Φ■. └Γ≥εp FAQ τα
  139.      ∩ε±δσΣφΦσ ≥pΦ πεΣα ∩pΦεßpσδ Φ ∩pε≈σδ εΩεδε 60 ΩφΦπ ∩ε Java.
  140.  
  141.   2. (╫α±≥ⁿ 1) ├Σσ   ∞επ≤ φαΘ≥Φ ±∩Φ±εΩ ΩφΦπ ∩ε Javaα ≥αΩµσ Φ⌡ Ωpα≥ΩΦσ
  142.      εßτεp√?
  143.  
  144.      [*] ┬ε≥ φσΩε≥εp√σ φσ∩δε⌡Φσ ±±√δΩΦ:
  145.      http://www.geocities.com/RainForest/Canopy/4774/Java/education.html
  146.      ≥αΩµσ
  147.      http://www.flathill.com/languages/java/
  148.      ≥αΩµσ
  149.      http://www.fastgraph.com/books/java.html
  150.      ≥αΩµσ
  151.      http://teamjava.com/links/tj-srv.cgi?MUF=0,tj-booklist.muf
  152.      ≥αΩµσ
  153.      http://www.javaworld.com/javaworld/books/jw-books-index.html
  154.      (ßεδσσ ∩εδφ√Θ ±∩Φ±εΩ ∩ε≥pσß≤σ≥ ±δΦ°Ωε∞ ∞φεπε Γpσ∞σφΦ Σδ  ταπp≤τΩΦ ;-))
  155.  
  156.                        ------------------------------
  157.  
  158. 2. ┴√±≥p√Θ ±≥αp≥
  159.  
  160.   1. (╫α±≥ⁿ 2) ╩αΩ ∩pε∙σ Γ±σπε φα≈α≥ⁿ ∩pεπpα∞∞ΦpεΓα≥ⁿ φα Java?
  161.  
  162.      [*] ╤δσΣ≤Θ≥σ ±επδα±φε ²≥Φ∞ pσΩε∞σφΣα÷Φ ∞.
  163.        1. ╧pε±∞ε≥pΦ≥σ "ΩφΦµφ≤■ ≈α±≥ⁿ" ²≥επε FAQ Σδ  ≥επε, ≈≥εß√ Γ√ßpα≥ⁿ
  164.           ±σßσ φαΦßεδσσ ∩εΣ⌡εΣ ∙≤■ ΩφΦπ≤. Hσ ±≤∙σ≥Γ≤σ≥ ΩαΩεΘ-≥ε εΣφεΘ
  165.           ±εΓσp°σφφεΘ ΩφΦπΦ ∩ε Java. ┬√ßΦpαΘ≥σ ΩφΦπ≤, ±≥Φδⁿ, ≥σ∞∩,
  166.           ∩εΣpεßφε±≥ⁿ Ωε≥εpεΘ ≤Σεßφ√ Σδ  ┬α±. Amazon ±εΣσpµΦ≥ ∞φεπε
  167.           Φφ⌠εp∞α÷ΦΦ Φ εßτεp√ ΩφΦπ ∩ε Java.
  168.  
  169.        2. ╤Ωα≈αΘ≥σ ßσ±∩δα≥φ√Θ Ωε∞∩Φδ ≥εp Java ± http://java.sun.com
  170.  
  171.        3. ╧pε≈Φ≥αΘ≥σ ßσ±∩δα≥φ√Θ Java tutorial ≥α∞ µσ (τα∩ε∞φΦ≥σ ²≥ε, ≥.Ω.,
  172.           Γετ∞εµφε, ┬√ σ∙σ τα⌡ε≥Φ≥σ Γσpφ≤≥ⁿ±  Ω φσ∞≤).
  173.  
  174.        4. ╚τßσπαΘ≥σ ∩pεΣ≤Ω≥α Microsoft J++, Γ Ωε≥εpε∞ Σαµσ ∩ε ±δεΓα∞
  175.           ∩pσΣ±≥αΓΦ≥σδσΘ microsoft pσαδΦτεΓαφα "πp τφα  Java". ▌≥ε≥ ∩pεΣ≤Ω≥
  176.           ß√δ pατpαßε≥αφ ßστ ±εε≥Γσ≥±≥ΓΦ  ±≥αφΣαp≥α∞ Java Φ ±εΣσpµΦ≥
  177.           ßεδⁿ°εσ ΩεδΦ≈σ±≥Γε ≤∞√°δσφφε ΓΩδ■≈σφφ√⌡ φσ±εΓ∞σ±≥Φ∞√⌡ Σδ 
  178.           pατδΦ≈φ√⌡ ∩δα≥⌠εp∞ ⌠≤φΩ÷ΦΘ, ΓΩδ■≈α  φεΓ√σ Ωδ■≈σΓ√σ ±δεΓα  τ√Ωα.
  179.  
  180.        5. ╧pε±∞ε≥pΦ≥σ ²≥ε≥ FAQ φα ∩pσΣ∞σ≥ Γε∩pε±α, Γ√τΓαΓ°σπε ≤ ┬α±
  181.           τα≥p≤ΣφσφΦσ. ╤Ωεpσσ Γ±σπε, ∞φεπΦσ δ■ΣΦ ≤µσ ∩pε⌡εΣΦδΦ ∩ε ²≥εΘ
  182.           Σεpεπσ Σε ┬α±. ┬ FAQ ±εΣσpµα≥ⁿ±  φσΩε≥εp√σ φαΩε∩δσφφ√σ Φ∞Φ
  183.           τφαφΦ , α ≥αΩ µσ ±±δ√ΩΦ φα Σp≤πΦσ Φ±≥ε≈φΦΩΦ Φφ⌠εp∞α÷ΦΦ.
  184.  
  185.   2. (╫α±≥ⁿ 2) ╧ε≈σ∞≤ ∞ε  ∩pεπpα∞∞α "Hello World!" φσ Ωε∞∩ΦδΦp≤σ≥± ?
  186.  
  187.      [*] ┼±≥ⁿ ≥pΦ ε±φεΓφ√σ ∩pΦ≈Φφ√ ΓετφΦΩφεΓσφΦ  ²≥εΘ ∩pεßδσ∞√:
  188.        1. ┴√δ δΦ Ωε∞∩Φδ ≥εp javac ≤±∩σ°φε τα∩≤∙σφ?
  189.           ┬√∩εδφΦ≥σ
  190.  
  191.           javac -garbage
  192.  
  193.           Φ ∩ε±∞ε≥pΦ≥σ, ∩ε ΓΦ≥±  δΦ φα ²Ωpαφσ ±εεß∙σφΦσ ε ∩pαΓΦδⁿφε∞
  194.           Φ±∩εδⁿτεΓαφΦΦ. ┼±δΦ ≥αΩεπε ±εεß∙σφΦ  φσ ∩ε ΓΦδε±ⁿ, ∩ε∩pεß≤Θ≥σ
  195.           τ≤∩α±≥Φ≥ⁿ javac, ≤ΩαταΓ ∩εδφ√Θ ∩≤≥ⁿ Ω φσ∞≤ δΦßε ΣεßαΓⁿ≥σ Γ PATH
  196.           ∩≤≥ⁿ Ω ΣΦpσΩ≥εpΦΦ, ±εΣσpµα∙σΘ javac.
  197.        2. ╧pαΓΦδⁿφε δΦ Φ±∩εδⁿτ≤σ≥±  ∩σpσ∞σφφα  εΩp≤µσφΦ  CLASSPATH?
  198.           ┬ JDK 1.0.2 τφα≈σφΦσ CLASSPATH Σεδµφε ß√δε ΓΩδ■≈α≥ⁿ Γ ±σß  Φ
  199.           ±Φ±≥σ∞φ√σ ßΦßδΦε≥σΩΦ Φ ┬α°Φ ±εß±≥Γσφφ√σ ßΦßδΦε≥σΩΦ.
  200.           ┬ JDK 1.2 τφα≈σφΦ■ CLASSPATH ßεδⁿ°σ φσ ≥pσß≤σ≥±  ∩pΦ±ΓαΦΓα≥ⁿ ∩≤≥Φ
  201.           Ω ±≥αφΣαp≥φ√∞ ßΦßδΦε≥σΩα∞. ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ CLASSPATH Σδ 
  202.           ≤ΩαταφΦ  ∩≤≥σΘ Ω "∩εδⁿτεΓα≥σδⁿ±ΩΦ∞ Ωδα±±α∞", Ωε≥εp√σ Γ√
  203.           Φ±∩εδⁿτ≤σ≥σ.
  204.           ─δ  φα≈αδα, ┬√, Γετ∞εµφε, τα⌡ε≥Φ≥σ Φ∞σ≥ⁿ ΩαΩ ∞ΦφΦ∞≤∞ "." (≥σΩ≤∙α 
  205.           ΣΦpσΩ≥εpΦ ) Γ ±Γεσ∞ CLASSPATH.
  206.           ╩επΣα τφα≈σφΦσ CLASSPATH ε°Φßε≈φε, javac ß≤Σσ≥ ±εεß∙α≥ⁿ ┬α∞ ε
  207.           ≥ε∞, ≈≥ε φσ ∞εµσ≥ φαΘ≥Φ εß· ΓδσφΦ  Ωδα±±εΓ, φα Ωε≥εp√σ ┬√
  208.           ±±√δασ≥σ±ⁿ Γ ±ΓεσΘ ∩pεπpα∞∞σ. ─δ  ∩εδ≤≈σφΦ  Φφ⌠εp∞α÷ΦΦ εß
  209.           ≤±≥αφεΓΩΦ CLASSPATH, ±∞ε≥pΦ≥σ ±εε≥Γσ≥±≥Γ≤■∙ΦΘ pατΣσδ FAQ
  210.        3. ╧pαΓΦδσφ δΦ Φ±⌡εΣφ√Θ ≥σΩ±≥?
  211.           ┬ ²≥ε∞ ±δ≤≈ασ javac ß≤Σσ≥ Γ√ΣαΓα≥ⁿ ±εεß∙σφΦ  εß ε°ΦßΩα⌡ Φ
  212.           ∩pσΣ≤∩pσµΣσφΦ . ╤∞ε≥pΦ≥σ Γε∩pε±√ ε ±εεß∙σφΦ ⌡ Ωε∞∩Φδ ≥εpα Γ
  213.           ±δσΣ≤■∙σΘ ±σΩ÷ΦΦ FAQ
  214.  
  215.   3. (╫α±≥ⁿ 2) ╧ε≈σ∞≤ ∞ε  ∩pεπpα∞∞α "Hello World!" φσ τα∩≤±Ωασ≥± ?
  216.  
  217.      [*] ┼±≥ⁿ ∩ ≥ⁿ ε±φεΓφ√⌡ ε°ΦßεΩ, Φτ-τα Ωε≥εp√⌡ ┬α°α VM (java ΦδΦ
  218.      ßpα≤τσp) φσ ∞επ≤≥ Φ±∩εδφΦ≥ⁿ ┬α° Ωδα±±.
  219.        1. ┼±δΦ ┬√ ∩Φ±αδΦ α∩∩δσ≥, ┬√ Σεδµφ√ φα±δσΣεΓα≥ⁿ Ωδα±±
  220.           java.applet.Applet. ╩εΣ ΦφΦ÷ΦαδΦτα÷ΦΦ ┬α°σπε α∩∩δσ≥α Σεδµσφ
  221.           pα±∩εδαπα≥ⁿ±  Γ ⌠≤φΩ÷ΦΦ init.
  222.           ┼±δΦ ┬√ ∩Φ±αδΦ ∩pΦδεµσφΦσ, ≥ε ∩σpΓεΘ ß≤Σσ≥ Γ√τΓαφα ⌠≤φΩ÷Φ 
  223.           main(). Hσ φ≤µφε ±∞σ°ΦΓα≥ⁿ α∩∩δσ≥√ Φ ∩pΦδεµσφΦ , ∩εΩα ┬√ φσ
  224.           φαßσpσ≥σ±ⁿ Σε±≥α≥ε≈φε ε∩√≥α.
  225.        2. ┬√ Σεδµφ√ εß· Γδ ≥ⁿ ±ΓεΘ ε±φεΓφεΘ Ωδα±± ΩαΩ "public". ┼±δΦ ²≥επε
  226.           φσ ±Σσδα≥ⁿ, ≥ε φα εΣφΦ⌡ ±Φ±≥σ∞α⌡ ┬α°α ∩pεπpα∞∞α ß≤Σσ≥
  227.           Γ√∩εδφ ≥ⁿ± , α φα Σp≤πΦ⌡ - φσ≥. ╬±φεΓφεΘ Ωδα±± - Ωδα±±,
  228.           ±εΣσpµα∙ΦΘ ∞σ≥εΣ main() δΦßε, Γ ±δ≤≈ασ α∩∩δσ≥α, Ωδα±±,
  229.           pα±°Φp ■∙ΦΘ java.applet.Applet.
  230.        3. ╚∞  ┬α°σπε Ωδα±±α Φ Φ∞  ⌠αΘδα Σεδµφ√ ≥ε≈φε ±εε≥Γσ≥±≥ΓεΓα≥ⁿ,
  231.           Γ∩δε≥ⁿ Σε pσπΦ±≥pα ±Φ∞ΓεδεΓ. ┼±δΦ ┬α° Ωδα±± - HelloWorld, ┬α°
  232.           Φ±⌡εΣφ√Θ ⌠αΘδ Σεδµσφ ß√≥ⁿ HelloWorld.java Φ Γα° ⌠αΘδ Ωδα±±α ß≤Σσ≥
  233.           "HelloWorld.class".
  234.        4. ┼±δΦ ┬√ Φ±∩εδⁿτ≤σ≥σ ftp Σδ  ταΩα≈ΩΦ ±Γεσπε α∩∩δσ≥α φα ±σpΓσp, ≥ε
  235.           ┬√ Σεδµφ√ ταΩα≈α≥ⁿ Γ±σ φσεß⌡εΣΦ∞√σ Σδ  φσπε Ωδα±±√, ∩pΦ≈σ∞
  236.           Φ±∩εδⁿτεΓα≥ⁿ ∩pΦ ταΩα≈ΦΓαφΦΦ ┴╚H└╨H█╔ ⌠εp∞α≥ ∩σpσΣα≈Φ, α φσ
  237.           ASCII.
  238.        5. ╬°ΦßΩΦ Γ ≤±≥αφεΓΩσ CLASSPATH (Φ/ΦδΦ codebase Γ ±δ≤≈ασ α∩∩δσ≥α).
  239.           ─αµσ ∩pεπpα∞∞Φ±≥√ ±ε ±≥αµσ∞ Σσδα■≥ ≥αΩΦσ ε°ΦßΩΦ, ∩ε²≥ε∞≤ φσ
  240.           δΦ°φΦ∞ ß≤Σσ≥ ∩pεΓσpΦ≥ⁿ Φ ²≥ε. ─δ  ∩εδ≤≈σφΦ  Φφ⌠εp∞α÷ΦΦ εß
  241.           ≤±≥αφεΓΩΦ CLASSPATH, ±∞ε≥pΦ≥σ ±εε≥Γσ≥±≥Γ≤■∙ΦΘ pατΣσδ FAQ
  242.  
  243.      ┼±δΦ ┬√ τα∩≤±Ωασ≥σ α∩∩δσ≥, ≥ε ┬α∞ φ≤µφε ∩pεΓσpΦ≥ⁿ ±δσΣ≤■∙σσ:
  244.        1. ┼±δΦ ┬α° Ωδα±± φσ ταπp≤µασ≥± , ∩pεΓσpⁿ≥σ ε≥φε± ∙ΦΘ±  Ω ┬α°σ∞≤
  245.           α∩∩δσ≥≤ HTML ≥²π.
  246.        2. ┼±δΦ ┬√ ∩Φ°σ≥σ Γ System.out, ≥ε pστ≤δⁿ≥α≥ ß≤Σσ≥ ε≥εßpαµα≥ⁿ±  Γ
  247.           εΩφσ java console ßpα≤τσpα. ┬α∞ φ≤µφε ε≥Ωp√≥ⁿ ²≥ε εΩφε, σ±δΦ ┬√
  248.           ⌡ε≥Φ≥σ φαßδ■Σα≥ⁿ pστ≤δⁿ≥α≥ pαßε≥√ ┬α°σΘ ∩pεπpα∞∞√.
  249.        3. ╥αΩµσ φ≤µφε ≤Σε±≥εΓσpΦ≥ⁿ± , ≈≥ε Φ±∩εδⁿτ≤σ∞√Θ ┬α∞Φ ßpα≤τσp
  250.           ±εΓ∞σ±≥Φ∞ ± Γετ∞εµφε±≥ ∞Φ  τ√Ωα Java, Ωε≥εp√σ ┬√ Φ±∩εδⁿτ≤σ≥σ.
  251.           Internet Explorer Φ ±≥αp√σ Γσp±ΦΦ Netscape φσ ∩εδφε±≥ⁿ■
  252.           ∩εΣΣσpµΦΓαδΦ JDK 1.1. ╧ε∩pεß≤Θ≥σ ±φα≈αδα ∩pε±∞ε≥pσ≥ⁿ ±ΓεΘ α∩∩δσ≥
  253.           Γ appletviewer'σ ┬α°σπε JDK.
  254.  
  255.   4. ╩αΩ ∞φσ ≤±≥αφεΓΦ≥ⁿ CLASSPATH?
  256.  
  257.      [*] ╧σpσ∞σφφα  εΩp≤µσφΦ  CLASSPATH ≤Ωατ√Γασ≥ ταπp≤τ≈ΦΩ≤ Ωδα±±εΓ VM,
  258.      πΣσ φ≤µφε Φ±Ωα≥ⁿ Ωδα±±√, Ωε≥εp√σ ∩p ∞ε ΦδΦ Ωε±Γσφφε Γ√τ√Γα■≥± ,
  259.      ΓΩδ■≈α  ±Φ±≥σ∞φ√σ Ωδα±±√. CLASSPATH ∩σpσ∞σφφα  Σεδµφα
  260.         o ≤Ωατ√Γα≥ⁿ φα ΣΦpσΩ≥εpΦ■, ±εΣσpµα∙≤■ ⌠αΘδ√ Ωδα±±εΓ Σδ  Ωδα±±εΓ φσ
  261.           Φτ ∩αΩσ≥α.
  262.         o ≤Ωατ√Γα≥ⁿ φα Ωεpσφⁿ ∩αΩσ≥α Σδ  Ωδα±±εΓ Φτ ∩αΩσ≥α. ╩εpφσΓεΘ
  263.           Ωα≥αδεπ ∩αΩσ≥α - Ωα≥αδεδεπ, Γ Ωε≥εpε∞ ±εΣσpµΦ≥ⁿ±  Γσ±ⁿ ∩ασ≥ (α φσ
  264.           ≥εδⁿΩε σπε ≈α±≥ⁿ).
  265.         o ≤Ωατ√Γα≥ⁿ ∩p ∞ε φα zip ΦδΦ jar ⌠αΘδ, σ±δΦ Ωδα±±√ φα⌡εΣ ≥ⁿ±  Γ
  266.           αp⌡ΦΓφε∞ ⌠αΘδσ. ┬α∞, Γσpε ≥φε, ∩pΦΣσ≥±  ∩σpσ≈Φ±δ ≥ⁿ ±εµσpµΦ∞εσ
  267.           αp⌡ΦΓα Σδ  ∩εδ≤≈σφΦ  ∩pαΓΦδⁿφεπε Φ∞σφΦ ∩αΩσ≥α/∩≤≥Φ Σδ  Ωδα±±α.
  268.           ╬≥Σσδ Θ≥σ pατφ√σ ∩≤≥Φ Φ αp⌡ΦΓ√ ± ∩ε∞ε∙ⁿ■ ∩δα≥⌠εp∞σφφε-ταΓΦ±σ∞επε
  269.           pατΣσδΦ≥σδ , ";" Σδ  Windows; ":" Σδ  Solaris.
  270.      ╥αΩµσ ∩ε∞φΦ≥σ, ≈≥ε:
  271.         o ┴pα≤τσp√ ≤±≥αφαΓδΦΓα■≥ CLASSPATH Ω Ωα≥αδεπ≤ ± HTML ⌠αΘδε∞, ∩δ■±
  272.           ∩αpα∞σ≥p codebase.
  273.         o Γ JDK 1.1 Φ Γ√°σ, java ΣεßαΓδ σ≥ ±Φ±≥σ∞φ√σ Ωδα±±√
  274.           (lib/classes.zip), ≥αΩ ≈≥ε ┬α∞ ²≥επε Σσδα≥ⁿ φσ εß τα≥σδⁿφε.
  275.         o JDK Γσp±ΦΦ 1.2 ΣεßαΓδ σ≥ "." (≥σΩ≤∙α  ΣΦpσΩ≥εpΦ ), ±δσΣεΓα≥σδⁿφε,
  276.           ┬√ ∞εµσ≥σ ²≥επε φσ Σσδα≥ⁿ. (Hε jre φσ ΣεßαΓδ σ≥ - ±∞. φΦµσ.)
  277.         o ╙≥ΦδΦ≥α JDK 1.1 jre φσ Φ±∩εδⁿτ≤σ≥ ∩σpσ∞σφφ≤■ CLASSPATH ΦδΦ
  278.           φατφα≈σφΦσ σσ ≥σΩ≤∙σ∞≤ Ωα≥αδεπ≤. (Hα Solaris, CLASSPATH ß≤Σσ≥
  279.           pαßε≥α≥ⁿ.)
  280.  
  281.      ┬ JDK 1.1.2, ²≥ε - Γεεß∙σ ε°ΦßΩα, σ±δΦ ∩εδⁿτεΓα≥σδⁿ ≤±≥αφαΓδΦΓασ≥
  282.      CLASSPATH Σδ  ΓΩδ■≈σφΦ  classes.zip. Hε CLASSPATH φσεß⌡εΣΦ∞ε
  283.      ≤±≥αφεΓΦ≥ⁿ Σδ 
  284.         o ≤ΩαταφΦ  φα ΩεpφσΓ√σ ∩αΩσ≥√ ∩pεπpα∞∞Φ±≥α ΦδΦ ∩αΩσ≥√ ≥pσ≥ⁿσπε δΦ÷α
  285.         o Φ±∩εδⁿτΓαφΦ  rmic
  286.         o Φ±∩εδⁿτεΓαφΦ  φσ±Γ ταφφ√⌡ ∩αΩσ≥εΓ ≥Φ∩α Swing Γ JDK 1.1
  287.         o ≤ΩαταφΦ  φα "φα≥ΦΓφ√σ" (native) ßΦßδΦε≥σΩΦ.
  288.  
  289.      ╠ΦφΦ∞αδⁿφα  ≤±≥αφεΓΩα CLASSPATH Σεδµφα ß√≥ⁿ: " set CLASSPATH=. "
  290.      HΦµσ ┬√ φαΘΣσ≥σ ∩pΦ∞σp√ Σδ : Windows (basic application class),
  291.      Solaris (package class), javac (multiple packages), Φ browsers (applet
  292.      codebase).
  293.      ----------------------------
  294.  
  295.      HσΩε≥εp√σ ∩pΦ∞σp√ Σδ  ∩pΦδεµσφΦ  Σδ  Windows:
  296.  
  297.      D:\src\tries\HelloWorld.class
  298.  
  299.              ## JDK 1.1, ∩σpσ∞σφφα  CLASSPATH φσ ≤±≥αφεΓδσφα
  300.              > cd D:\src\tries\
  301.              > D:\jdk11\bin\java HelloWorld
  302.                # OK: 1.1 φσ Γφε ΣεßαΓδσφ√ classes.zip Φ ≥σΩ≤∙α  ΣΦpσΩ≥εpΦ 
  303.  
  304.              > D:\jdk11\bin\jre HelloWorld
  305.                # ╬╪╚┴╩└: jre φσ ΣεßαΓδ σ≥ αΓ≥ε∞α≥Φ≈σ±ΩΦ . Ω CLASSPATH
  306.  
  307.              > cd D:\
  308.              > D:\jdk11\bin\jre -cp D:\src\tries HelloWorld
  309.                # OK: jre ΣεßαΓδ σ≥ classes.zip, -cp ΣεßαΓδ σ≥ ΣΦpσΩ≥εpΦ  ±
  310. Ωδα±±ε∞
  311.  
  312.              ## JDK 1.1,  ∩σpσ∞σφφα  CLASSPATH  ≤±≥αφεΓδσφα
  313.              > set CLASSPATH=D:\src\tries
  314.              > D:\jdk11\bin\java HelloWorld
  315.                # OK: java Φ±∩εδⁿτ≤σ≥ CLASSPATH
  316.  
  317.              > D:\jdk11\bin\jre HelloWorld
  318.                # ╬╪╚┴╩└: jre φσ Φ±∩εδⁿτ≤σ≥ CLASSPATH (Γ Windows)
  319.  
  320.              ## JDK 1.0.2,  CLASSPATH ≤±≥αφεΓδσφα
  321.              > set CLASSPATH=D:\jdk102\lib\classes.zip;D:\src\tries
  322.              > D:\jdk102\bin\java HelloWorld
  323.                # OK:
  324.  
  325.              > set CLASSPATH=D:\jdk102\lib\classes.zip;D:\src\tries
  326.              > D:\jdk11\bin\java HelloWorld
  327.                # ╬╪╚┴╩└: Φ±Ωδ■≈σφΦσ Γ φΦ≥Φ (thread) NULL - φσ∩pαΓΦδⁿφ√σ
  328. ±Φ±≥σ∞φ√σ Ωδα±±√
  329.  
  330.  
  331.      ----------------------------
  332.  
  333.      HσΩε≥εp√σ ∩pΦ∞σp√ Σδ  ∩pΦδεσφΦ  Σδ  Solaris
  334.  
  335.      /usr/src/com/devjoes/killer/App.class,
  336.  
  337.      φα⌡εΣ ∙σπε±  Γ ∩αΩσ≥σ com.devjoes.killer:
  338.  
  339.              # JDK 1.1, ∩σpσ∞σφφα  CLASSPATH φσ ≤±≥αφεΓδσφα
  340.              $ /usr/bin/jdk11/bin/jre  -cp /usr/src   com.devjoes.killer.App
  341.                # OK:
  342.  
  343.              $ cd /usr/src/com/devjoes/killer/
  344.              $ /usr/bin/jdk11/bin/java App
  345.                # ╬╪╚┴╩└: Φ∞  Ωδα±±α Φ ∩≤≥ⁿ ε°Φßε≈φ√
  346.  
  347.              $ CLASSPATH=/usr/src/
  348.              $ /usr/bin/jdk11/bin/java App
  349.                # ╬╪╚┴╩└: Φ∞  Ωδα±±α - com.devjoes.killer.App
  350.  
  351.              $ /usr/bin/jdk11/bin/java com.devjoes.killer.App
  352.                # OK:
  353.  
  354.  
  355.      ----------------------------
  356.  
  357.      ╧pΦ∞σp√ Φ Σδ  Solaris Φ Σδ  Windows, ε±φεΓαφφ√σ φα ±δσΣ≤■∙σ∞:
  358.       ╚±⌡εΣφ√σ ⌠αΘδ√              ∩αΩσ≥           ┬√τεΓ
  359.       /usr/src/pack/Minimal.java  ∩αΩσ≥ pack      pack.sub.Try.run()
  360.       /usr/src/pack/sub/Try.java  ∩αΩσ≥ pack.sub  (ε≥±≤≥±≥Γ≤σ≥)
  361.  
  362.              $ CLASSPATH=""
  363.              $ /usr/bin/jdk11/bin/javac /usr/src/pack/sub/Try.java
  364.                # OK: Γ±σ pαßε≥ασ≥
  365.  
  366.              $ /usr/bin/jdk11/bin/javac /usr/src/pack/Minimal.java
  367.                # ╬╪╚┴╩└: φσ φαΘΣσφ pack.sub.Try
  368.  
  369.              $ cd /usr/src
  370.              $ /usr/bin/jdk10/bin/javac pack/Minimal.java
  371.                # OK: HαΘΣσφ pack.sub.Try Γ . ΩαΩ Γ Ωεpφσ ∩αΩσ≥α
  372.  
  373.              $ cd /usr/src/pack
  374.              $ CLASSPATH=/usr/src
  375.              $ /usr/bin/jdk11/bin/javac Minimal.java
  376.                # OK: HαΘΣσφ pack.sub.Try φα ε±φεΓαφΦΦ Φφ⌠εp∞α÷ΦΦ Φτ CLASSPATH
  377.  
  378.  
  379.      ╥σ∩σpⁿ φατφα≈Φ∞ Ωδα±± ∩pΦδεµσφΦ  killer
  380.  
  381.      /usr/src/com/devjoes/killer/FastApp.java
  382.  
  383.      (Φτ ∩αΩσ≥α com.devjoes.killer), Φ±∩εδⁿτ≤■∙ΦΘ ∩αΩσ≥ ≥pσ≥ⁿσπε δΦ÷α Γ jar
  384.      ⌠αΘδσ
  385.  
  386.      /usr/jars/JShapes.jar
  387.  
  388.      φε φσ Φ±∩εδⁿτ≤■∙ΦΘ φΦΩαΩΦ⌡ Σp≤πΦ⌡ Ωδα±±εΓ. ╤δσΣ≤■∙σσ ß≤Σσ≥ pαßε≥α≥ⁿ:
  389.  
  390.              $ CLASSPATH=/usr/jars/JShapes.jar
  391.              $ cd /usr/src/com/devjoes
  392.              $ /usr/bin/jdk11/bin/javac killer/FastApp.java
  393.  
  394.  
  395.      ╬Ωεφ≈α≥σδⁿφε, φσ±ΩεδⁿΩε ∩pΦ∞σpεΓ Σδ  α∩∩δσ≥εΓ. ╠φεπΦσ α∩∩δσ≥√
  396.      Φ±∩εδⁿτ≤■≥ ≥εδⁿΩε εΣΦφ Ωδα±±, φα⌡εΣ ∙ΦΘ±  Γ ΣΦpσΩ≥εpΦΦ ± html ⌠αΘδε∞:
  397.  
  398.      <applet code=ArcTest.class height=400 width=400>
  399.  
  400.  
  401.      ─δ  Φ±∩εδⁿτεΓαφΦ  Ωδα±±εΓ Γ ∩εΣΩα≥αδεπσ, Φ±∩εδⁿτ≤Θ≥σ ∩αpα∞σ≥p
  402.      codebase:
  403.  
  404.      <applet codebase="mysubdir/" code=ArcTest.class ..
  405.  
  406.  
  407.      ─δ  Φ±∩εδⁿτεΓαφΦ  Ωδα±±εΓ Φτ αp⌡ΦΓα, Φ±∩εδⁿτ≤Θ≥σ ∩αpα∞σ≥p archive:
  408.  
  409.      <applet archive="applets.jar" code=ArcTest.class ..
  410.  
  411.  
  412.      ╤∞ε≥pΦ≥σ ≥αΩµσ: JDK 1.1 ReadMe
  413.      Solaris JDK 1.1 tool documentation
  414.      Win32 JDK 1.1 tool documentation
  415.  
  416. *(╫α±≥ⁿ 2) ╩αΩ ±Σσδα≥ⁿ Φφ≥σpαΩ≥ΦΓφ√Θ I/O ± ΩδαΓΦα≥≤p√ Γ Java?
  417.  
  418. [*] ┬ Java Φφ≥σpαΩ≥ΦΓφ√Θ ΓΓεΣ/Γ√ΓεΣ ε≈σφⁿ ∩δε⌡ε ∩εΣΣσpµΦΓασ≥± .
  419. ╧pεπpα∞∞Φ±≥√ Σεδµφ√ φσε≈σΓΦΣφ√∞Φ ±∩ε±εßα∞Φ εß·σΣΦφ ≥ⁿ ≈α±≥Φ ßΦßδΦε≥σΩΦ
  420. Ωδα±±εΓ Σδ  ∩εδ≤≈σφΦ  ≥pσß≤σ∞εΘ ⌠≤φΩ÷Φεφαδⁿφε±≥Φ. ╤∞ε≥pΦ≥σ ε≥Γσ≥ φα ┬ε∩pε±
  421. 7.1.
  422.  
  423. *(╫α±≥ⁿ 2) ╩αΩ ±Σσδα≥ⁿ ΓΓεΣ/Γ√ΓεΣ ⌠αΘδεΓ Γ α∩∩δσ≥σ?
  424.  
  425. [*] ╧ε ≤∞εδ≈αφΦ■, α∩∩δσ≥√ ∞επ≤≥ ≈Φ≥α≥ⁿ ⌠αΘδ√ φα ±σpΓσpσ, φε φσ ∞επ≤≥
  426. τα∩Φ±√Γα≥ⁿ Φ⌡ Φ φσ Φ∞σ■≥ φΦΩαΩεπε Σε±≥≤∩α ≤ ≤δΦσφ≥≤. ▌≥ε ±Σσδαφε Φτ
  427. ±εεßpαµσφΦΘ ßστε∩α±φε±≥Φ. ┴√δε ß√ φσ pατ≤∞φε, σ±δΦ ß√ α∩∩δσ≥, ∩εδ≤≈σφφ√Θ Φτ
  428. φσΦτΓσ±≥φ√⌡ Φ±≥ε≈φΦΩεΓ Γ Internet, ±∞επ ß√ ±≈Φ≥√Γα≥ⁿ/τα∩Φ±√Γα≥ⁿ ┬α°Φ ⌠αΘδ√.
  429. ╩±≥α≥Φ, εΣφεΘ Φτ ∩pΦ≈Φφ, ∩ε Ωε≥εpεΘ ActiveX ∞σp≥Γ Σδ  Internet,  Γδ σ≥± 
  430. ΩαΩ pατ pατpσ°σφΦσ ≥αΩεπε ΓΦΣα Σε±≥≤∩α Ω ⌠αΘδα∞.
  431.  
  432. ┼±≥ⁿ φσ±ΩεδⁿΩε pατδΦ≈φ√⌡ ∩≤≥σΘ εß⌡εΣα φσΩε≥εp√⌡ επpαφΦ≈σφΦΘ. ╤∞ε≥pΦ≥σ ε≥Γσ≥
  433. φα ┬ε∩pε± 7.8.
  434.  
  435. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ Γε±∩εδⁿτεΓα≥ⁿ±  ΓΓεΣε∞/Γ√ΓεΣε∞ ≈σpστ ∩ε±δσΣεΓα≥σδⁿφ√Θ
  436. ∩εp≥ φα ∞εσ∞ Ωε∞∩ⁿ■≥σpσ?
  437.  
  438. [*] Java 1.0 Φ 1.1 φσ Φ∞σ■≥ API ∩ε±δσΣεΓα≥σδⁿφεπε ∩εp≥α. ─δ  ²≥επε ∞εµφε
  439. Γε±∩εδⁿτεΓα≥ⁿ±  ßΦßδΦε≥σΩα∞Φ, pα±∩pε±≥pαφ σ∞√∞Φ φα Ωε∞∞σp≈σ±ΩεΘ ε±φεΓσ. JDK
  440. 1.2 ∩pσΣε±≥αΓδ σ≥ Σε±≥≤∩ Ω ∩ε±δσΣεΓα≥σδⁿφ√∞ Φ ∩αpαδδσδⁿφ√∞ ∩εp≥α∞ ΩαΩ
  441. pα±°ΦpσφΦσ (ε∩÷Φεφαδⁿφεσ Σε∩εδφσφΦσ) Ω ßΦßδΦε≥σΩσ. ╤∞ε≥pΦ≥σ ≥αΩµσ ε≥Γσ≥ φα
  442. ┬ε∩pε± 6.3.
  443.  
  444. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ε±≤∙σ±≥ΓΦ≥ⁿ ⌠εp∞α≥ΦpεΓαφφ√Θ ΓΓεΣ/Γ√ΓεΣ ≥Φ∩α printf Φ
  445. scanf Γ C/C++?
  446.  
  447. [*] ╧αΩσ≥ java.text, ∩ε±≥αΓδ σ∞√Θ ± Java 1.1, ∩εΣΣσpµΦΓασ≥ ⌠εp∞α≥ΦpεΓαφφ√Θ
  448. ΓΓεΣ/Γ√ΓεΣ. ╤∞ε≥pΦ≥σ ≥αΩµσ ε≥Γσ≥√ φα Γε∩pε±√ 7.11, 7.12, Φ 17.7.
  449.  
  450. *(╫α±≥ⁿ 2) ▀ ∩ε≥pα≥Φδ Ω≤≈≤ Γpσ∞σφΦ, ∩√≥α ±ⁿ φαΘ≥Φ ε°ΦßΩ≤, α εΩαταδε±ⁿ, ≈≥ε
  451. Γ±σ Σσδε ß√δε Γ ≥ε∞, ΩαΩΦσ ß≤ΩΓ√ Φ±∩εδⁿτεΓαδΦ±ⁿ (ßεδⁿ°Φσ ΦδΦ ∞αδσφΩΦσ)!
  452.  
  453. [*] ┬ Java ±≤∙σ±≥Γ≤σ≥ ταΓΦ±Φ∞ε±≥ⁿ ε≥ ≥επε, ßεδⁿ°Φσ ΦδΦ ∞αδσφⁿΩΦσ ß≤ΩΓ√
  454. Φ±∩εδⁿτ≤■≥± . ┬ δ■ßε∞ ±δ≤≈ασ, ±≥εΦ≥ φα∩ε∞φΦ≥ⁿ, ≈≥ε Φ∞σφα Ωδα±±εΓ Φ Φ∞σφα
  455. ⌠αΘδεΓ, Γ Ωε≥εp√⌡ ²≥Φ Ωδα±±√ φα⌡εΣ ≥ⁿ± , Σεδµφ√ ±εΓ∩αΣα≥ⁿ αß±εδ■≥φε ≥ε≈φε.
  456. ╤∞ε≥p≥σ ≥αΩµσ ε≥Γσ≥ φα ┬ε∩pε± 1.1.2
  457.  
  458. *(╫α±≥ⁿ 2) ╧ε≈σ∞≤ Ωε∞∩Φδ ≥εp Γ√Σασ≥ ∞φσ ≥αΩ≤■ ε°ΦßΩ≤: "Can't make static
  459. reference to method..."?
  460.  
  461. [*] ┬√° ΩεΣ, Γετ∞εµφε, ∩ε⌡εµ φα ²≥ε≥:
  462.  
  463. class myclass {
  464.             public static void main(String args[]) {
  465.                 myMethod();
  466.             }
  467.  
  468.             public void myMethod() {
  469.                 //ΩαΩεΘ-≥ε ΩεΣ
  470.             }
  471.         }
  472.  
  473.  
  474. ╧pεßδσ∞α ταΩδ■≈ασ≥±  Γ ±δσΣ≤■∙σ∞: ±≥α≥Φ≈σ±ΩΦσ ∞σ≥εΣ√ ∩pΦφαΣδσµα≥ Ωδα±±≤, α
  475. φσ ΩαµΣε∞≤ ε≥Σσδⁿφε∞≤ εß·σΩ≥≤ ²≥επε Ωδα±±α. ┼±δΦ ┬√ ≤∩≤±Ωασ≥σ Ωδ■≈σΓεσ
  476. ±δεΓε static (εß√≈φ√Θ ±δ≤≈αΘ), ΩαΩ ±Σσδαφε τΣσ±ⁿ ± ∞σ≥εΣε∞ "myMethod()", ≥ε
  477. ┬√ ∞εµσ≥σ Γ√τΓα≥ⁿ ²≥ε≥ ∞σ≥εΣε∞ ≥εδⁿΩε ±ε±δαΓ°Φ±ⁿ φα εß·σΩ≥. Hε Γ ┬α°σ∞
  478. Γ√τεΓσ Φτ main(), φσ ±εεß∙ασ≥± , ΩαΩε∞≤ εß·σΩ≥≤ ∩pΦφαΣδσµΦ≥ myMethod().
  479. ┬φ≤≥pΦ φσ-static ∞σ≥εΣα, ┬α∞ φσ ≥pσß≤σ≥±  ∩pσΣε±≥αΓδ ≥ⁿ ≥αΩ≤■ Φφ⌠εp∞α÷Φ■,
  480. ≥αΩ ΩαΩ Γ ²≥ε∞ ±δ≤≈ασ ∩pσΣ∩εδαπασ≥± , ≈≥ε Γ√τ√Γασ≥±  ∞σ≥εΣ ≥επε εß·σΩ≥α,
  481. Ωε≥εpε∞≤ ∩pΦφαΣδσµΦ≥ Γ√τ√Γα■∙ΦΘ ∞σ≥εΣ. Hε ∩pΦ Γ√τεΓσ Φτ ±≥α≥Φ≈σ±Ωεπε
  482. ∞σ≥εΣα, ┬√ Σεδµφ√ ∩pσΣε±≥αΓΦ≥ⁿ ²≥≤ Φφ⌠εp∞α÷Φ■, ΦδΦ, σ±δΦ ²≥επε φσ ±Σσδα≥ⁿ,
  483. ┬√ ≤ΓΦΣσ≥σ ±εεß∙σφΦσ εß ε°ΦßΩσ.
  484.  
  485. ┬ εß∙σ∞ ΓΦΣσ, Γ√τεΓ ∞σ≥εΣα myMethod() ß≤Σσ≥ ∩pΦ∞σpφε ≥αΩΦ∞:
  486.  
  487.         public static void main(String args[]) {
  488.             myclass m = new myclass();
  489.             m.myMethod();
  490.         }
  491.  
  492.  
  493. ▌≥α ε°ΦßΩα φαΦßεδσσ ≈α±≥ε Γ±≥pσ≈ασ≥± , ΩεπΣα ┬√ ∩Φ°Φ≥σ ΩεΣ, Ωε≥εp√Θ ∞εµσ≥
  494. Γ√∩εδφ ≥ⁿ±  Φ ΩαΩ α∩∩δσ≥, Φ ΩαΩ ∩pΦδεµσφΦσ. ╬ß√≈φε, ┬√ Γ√τ√Γασ≥σ init() Φ
  495. start() Φτ main. ┬ε≥, ≈≥ε ┬√ Σεδµφ√ ±Σσδα≥ⁿ:
  496.  
  497.         public static void main(String[] args) {
  498.             Applet ma = new myApplet();
  499.             ma.init();
  500.             ma.start();
  501.         }
  502.  
  503.  
  504. *(╫α±≥ⁿ 2) ╧ε≈σ∞≤   φσ ∞επ≤ Σσδα≥ⁿ myArray.length() ? ╠α±±ΦΓ√ ΓσΣⁿ
  505.  Γδ ■≥±  εß·σΩ≥α∞Φ, ∩pαΓΦδⁿφε?
  506.  
  507. [*] ─α, Γ ±∩σ÷Φ⌠ΦΩα÷ΦΦ Java ±Ωαταφε, ≈≥ε ∞α±±ΦΓ√  Γδ ■≥±  εß·σΩ≥α∞Φ, ≥ε≈φε
  508. ≥αΩµσ, ΩαΩ Φ Ωδα±±√. ╬ΣφαΩε, ∞α±±ΦΓ√ φσ ∞επ≤≥ ±εΣσpµα≥ⁿ ∞σ≥εΣ√. ┬√ Σεδµφ√
  509. Φ±∩εδⁿτεΓα≥ⁿ myArray.length,  Γδ ■∙ΦΘ±  ²δσ∞σφ≥ε∞ Σαφφ√⌡ (φσ ∞σ≥εΣε∞),
  510. ∩pΦφαΣδσµα∙Φ∞ myArray.
  511.  
  512. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ταΩp√≥ⁿ Java-εΩφε, Φ±∩εδⁿτ≤  ΦΩεφΩ≤ Γ Γσp⌡φσ∞ ∩pαΓε∞
  513. ≤πδ≤ εΩφα?
  514.  
  515. [*] ╤ετΣαΘ≥σ Ωδα±± εßpαßε≥≈ΦΩα ±εß√≥Φ , pα±°Φp   WindowAdapter. ╟α≥σ∞
  516. ∩σpσπp≤τΦ≥σ windowClosing() Σδ  ≥επε, ≈≥εß√ ∞εµφε ß√δε ±εΓσp°α≥ⁿ φ≤µφ√σ
  517. ΣσΘ±≥ΓΦ  ∩pΦ ταΩp√ΓαφΦΦ εΩφα. ╬±≥ασ≥±  ΣεßαΓΦ≥ⁿ Γ±■ ²≥≤ ≈≤°ⁿ Ω Listener'α∞
  518. φ≤µφεπε εΩφα.
  519.  
  520. import java.awt.*;
  521. import java.awt.event.*;
  522.  
  523. public class MyFrame extends Frame {
  524.     public MyFrame(String s) {super(s);}
  525.  
  526.     public class WL extends WindowAdapter {
  527.         public void windowClosing(WindowEvent e) {System.exit(0);}
  528.     }
  529.  
  530.     // ╤■Σα Γ±≥αΓΦ≥ⁿ Γ±σ, ≈≥ε φ≤µφε.
  531.  
  532. }
  533.  
  534.  
  535. ├Σσ-φΦß≤Σⁿ Γ ΩεΣσ ΦφΦ÷ΦαδΦτα÷ΦΦ ∩ε∞σ±≥Φ≥σ:
  536.  
  537.         f1.addWindowListener( f1. new WL()  );
  538.  
  539.  
  540. ▌≥ε≥ ±Φφ≥αΩ±Φ± εß√≈φε φσ ΦτΓσ±≥σφ ∞φεπΦ∞ δ■Σ ∞, εΣφαΩε ²≥ε σ∙σ εΣφα
  541. ΓΩ≤±φε±≥ⁿ Γφ≤≥pσφφΦ⌡ Ωδα±±εΓ.
  542.  
  543. ┬ Ωα≈σ±≥Γσ αδⁿ≥σpφα≥ΦΓ√, Γ√°σ≤Ωαταφφεσ ∞εµφε ∩pεΣσδα≥ⁿ τα εΣΦφ °απ:
  544.  
  545.         MyFrame f1 = new f("wave");
  546.  
  547.         f1.addWindowListener( new WindowAdapter() {
  548.             public void windowClosing(WindowEvent e) {
  549.                 // Φ/ΦδΦ setVisible(false) Φ/ΦδΦ dispose()
  550.                 System.exit(0); }
  551.         });
  552.  
  553.  
  554. ╤∞ε≥pΦ≥σ ≥αΩµσ ε≥Γσ≥√ φα Γε∩pε±√ 1.0.19, 1.0.30 Φ 15.7.
  555.  
  556. *(╫α±≥ⁿ 2) ╧ε≈σ∞≤ b+=100; OK, φε b = b+100; φσ Ωε∞∩ΦδΦp≤σ≥± ?
  557.  
  558. [*] ╧ε-ΓΦΣΦ∞ε∞≤, ┬α° ΩεΣ Γ√πδ ΣΦ≥ ∩εΣεßφε ²≥ε∞≤:
  559.  
  560.   byte b = 0;
  561.   Incompatible type for =. Explicit cast needed to convert int to byte.
  562.   b = b + 100;    // ╤εεß∙σφΦσ εß ε°ΦßΩσ
  563.     ^
  564.   b += 100;       // OK
  565.  
  566. ╧pΦ≈Φφα Γ ≥ε∞, ≈≥ε ∩pΦ Γ√≈Φ±δσφΦΦ ∩σpΓεπε Γ√pαµσφΦ  (b=b+100), ≥Φ∩ σπε
  567. τφα≈σφΦ  Φτ∞σφ σ≥±  ∩ε ΩpαΘφσΘ ∞σpσ Σε int. ─δ  ≥επε, ≈≥εß√ Γ±σ ταpαßε≥αδε,
  568. ±δσΣ≤σ≥ ±Σσδα≥ⁿ ∩pσεßpατεΓαφΦσ ≥Φ∩α, ∩εΣεßφε ²≥ε∞≤: "n=(byte) (b+100);". ┬ε
  569. Γ≥εpε∞ ±δ≤≈ασ, ∩pΦ±ΓαΦΓαφΦσ Φ ∩pσεßpατεΓαφΦσ ≥Φ∩α ∩pεΦ±⌡εΣΦ≥ αΓ≥ε∞α≥Φ≈σ±ΩΦ.
  570. ┬ ±∩σ÷Φ⌠ΦΩα÷ΦΦ Java ±Ωαταφε:
  571.  
  572.      "┬√pαµσφΦσ E1 op= E2 ²ΩΓΦΓαδσφ≥φε E1 = (≥Φ∩)((E1) op (E2)), πΣσ "≥Φ∩"
  573.      - ≥Φ∩ E1, τα Φ±Ωδ■≈σφΦσ∞ ≥επε, ≈≥ε E1 Γ√≈Φ±δ σ≥±  σΣΦφεµΣ√" [JLS
  574.      15.25.2]
  575.  
  576. ╩εφ±≥αφ≥√ Γε Γpσ∞  Ωε∞∩Φδ ÷ΦΦ αΓ≥ε∞α≥Φ≈σ±ΩΦ ∩pσεßpατ≤■≥±  Ω φ≤µφε∞≤ ≥Φ∩≤.
  577. ╩εΣ
  578.  
  579. byte theAnswer = 42;
  580.  
  581. Σε∩≤±≥Φ∞, ∩pσεßpατεΓαφΦσ ≥Φ∩α Σσδα≥ⁿ φσ φ≤µφε [JLS 5.2]
  582.  
  583. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ±δεµΦ≥ⁿ Γ∞σ±≥σ ΣΓα Float-εß·σΩ≥α?
  584.  
  585. [*] ┬√ ⌡ε≥Φ≥σ φα∩Φ±α≥ⁿ ≈≥ε-≥ε ≥Φ∩α ²≥επε:
  586.  
  587.         Float One;
  588.         Float Two;
  589.         Float Hard = One + Two;
  590.  
  591.  
  592. Hε Ωε∞∩Φδ ≥εp φσ ∩pΦ∞σ≥ ≥αΩεΘ τα∩Φ±Φ.
  593.  
  594. ┬ Java σ±≥ⁿ ΣΓα pατδΦ≈φ√⌡ ∩≤≥Φ ∩pσΣ±≥αΓδσφΦ  32-ßΦ≥φ√⌡ Γσ∙σ±≥Γσφφ√⌡ ≈Φ±σδ,
  595. Float Φ float. Float - ²≥ε Ωδα±±, σΣΦφ±≥Γσφφα  ÷σδⁿ Ωε≥εpεπε -
  596. ∩pσΣ±≥αΓδσφΦσ Γσ∙σ±≥Γσφφ√⌡ ≈Φ±σδ Γ ΓΦΣσ εß·σΩ≥εΓ. ╩δα±± φσ ∩εΣΣσpµΦΓασ≥
  597. ε∩σpα÷ΦΘ φαΣ Γσ∙σ±≥Γσφφ√∞Φ ≈Φ±δα∞Φ, ≥αΩ ΩαΩ ∩pεΦτΓεΣΦ≥σδⁿφε±≥ⁿ ∩pΦ ²≥ε∞
  598. ß√δα ß√ ±δΦ°Ωε∞ φΦτΩεΘ. float - ∩pΦ∞Φ≥ΦΓφ√Θ ≥Φ∩ (∩εΣεßφε int), Φ±∩εδⁿτ≤σ∞√Θ
  599. Σδ  Γ√≈Φ±δσφΦΘ.
  600.  
  601. ┬α∞ φσεß⌡εΣΦ∞ε Γ√ßpα≥ⁿ ≈≥ε-≥ε εΣφε, Γ ταΓΦ±Φ∞ε±≥Φ ε≥ ∩pσΣ∩εδαπασ∞επε
  602. Φ±∩εδⁿτεδⁿτεΓαφΦ . ┼±δΦ ┬α∞ φσεß⌡εΣΦ∞ε ∩pεΦτΓεΣΦ≥ⁿ Γ√≈Φ±δσφΦ  ± ∩δαΓα■∙σΘ
  603. ≥ε≈ΩεΘ, Φ±∩εδⁿτ≤Θ≥σ "float". ┼±δΦ ┬α∞ φσεß⌡εΣΦ∞ε pαßε≥α≥ⁿ ± Γσ∙σ±≥Γσφφ√∞
  604. ≈Φ±δε∞ ΩαΩ ± εß·σΩ≥ε∞ (φα∩pΦ∞σp, Σδ  ∩ε∞σ∙σφΦ  σπε Γ Vector), Φ±∩εδⁿτ≤Θ≥σ
  605. "Float".
  606.  
  607. ┼±δΦ ┬α∞ φσεß⌡εΣΦ∞ε Φ ≥ε, Φ Σp≤πεσ, ≥ε ²≥ε ß≤Σσ≥ φσ±ΩεδⁿΩε ±δεµφσΘ. ┬α∞
  608. φσεß⌡εΣΦ∞ε εß· ΓΦ≥ⁿ ≈Φ±δα εΣφΦ∞ Φτ ±∩ε±εßεΓ Φ ∩pσεßpατεΓ√Γα≥ⁿ Φ⌡ Γ± ΩΦΘ
  609. pατ, ΩεπΣα ┬α∞ φ≤µφ√ Γετ∞εµφε±≥Φ Σp≤πεπε. ┬α° ΩεΣ ∞εµσ≥ ß√≥ⁿ ∩εΣεßσφ ²≥ε∞≤:
  610.  
  611.         Float One = new Float(1.0);
  612.         Float Two = new Float(2.0);
  613.         Float Hard = new Float(One.floatValue() + Two.floatValue());
  614.  
  615.  
  616. ╤∞ε≥pΦ≥σ ≥αΩµσ Γε∩pε±√ 3.8 , 5.1, Φ 10.1.
  617.  
  618. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ∩ε∞σ±≥Φ≥ⁿ Γ±σ ±ΓεΦ Ωδα±±√ Φ pσ±≤p±√ Γ εΣΦφ ⌠αΘδ Φ
  619. τα±≥αΓΦ≥ⁿ java τα∩≤±≥Φ≥ⁿ σπε?
  620.  
  621. [*] ╚±∩εδⁿτ≤Θ≥σ JAR-⌠αΘδ. ╧ε∞σ±≥Φ≥σ Γ±σ ⌠αΘδ√ Γ JAR, τα≥σ∞ τα∩≤±ΩαΘ≥σ
  622. ∩pΦδεµσφΦσ ∩εΣεßφε ²≥ε∞≤:
  623.  
  624.         java -jar [-options] jarfile Mainclass  [args...]
  625.  
  626.  
  627. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ∩ε±∞ε≥pσ≥ⁿ φε∞σpα ±≥pεΩ Γ ±≥σΩσ ≥pα±±ΦpεΓΩΦ Φ±∩εδⁿτ≤ 
  628. JDK 1.1.6?
  629.  
  630. [*] Hα≈Φφα  ± JDK 1.1.5, φε∞σpα ±≥pεΩ Φ±⌡εΣφεπε ≥σΩ±≥α φσ ±εΣσpµα≥ⁿ±  Γ
  631. ±≥σΩσ ≥pα±±ΦpεΓΩΦ.
  632.  
  633. ─δ  ∩pε±∞ε≥pα φε∞σpεΓ ±≥pεΩ Γ JDK 1.2, ΩεπΣα ∩pεπpα∞∞α Γ√τ√Γασ≥ Φ±Ωδ■≈σφΦσ,
  634. Φ±∩εδⁿτ≤Θ≥σ Γ Ωε∞αφΣφεΘ ±≥pεΩσ
  635.  
  636.      java -Djava.compiler=NONE myapp
  637.  
  638. ▌≥≤ Φφ⌠εp∞α÷ΦΦ ∞εµφε φαΘ≥Φ φα
  639. http://java.sun.com/products/jdk/1.2/changes.html#aaa24
  640.  
  641.                        ------------------------------
  642.  
  643. ─ασ°ⁿ Java φα φεΓε∞ PC!
  644.  
  645.         ┬α° φεΓ√Θ PC ∞εµσ≥ ∩ε±≥αΓδ ≥ⁿ±  ± φαΦßεδσσ ±εΓpσ∞σφφεΘ Γσp±ΦσΘ
  646.         Java, φε ≥εδⁿΩε Γ ≥ε∞ ±δ≤≈ασ, σ±δΦ ┬√ ±α∞Φ ²≥επε τα⌡ε≥Φ≥σ!
  647. JavaLobby ∩pε±Φ≥ ∩pεΣαΓ÷εΓ PC ∩εΣΣσpµΦΓα≥ⁿ Java Φ ∩pεΣαΓα≥ⁿ ±ΓεΦ ∞α°Φφ√ ±
  648. ∩pσΣ≤±≥αφεΓδσφφ√∞ Java-∩δαπΦφε∞.
  649.  
  650. ╤∞ε≥pΦ≥σ http://www.javalobby.org/servlet/PetitionServlet/pjpc
  651. ╧εµαδ≤Θ±≥α, ∩ε∞επΦ≥σ JavaLobby, ∩εΣΣσpµαΓ ²≥≤ ΦφΦ÷Φα≥ΦΓ≤
  652.  
  653.   ------------------------------------------------------------------------
  654.  
  655. ╧εµαδ≤Θ±≥α, ∩εΣΣσpµΦΓαΘ≥σ ∩σpσφε±Φ∞ε±≥ⁿ Java.
  656.  
  657. ╬Σφε Φτ ε±φεΓφ√⌡ Σε±≥εΦφ±≥Γ Java - ²≥ε σσ ∩σpσφε±Φ∞ε±≥ⁿ.
  658.  
  659.    * ╧σ≡σφε±Φ∞ε±≥ⁿ ∩ετΓεδ σ≥ δσπΩε Φτ∞σφ ≥ⁿ/εßφεΓδ ≥ⁿ ε∩σ≡α÷Φεφφ√σ ±Φ±≥σ∞√
  660.      Φ ∩δα≥⌠ε≡∞√, φσ ≥σ≡   ∩≡σΣ√Σ≤∙Φ⌡ ≡ατ≡αßε≥εΩ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ .
  661.    * ╧σ≡σφε±Φ∞ε±≥ⁿ ∩ετΓεδ σ≥ Java-∩≡επ≡α∞∞Φ±≥α∞ ßστ ∩σ≡σ≤≈ΦΓαφΦ  ∩≡Φ∞σφ ≥ⁿ
  662.      ±ΓεΦ τφαφΦ  ≤ φεΓ√⌡ ≡αßε≥αΣα≥σδσΘ.
  663.    * ╧σ≡σφε±Φ∞ε±≥ⁿ Σσδασ≥ Σε±≥≤∩φ√∞ ßεδⁿ°εσ ∞φεµσ±≥Γε ∩≡επ≡α∞∞ Σδ  Γ±σ⌡
  664.      Ωε∞∩ⁿ■≥σ≡εΓ.
  665.  
  666. ╧≡επ≡α∞∞φα  ∩σ≡σφε±Φ∞ε±≥ⁿ ∩≡σΣ±≥αΓδ σ≥ ßεδⁿ°εΘ Φφ≥σ≡σ± ΩαΩ Σδ 
  667. ≡ατ≡αßε≥≈ΦΩεΓ, ≥αΩ Φ Σδ  ∩εδⁿτεΓα≥σδσΘ. ─αµσ, σ±δΦ ┬√ Φ±∩εδⁿτ≤σ≥σ ≥εδⁿΩε
  668. Windows 95, ∩σ≡σφε±Φ∞ε±≥ⁿ Γαµφα Φ ┬α∞. ┼±δΦ Γ±σ ┬α°Φ ∩≡επ≡α∞∞√ φα∩Φ±αφ√ φα
  669. Java, ≥ε εφΦ ß≤Σ≤≥ ≡αßε≥α≥ⁿ ∩≡Φ ∩σ≡σ⌡εΣσ ε≥ MS-DOS Ω Windows 3.1, Φ Σαδσσ Ω
  670. Windows 95, Windows 98, Windows NT Φ Σαµσ Ω Windows CE. ╚φα≈σ, εß√≈φε
  671. ∩≡Φ⌡εΣΦ≥±  ∩εΩ≤∩α≥ⁿ φεΓ√σ ∩≡επ≡α∞∞∞√, ΩαµΣ√Θ ≡ατ, ΩεπΣα ∞σφ σ≥±  Windows.
  672. ╧σ≡σφε±Φ∞ε±≥ⁿ φσ Γ Φφ≥σ≡σ±α⌡ Microsoft, ≥αΩ ΩαΩ ∩ετΓεδ σ≥ ∩εδⁿτεΓα≥σδ ∞
  673. δσπΩε ∩≡εßεΓα≥ⁿ Σ≡≤πΦσ ε∩σ≡α÷Φεφφ√σ ±Φ±≥σ∞√, Φ, ≥αΩΦ∞ εß≡ατε∞, ∩σ≡σΩ≡√Γασ≥
  674. εΣΦφ Φτ σσ Φ±≥ε≈φΦΩεΓ Σε⌡εΣεΓ.
  675.  
  676. ┬ 1998 αφ≥Φ∞εφε∩εδⁿφεσ Σσδε ∩≡ε≥ΦΓ Microsoft ε≥Ω≡√δε Γφ≤≥≡σφφΦΘ ΣεΩ≤∞σφ≥
  677. Microsoft. ╬ßετφα≈σφφ√Θ ΩαΩ "±≥≡α≥σπΦ≈σ±Ωα  ÷σδⁿ" εφ πδα±Φδ: "≤φΦ≈≥εµΦ≥ⁿ
  678. ∞σµ∩δα≥⌠ε≡∞σφφ≤■ Java" ∩ε±≡σΣ±≥Γε∞ ≤ΓσδΦ≈σφΦ  "π≡ τφεπε" ≡√φΩα Java.
  679. [Exhibit 101 (MS7 033448)].
  680.  
  681. ┬ φε ß≡σ 1998 ╘σΣσ≡αδⁿφ√Θ ±≤Σⁿ  ∩ε±≥αφεΓΦδ ≈≥ε Microsoft φα≡≤°Φδα
  682. ∩εΣ∩Φ±αφφεσ ±επδα°σφΦσ ± Sun ≡α±∩≡ε±≥≡αφ   φσ±εΓ∞σ±≥Φ∞≤■ Java, Φ Σεδµφα
  683. ∩≡σΩ≡α≥Φ≥ⁿ ²≥ε. ┼±δΦ ∩σ≡σφε±Φ∞ε±≥ⁿ Φ∞σσ≥ ßεδⁿ°εσ τφα≈σφΦσ Σδ  ┬α± ΦδΦ ┬α°Φ⌡
  684. ∩εδⁿτεΓα≥σδσΘ, ΦτßσπαΘ≥σ Java-∩≡εΣ≤Ω≥εΓ ε≥ Microsoft; εφΦ ≤∞√°δσφφε
  685. ∩√≥α■≥±  ±αßε≥Φ≡εΓα≥ⁿ ∩σ≡σφε±Φ∞ε±≥ⁿ. ┬φ≤≥≡σφφΦσ ΣεΩ≤∞σφ≥√ Microsoft
  686. ∩εΣ≥Γσ≡µΣα■≥ ²≥ε εΣφετφα≈φε. ╤∞ε≥≡Φ≥σ
  687. http://www.usdoj.gov/atr/cases/f1700/1762.htm.
  688.  
  689.                        ------------------------------
  690.  
  691. ╬±εßσφφε±≥Φ Windows
  692.  
  693. *╤≤∙σ±≥Γ≤σ≥ δΦ ≡σαδΦτα÷Φ  Java Σδ  Windows 3.1?
  694.  
  695. [*] ─α. ╤∞ε≥pΦ≥σ Question 1.6 Hε Φ±∩εδⁿτεΓαφΦσ Windows 3.1 φσ ε≈σφⁿ ⌡ε≡ε°ε,
  696. ∩ε±ΩεδⁿΩ≤ εφα Φ∞σσ≥ φσαΣσΩΓα≥φ√σ ±ΓεΘ±≥Γα Σδ  ∩εΣΣσ≡µΩΦ ßεδⁿ°Φφ±≥Γα
  697. ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ 
  698.  
  699. *(╫α±≥ⁿ 2) ▀ Φ±∩εδⁿτ≤■ Win95, Φ ∞εσ DOS εΩφε φσ ∩≡ΦφΦ∞ασ≥ Φ∞σφα ⌠αΘδεΓ
  700. ΣδΦφφσσ ≈σ∞ 8.3.
  701. "This program cannot be run in DOS mode"
  702.  
  703. [*] ╬ßσ ²≥Φ ∩≡εßδσ∞√ ∞επ≤≥ ß√≥ⁿ ≡σ°σφ√ εΣΦφαΩεΓε. ╙ßσΣΦ≥σ±ⁿ, ≈≥ε τα∩≤∙σφ
  704. Win95/98 command.com, Σαδσσ ┬√ Σεδµφ√ Φτ∞σφΦ≥ⁿ ±ΓεΘ±≥Γα ╤σαφ±α MS-DOS. ┬
  705. ΣΦαδεπεΓε∞ εΩφσ φα ταΩδαΣΩσ "╧≡επ≡α∞∞α" φαµ∞Φ≥σ Ωφε∩Ω≤ "─ε∩εδφΦ≥σδⁿφ√σ
  706. ∩α≡α∞σ≥≡√". ╤ΓεΘ±≥Γε "Hσ ΣαΓα≥ⁿ ∩≡επ≡α∞∞σ τα∞σ≥Φ≥ⁿWindows" Σεδµφε ß√≥ⁿ
  707. H┼╬╥╠┼╫┼HH█╠.
  708.  
  709. ┼±δΦ Γ√ß≡α≥ⁿ ²≥ε ±ΓεΘ±≥Γε, ≥ε ∩≡επ≡α∞∞√ ß≤Σ≤≥ ±σß  Γσ±≥Φ ≥ε≈φε ≥αΩ, ΩαΩ ┬√
  710. ΓΦΣσδΦ. ╧ε ≤∞εδ≈αφΦ■ εφε φσ Γ√ß≡αφε, Γετ∞εµφε ²≥ε ∩≡εΦτε°δε ∩ετΣφσσ.
  711. ╚τ∞σφΦ≥σ σπε φα φσε≥∞σ≈σφφεσ.
  712.  
  713. *(╫α±≥ⁿ 2) ▀ Φ±∩εδⁿτ≤■ ┴δεΩφε≥ Σδ  ≡σΣαΩ≥Φ≡εΓαφΦ  ∞εΦ⌡ ⌠αΘδεΓ, ΩαΩ ∞φσ
  714. ±ε⌡≡αφ ≥ⁿ Φ⌡ ± ≡α±°Φ≡σφΦσ∞ ".java"? ╥αΩµσ, φσΩε≥ε≡√σ ⌠αΘδ√ ± Φ±⌡εΣφ√Φ
  715. ≥σΩ±≥α∞Φ ∩≡επ≡α∞∞ ε≥εß≡αµα■≥±  ∩εδφε±≥ⁿ■ Γ εΣφ≤ ±≥≡εΩ≤. ┬ ≈σ∞ ≥≤≥ Σσδε?
  716.  
  717. [*] ╧σ≡Γ√Θ ±εΓσ≥: ∩ε∞σ±≥Φ≥σ ∩εδφεσ Φ∞  ⌠αΘδα Γ ΩαΓ√≈ΩΦ Γ ΣΦαδεπεΓε∞ εΩφσ
  718. ∩≡Φ ±ε⌡≡αφσφΦΦ. ╩επΣα ┬√ ±ετΣαΣΦ≥σ ±ΓεΘ ∩σ≡Γ√Θ Java ⌠αΘδ, ΣΓαµΣ√ ΩδΦΩφσ≥σ
  719. φα φσ∞ Γ ╧≡εΓεΣφΦΩσ, Γ√ßσ≡Φ≥σ "┴δεΩφε≥" Φτ ΣΦαδεπα "╬≥Ω≡√≥ⁿ ± ∩ε∞ε∙ⁿ■" , Φ
  720. ┴δεΩφε≥ ∩σ≡σ±≥αφσ≥ ΣεßαΓδ ≥ⁿ ≡α±°Φ≡σφΦσ ".txt" Ω ┬α°Φ∞ .java ⌠αΘδα∞.
  721.  
  722. ┬≥ε≡εΘ ±εΓσ≥: ┴δεΩφε≥ εµΦΣασ≥ Γ Ωεφ÷σ ΩαµΣεΘ ±≥≡εΩΦ ≥σΩ±≥εΓεπε ⌠αΘδα ∩α≡≤
  723. ±Φ∞ΓεδεΓ "ΓετΓ≡α≥ Ωα≡σ≥ΩΦ/∩σ≡σ⌡εΣ φα φεΓ≤■ ±≥≡εΩ≤" , φσµσδΦ ∩≡ε±≥ε ±Φ∞Γεδ
  724. "φεΓα  ±≥≡εΩα" Ωε≥ε≡√Θ εß√≈φε Φ±∩εδⁿτ≤σ≥±  Γ Unix. ╚±∩εδⁿτ≤Θ≥σ Σαφφ≤■
  725. ∩≡επ≡α∞∞≤ Σδ  ∞εΣΦ⌠ΦΩα÷ΦΦ Γ±σ⌡ ±≥≡εΩ ⌠αΘδα ± Φ±⌡εΣφ√∞ ≥σΩ±≥ε∞:
  726.  
  727.  /*
  728.   * Usage: jre crlf file1.java file2.java ... fileN.java
  729.   */
  730.  
  731. import java.io.*;
  732. class crlf {
  733.     public static void main(String s[]){
  734.         byte b[]; byte p;
  735.         FileInputStream is;
  736.         BufferedOutputStream os;
  737.         File f;
  738.         for (int i=0; i < s.length;i++){
  739.             try{
  740.                 f=new File(s[i]);
  741.                 b=new byte[(int)f.length()];
  742.                 is = new FileInputStream(f);
  743.                 is.read(b); is.close();
  744.                 os = new BufferedOutputStream(
  745.                 new FileOutputStream(s[i]),b.length);
  746.                 p='?';
  747.                 for(int j=0; j < b.length; j++){
  748.                     if((p!='\r')&&(b[j]=='\n')) os.write('\r');
  749.                     p=b[j]; os.write(p);
  750.                 }
  751.                 os.flush(); os.close();
  752.             }catch(IOException e){
  753.                 System.err.println(e.toString());
  754.             }
  755.         }
  756.     }
  757. }
  758.  
  759.  
  760. ▌≥ε≥ ∩≡ε±≥εΘ ΩεΣ ∩≡επ≡α∞∞√, Ωε≥ε≡α  ≈Φ≥ασ≥ ⌠αΘδ Φ τα∩Φ±√Γασ≥ σπε
  761. ß≤⌠σ≡ΦτεΓαφφε.
  762.  
  763. ╬≥Ωε∞∩ΦδΦ≡≤Θ≥σ "javac crlf.java" Φ τα∩≤±≥Φ≥σ ± ∩ε∞ε∙ⁿ■
  764. java crlf outfile.txt
  765. Φφα≈σ ∩≡ε±≥ε Φ±∩εδⁿτ≤Θ≥σ Wordpad Γ∞σ±≥ε ┴δεΩφε≥α. Wordpad ∞εµφε φαΘ≥Φ ≈σ≡στ
  766. ∞σφ■ ╧≤±Ω->╧≡επ≡α∞∞√->╤≥αφΣα≡≥φ√σ->WordPad
  767.  
  768. *(╫α±≥ⁿ 2) ╩αΩ ∞φσ ΦτßαΓΦ≥ⁿ±  ε≥ ±εεß∙σφΦ  "out of environment variable
  769. space"?
  770.  
  771. [*] ▌≥ε ±εεß∙σφΦσ ∞εµσ≥ ∩ε ΓΦ≥ⁿ±  ∩εΣ Windows, ΩεπΣα ┬√ Φ±∩εδⁿτ≤σ≥σ ΣδΦφφ√σ
  772. CLASSPATH Φ∞σφα. ┬α∞ φσεß⌡εΣΦ∞ε ≤ΓσδΦ≈Φ≥ⁿ ∩≡ε±≥≡αφ±≥Γε ∩σ≡σ∞σφφ√⌡ ±≡σΣ√. ┬
  773. Windows 95,8 ΣεßαΓⁿ≥σ Γ ±ΓεΘ c:\windows\system.ini ⌠αΘδ ±δσΣ≤∙Φσ ±≥≡εΩΦ:
  774.  
  775.         [NonWindowsApp]
  776.         CommandEnvSize=4096
  777.  
  778.  
  779. ┬ NT ∙σδΩφΦ≥σ ∩≡αΓεΘ Ωφε∩ΩεΘ φα "╠εσ∞ ╩ε∞∩ⁿ■≥σ≡σ", Γ√ßσ≡Φ≥σ "╤ΓεΘ±≥Γα" Φ φα
  780. ταΩδαΣΩσ "╧σ≡σ∞σφφ√σ ±≡σΣ√" ≤ΓσδΦ≈≥σ τφα≈σφΦσ COMSPEC Σε φσεß⌡εΣΦ∞εΘ
  781. ΓσδΦ≈Φφ√.
  782.  
  783. ┬ pστ≤δⁿ≥α≥σ Γ ┬α°σ∞ config.sys ∩ε ΓΦ≥ⁿ±  ≈≥ε-≥ε ≥Φ∩α ²≥επε:
  784.  
  785.         shell=command /e:4096
  786.  
  787.  
  788.                        ------------------------------
  789.  
  790. 3. ╬ß∙α  Φφ⌠ε≡∞α÷Φ 
  791.  
  792.   1. (╫α±≥ⁿ 3) ▀Γδ σ≥±  δΦ Java "╬≥Ω≡√≥εΘ" ΦδΦ "╟αΩ≡√≥εΘ"?
  793.  
  794.      [*] ╤∩σ÷Φ⌠ΦΩα÷ΦΦ Java αß±εδ■≥φε ε≥Ω≡√≥√, Φ δ■ßεΘ ≈σδεΓσΩ ∞εµσ≥
  795.      ≡σαδΦτεΓα≥ⁿ "≈Φ±≥≤■" JVM Φ  Σ≡ε Java API. Sun ΓΩδ■≈ασ≥ Γ ΩφΦπΦ
  796.      Addison-Wesley, ±εΣσ≡µα∙Φσ ±∩σ÷Φ⌠ΦΩα÷ΦΦ Java, ßσ±±≡ε≈φ≤■,
  797.      φσ∩≡σ≡√Γασ∞≤■, ßσ±∩δα≥φ≤■ δΦ÷σφτΦ■.
  798.  
  799.      Sun ≥αΩµσ εßσ±∩σ≈ΦΓασ≥ ±ΓεßεΣφ√Θ Σε±≥≤∩ Ω Φ±⌡εΣφ√∞ ΩεΣα∞ Java.
  800.      ╤∞ε≥≡Φ≥σ http://java.sun.com/communitysource/
  801.  
  802.      ╚±∩εδⁿτεΓαφΦσ ≥ε≡πεΓεΘ ∞α≡ΩΦ Java φσ ≥≡σß≤σ≥ δΦ÷σφτΦ≡εΓαφΦ  ε≥ Sun.
  803.  
  804.      ╬≥φε±Φ≥σδⁿφα  ε≥Ω≡√≥ε±≥ⁿ Java ≡στΩε Γ√Σσδ σ≥±  φα ⌠εφσ ±Φ±≥σ∞, Ωε≥ε≡√σ
  805.      Σε±≥≤∩φ√ ≥εδⁿΩε ε≥ εΣφεπε ∩ε±≥αΓ∙ΦΩα, ≈ⁿΦ Φφ≥σ≡⌠σΘ±√ φα∩Φ±αφ√ Γ
  806.      α≥∞ε±⌠σ≡σ ±σΩ≡σ≥φε±≥Φ, ταΩ≡√≥εΘ Σδ  ≤≈α±≥Φ , ≈ⁿΦ ΓδαΣσδⁿ÷√ φσ
  807.      Σε∩≤±Ωα■≥ ΩεφΩ≤≡σφ÷ΦΦ ∞σµΣ≤ ≡σαδΦτα÷Φ ∞Φ εΣφεπε Φ ≥επε µσ API,
  808.      ≡α±±∞α≥≡ΦΓα  Φτ∞σφσφΦ  API ΩαΩ ±≥≡α≥σπΦ≈σ±Ωεσ ε≡≤µΦσ ∩≡ε≥ΦΓ
  809.      ΩεφΩ≤≡σφ≥εΓ. ╬ß√≈φε ≥αΩΦσ ±Φ±≥σ∞√ ⌡α≡αΩ≥σ≡Φτ≤■≥± , ΩαΩ Φ∞σ■∙Φσ
  810.      "δΦ≈φ√Θ"(ταΩ≡√≥√Θ) API, Ωε≥ε≡εσ ∩≤ßδΦΩ≤σ≥±  ∩ετΣφσσ ΦδΦ φσ ∩≤ßδΦΩ≤σ≥± 
  811.      ΓεΓ±σ, ∩ετΓεδ   σΣΦφ±≥Γσφφε∞≤ ∩ε±≥αΓ∙ΦΩ≤ Σε±≥Φ≈ⁿ ∩≡σΦ∞≤∙σ±≥Γα Σδ 
  812.      ε±≥αδⁿφ√⌡ ±ΓεΦ⌡ ∩≡εΣ≤Ω≥εΓ. ╩αΩ ∩≡αΓΦδε, ≥αΩΦσ ταΩ≡√≥√σ, "≈α±≥φ√σ"
  813.      ±Φ±≥σ∞√ φσ ∩≡σΣε±≥αΓδ ■≥ ±ΓεΦ⌡ Φ±⌡εΣφ√⌡ ΩεΣεΓ.
  814.  
  815.   2. (╫α±≥ⁿ 3) ╩≤Σα φα∩≡αΓΦ≥ⁿ Ωεπε-φΦß≤Σⁿ, ταΣα■∙σπε Γε∩≡ε±, ε≥Γσ≥ φα
  816.      Ωε≥ε≡√Θ σ±≥ⁿ Γ Σαφφε∞ FAQ?
  817.  
  818.      [*] FAQ Σδ  ∩≡επ≡α∞∞Φ±≥εΓ Java ∞εµφε φαΘ≥Φ φα http://www.afu.com, πΣσ
  819.      Γ ±σΩ÷ΦΦ ╒.⌡ ∞εµφε φαΘ≥Φ ε≥Γσ≥ φα ┬α° Γε∩≡ε±...
  820.  
  821.      ╥α∞ ∞εµφε φαΘ≥Φ ε≥Γσ≥ φα Bα° Γε∩≡ε± Φ ≤ΓΦΣσ≥ⁿ, Ω≤Σα εß≡α∙α≥ⁿ±  ∩≡Φ
  822.      ß≤Σ≤∙Φ⌡ Γε∩≡ε±α⌡. ╧≡Φ ²≥ε∞, ∩εß√ΓαΓ εΣΦφ ≡ατ, ┬√ φαΓσ≡φ Ωα ∩≡ΦΣσ≥σ Φ
  823.      σ∙σ ≡ατ. ╤≈Φ≥ασ≥±  ²δσ∞σφ≥α≡φεΘ ΓσµδΦΓε±≥ⁿ■ ∩σ≡σΣ ∩ε±√δΩεΘ δ■ß√⌡
  824.      Γε∩≡ε±εΓ Γ π≡≤∩∩≤ φεΓε±≥σΘ ∩ε±∞ε≥≡σ≥ⁿ FAQ - ┬α° Γε∩≡ε± ∞εµσ≥ ß√≥ⁿ ≥α∞
  825.      ε∩Φ±αφ.
  826.  
  827.      ┬ εß∙σ∞ FAQ Σδ  δ■ßεΘ π≡≤∩∩√ φεΓε±≥σΘ ∞εµφε φαΘ≥Φ, ∩≡ε±∞α≥≡ΦΓα  ∩ε≥εΩ
  828.      ±εεß∙σφΦΘ, ∞εµφε ≥αΩµσ ∩εΦ±Ωα≥ⁿ ≈σ≡στ Deja News (╤∞ε≥pΦ≥σ Γε∩pε± 1.4),
  829.      ΦδΦ ≈σpστ αφεφΦ∞φ√Θ FTP φα ftp://rtfm.mit.edu. ╧≤≥ⁿ Σεδµσφ Γ√πΣ Σσ≥ⁿ
  830.      ≥αΩ :
  831.      /pub/usenet-by-group/comp.lang.java.programmer/Java_Programmers_FAQ,
  832.      ≈≥ε ∞εµσ≥ ∩≡ΦΓσ±≥Φ Ω Φ±Ωε∞ε∞≤ φα∩≡ ∞≤■, ≥αΩ ΩαΩ ∩≡ε÷σ±± Σε±≥≤∩α Γ
  833.      ≤Ωαταφφ√σ ΣΦ≡σΩ≥ε≡ΦΦ ταΘ∞σ≥ φσΩε≥ε≡εσ Γ≡σ∞ . ╩≡ε∞σ ≥επε, ┬√ ∞εµσ≥σ
  834.      ∩≡ε±∞ε≥≡σ≥ⁿ Φ∞σφα π≡≤∩∩ φεΓε±≥σΘ φα ≥ε∞ µσ ftp ±αΘ≥σ Γ ΣΦpσΩ≥εpΦΦ
  835.      /pub/usenet-by-hierarchy/. ╥α∞ σ±≥ⁿ ΣΦpσΩ≥εpΦΦ ≥αΩΦσ, ΩαΩ alt/, ba/,
  836.      ca/, comp/, Φ ∩εΣΣΦpσΩ≥εpΦΦ Γ φΦ⌡, φα∩pΦ∞σp, Φ ≥.∩. ▌≥ε ∩ε∞εµσ≥ ┬α∞
  837.      Φ±±δσΣεΓα≥ⁿ ∞Φ≡ φεΓε±≥φ√⌡ π≡≤∩∩ ± ∩ε∞ε∙ⁿ■ FAQ.
  838.  
  839.      ┼±δΦ ≤ ┬α± φσ≥ αφεφΦ∞φεπε Σε±≥≤∩α FTP, ≥ε ∞εµφε ≥αΩµσ ∩εδ≤≈Φ≥ⁿ Σε±≥≤∩
  840.      Ω α≡⌡Φ┬α∞ rtfm.mit.edu ≈σ≡στ mail-±σ≡Γσ≡. ╧ε°δΦ≥σ ∩ε E-mail ±εεß∙σφΦσ
  841.      Ω mail-server@rtfm.mit.edu ±ε ±δεΓε∞ "help" Γ ≥σδσ ±εεß∙σφΦ  Σδ 
  842.      ∩εδ≤≈σφΦ  ßεδσσ ∩εΣ≡εßφεΘ Φφ⌠ε≡∞α÷ΦΦ.
  843.  
  844.      ┼±δΦ ┬√ ⌡ε≥Φ≥σ ∩ε±∞ε≥≡σ≥ⁿ ε∩≡σΣσδσφΦ  ≥αΩΦ⌡ Internet ±≥αφΣα≡≥εΓ ΩαΩ
  845.      FTP, telnet, ∩ε±σ≥Φ≥σ ±αΘ≥ IETF ∩ε αΣ≡σ±≤ http://www.ietf.org, πΣσ
  846.      ∞εµφε φαΘ≥Φ Γ±σ RFC (τα∩≡ε±√ φα Ωε∞σφ≥α≡ΦΦ).
  847.  
  848.   3. (╫α±≥ⁿ 3) ╫≥ε Σσδα≥ⁿ, σ±δΦ   φσ φα°σδ τΣσ±ⁿ ε≥Γσ≥α φα ±ΓεΘ Γε∩≡ε±?
  849.  
  850.      [*] ┬σ°α≥ⁿ± . ╬Σφετφα≈φε! :-)
  851.  
  852.      ╟αΘΣΦ≥σ φα http://www.dejanews.com/home_ps.shtml
  853.  
  854.    * ┬ "Newsgroups" Γ√ßσ≡Φ≥σ "comp.lang.java.programmer" (ΦδΦ δ■ß≤■
  855.      Σ≡≤π≤■).
  856.    * ┬ ∩εδσ "Subject" φαΘΣΦ≥σ "Frotteur" (ΦδΦ δ■ß≤■ Σ≡≤π≤■ Φφ≥σ≡σ±≤■∙≤■ Γα±
  857.      ≥σ∞≤).
  858.    * ┬√ßσ≡Φ≥σ "Create Filter"
  859.    * ╬≥Ω≡εσ≥±  φεΓ√Θ ΣεΩ≤∞σφ≥, Γ Ωε≥ε≡ε∞ ±δσΣ≤σ≥ Γ√ß≡α≥ⁿ ±±√δΩ≤
  860.  
  861.      nnn Documents (πΣσ nnn - φσΩεσ ≈Φ±δε).
  862.  
  863. ┬∩εδφσ Γετ∞εµφε, ≈≥ε Γ√ φαΘΣσ≥σ φσ±ΩεδⁿΩε ε≥Γσ≥εΓ φα Γα° Γε∩≡ε±. ╫α±≥ⁿ Φτ
  864. φΦ⌡ ∞εµσ≥ εΩατα≥ⁿ±  φσ∩εδφ√∞Φ, α φσΩε≥ε≡√σ Φ ΓεΓ±σ φσΓσ≡φ√∞Φ. ╫≥ε ∩εΣσδα≥ⁿ,
  865. ²≥ε ταδεµσφε Γ ∩≡Φ≡εΣσ Usenet Φ ßσ±∩δα≥φεΘ Φφ⌠ε≡∞α÷ΦΦ Γεεß∙σ. ┼±δΦ Γ√ φσ
  866. φα°δΦ Φφ≥σ≡σ±≤■∙σπε Γα± ε≥Γσ≥α - ∩ε°δΦ≥σ ±ΓεΘ Γε∩≡ε± Γ φαΦßεδσσ ∩εΣ⌡εΣ ∙≤■
  867. φⁿ■±π≡≤∩∩≤. Hσ τα±ε≡ Θ≥σ φⁿ■±π≡≤∩∩√ Ω≡ε±±∩ε±≥Φφπε∞. ╟φα≥εΩΦ φσΣεδ■ßδΦΓα■≥
  868. ≥αΩεΘ ±≥Φδⁿ ∩εΓσΣσφΦ  Φ, ±Ωε≡σσ Γ±σπε, ∩≡εΦπφε≡Φ≡≤■≥ ταΣαφφ√Θ ≥αΩΦ∞ εß≡ατε∞
  869. Γε∩≡ε±.
  870.  
  871. ─δ  ∩εΦ±Ωα Γ φⁿ■±α⌡ ≡σΩε∞σφΣ≤σ≥±  ≥αΩµσ ταπδ φ≤≥ⁿ ∩ε ±δσΣ≤■∙Φ∞ ±±√δΩα∞:
  872. http://sunsite.unc.edu/java/cgi-bin/query
  873. Φ http://asknpac.npac.syr.edu/
  874.  
  875. ╟Σσ±ⁿ ∞εµφε ∩≡εΓσ±≥Φ ∩εΦ±Ω ∩ε ∩≤ßδΦΩα÷Φ ∞ Φφ⌠ε±σ≡Γσ≡α Javaworld:
  876. http://www.javaworld.com/search.html
  877.  
  878. *(╫α±≥ⁿ 3) ╤≤∙σ±≥Γ≤■≥ δΦ ±∩Φ±ΩΦ ≡α±±√δεΩ Φφ⌠ε≡∞α÷ΦΦ ∩ε Java?
  879.  
  880. [*] ─ε±≥α≥ε≈φε ∩εδφ√Θ Φ⌡ ∩σ≡σ≈σφⁿ ∞εµφε φαΘ≥Φ τΣσ±ⁿ:
  881.  
  882. http://java.miningco.com/msub7.htm
  883.  
  884. *(╫α±≥ⁿ 3) ├Σσ ∞εµφε φαΘ≥Φ εΩεφ≈α≥σδⁿφ√σ ±∩σ÷Φ⌠ΦΩα÷ΦΦ Java Language?
  885.  
  886. [*] ┬ εß∙σ∞ ±δ≤≈ασ φα http://java.sun.com.
  887.  
  888. ┬ ≈α±≥φε±≥Φ:
  889.  
  890.      http://java.sun.com/docs/books/jls/html/index.html (Java 1.0)...
  891.  
  892. ...ε∩Φ±αφΦσ Γφ≤≥≡σφφΦ⌡ Ωδα±±εΓ Java 1.1:
  893.  
  894.      http://java.sun.com/products/jdk/1.1/docs/guide/innerclasses/spec/innercla
  895. sses.doc.html
  896.  
  897. ...εßφεΓδσφΦ  Java 1.1:
  898.  
  899.      http://java.sun.com/docs/books/jls/html/1.1Update.html
  900.  
  901. ...Java API:
  902.  
  903.      http://java.sun.com/products/jdk/1.1/docs/api
  904.  
  905. ▌≥Φ ∞α≥σ≡Φαδ√ ≥αΩµσ Σε±≥≤∩φ√ Γ ΓΦΣσ ΩφΦπ (τα ∩εΣ≡εßφε±≥ ∞Φ εß≡α∙αΘ≥σ±ⁿ φα
  906. Γσß-±σ≡Γσ≡). ╥αΩµσ ≡σΩε∞σφΣ≤σ∞ ∩ε±∞ε≥≡σ≥ⁿ "╨ατ· ±φσφΦ  Φ ─ε∩εδφσφΦ "
  907. ("Clarifications and Amendments"):
  908. http://java.sun.com/docs/books/jls/clarify.html.
  909.  
  910. ╤∩σ÷Φ⌠ΦΩα÷ΦΦ ΓΦ≡≥≤αδⁿφεΘ ∞α°Φφ√ ∞εµφε φαΘ≥Φ φα:
  911. http://docs.sun.com:80/ab2/coll.127.1/@Ab2CollToc?subject=java
  912.  
  913. *├Σσ   ∞επ≤ φαΘ≥Φ Φφ⌠ε≡∞α÷Φ■ ε ∩≡εσΩ≥Φ≡≤■∙Φ⌡±  Java API?
  914.  
  915. [*] JavaSoft ∩≡ΦΣσ≡µΦΓασ≥±  ∩εδΦ≥ΦΩΦ ±ετΣαφΦ  API ±εΓ∞σ±≥φε ± δΦΣσ≡α∞Φ
  916. ≡ατ≡αßε≥εΩ Γ εßδα±≥Φ Java, ± ∩ε±δσΣ≤■∙σΘ ∩≤ßδΦΩα÷ΦσΘ ≈σ≡φεΓ√⌡ ±∩σ÷Φ⌠ΦΩα÷ΦΘ
  917. Σδ  εß∙σπε ≡α±±∞ε≥≡σφΦ  Φ εß±≤µΣσφΦ . ╧δαφ√ JavaSoft φα±≈σ≥ φεΓ√⌡ API Φ∙Φ≥σ
  918. φα: http://java.sun.com:80/products/api-overview/index.html
  919. APIs φα⌡εΣ ∙Φσ±  ∩εΣ ≡α±±∞ε≥≡σφΦσ∞ Σδ  ΓΩδ■≈σφΦ  Γ JDK 1.2 φα⌡εΣ ≥±  φα:
  920.  
  921.      http://java.sun.com/products/jdk/preview/docs/
  922.  
  923. *(╫α±≥ⁿ 3)─αΓφε Φ ßστ≤±∩σ°φε ≡ατ√±ΩΦΓα■ "Naming Conventions" Γ ±≥Φδσ Java.
  924.  
  925. [*] ╧ε±∞ε≥≡Φ≥σ ±σΩ÷Φ■ "Naming Conventions" Γ ±∩σ÷Φ⌠ΦΩα÷ΦΦ  τ√Ωα:
  926.  
  927.      http://java.sun.com/docs/books/jls/html/6.doc.html#11186
  928.  
  929. ╥αΩµσ πδ φⁿ≥σ φα ≈σ≡φεΓεΘ Γα≡Φαφ≥ ±≥αφΣα≡≥α ΩεΣΦ≡εΓαφΦ  φα Java (αΓ≥ε≡ -
  930. Doug Lea):
  931.  
  932.      http://gee.cs.oswego.edu/dl/html/javaCodingStd.html
  933.  
  934. ╥αΩµσ ±≥εΦ≥ ∩ε±∞ε≥≡σ≥ⁿ ±σΩ÷Φ■ naming conventions Σαφφεπε FAQ'α.
  935.  
  936. *(╫α±≥ⁿ 3)├Σσ ß√ ∩ε±∞ε≥≡σ≥ⁿ ±∩Φ±εΩ ε°ΦßεΩ, φαΘΣσφφ√⌡ Γ JDK?
  937.  
  938. [*] Hα Java Developer Connection http://java.sun.com/jdc ∩σ≡σ≈Φ±δσφ√ Γ±σ
  939. ΦτΓσ±≥φ√σ Sun ε°ΦßΩΦ Γ Java, τα Φ±Ωδ■≈σφΦσ∞ ε°ΦßεΩ Γ ±Φ±≥σ∞σ ßστε∩α±φε±≥Φ.
  940. Hα ε≥Ω≡√≥≤■ ∩≤ßδΦΩα÷Φ■ ε°ΦßεΩ Γ ±Φ±≥σ∞σ ßστε∩α±φε±≥Φ φαδεµΦδ Γσ≥ε ╤αφεΓ±ΩΦΘ
  941. legal department. ┼±δΦ Γ√ φσ εßφα≡≤µΦδΦ ±ΓεσΘ ε°ΦßΩΦ Γ ±∩Φ±Ωσ - ∞εµφε
  942. ∩ε±δα≥ⁿ ≡α∩ε≡≥ εß ε°ΦßΩσ ≈σ≡στ http://java.sun.com:80/cgi-bin/bugreport.cgi
  943.  
  944. ╬ß τα≥σδⁿφε ∩≡εΓσ≡ⁿ≥σ, φσ≥ δΦ Γ ±∩Φ±Ωσ Γα°σΘ ε°ΦßΩΦ: Γε-∩σ≡Γ√⌡, ≥α∞ µσ
  945. ∞εµσ≥ ß√≥ⁿ ε∩≤ßδΦΩεΓαφε ≡σ°σφΦσ ∩≡εßδσ∞√ Φ, Γε-Γ≥ε≡√⌡, φσ Φ ßστ ≥επε
  946. ταφ ≥√⌡ δ■ΣσΘ ±εεß∙σφΦ ∞Φ εß ≤µσ ΦτΓσ±≥φ√⌡ ε°ΦßΩα⌡.
  947.  
  948. ╥α∞ µσ ∞εµφε ±ε±≥αΓΦ≥ⁿ RFE (Request For Enhancement - τα∩≡ε± φα ≤δ≤≈°σφΦσ)
  949. ΦδΦ ∩εΣφ ≥ⁿ Γε∩≡ε± εß ≤Σεß±≥Γσ Φ±∩εδⁿτεΓαφΦ  ΩαΩεΘ-δΦßε Γετ∞εµφε±≥Φ.
  950. ┬ετ∞εµφε Σαµσ ∩≡επεδε±εΓα≥ⁿ τα ±∞σφ≤ ∩≡Φε≡Φ≥σ≥α φα Φ±∩≡αΓδσφΦσ ΩεφΩ≡σ≥φεΘ
  951. ε°ΦßΩΦ. ╟α≡σπΦ±≥≡Φ≡≤Θ≥σ±ⁿ φα Java Developer Connection (⌡αδ Γα, ±²≡):
  952. http://java.sun.com/jdc. ╟α≥σ∞ ±≥≤∩αΘ≥σ φα
  953. http://developer.javasoft.com/developer/bugParade/#votes
  954.  
  955. *(╫α±≥ⁿ 3)─δ  ΩαΩΦ⌡ Ωε∞∩·■≥σ≡εΓ σ±≥ⁿ ≡σαδΦτα÷ΦΦ Java? ╤≤∙σ±≥Γ≤σ≥ δΦ Java
  956. Σδ  Win3.1?
  957.  
  958. [*] Hσ∩εδφ√Θ ±∩Φ±εΩ ≡σαδΦτα÷ΦΘ JDK ∞εµφε φαΘ≥Φ φα
  959. http://java.sun.com/cgi-bin/java-ports.cgi
  960. ╤∩Φ±εΩ ±Φ±≥σ∞ (Γσ±ⁿ∞α Γ∩σ≈α≥δ ■∙ΦΘ), φα Ωε≥ε≡√⌡ ≡αßε≥ασ≥ GPL Kaffee JVM
  961. Σε±≥≤∩σφ φα http://www.transvirtual.com/ports.html
  962.  
  963. ╤≤∙σ±≥Γ≤σ≥ φσ±ΩεδⁿΩε ≡σαδΦτα÷ΦΘ Java ∩εΣ Win3.1. IBM'εΓ±ΩΦΘ ADK1.02 ∞εµφε
  964. ∩εΦ±Ωα≥ⁿ ∩ε ±δσΣ≤■∙Φ∞ ±±√δΩα∞:
  965.  
  966.    * http://ncc.hursley.ibm.com/javainfo/latest/answers/faq0.html
  967.    * http://www.alphaworks.ibm.com/formula
  968.  
  969. IBM, φα≡ Σ≤ ± Σ≡≤πΦ∞Φ, ≥αΩµσ ∩≡σΣδαπασ≥ ≡σαδΦτα÷Φ■ Java ∩εΣ Linux.
  970. IBM'εΓ±ΩΦΘ Jikes Φ∙Φ≥σ φα http://www.alphaworks.ibm.com/. Hα alphaworks,
  971. Γεεß∙σ πεΓε≡ , ∞εµφε φαΘ≥Φ φσ∞αδε ∩εδστφ√⌡ Γσ∙σΘ, profiler jinsight,
  972. φα∩≡Φ∞σ≡.
  973.  
  974. ╧εΣΣσ≡µΩ≤ Java Φ∞σσ≥ NetscapeNavigator ∩εΣ Win3.1. Java, εΣφαΩε, φΦΩεπΣα φσ
  975. ß≤Σσ≥ ⌡ε≡ε°ε ∩εΣΣσ≡µΦΓα≥ⁿ±  ∩εΣ Win3.1 Φτ-τα ε≥±≤≥±≥ΓΦ  Γ Win3.1
  976. ²δσ∞σφ≥α≡φ√⌡ Γσ∙σΘ, εµΦΣασ∞√⌡ ε≥ ±εΓ≡σ∞σφφεΘ ε∩σ≡α÷ΦεφφεΘ ±Φ±≥σ∞√ (Γ ∩σ≡Γ≤■
  977. ε≈σ≡σΣⁿ ΣδΦφφ√⌡ Φ∞σφ Φ ∩εΣΣσ≡µΩΦ ∞φεπε∩ε≥ε≈φε±≥Φ (multithreading)).
  978.  
  979. ╥αΩµσ πδ φⁿ≥σ φα JavaSoft'εΓ±ΩΦΘ φαßε≡ JavaPC, ∩≡σεß≡ατ≤■∙ΦΘ Γα° PC Γ
  980. ΩδΦσφ≥±Ω≤■ Java-±Φ±≥σ∞≤ (Φ, ∩ε µσδαφΦ■, φαταΣ Γ Win3.1/DOS). ╬φ
  981. ∩≡σΣφατφα≈σφ Σδ  ∩≡επ≡α∞∞φ√⌡ OEM'εΓ Φ ßεδⁿ°Φ⌡ Ωε≡∩ε≡α÷ΦΘ, Φ±∩εδⁿτ≤■∙Φ⌡
  982. ßεδⁿ°εσ ΩεδΦ≈σ±≥Γε ±≥α≡√⌡ Ωε∞∩·■≥σ≡εΓ, φε Γ√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ σπε Φ φα
  983. ≡α±∩ε±δσΣφΦ⌡ ∞εΣσδ ⌡ Pentium III:
  984. http://java.sun.com/products/javapc/index.html. JavaPC ∩≡εΣαΓασ∞α  τα $100,
  985. ≥≡σß≤σ≥ Σδ  ≡αßε≥√ 486'≤■ ± 8MB Φ ∞ε∙φσσ. ┬ ε≥δΦ≈ΦΦ ε≥ 16-ßΦ≥φ√⌡ Γσ≡±ΦΘ
  986. NetscapeNavigator'α Φ Microsoft'εΓ±Ωεπε InternetExplorer'α, ∩≡σΣε±≥αΓδ ■∙Φ⌡
  987. JVM ±εΓ∞σ±≥Φ∞≤■ ≥εδⁿΩε ± JDK API 1.0.2, JavaPC ∩≡σΣε±≥αΓδ σ≥ Γετ∞εµφε±≥ⁿ
  988. Φ±∩εδⁿτεΓα≥ⁿ ∩≡επ≡α∞∞√, φα∩Φ±αφφ√σ ± Φ±∩εδⁿτεΓαφΦσ∞ JDK API 1.1, φα
  989. Ωε∞∩·■≥σ≡α⌡ ∩εΣ ≤∩≡αΓδσφΦσ∞ DOS Φ Windows3.x.
  990.  
  991. *(╫α±≥ⁿ 3) ├Σσ ∞εµφε φαΘ≥Φ Φφ⌠ε≡∞α÷Φ■ ∩ε Java3D?
  992.  
  993. * Java 3D FAQ, ≡α±∩εδεµσφφ√Θ φα
  994. http://tintoy.ncsa.uiuc.edu/~srp/java3d/faq.html, ±Ωε≡σσ Γ±σπε ε≥Γσ≥Φ≥ φα
  995. Φφ≥σ≡σ±≤■∙Φσ Γα± Γε∩≡ε±√. Hα≡ Σ≤ ± εß∙σΘ Φφ⌠ε≡∞α÷ΦσΘ ∩ε Java3D εφ ±εΣσ≡µΦ≥
  996. Φ ±εΓσ≥√ ∩ε ∩≡επ≡α∞∞Φ≡εΓαφΦ■ ± Φ±∩εδⁿτεΓαφΦσ∞ ²≥επε API.
  997.  
  998. *(╫α±≥ⁿ 3) ╫≥ε ≥αΩεσ "├≡≤∩∩√ ╧εδⁿτεΓα≥σδσΘ Java"?
  999.  
  1000. [*] ╤≤∙σ±≥Γ≤σ≥ ßεδⁿ°εσ ΩεδΦ≈σ±≥Γε π≡≤∩∩ ∩εδⁿτεΓα≥σδσΘ Java (Java User Group
  1001. - JUG) ∩ε Γ±σ ∞≤ ∞Φ≡≤, ΩαΩ ∩≡αΓΦδε Γ πε≡εΣα⌡ Φ Γ ÷σφ≥≡α⌡ ≡ατ≡αßε≥ΩΦ
  1002. ≥σ⌡φεδεπΦΘ ∩≡επ≡α∞∞φεπε εßσ±∩σ≈σφΦ . ╫α±≥Φ≈φ√Θ ±∩Φ±εΩ ± Ωεε≡ΣΦφα≥α∞Φ ∞εµσ≥
  1003. ß√≥ⁿ φαΘΣσφ φα http://sunsite.unc.edu/javafaq/usergroups.html.
  1004.  
  1005. ┼±δΦ ┬√ φσ ∞εµσ≥σ φαΘ≥Φ JUG φα ∞σ±≥σ ∩≡εµΦΓαφΦ /≤≈σß√, ┬√ ∞εµσ≥σ ±ετΣα≥ⁿ σσ
  1006. ±α∞Φ - ²≥ε ∩≡ε±≥ε Φ Γ∩εδφσ ∩≡Φσ∞δΦ∞ε.
  1007.  
  1008. *(╫α±≥ⁿ 3) ╫≥ε ≥αΩεσ Java Bean (Σε±δεΓφε - τσpφα Java)?
  1009.  
  1010. [*] Java Bean - ²≥ε Java Ωδα±±, Ωε≥ε≡√Θ ≤ΣεΓδσ≥Γε≡ σ≥ φσΩε≥ε≡√∞ ∩≡ε±≥√∞
  1011. ≤±δεΓΦ ∞. ╥αΩ, ΩαΩ εφ ≤ΣεΓδσ≥Γε≡ σ≥ ≤±δεΓΦ ∞, εφ ∞εµσ≥ ß√≥ⁿ δσπΩε εß≡αßε≥αφ
  1012. ≤≥ΦδΦ≥α∞Φ, ±εσΣΦφ ■∙Φ∞Φ ╟σ≡φα Γ∞σ±≥σ Γε Γ≡σ∞  Φ±∩εδφσφΦ . Java Beans -
  1013. ∞φεπεΩ≡α≥φε Φ±∩εδⁿτ≤σ∞√σ Ωε∞∩εφσφ≥√ ∩≡επ≡α∞∞.
  1014.  
  1015. ─≤∞αΘ≥σ ∩≡ε Java Beans Γ ∩≡επ≡α∞∞α⌡, ΩαΩ ∩≡ε Ω≤ßΦΩΦ Γ Lego. ┬∞σ±≥ε
  1016. ±ΩδαΣ√ΓαφΦ  Γ∞σ±≥σ Ω≤ßΦΩεΓ, ┬√ ∞εµσ≥σ δσπΩε ±δεµΦ≥ⁿ Γ∞σ±≥σ Ωδα±±√ Φ εφΦ
  1017. ß≤Σ≤≥ ∩εΣ⌡εΣΦ≥ⁿ Φ ≡αßε≥α≥ⁿ ± Σ≡≤π-Σ≡≤πε∞. ╤∞. http://www.jc100.org/.
  1018. ╤∞ Java Beans FAQ φα http://java.sun.com/beans/faq/faq.general.html.
  1019.  
  1020. *(╫α±≥ⁿ 3) ├Σσ   ∞επ≤ φαΘ≥Φ ∩≡Φ∞σ≡√ Φ±∩εδⁿτεΓαφΦ  ßΦßδΦε≥σΩΦ Ωδα±±εΓ Java?
  1021.  
  1022. [*] ╒ε≡ε°Φσ ∩≡Φ∞σ≡√, ΩαΩ Φ±∩εδⁿτεΓα≥ⁿ ±≥αφΣα≡≥φ√σ ßΦßδΦε≥σΩΦ σ±≥ⁿ Γ
  1023. ΣΓ≤⌡≥ε∞φΦΩσ "┴ΦßδΦε≥σΩΦ Ωδα±±εΓ Java" φα∩Φ±αφφ√σ ╫σφ, ╦Φ, ╩≡α∞α Φ
  1024. ε∩≤ßδΦΩεΓαφ√σ Addison Wesley. ╬ΣΦφ ∩≡επ≡α∞∞Φ±≥ ∩≡εΩε∞σφ≥Φ≡εΓαδ: "╩επΣα ∞φσ
  1025. φσεß⌡εΣΦ∞ε Φ±∩εδⁿτεΓα≥ⁿ φστφαΩε∞√σ Γσ∙Φ Φτ ±≥αφΣα≡≥φεΘ ßΦßδΦε≥σΩΦ, ∩σ≡Γεσ,
  1026. ≈≥ε   Σσδα■, ²≥ε ≈Φ≥α■ Φ⌡ ∩≡Φ∞σ≡√." ╬φΦ Σε±≥≤∩φ√ Γ εφδαΘφσ φα
  1027. http://java.sun.com/docs/books/chanlee/second_edition/vol1/examples.html Φ
  1028. http://java.sun.com/docs/books/chanlee/second_edition/examples.html
  1029.  
  1030. *(╫α±≥ⁿ 3) ╩αΩ ∞φσ ≥ε≈φε ≤τφα≥ⁿ, ΩαΩα  Γσp±Φ  Java φα ∞εσΘ ±Φ±≥σ∞σ?
  1031.  
  1032. [*] Hα ±Φ±≥σ∞α⌡ ╤εδ ≡Φ± ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ Ωε∞∞αφΣ≤ pkginfo, φα∩≡Φ∞σ≡:
  1033.  
  1034.    pkginfo -l SUNWjvrt
  1035.  
  1036. Hα ≈≥ε εφα Σα±≥ ∩≡ΦßδΦτΦ≥σδⁿφε ≥αΩεΘ ε≥Γσ≥:
  1037.  
  1038.    PKGINST:  SUNWjvrt
  1039.       NAME:  JavaVM run time environment
  1040.   CATEGORY:  system
  1041.       ARCH:  sparc
  1042.    VERSION:  1.1.6,REV=1998.07.30.16.21
  1043.    BASEDIR:  /
  1044.     VENDOR:  Sun Microsystems, Inc.
  1045.  ...Φ ≥Σ
  1046.  
  1047. ╥αΩµσ ∞εµφε ∩ε∩≡εßεΓα≥ⁿ
  1048.  
  1049.    java -fullversion
  1050.  
  1051. ⌡ε≥  ²≥ε Φ φσε⌠Φ÷Φαδⁿφε-∩εΣΣσ≡µΦΓασ∞α  Ωε∞∞αφΣα, Φ εφα Φ±≈στδα Γ JDK 1.2.
  1052. ╥αΩµσ ∩ε∩≡εß≤Θ≥σ
  1053.  
  1054.    java -version
  1055.  
  1056.                        ------------------------------
  1057.  
  1058. 4. ╩ε∞∩Φδ ≥εp√ Φ Γ±∩ε∞επα≥σδⁿφ√σ ∩pεπpα∞∞√
  1059.  
  1060.   1. (╫α±≥ⁿ 4) ╤≤∙σ±≥Γ≤■≥ δΦ Java-αφαδεπΦ lex'a Φ yacc'a ΦδΦ µσδα≥σδⁿφε
  1061.      flex'α Φ bison'α?
  1062.  
  1063.      [*] ╤≤∙σ±≥Γ≤σ≥ αφαδεπ lex'α φατ√Γσ∞√Θ JavaLex Φ αφαδεπ yacc'α
  1064.      φατ√Γασ∞√Θ CUP.
  1065.  
  1066.      LALR(1) ∩αp±σp JavaLex Φ JavaCup:
  1067.      http://www.cs.princeton.edu/~appel/modern/java/
  1068.  
  1069.      LL(k) ∩αp±σp JavaCC: http://www.suntest.com/JavaCC/
  1070.      LALR(1) ∩αp±σp SableCC (αΓ≥εp - McGill U.)
  1071.      http://www.sable.mcgill.ca/sablecc/index.html, Φτφα≈αδⁿφε
  1072.      ±ετΣαΓαΓ°ΦΘ±  ∩εΣ δΦ÷σφτΦσΘ GNU.
  1073.  
  1074.   2. (╫α±≥ⁿ 4) ├Σσ   ∞επ≤ φαΘ≥Φ τα∩≤≥√Γα≥σδⁿ (obfuscator) ßαΘ≥ ΩεΣα?
  1075.  
  1076.      [*] ╟α∩≤≥√Γα≥σδΦ Java τα∞σφ ■≥ ε≡ΦπΦφαδⁿφ√σ Φ∞σφα Ωδα±±εΓ, ∩εδσΘ Φ
  1077.      ∞σ≥εΣεΓ Γ ßαΘ≥ΩεΣσ φα ßσ±±∞√±δσφφ√σ ±≥≡εΩΦ. Obfuscator'√ Γ≥ε≡επε
  1078.      ∩εΩεδσφΦ , ∩ε Γδ ■∙Φσ±  ±σΘ≈α±, ≥αΩµσ τα∩≤≥√Γα■≥ ∩ε≡ ΣεΩ Φ±∩εδφσφΦ  Φ
  1079.      ΩεΣΦ≡≤■≥ ±≥≡εΩεΓ√σ Ωεφ±≥αφ≥√. ╨ατ≡αßε≥≈ΦΩΦ Φ±∩εδⁿτ≤■≥ τα∩≤≥√Γα≥σδΦ φα
  1080.      ±ΓεΦ α∩∩δσ≥√, σ±δΦ εφΦ ⌡ε≥ ≥ ±Ω≡√≥ⁿ ±ΓεΘ ΩεΣ ε≥ Σ≡≤πΦ⌡. ╩αΩ ∩≡αΓΦδε,
  1081.      ┬√ φσ ß≤Σσ≥σ ²≥επε Σσδα≥ⁿ ± ∩≡επpα∞∞α∞Φ, Ωε≥ε≡√σ ┬√ Γ√ΩδαΣ√Γασ≥σ φα
  1082.      ┬α° Γσß-±αΘ≥ Σδ  Σ≡≤πΦ⌡. ▌≥ε ε≥≡Φ÷ασ≥ ⌠Φδε±ε⌠Φ■ "ε≥Ω≡√≥√⌡ Φ±⌡εΣφ√⌡
  1083.      ΩεΣεΓ", ∩ετΓεδ ■∙σΘ ┬α∞ ≤≈Φ≥ⁿ±  φα ≈≤µε∞ ΩεΣσ Φ ≤≈Φ≥ⁿ±  Σ≡≤πΦ∞ φα
  1084.      ┬α°σ∞.
  1085.  
  1086.      Zelix KlassMaster ²≥ε Ωε∞∞σ≡≈σ±ΩΦΘ τα∩≤≥√Γα≥σδⁿ. ╬φ Φ∞σσ≥ ±ΓεßεΣφε
  1087.      ≡α±∩≡ε±≥≡αφ σ∞≤■ Γσ≡±Φ■ φα http://www.zelix.com/klassmaster
  1088.      ─≡≤πεΘ Ωε∞∞σ≡≈σ±ΩΦΘ τα∩≤≥√Γα≥σδⁿ, ±ε ±ΓεßεΣφε ταπ≡≤µασ∞εΘ
  1089.      Φ±∩√≥α≥σδⁿφεΘ Γσ≡±ΦσΘ φα http://www.4thpass.com/SourceGuard. ╥αΩµσ, φα
  1090.      http://www.primenet.com/~ej/ Φ
  1091.      http://www.math.gatech.edu/~mladue/HoseMocha.java, σ±≥ⁿ ±ΓεßεΣφε
  1092.      ≡α±∩≡ε±≥≡αφ σ∞√σ ≡αßε≥√ ±≥≤Σσφ≥εΓ Φ Σp≤πΦ⌡ δ■ΣσΘ.
  1093.  
  1094.      ╤εεß∙αδΦ±ⁿ ∩≡εßδσ∞√ ∩≡Φ Φ⌡ Φ±∩εδⁿτεΓαφΦΦ ± JDK 1.1.
  1095.  
  1096.      ─αφφ√Θ τα∩≤≥√Γα≥σδⁿ ß√δ ∩εδφε±≥ⁿ■ εßφεΓδσφ Σδ  ∩εδφεΘ ±εΓ∞σ±≥Φ∞ε±≥Φ ±
  1097.      JDK 1.1: http://www.monmouth.com/~neil/Obfuscate.html
  1098.  
  1099.      ╟α∩≤≥√Γα≥σδΦ ∩≡σΣφατφα≈σφ√ Σδ  εß∞αφα ΣσΩε∞∩Φδ ≥ε≡εΓ. ─σΩε∞∩Φδ ≥ε≡√
  1100.      ∩σ≡σΓεΣ ≥ ßαΘ≥ ΩεΣ φαταΣ Γ Φ±⌡εΣφ√Θ ≥σΩ±≥ Java. Mocha ß√δ ∩σ≡Γ√∞ Φ
  1101.      φαΦßεδσσ ΦτΓσ±≥φ√∞ Φτ ΣσΩε∞∩Φδ ≥ε≡εΓ; εφ ≤µσ ßεδⁿ°σ φσ ∩εΣΣσ≡µΦΓασ≥± .
  1102.      Hα
  1103.           http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
  1104.      Γ√δεµσφ ΣσΩε∞∩Φδ ≥ε≡ (φα∩Φ±αφφ√Θ φα ╤++). ╥αΩ, ΩαΩ ²≥ε ╤++, σ±≥ⁿ
  1105.      ≡ατφ√σ Γσ≡±ΦΦ Σδ  ΩαµΣεΘ α≡⌡Φ≥σΩ≥≤≡√ (φ■-φ■!). ╥αΩµσ σ±≥ⁿ Ωε∞∞σ≡≈σ±ΩΦσ
  1106.      ∩≡εΣ≤Ω≥√, ≥αΩΦσ, ΩαΩ SourceAgain ±
  1107.           http://www.ahpah.com/
  1108.  
  1109.      http://www.meurrens.org/ip-Links/Java/codeEngineering/ - ε≈σφⁿ ⌡ε≡ε°√Θ
  1110.      FAQ ∩ε ≥σ∞α∞: ╧ε±≥≡εσφΦσ Java ╩εΣα (Java Code Engineering) Φ ╨σΓσ≡±φ√Θ
  1111.      └φαδΦτ (Reverse Engineering).
  1112.  
  1113.   3. (╫α±≥ⁿ 4) ╩αΩΦσ ∩≡επ≡α∞∞√ Φ±∩εδⁿτ≤■≥±  Σδ  ±ετΣαφΦ  .zip ⌠αΘδεΓ,
  1114.      ±εΓ∞σ±≥Φ∞√⌡ ± Java ∩≡επ≡α∞∞α∞Φ?
  1115.      (φα∩pΦ∞σp, classes.zip, moz3_0.zip)
  1116.  
  1117.      [*] ╚±∩εδⁿτ≤Θ≥σ ≤≥ΦδΦ≥≤ jar Φτ JDK 1.1(.1):
  1118.           jar [ ε∩÷ΦΦ ] [∞αφΦ⌠σ±≥] Φ≥επεΓ√Θ_⌠αΘδ Φ±⌡εΣφ√Θ_⌠αΘδ
  1119.           [Φ±⌡εΣφ√σ_⌠αΘδ√]
  1120.  
  1121.      Hα∩pΦ∞σp:
  1122.           jar cvf myJarFile.jar *.class
  1123.  
  1124.      ±ετΣα±≥ ±µα≥√Θ α≡⌡ΦΓ
  1125.           jar cvfO myJarFile.zip *.class
  1126.  
  1127.      ±ετΣασ≥ ∩εδφε≡ατ∞σ≡φ√Θ (φσ±µα≥√Θ) α≡⌡ΦΓ (τα∞σ≈αφΦσ: ε∩÷Φ  'O'
  1128.      φσεß⌡εΣΦ∞α Σδ  JDK1.0.2)
  1129.  
  1130.      Hα Unix'α⌡ ∞εµφε ≥αΩµσ Φ±∩εδⁿτεΓα≥ⁿ:
  1131.           zip -rn ".class" my_file.zip *
  1132.  
  1133.      ─ε∞α°φ   ±≥≡αφΦ÷α Info-ZIP: http://www.cdrom.com/pub/infozip/
  1134.      ╤ΓσµΦΘ Φ±⌡εΣφ√Θ ΩεΣ: ftp://ftp.uu.net/pub/archiving/zip/src/zip21.zip
  1135.  
  1136.      Hσ≥±ΩσΘ∩εΓ±Ωα  Γσ≡±Φ  ≤≥ΦδΦ≥√ Ωε∞∞αφΣφεΘ ±≥≡εΩΦ JAR Σδ  ≤∩αΩεΓΩΦ Φ
  1137.      ∩εΣ∩Φ±Φ φατ√Γασ≥±  "zigbert". ╬φΦ ≥αΩµσ Φ∞σ■≥ ≤≥ΦδΦ≥√ ± GUI,
  1138.      φα∩Φ±αφφ√σ φα Java. ─ε∩εδφΦ≥σδⁿφ≤■ Φφ⌠εp∞α÷Φ■ ∞εµφε ∩ε±∞ε≥pσ≥ⁿ τΣσ±ⁿ:
  1139.      http://developer.netscape.com/software/signedobj/jarpack.html
  1140.  
  1141.      ┼±δΦ ┬√ α≡⌡ΦΓΦ≡≤σ≥σ ⌠αΘδ√ .class Σδ  JDK 1.0.2 ± ∩ε∞ε∙ⁿ■ ZIP (Σδ  1.1
  1142.      φ≤µφε Φ±∩εδⁿτεΓα≥ⁿ Jar):
  1143.        1. α≡⌡ΦΓΦ≡≤Θ≥σ ┬α°Φ ⌠αΘδ√ ßστ Φ±∩εδⁿτεΓαφΦ  Ωε∞∩≡σ±±ΦΦ (∞εµφε
  1144.           Φ±∩εδⁿτεΓα≥ⁿ WinZip 6.2 Φ Γ√°σ);
  1145.                Ωε∞∞αφΣα Unix:
  1146.  
  1147.                zip -r0 classes.zip <directories>
  1148.  
  1149.        2. ╙ßσΣΦ≥σ±ⁿ, ≈≥ε πδαΓφ√Θ Ωδα±± Γ α≡⌡ΦΓσ Γ ΩεφσΓε∞ Ωα≥εδεπσ αp⌡ΦΓα.
  1150.           (Σ≡≤πΦ∞Φ ±δεΓα∞Φ, φσ ±ετΣαΓαΘ≥σ α≡⌡ΦΓ ± foo/bar/myMain.class,
  1151.           σ±δΦ, Ωεφσ≈φε, Ωδα±± myMain φσ φα⌡εΣΦ≥±  Γ ∩αΩσ≥σ ± Φ∞σφσ∞
  1152.           foo.bar. ╚φα≈σ εφ Σεδµσφ φατ√Γα≥±  ∩≡ε±≥ε myMain.class). ┬α°
  1153.           ∩αΩσ≥ Σεδµσφ φα⌡εΣΦ≥±  Γ α≡⌡ΦΓσ, Φ±∩εδⁿτ≤  ±εε≥Γσ≥±≥Γ≤■∙Φσ
  1154.           ⌠αΘδεΓεΘ ±Φ±≥σ∞σ ∩≤≥Φ.
  1155.        3. ╧ε∞σ±≥Φ≥σ αp⌡ΦΓ Γ Ωα≥αδεπ ± ┬α°σΘ .html ±≥pαφΦ≈ΩεΘ.
  1156.        4. Hα∩Φ°Φ≥σ φσ≈≥ε ∩εΣεßφεσ φΦµσ∩≡ΦΓσΣσφφε∞≤ ≥²π≤ Γ .html ±≥≡αφΦ÷σ:
  1157.  
  1158.           <APPLET CODEBASE="."
  1159.                   ARCHIVE=my_zip_file.zip,myOtherZip.zip,thirdfile.zip
  1160.                   CODE="my_main_class.class"
  1161.                   WIDTH=600 HEIGHT=250>
  1162.               </APPLET>
  1163.  
  1164.  
  1165.      Hα≈Φφα  ± JDK 1.1, ∩≡Φ∞σ≡ ≥²πα APPLET ± Φ±∩εδⁿτεΓαφΦσ∞ ⌠αΘδα Jar
  1166.      Γ√πδ ΣΦ≥ ±δσΣ≤■∙Φ∞ εß≡ατε∞:
  1167.  
  1168.      <APPLET ARCHIVE=myfile.jar
  1169.                      CODE=myapplet.class
  1170.                      WIDTH=600 HEIGHT=250>
  1171.              </APPLET>
  1172.  
  1173.  
  1174.      ▌≥Φ ±≥≡εΩΦ ß≤Σ≤≥ Φ±∩εδⁿτεΓα≥ⁿ α∩δσ≥ ∩εΣ φατΓαφΦσ∞ myapplet, Ωε≥ε≡√Θ
  1175.      φα⌡εΣΦ≥±  Γ ⌠αΘδσ myfile.jar. ╧≡Φ∞σ≡ ≥²πα APPLET ± Φ±∩εδⁿτεΓαφΦσ∞ jar
  1176.      ⌠αΘδα Σδ  ⌡≡αφΦσφΦ  ∩αΩσ≥εΓ Ωδα±±εΓ Γ√πδ ΣΦ≥ ≥αΩ:
  1177.  
  1178.      <APPLET ARCHIVE="myclasses.jar"
  1179.                      CODE="linden.net.MyApplet.class"
  1180.                      WIDTH=480
  1181.                      HEIGHT=120>
  1182.              </APPLET>
  1183.  
  1184.  
  1185.      ┬√ ∞εµσ≥σ ≤Ωατα≥ⁿ φσ±ΩεδⁿΩε Φ∞σφ jar ⌠αΘδεΓ ≈σ≡στ τα∩ ≥≤■. ╘ε≡∞α≥
  1186.      PKZIP Φ±∩εδⁿτεΓαφ Σδ  ∩≡σΣ±≥αΓδσφΦ  ⌠αΘδεΓ Jar'εΓ.
  1187.  
  1188. *(╫α±≥ⁿ 4) ╠επ≤ δΦ   ±Ωε∞∩ΦδΦ≡εΓα≥ⁿ ∩≡επ≡α∞∞≤ φα Java Γ ßΦφα≡φ√Θ
  1189. Φ±∩εδφ σ∞√Θ ⌠αΘδ, .exe, φα PC?
  1190.  
  1191. [*] ╩ε∞∩Φδ ÷Φ  Γ ±Φ±≥σ∞φεταΓΦ±Φ∞√Θ ΩεΣ φα≡≤°ασ≥ ∩σ≡σφε±Φ∞ε±≥ⁿ, Ωε≥ε≡α 
  1192.  Γδ σ≥±  εΣφΦ∞ Φτ πδαΓφ√⌡ ∩≡σΦ∞≤∙σ±≥Γ Java. ┼±δΦ ┬√ ⌡ε≥Φ≥σ ±ετΣα≥ⁿ
  1193. Φ±∩εδφ σ∞√Θ ΩεΣ Σδ  ≥επε, ≈≥εß√ ß√δε δσπ≈σ ≡α±∩≡ε±≥≡αφ ≥ⁿ Φ Φ±∩εδⁿτεΓα≥ⁿ
  1194. ∩≡επ≡α∞∞√, εß≡α≥Φ≥σ±ⁿ Γ∞σ±≥ε ≥αΩεπε ≡σ°σφΦ  Ω Jar.
  1195. HσΩε≥ε≡√σ Ωε∞∩αφΦΦ ∩≡εΦτΓεΣ ≥ ∩≡επ≡α∞∞φ√σ ∩≡εΣ≤Ω≥√ Σδ  ≥αΩεΘ Ωε∞∩Φδ ÷ΦΦ.
  1196. ╬ß≡α≥Φ≥σ±ⁿ φα ±≥≡αφΦ≈ΩΦ Symantec http://www.symantec.com, Supercede
  1197. http://www.supercede.com, Φ Tower Technology http://www.twr.com. ─Γσ ∩σ≡Γ√σ
  1198. ε≡Φσφ≥Φ≡εΓαφ√ φα Windows. Tower Technology ∩εΣΣσ≡µΦΓασ≥ φσ±ΩεδⁿΩε ΩδεφεΓ
  1199. Unix.
  1200.  
  1201. ╥αΩµσ σ±≥ⁿ ±εε≥Γσ≥±≥Γ≤■∙ΦΘ Ωε∞∩Φδ ≥ε≡, ≥αΩ φατ√Γασ∞√Θ native Java compiler,
  1202. ε≥ ⌠Φ≡∞√ IBM, ΦτΓσ±≥φ√Θ ΩαΩ HPJ (High Performance Java -
  1203. Γ√±εΩε∩≡εΦτΓεΣΦ≥σδⁿφ√Θ Java) Ωε∞∩Φδ ≥ε≡. ╬ΣΦφ Φτ ∩εδⁿτεΓα≥σδσΘ ∩≡Φ±δαδ
  1204. ±εεß∙σφΦσ ε ≥ε∞, ≈≥ε ²≥ε≥ Ωε∞∩Φδ ≥ε≡ ±ετΣαδ 2╠ß Φ±∩εδφ σ∞√Θ ⌠αΘδ Φτ 12╩ß
  1205. java ⌠αΘδα, Φ φσ ≡αßε≥αδ ∩≡Φ ²≥ε∞ ß√±≥≡σσ. ╬ß≡α≥Φ≥σ±ⁿ ∩ε αΣ≡σ±≤
  1206. http://www.alphaworks.ibm.com/
  1207.  
  1208. ╥αΩµσ ∩ε±∞ε≥≡Φ≥σ Instantiations JOVE
  1209. http://www.instantiations.com/jove.htm,
  1210. ±≥α≥ⁿ  ε ∩≡εσΩ≥σ Toba
  1211. http://research.microsoft.com/research/lt/toddpro/papers/coots97.pdf,
  1212. µ≤≡φαδ Network World, "Vendors Rush To Speed Java Performance" ("╧ε±≥αΓ∙ΦΩΦ
  1213. ±≥≡σ∞ ≥±  ≤±Ωε≡Φ≥ⁿ ∩≡εΦτΓεΣΦ≥σδⁿφε±≥ⁿ Java"), 9 ⌠σΓ≡αδ  1998,
  1214. http://www.nwfusion.com/news/0209java.html
  1215.  
  1216. ╩ε∞∩Φδ ÷Φ  Γ ±Φ±≥σ∞φεταΓΦ±Φ∞√Θ ΩεΣ ±ΓεΣΦ≥ φα φσ≥ εΣφε Φτ ±α∞√⌡ τφα≈Φ≥σδⁿφ√⌡
  1217. ∩≡σΦ∞≤∙σ±≥Γ Java: ∩σ≡σφε±Φ∞ε±≥ⁿ Φ±∩εδφ σ∞επε ΩεΣα. ╩≡ε∞σ ≥επε, σ±δΦ ┬√
  1218. ⌡ε≥Φ≥σ, ≈≥εß√ ┬α°α Java DLL (ΦδΦ .exe) ΓταΦ∞εΣσΘ±≥ΓεΓαδα ± C++, ┬α∞
  1219. φσεß⌡εΣΦ∞ε ε∩≡σΣσδΦ≥ⁿ, ΩαΩεΘ Φ∞σφφε Ωε∞∩Φδ ≥ε≡ C++ ┬α∞ φ≤µσφ Φ/ΦδΦ φα ±α∞ε∞
  1220. Σσδσ ∩≡εΦτΓσ±≥Φ φσΩε≥ε≡εσ ±Γ τ√ΓαφΦσ ≈σ≡στ ∩εΣ⌡εΣ ∙ΦΘ Ωε∞∩Φδ ≥ε≡ C++. C++
  1221. φσ ±εΣσ≡µΦ≥ ±≥αφΣα≡≥φεΘ ABI, ∩ε²≥ε∞≤ ±≤∙σ±≥Γ≤■≥ ßεδⁿ°Φσ ±δεµφε±≥Φ ±
  1222. Γετ∞εµφε±≥ⁿ■ Ω ΓταΦ∞εΣσΘ±≥ΓΦ ∞. ╩αµΣ√Θ Ωε∞∩Φδ ≥ε≡ C++ Φ±∩εδⁿτ≤σ≥ ≡ατδΦ≈φ√σ
  1223. ∞εΣσδΦ εß·σΩ≥εΓ, ≡ατδΦ≈φ√σ ±∩ε±εß√ Ωε∞∩εφεΓΩΦ ≈δσφεΓ Ωδα±±α Φ ≡ατδΦ≈φ√σ
  1224. ±∩ε±εß√ ∞α±ΩΦ≡εΓαφΦ  Φ∞╕φ Σδ  linker-α.
  1225.  
  1226. ╤  τ√Ωε∞ C ∞φεπε ∩≡ε∙σ. ┼ΣΦφ±≥Γσφφ√Θ Γε∩≡ε± Γ ≥ε∞, ΩαΩ ≤∩αΩεΓ√Γα■≥± 
  1227. ±≥≡≤Ω≥≤≡√ (φα∩≡Φ∞σ≡, Γ√≡αΓφΦΓα■≥±  δΦ ÷σδ√σ ∩ε π≡αφΦ÷α∞ ≈σ≥√≡╕⌡ ßαΘ≥?). ┬±σ
  1228. Ωε∞∩Φδ ≥ε≡√ C++ ∞επ≤≥ ΓταΦ∞εΣσΘ±≥ΓεΓα≥ⁿ ± ΩεΣε∞ φα C, ßδαπεΣα≡  εß· ΓδσφΦ ∞
  1229. 'extern "C"'.
  1230.  
  1231. ┬φΦ∞α≥σδⁿφε ≡α±±∞ε≥≡Φ≥σ Γε∩≡ε±, τα≈σ∞ ┬√ ⌡ε≥Φ≥σ ±Ωε∞∩ΦδΦ≡εΓα≥ⁿ Γ
  1232. ±Φ±≥σ∞εταΓΦ±Φ∞√Θ ΩεΣ, Φ φσ≥ δΦ Γ ±α∞ε∞  τ√Ωσ Java ±∩ε±εßα ≤ΣεΓδσ≥Γε≡Φ≥ⁿ
  1233. Γα°Φ ÷σδΦ. ╠εµσ≥ φαΘ≥Φ±ⁿ Γσ±Ωα  ∩≡Φ≈Φφα Σδ  ≥αΩεΘ Ωε∞∩Φδ ÷ΦΦ, φε εφα Σεδµφα
  1234. ß√≥ⁿ Γ±σ±≥ε≡εφσσ ∩≡εΣ≤∞αφα.
  1235.  
  1236. (╫α±≥ⁿ 4) ╩αΩ ∞φσ ∩ε±∞ε≥≡σ≥ⁿ ∩≡εΦτΓεΣΦ≥σδⁿφε±≥ⁿ ε≥Σσδⁿφ√⌡ ≈α±≥σΘ ∞εσπε ΩεΣα
  1237. φα Java (∩≡ε⌠ΦδΦ≡εΓα≥ⁿ σπε)?
  1238.  
  1239. [*]java -prof MyClass
  1240.  
  1241. Γ√Σα╕≥ φσΩε≥ε≡≤■ ε±φεΓφ≤■ Φφ⌠ε≡∞α÷Φ■ Γ ⌠αΘδ java.prof, ∩εΩατ√Γα■∙≤■
  1242. ΩεδΦ≈σ±≥Γε Γ√τεΓεΓ ∞σ≥εΣα. ╤≥≡εΩΦ Φ∞σ■≥ ≥αΩ≤■ ±≥≡≤Ω≥≤≡≤:
  1243.        # of calls      method called     called by        time spent
  1244.  
  1245.        (ΩεδΦ≈σ±≥Γε      (Γ√τ√Γασ∞√Θ                      (τα≥≡α≈σφφεσ
  1246.         Γ√τεΓεΓ)          ∞σ≥εΣ)        (Ωσ∞ Γ√τΓαφ)        Γ≡σ∞ )
  1247.  
  1248. ╨αßε≥α  Γ ±Φ±≥σ∞σ Unix, ┬√ ∞εµσ≥σ ε≥±ε≡≥Φ≡εΓα≥ⁿ ⌠αΘδ ± ∩ε∞ε∙ⁿ■, φα∩≡Φ∞σ≡,
  1249. ≥αΩεΘ Ωε∞αφΣ√
  1250.  
  1251. sort -r +82 <java.prof > java.sort
  1252.  
  1253. ╙ ±≥ε≡εφφΦ⌡ ∩≡εΦτΓεΣΦ≥σδσΘ Φ∞σ■≥±  Φφ±≥≡≤∞σφ≥√ Java Γ ßεδⁿ°σ∞ ΩεδΦ≈σ±≥Γσ Φ
  1254. δ≤≈°σπε Ωα≈σ±≥Γα. ╬ΣΦφ Φτ ∩≡ε⌠ΦδΦ≡εΓ∙ΦΩεΓ Java - ²≥ε JProbe Profiler, εφ
  1255. Σε±≥≤∩σφ ∩ε αΣ≡σ±≤ http://www.klg.com/jprobe. ╩αΩ τα Γδσφε, JProbe δσπΩε
  1256. Φ±∩εδⁿτεΓα≥ⁿ. ─≡≤πΦ∞ ∩≡ε⌠ΦδΦ≡εΓ∙ΦΩε∞  Γδ σ≥±  OptimizeIt, Ωε≥ε≡√Θ Σε±≥≤∩σφ
  1257. ± http://www.optimizeit.com. ╙ ΩαµΣεπε Φτ ²≥Φ⌡ ∩≡ε⌠ΦδΦ≡εΓ∙ΦΩεΓ σ±≥ⁿ
  1258. Γετ∞εµφε±≥ⁿ Φτ≤≈Φ≥ⁿ ΩαΩ ∩≡εΦτΓεΣΦ≥σδⁿφε±≥ⁿ, ± ≤ΩαταφΦσ∞ ΩαΩεΘ ∞σ≥εΣ ±ΩεδⁿΩε
  1259. Γ≡σ∞σφΦ ταφ δ, ≥αΩ Φ ≡α±±∞ε≥≡σ≥ⁿ Φ±∩εδⁿτεΓαφΦσ ∩α∞ ≥Φ, ± ≤ΩαταφΦσ∞ ΩαΩΦσ
  1260. εß·σΩ≥√ φα⌡εΣ ≥±  Γ ∩α∞ ≥Φ Φ ±ΩεδⁿΩε σ╕ Σδ  φΦ⌡ Γ√Σσδσφε. ╬≈σφⁿ Γαµφε τφα≥ⁿ
  1261. εßα ²≥Φ⌡ α±∩σΩ≥α. ┬ ∩ε±δσΣφσΘ Γσ≡±ΦΦ ±≡σΣ√ ≡ατ≡αßε≥ΩΦ CodeWarrior IDE
  1262. http://www.metrowerks.com σ±≥ⁿ ∩≡ε⌠ΦδΦ≡εΓ∙ΦΩ ∩ε Γ≡σ∞σφΦ Σδ  ΩεΣα Java. ╙
  1263. ∩≡εΣ≤Ω≥α Java Workshop ε≥ Sun ≥αΩµσ Φ∞σσ≥±  ∩≡ε⌠ΦδΦ≡εΓ∙ΦΩ ∩ε Γ≡σ∞σφΦ.
  1264.  
  1265. JDK 1.2 ∩ε±≥αΓδ σ≥±  ± φσΩε≥ε≡√∞Φ επ≡αφΦ≈σφφ√∞Φ Γ±≥≡εσφφ√∞Φ Γετ∞εµφε±≥ ∞Φ
  1266. ∩≡ε⌠ΦδΦ≡εΓαφΦ . ┬ ταΓΦ±Φ∞ε±≥Φ ε≥ ┬α°Φ⌡ φ≤µΣ, ²≥επε ∞εµσ≥ ß√≥ⁿ ┬α∞ Φ
  1267. Σε±≥α≥ε≈φε. ╩≡α≥Ω≤■ Φφ⌠ε≡∞α÷Φ■ ε ≥ε∞, ≈≥ε Γ±≥≡εσφε, ∞εµφε ∩εδ≤≈Φ≥ⁿ,
  1268. τα∩≤±≥ΦΓ ±δσΣ≤■∙≤■ Ωε∞αφΣ≤:
  1269.  
  1270.    java -Xrunhprof:help
  1271.  
  1272. Hα∩≡Φ∞σ≡, ┬√ ∞εµσ≥σ ≤ΓΦΣσ≥ⁿ, ΩαΩΦσ ∞σ≥εΣ√ ταφΦ∞α■≥ φαΦßεδⁿ°σσ Γ≡σ∞ 
  1273. Γ√∩εδφσφΦ , Γ ±Γ τΦ ± ∩εΣ≡εßφε±≥ ∞Φ ≥≡α±±Φ≡εΓεΩ ±≥σΩα.
  1274.  
  1275. (╫α±≥ⁿ 4) ╩επΣα   Φ±∩εδⁿτ≤■ javadoc Φ φαµΦ∞α■ ∞√°ΩεΘ φα δ■ßεΘ Ωδα±± java,
  1276. Ωε≥ε≡√Θ ΓΩδ■≈σφ Γ JDK ∩ε≈σ∞≤   ∩εδ≤≈α■ ±δσΣ≤■∙σσ ±εεß∙σφΦσ?
  1277.  
  1278.     Netscape is unable to find the file or directory named:
  1279.     /E|/Jwrkshop/JDK/bin/java.lang.Throwable.html
  1280.  
  1281.  
  1282.     (Netscape φσ ∞εµσ≥ φαΘ≥Φ ⌠αΘδ ΦδΦ ∩α∩Ω≤ ± Φ∞σφσ∞:
  1283.     /E|/Jwrkshop/JDK/bin/java.lang.Throwable.html)
  1284.  
  1285. [*] ╤±√δΩΦ φα Ωδα±±√ JDK ∩≡σΣ∩εδαπα■≥, ≈≥ε Γ±σ ±πσφσ≡Φ≡εΓαφφ√σ html-⌠αΘδ√
  1286. φα⌡εΣ ≥±  Γ εΣφεΘ ∩α∩Ωσ Φ, Γ ΣσΘ±≥ΓΦ≥σδⁿφε±≥Φ, ≈≥ε Γ±σ ⌠αΘδ√ Σδ  Γ±σ⌡
  1287. Ωδα±±εΓ, φα Ωε≥ε≡√σ Φ∞σ■≥±  ±±√δΩΦ, ±πσφσ≡Φ≡εΓαφ√ εΣφεΓ≡σ∞σφφε. Hσ≥
  1288. Γετ∞εµφε±≥Φ ±πσφσ≡Φ≡εΓα≥ⁿ ⌠αΘδ√ Σε∩εδφΦ≥σδⁿφε ≥αΩ, ≈≥εß√ εφΦ ≤Ωατ√ΓαδΦ Σ≡≤π
  1289. φα Σ≡≤πα, ΩαΩ ß√ ┬α∞ ²≥ε ⌡ε≥σδε±ⁿ.
  1290.  
  1291. ┼±δΦ µσ ≤ ┬α± σ±≥ⁿ Φ±⌡εΣφ√Θ ≥σΩ±≥ Σδ  Γ±σ⌡ ≥≡σß≤σ∞√⌡ Ωε∞∩εφσ≥ (ΓΩδ■≈α  JDK
  1292. Φ Γ±σ Ωδα±±√ ±≥ε≡εφφΦ⌡ ∩≡εΦτΓεΣΦ≥σδσΘ), ┬√ ∞εµσ≥σ Γφσ±≥Φ ±∩Φ±εΩ Γ±σ⌡ ±ΓεΦ⌡
  1293. ∩αΩσ≥εΓ Φ Γ±σπε ∩≡ε≈σπε Γ Ωε∞αφΣφ≤■ ±≥≡εΩ≤ Σδ  javadoc, ±πσφσ≡ε≡εΓαΓ Γ±σ
  1294. Γ∞σ±≥σ ±≡ατ≤, φε ²≥ε εß≡σ∞σφΦ≥σδⁿφε. ╩εφσ≈φε, σ±δΦ ┬√ ∩εδ≤≈ΦδΦ φσΩε≥ε≡√σ
  1295. ßΦßδΦε≥σΩΦ ΩαΩ ⌠αΘδ√ .class, Σαµσ Γ√∩εδφσφΦσ ²≥εΘ ≡αßε≥√ ß≤Σσ≥ φσ
  1296. Σε±≥α≥ε≈φε.
  1297.  
  1298. ╧ε∞Φ∞ε ²≥επε, javadoc φσ ±πσφσ≡Φ≡≤σ≥ ⌠αΘδεΓ ± Ωα≡≥ΦφΩα∞Φ - ┬α∞ φαΣε ß≤Σσ≥
  1299. Γτ ≥ⁿ Φ⌡ Φτ ∩α∩ΩΦ ± Ωα≡≥ΦφΩα∞Φ, ≥α∞, πΣσ σ±≥ⁿ ΣεΩ≤∞σφ≥α÷Φ  φα JDK API. ┬√
  1300. ∞εµσ≥σ ∩≡ε±≥ε ±Ωε∩Φ≡εΓα≥ⁿ ²≥≤ ∩α∩Ω≤ ∩εδφε±≥ⁿ■ Γ ∩α∩Ω≤ ± ┬α°σΘ ±εß±≥ΓσφφεΘ
  1301. ΣεΩ≤∞σφ≥α÷ΦσΘ. javadoc - ²≥ε ε≈σφⁿ ∩≡Φ ≥φα  Ωεφ÷σ∩÷Φ , ± φσΩε≥ε≡√∞Φ
  1302. φσΣε±≥α≥Ωα∞Φ ≡σαδΦτα÷ΦΦ.
  1303.  
  1304. (╫α±≥ⁿ 4) ▀ ≡αßε≥α■ φαΣ ∩≡εσΩ≥ε∞ ± ßεδⁿ°Φ∞ ΩεδΦ≈σ±≥Γε∞ Ωδα±±εΓ Φ Φ±∩εδⁿτ≤■
  1305. JDK. ╧σ≡σΩε∞∩Φδ ÷Φ  ± φ≤δ  ≡α±≥ πΦΓασ≥±  φαΣεδπε, σ±δΦ   ∩σ≡σΩε∞∩ΦδΦ≡≤■
  1306. ΩαµΣ√Θ Ωδα±± ∩ε-ε≥Σσδⁿφε±≥Φ. ╩αΩ   ∞επ≤ ∩σ≡σΩε∞∩ΦδΦ≡εΓα≥ⁿ Γ±╕ ±≡ατ≤?
  1307.  
  1308. [*] ╧σ≡Γ√Θ ±∩ε±εß:
  1309.  
  1310.      javac *.java
  1311.  
  1312. ┬≥ε≡εΘ ±∩ε±εß:
  1313.  
  1314.      javac -depend tip.java
  1315.  
  1316. πΣσ "tip.java" ²≥ε Ωδα±± "φα Γσ≡°Φφσ αΘ±ßσ≡πα", φα∩≡Φ∞σ≡, Ωε≥εp√Θ ταΓΦ±σ≥
  1317. (Φ±∩εδⁿτ≤σ≥) Γ±σ ε±≥αδⁿφ√σ Ωδα±±√. ╩αΩ ∩≡αΓΦδε, Φ∞ εΩατ√Γασ≥±  ┬α° ε±φεΓφεΘ
  1318. Ωδα±±. ╬ΣφαΩε, ΦτΓσ±≥φε, ≈≥ε ε∩÷Φ  "-depend" ≡αßε≥ασ≥ ± ε°ΦßΩα∞Φ Φ φα φσ╕
  1319. φσ ±δσΣ≤σ≥ ∩εδαπα≥ⁿ± . ╥αΩµσ Γ ²≥ε∞ ±δ≤≈ασ φσ εßσ±∩σ≈ΦΓασ≥±  ∩α≡αδδσδⁿφα 
  1320. Ωε∞∩Φδ ÷Φ , Ωε≥ε≡α  ∞εµσ≥ ß√≥ⁿ Φ±∩εδⁿτεΓαφα φα ∞φεπε∩≡ε÷σ±±±ε≡φ√⌡ ±Φ±≥σ∞α⌡.
  1321.  
  1322. ┴στ ε∩÷ΦΦ "-depend", ±≥αφΣα≡≥φα  Ωε∞αφΣα "javac files" φσ ∩≡ε±∞α≥≡ΦΓασ≥
  1323. ⌠αΘδ√ Γφσ φσ∩ε±≡σΣ±≥Γσφφε ∩≡Φ∞√Ωα■∙Φ⌡ ταΓΦ±Φ∞ε±≥σΘ Γ ∩εΦ±Ωα⌡ Φτ∞σφσφΦΘ
  1324. Ωδα±±εΓ Σαδσσ Γ Φσ≡α≡⌡ΦΦ.
  1325.  
  1326. ╬∩÷Φ  -depend ≡σΩ≤≡±ΦΓφε Φ∙σ≥ ταΓΦ±Φ∞ε±≥Φ Ωδα±±εΓ Φ ∩σ≡σΩε∞∩ΦδΦ≡≤σ≥ Φ⌡.▌≥α
  1327. ε∩÷Φ  φσ ∩ε∞επασ≥, σ±δΦ ≤ ┬α± Φ±∩εδⁿτ≤■≥±  ΣΦφα∞Φ≈σ±ΩΦ ταπ≡≤µασ∞√σ Ωδα±±√,
  1328. Φ∞σφα Ωε≥ε≡√⌡ φσ ∞επ≤≥ ß√≥ⁿ ε∩≡σΣσδσφ√ Ωε∞∩Φδ ≥ε≡ε∞ Γ π≡α⌠σ ταΓΦ±Φ∞ε±≥σΘ.
  1329. Hα∩≡Φ∞σ≡, ┬√ Φ±∩εδⁿτ≤σ≥σ ≈≥ε-≥ε Γ≡εΣσ:
  1330.  
  1331.      Class.forName(argv[0]);
  1332.  
  1333. └Γ≥ε≡ ²≥επε ΩεΣα Σεδµσφ ß√≥ⁿ ≤Γσ≡σφ, ≈≥ε Ωδα±±√, Ωε≥ε≡√σ ∞επ≤≥ ß√≥ⁿ
  1334. ΣΦφα∞Φ≈σ±ΩΦ ταπ≡≤µσφ√, ≤∩ε∞ φ≤≥√ Γ ⌠αΘδσ Makefile.
  1335.  
  1336. (╫α±≥ⁿ 4) ╧ε≈σ∞≤   ∩εδ≤≈α■ ε°ΦßΩ≤ java.lang.UnsatisfiedLinkError ∩≡Φ
  1337. ∩ε∩√≥Ωσ τα∩≤±Ωα Java ∩≡επ≡α∞∞√, ±εΣσ≡µα∙σΘ Γ√τεΓ√ ±Φ±≥σ∞φεταΓΦ±Φ∞√⌡ ∞σ≥εΣεΓ
  1338. (Native Method)?
  1339.  
  1340. [*] ┬α°α ∩≡επ≡α∞∞α φσ ∞εµσ≥ φαΘ≥Φ ≡ατΣσδ σ∞√σ ßΦßδΦε≥σΩΦ ΦδΦ DLL.
  1341.  
  1342. ╧≡Φ ≡αßε≥σ φα Windows 95/NT, ≤ßσΣΦ≥σ±ⁿ Γ ≥ε∞, ≈≥ε φσεß⌡εΣΦ∞α  DLL
  1343. ≡α±∩εδεµσφα ∩ε ≥ε∞≤ ∩≤≥Φ, Ωε≥ε≡√Θ ≤Ωαταφ Γ ∩σ≡σ∞σφφεΘ εΩ≡≤µσφΦ  PATH. (▌≥ε
  1344. ≥≡σßεΓαφΦσ ΣσΘ±≥ΓΦ≥σδⁿφε Σδ  εßεΦ⌡ ±≥αφΣα≡≥εΓ, ΩαΩ Σδ  ∩≡ΦδεµσφΦΘ, ≥αΩ Φ
  1345. Σδ  α∩∩δσ≥εΓ. ╧ε Ω≡αΘφσΘ ∞σ≡σ, σ±δΦ ┬√ ∩εδⁿτ≤σ≥σ±ⁿ Java Plug-in Σδ  Σε±≥≤∩α
  1346. Ω ±≥αφΣα≡≥φ√∞ Γετ∞εµφε±≥ ∞ Java Γ ┬α°σ∞ ß≡ε≤τσ≡σ).
  1347.  
  1348. ┬ Solaris, ≤ßσΣΦ≥σ±ⁿ Γ ≥ε∞, ≈≥ε ∩σ≡σ∞σφφα  εΩ≡≤µσφΦ  LD_LIBRARY_PATH
  1349. ΓΩδ■≈ασ≥ ∩≤≥ⁿ Ω ┬α°σΘ ßΦßδΦε≥σΩσ.
  1350.  
  1351. ╟α∞σ≥ⁿ≥σ, ≈≥ε jdb Φ∙σ≥ ßΦßδΦε≥σΩΦ, Ω φατΓαφΦ ∞ Ωε≥ε≡√⌡ ΣεßαΓδσφ ±≤⌠⌠ΦΩ±
  1352. "_g". ╥αΩΦ∞ εß≡ατε∞, σ±δΦ ┬√ φα∞σ≡σφ√ Φ±∩εδⁿτεΓα≥ⁿ jdb Γ Java ∩≡ΦδεµσφΦΦ,
  1353. Ωε≥ε≡εσ Γ√τ√Γασ≥ ±Φ±≥σ∞φεταΓΦ±Φ∞√σ ∞σ≥εΣ√, ┬α∞ φσεß⌡εΣΦ∞ε ≤ßσΣΦ≥ⁿ±  Γ ≥ε∞,
  1354. ≈≥ε ±εε≥Γσ≥±≥Γ≤■∙Φσ ßΦßδΦε≥σΩΦ ≤∩ε∞ φ≤≥√ Γ ∩≤≥Φ ≤ jdb. ╥αΩΦσ "ε≥δαΣε≈φ√σ"
  1355. ßΦßδΦε≥σΩΦ ∞επ≤≥ ß√≥ⁿ ∩≡ε±≥ε ∩σ≡σΦ∞σφεΓαφφ√∞Φ Ωε∩Φ ∞Φ εß√≈φ√⌡ ßΦßδΦε≥σΩ.
  1356.  
  1357. Hα∩≡Φ∞σ≡, σ±δΦ ┬α°σ ∩≡ΦδεµσφΦσ Γ√τ√Γασ≥ ∞σ≥εΣ√ Φτ ßΦßδΦε≥σΩΦ ± Φ∞σφσ∞
  1358. mynm.dll (Γ Windows) ΦδΦ mynm.so (Γ Solaris), ±Ωε∩Φ≡≤Θ≥σ Φ⌡ Γ ≥≤ µσ ∩α∩Ω≤
  1359. ∩εΣ Φ∞σφσ∞ mynm_g.dll ΦδΦ mynm_g.so.
  1360.  
  1361. (╫α±≥ⁿ 4) └φεφΦ∞φ√Θ Ωδα±± φσ Φ∞σσ≥ Σε±≥≤∩α Ω Γφσ°φσ∞≤ private ∞σ≥εΣ≤,
  1362. ∩ε≈σ∞≤?
  1363.  
  1364. [*] ▌≥ε ΦτΓσ±≥φα  ε°ΦßΩα Γ JDK 1.1.4. ╚±⌡εΣφ√Θ ΩεΣ:
  1365.  
  1366.     public class MyDialog {
  1367.  
  1368.             void Setup() {
  1369.             addWindowListener( new WindowAdapter() {
  1370.                   public void windowClosing(WindowEvent e) {
  1371.                          myCloseWindow(); }
  1372.                   }
  1373.                   );     // Γφ≤≥≡σφφΦΘ αφεφΦ∞φ√Θ Ωδα±±
  1374.  
  1375.             }
  1376.  
  1377.         private void myCloseWindow() {   // Γφσ°φΦΘ private ∞σ≥εΣ
  1378.             dispose();
  1379.         }
  1380.     }
  1381.  
  1382. ▌≥ε≥ ΩεΣ τα÷ΦΩδΦΓασ≥ javac. ┬√⌡εΣε∞ ß≤Σσ≥ ±Σσδα≥ⁿ private ∞σ≥εΣ φσ private,
  1383. ΦδΦ ∩εΦ∞σφεΓα≥ⁿ Γφ≤≥≡σφφΦΘ Ωδα±±. Sun Γ Ωε∞∩Φδ ≥ε≡σ ∩ε ≤∞εδ≈αφΦ■
  1384. ≤±≥αφαΓδΦΓασ≥ ∩εδσ Σε±≥≤∩φ√∞ Σδ  ∩αΩσ≥α.
  1385.  
  1386. (╫α±≥ⁿ 4) ╩αΩΦσ ±σΘ≈α± ε±φεΓφ√σ ≡σδΦτ√ Java Φ Φ⌡ ±εΣσ≡µαφΦσ?
  1387.  
  1388. [*] ╧εΩα σ±≥ⁿ ≥≡Φ ≡σδΦτα Java ε≥ Sun, ∩δ■± φσ±ΩεδⁿΩε Φ±∩≡αΓδσφφ√⌡ Γσ≡±ΦΘ (±
  1389. ≥≡σ≥ⁿσΘ ÷Φ⌠≡εΘ ∩ε±δσ ≥ε≈ΩΦ). ╧σ≡σ≈Φ±δΦ∞ Φ⌡:
  1390.  
  1391.    * JDK 1.0.2
  1392.      ▌≥ε ß√δ ≡σδΦτ FCS Γ ∞ασ 1996 πεΣα. ┬ φσπε Γφσ±σφε φσ±ΩεδⁿΩε
  1393.      Φ±∩≡αΓδσφΦΘ Γ ±Φ±≥σ∞σ τα∙Φ≥√ JDK 1.0.
  1394.    * JDK 1.1
  1395.      ┬ ²≥ε∞ ≡σδΦτσ (⌠σΓ≡αδⁿ 1997) ΓΓσΣσφα φεΓα  ∞εΣσδⁿ ±εß√≥ΦΘ Γ εΩεφφε∞
  1396.      Φφ≥σ≡⌠σΘ±σ. ╥αΩµσ ±≥αφΣα≡≥φ√∞Φ ±≥αφεΓ ≥±  ∩εΣΣσ≡µΩα JDBC Φ ∩εΣΣ≡µΩα
  1397.      beans. ╚τ∞σφ╕φ Φ ±≥αφΣα≡≥ΦτεΓαφ Φφ≥σ≡⌠σΘ± Ω ±Φ±≥σ∞φεταΓΦ±Φ∞ε∞≤ ΩεΣ≤
  1398.      JNI. ┬σΣσφ√ ≥αΩµσ Φ Γφ≤≥≡σφφΦσ Ωδα±±√.
  1399.    * JDK 1.2
  1400.      ┬ ²≥ε∞ ≡σδΦτσ (ΣσΩαß≡ⁿ 1998) ßΦßδΦε≥σΩα Swing ±≥αδα ±≥αφΣα≡≥ε∞. Swing
  1401.      - ²≥ε φαßε≡ ∞ε∙φ√⌡ ±Φ±≥σ∞φε-φσταΓΦ±Φ∞√⌡ π≡α⌠Φ≈σ±ΩΦ⌡ Ωε∞∩εφσφ≥εΓ.
  1402.  
  1403. (╫α±≥ⁿ 4) ╩αΩα  ≡ατφΦ÷α ∞σµΣ≤ jre Φ java?
  1404.  
  1405. [*] ╘≤φΩ÷Φεφαδⁿφε εφΦ ²ΩΓΦΓαδσφ≥φ√, ± φσßεδⁿ°Φ∞Φ ε≥δΦ≈Φ ∞Φ Γ ≡αßε≥σ ±
  1406. classpath ∩ε ≤∞εδ≈αφΦ■ Φ ∩εΣΣσ≡µΦΓασ∞√∞Φ ε∩÷Φ ∞Φ. ┬ε ΦτßσµαφΦσ ∩≤≥αφΦ÷√,
  1407. Ωε∞αφΣα jre ß√δα ≤Σαδσφα Γ JDK 1.2. ┬∞σ±≥ε φσ╕ ε±≥αΓδσφα Ωε∞αφΣα "java" ΩαΩ
  1408. Γ bin ≥αΩ Φ Γ jre/bin.
  1409.  
  1410. jre.exe ∩≡επ≡α∞∞α τα∩≤±Ωα java, Ωε≥ε≡α  ∩ε±≥αΓδ σ≥±  ± Java Runtime
  1411. Environment. ╚±∩εδⁿτ≤■≥±  ±ΓεΦ ±εß±≥Γσφφ√σ Γφ≤≥≡σφφΦσ ≤±≥αφεΓΩΦ ∩ε
  1412. ≤∞εδ≈αφΦ■, Φπφε≡Φ≡≤■≥±  ≤±≥αφεΓΩΦ εΩ≡≤µσφΦ  CLASSPATH Φ Γ±╕, ≈≥εß√ φΦ
  1413. ±≥ε δε Γ Ωε∞αφΣφεΘ ±≥≡εΩσ -cp ΦδΦ -classpath. ╧εΣ≡ατ≤∞σΓασ≥± , ≈≥ε ²≥ε
  1414. φσ∞φεπε ∩≡ε∙σ Σδ  ≥σ⌡, Ω≥ε ≥εδⁿΩε τα∩≤±Ωασ≥ φα Γ√∩εδφσφΦσ Java ∩≡επ≡α∞∞√, α
  1415. φσ ≡ατ≡αßα≥√Γασ≥ Φ⌡.
  1416.  
  1417. java.exe ∩≡επ≡α∞∞α τα∩≤±Ωα java, Ωε≥ε≡α  ∩ε±≥αΓδ σ≥±  ± JDK. ╚±∩εδⁿτ≤σ≥
  1418. ≤±≥αφεΓΩΦ εΩ≡≤µσφΦ  CLASSPATH ΩαΩ φα≈αδⁿφ≤■ ≥ε≈Ω≤ ∩εΦ±Ωα, α τα≥σ∞
  1419. εß≡α∙ασ≥±  Ω ±εß±≥Γσφφ√∞ Γφ≤≥≡σφφΦ∞ ∩α≡α∞σ≥≡α∞.
  1420.  
  1421. ╬ßσ ±δ≤µα≥ εΣφεΘ Φ ≥εΘ µσ ÷σδΦ - τα∩≤±Ω ΓΦ≡≥≤αδⁿφεΘ Java ∞α°Φφ√ (JVM),
  1422. Γ√∩εδφσφΦσ Γ φσΘ ∩≡ΦδεµσφΦ  Java, τα≥σ∞ ε±≥αφεΓΩα JVM. ╚±⌡εΣφ√σ ≥σΩ±≥√
  1423. jre.exe ∩ε±≥αΓδ ■≥±  ± JDK. ╚±⌡εΣφ√σ ≥σΩ±≥√ java.exe ∩ε±≥αΓδ ■≥±  ≥εδⁿΩε ±ε
  1424. ±∩σ÷Φαδⁿφ√∞ ΣΦ±≥≡Φß≤≥ΦΓε∞ Φ±⌡εΣφ√⌡ ≥σΩ±≥εΓ JDK.
  1425.  
  1426. (╫α±≥ⁿ 4) ╩αΩΦσ IDE (Integrated Development Environments - ╚φ≥σπ≡Φ≡εΓαφφ√σ
  1427. ±≡σΣ√ ≡ατ≡αßε≥≈ΦΩα) ±≤∙σ±≥Γ≤■≥?
  1428.  
  1429. [*] HΦµσ ∩σ≡σ≈Φ±δσφ√ ∩ε∩≤δ ≡φ√σ IDE:
  1430.  
  1431.  Apptivity (Progress)       http://www.apptivity.com
  1432.  Bluette (±ΓεßεΣφε)         http://blue.donga.ac.kr/bluette/index.html
  1433.  Chicory (±ΓεßεΣφε)         http://www.chicory.com
  1434.  CodeWarrior Professional   http://www.metrowerks.com
  1435.  Freebuilder                http://www.freebuilder.org
  1436.  GRASP (±ΓεßεΣφε)           http://www.eng.auburn.edu/grasp
  1437.  Grinder                    http://www.tpex.com
  1438.  Java WorkShop (Sun)        http://www.sun.com/workshop/java
  1439.  Javelin, Visual Object
  1440.  Development for Java       http://www.stepahead.com.au
  1441.  JBuilder (Inprise)         http://www.inprise.com/jbuilder
  1442.  JDE Σδ  emacs              http://sunsite.auc.dk/jde/
  1443.  
  1444. Kawa (Webcetera) http://www.tek-tools.com/kawa Metamata
  1445. http://www.metamata.com NetBeans (Swing-based) http://www.netbeans.com
  1446. PARTS alpha (ObjectShare) http://www.objectshare.com PowerJ (Sybase)
  1447. http://www.sybase.com/products/powerj SilverStream
  1448. http://www.silverstream.com Simplicity for Java
  1449. http://www.datarepresentations.com Super Mojo (Penumbra)
  1450. http://www.penumbrasoftware.com SuperCede (Asymetrix)
  1451. http://www.supercede.com teikade (PFU Ltd) http://www.pfu.co.jp/teikade
  1452. Together/J (Object Intl Inc.) http://www.oi.com Visaj (Imperial SW Tech)
  1453. http://www.imperial-software-tech.co.uk VisualAge (IBM)
  1454. http://www.software.ibm.com/ad/vajava Visual Cafe (Symantec)
  1455. http://cafe.symantec.com Visual J++ (Microsoft) (φσ ≡σΩε∞σφΣ≤σ≥± ) Xelfi
  1456. 0.94 http://www.xelfi.com
  1457.  
  1458. *(Sect. 4) ╧ε≈σ∞≤ Visual J++ - ∩δε⌡εΘ Γ√ßε≡?
  1459.  
  1460. ╧ε≥ε∞≤ ≈≥ε πδαΓφα  ÷σδⁿ Microsoft - "╙φΦ≈≥εµσφΦσ Ω≡ε±±-∩δα≥⌠ε≡∞σφφεΘ Java"
  1461.  
  1462. [*] ╬ßσ±∩σ≈σφΦσ ∩εδⁿτεΓα≥σδ■ Γετ∞εµφε±≥Φ δσπΩεπε ∩σ≡σφε±α ∩≡επ≡α∞∞ φα
  1463. Σ≡≤πΦσ ∩δα≥⌠ε≡∞√ ∩≡ε≥ΦΓε≡σ≈Φ≥ ⌠Φφαφ±εΓ√∞ Φφ≥σ≡σ±α∞ Microsoft. MS -
  1464. σΣΦφ±≥Γσφφα  Ωε∞∩αφΦ  Γ Ωε∞∩ⁿ■≥σ≡φεΘ ∩≡ε∞√°δσφφε±≥Φ, Ωε≥ε≡α  αΩ≥ΦΓφε
  1465. ∩√≥ασ≥±  ∩εΣε≡Γα≥ⁿ Java. ▌≥ε φσ ∩≡σΣ∩εδεµσφΦσ - ─σ∩α≡≥α∞σφ≥ ▐±≥Φ÷ΦΦ φα
  1466. εΣφε∞ Φτ ±≤Σσßφ√⌡ ≡ατßΦ≡α≥σδⁿ±≥Γ ± Microsoft, ≤∩ε∞Φφα  Ωε∞∩αφΦ■, φατΓαδ σσ
  1467. ±≥≡α≥σπΦ≈σ±ΩεΘ ÷σδⁿ■ - "≤φΦ≈≥εµσφΦσ Ω≡ε±±-∩δα≥⌠ε≡∞σφφεΘ Java ∩ε±≡σΣ±≥Γε∞
  1468. τα≡αµσφΦ  Java-≡√φΩα". ╟απδ φΦ≥σ φα
  1469. http://www.usdoj.gov/atr/cases/f1700/1762.htm VJ++ ∞εµσ≥ Φ±∩εδⁿτεΓα≥ⁿ±  ΩαΩ
  1470. Java-±εΓ∞σ±≥Φ∞√Θ ∩≡εΣ≤Ω≥, φε ± ∩≡σΣδαπασ∞√∞Φ ∩ε ≤∞εδ≈αφΦ■ ≤±≥αφεΓΩα∞Φ, ²≥ε
  1471. φσΓετ∞εµφε.
  1472.  
  1473. ╧≡ε≥ΦΓ Microsoft ß√δε Γετß≤µΣσφε Σσδε Φτ-τα φσ±αφΩ÷ΦεφΦ≡εΓαφφ√⌡ Φτ∞σφσφΦΘ,
  1474. ±Σσδαφφ√⌡ Γ Java. ╘σΣσ≡αδⁿφ√Θ ±≤Σⁿ  Γ ∞α≡≥σ 1998 π. Σαδ Ωε∞∩αφΦΦ
  1475. ∩≡σΣ∩Φ±αφΦσ, τα∩≡σ∙α■∙σσ Φ±∩εδⁿτεΓαφΦσ ²≥ΦΩσ≥εΩ, Γ√Σα■∙Φ⌡ J++ τα Java.
  1476. ─≡≤πεσ ∩≡σΣ∩Φ±αφΦσ, Γ Ωε≥ε≡ε∞ ≥≡σßεΓαδε±ⁿ ≤±≥≡αφσφΦσ ∩≡σΣφα∞σ≡σφφεΘ
  1477. φσ±εΓ∞σ±≥Φ∞ε±≥Φ ± Java, ß√δε Σαφε Microsoft Γ φε ß≡σ 1998 π.(φα∩ε∞φΦ∞, ≈≥ε
  1478. Microsoft φσ ±ετΣαΓαδα Java, α Γ±σπε δΦ°ⁿ ∩εδ≤≈Φδα ε≥ Sun ∩≡αΓε φα σσ
  1479. ≡α±∩≡ε±≥≡αφσφΦσ).
  1480.  
  1481. ╤∩≡ε±Φ≥σ ≤ ┬α°σπε
  1482. φα≈αδⁿ±≥Γα ΩαΩ
  1483. Ωε∞⌠ε≡≥φε εφε ±σß  ≈≤Γ±≥Γ≤σ≥, Φ±∩εδⁿτ≤  ∩≡εΣ≤Ω≥√ ε≥ Microsoft Γ ≥ε Γ≡σ∞ 
  1484. ΩαΩ Ωε∞∩αφΦ  Γ≥ πΦΓασ≥±  Γ ■≡ΦΣΦ≈σ±ΩΦΘ Ωεφ⌠δΦΩ≥ Φτ-τα ∩≡σΣφα∞σ≡σφφε
  1485. ±ετΣαφφ√⌡ φσ±εΓ∞σ±≥Φ∞ε±≥σΘ Γ ╧╬. ╤∩≡ε±Φ≥σ ΩαΩ εφε ±σß  ≈≤Γ±≥Γ≤σ≥, ΩεπΣα
  1486. ΣεΩαταφε, ≈≥ε Microsoft ⌡ε≈σ≥ επ≡αφΦ≈Φ≥ⁿ ∩εδⁿτεΓα≥σδ  ≡α∞Ωα∞Φ εΣφεΘ ╬╤. ┬±σ
  1487. ²≥ε ±Ωαταφε Σδ  ≥επε, ≈≥εß√ τα∙Φ≥Φ≥ⁿ ┬α± ε≥ φσ∩≡αΓΦδⁿφεπε Γ√ßε≡α. ┬√ ∞εµσ≥σ
  1488. ±±√δα≥ⁿ±  φα ²≥Φ ⌠αΩ≥√, ΓφσΣ≡   Java Γ ┬α°σΘ Ωε∞∩αφΦΦ.
  1489.  
  1490. ╩αΩ Java-∩≡επ≡α∞∞Φ±≥, ∩≡Φ±εσΣΦφΦ≥σ±ⁿ ∩εµαδ≤Θ±≥α Ω Java Lobby - φσταΓΦ±Φ∞εΘ
  1491. ε≡παφΦτα÷ΦΦ, ∩≡σΣ±≥αΓδ ■∙σΘ φσΩε∞∞σ≡≈σ±ΩΦσ Φφ≥σ≡σ±√ Java. ▌≥ε Γ√ ∞εµσ≥σ
  1492. ±Σσδα≥ⁿ ßσ±∩δα≥φε. ┬√ ∞εµσ≥σ ∩ε±σ≥Φ≥ⁿ http://www.javalobby.org Σδ 
  1493. ≤≥ε≈φσφΦ  Σσ≥αδσΘ. ┼±≥ⁿ Σ≡≤πΦσ ∩≤≥Φ, ±∩ε±εß±≥Γ≤■∙Φσ ≡α±∩≡ε±≥≡αφσφΦ■ Java:
  1494.  
  1495.    * ╠εµφε Φ±∩εδⁿτεΓα≥ⁿ ±≡σΣ±≥Γα ≡ατ≡αßε≥ΩΦ Σ≡≤πΦ⌡ ∩ε±≥αΓ∙ΦΩεΓ. ╠εµφε
  1496.      ΩεφΓσ≡≥Φ≡εΓα≥ⁿ MS J++ Σδ  ≡αßε≥√ ± Sun'εΓ±ΩΦ∞ JDK. ╟α Φφ±≥≡≤Ω÷Φ ∞Φ
  1497.      ∞εµφε εß≡α≥Φ≥ⁿ±  φα http://www.orbiter.demon.co.uk/
  1498.    * ╠εµφε Φ±∩εδⁿτεΓα≥ⁿ Netscape Communicator (φσ Internet Explorer)
  1499.    * ┼±δΦ ßστ Internet Explorer φσ εßεΘ≥Φ±ⁿ, Φ±∩εδⁿτ≤Θ≥σ Java-∩δ≤πΦφ√.
  1500.    * ╚±∩εδⁿτ≤Θ≥σ ±≥αφΣα≡≥φ√Θ GNU JVM, Kaffe, Σ≡≤πΦσ IDE (ε≥ Sun, φα∩≡Φ∞σ≡.
  1501.      Hε φΦ Γ Ωεσ∞ ±δ≤≈ασ φσ Microsoft J++ SDK)
  1502.  
  1503.    * ┴σ±∩δα≥φ√σ Java-Ωε∞∩Φδ ≥ε≡√ Φ ∩δ≤πΦφ√ ∞εµφε Γτ ≥ⁿ φα
  1504.      http://java.sun.com.
  1505.    * ┴σ±∩δα≥φ√σ ΓΦ≡≥≤αδⁿφ√σ Java-∞α°Φφ√ ∞εµφε ±Ωα≈α≥ⁿ τΣσ±ⁿ:
  1506.      http://www.kaffe.org, http://www.oryxsoft.com/projects/gvm, Φ
  1507.      http://www.redhat.com/linux-info/jolt
  1508.    * ┴σ±∩δα≥φ√Θ Java AWT ±ε⌠≥ ∞εµφε φαΘ≥Φ φα
  1509.      http://www.biss-net.com/biss-awt.html α ≥αΩµσ ∞εµφε Γτ ≥ⁿ Γ±σ
  1510.      φσεß⌡εΣΦ∞εσ φα ftp.java-linux.org (linux'εΓ±ΩΦΘ ±αΘ≥).
  1511.    * ┴σ±∩δα≥φ√Θ Java-±ε⌠≥ δσµΦ≥ τΣσ±ⁿ:
  1512.      http://www.gnu.org/software/java/java.html
  1513.  
  1514. ╩±≥α≥Φ, Γ ∞ασ 1998 π. Microsoft ε≥≡Φ÷αδα ±Γε■ ΓΦφ≤, φα±≥αΦΓα  φα ≥ε∞, ≈≥ε
  1515. εφα ±ετΣαδα φεΓ√Θ, ≤±εΓσ≡°σφ±≥ΓεΓαφφ√Θ ∩≡εσΩ≥. ▌≥ε φσ ±εε≥Γσ≥±≥Γ≤σ≥
  1516. ΣσΘ±≥ΓΦ≥σδⁿφε±≥Φ. Microsoft ⌠αΩ≥Φ≈σ±ΩΦ εßΓΦφ ■≥ Γ
  1517.  
  1518.    * ΣσΘ±≥ΓΦ ⌡, φα∩≡αΓδσφφ√⌡ ∩≡ε≥ΦΓ ΩεφΩ≤≡σφ≥εΓ, ∩≡εΦτΓεΣ ∙Φ⌡ ß≡ε≤τσ≡√.
  1519.      ╥αΩΦ∞ εß≡ατε∞ τα∙Φ∙ασ≥±  ∞εφε∩εδΦ  Microsoft φα ≡√φΩσ φα±≥εδⁿφ√⌡
  1520.      ε∩σ≡α÷Φεφφ√⌡ ±Φ±≥σ∞.
  1521.    * Φ±∩εδⁿτεΓαφΦΦ ∞εφε∩εδΦΦ Σδ  φαΓ τ√ΓαφΦ  ∩≡εΦτΓεΣΦ≥σδ ∞ PC
  1522.      επ≡αφΦ≈ΦΓα■∙Φ⌡ ±επδα°σφΦΘ, ≥≡σß≤■∙Φ⌡ ∩ε±≥αΓΩ≤ Microsoft ß≡ε≤τσ≡α
  1523.      Γ∞σ±≥σ ± Windows. ▌≥ε ≥αΩµσ ∩≡σ∩ ≥±≥Γ≤σ≥ ∩≡εΣΓΦµσφΦ■ φα ≡√φεΩ
  1524.      ΩεφΩ≤≡σφ≥φε±∩ε±εßφ√⌡ ß≡ε≤τσ≡εΓ.
  1525.  
  1526. ╠φεπΦσ δ■ΣΦ φσ ∩εφΦ∞α■≥ ∩εδΦ≥ΦΩΦ, Γτ ≥εΘ φα Γεε≡≤µσφΦσ Ωε∞∩αφΦσΘ Microsoft.
  1527. ╟α≈α±≥≤■ ≤±δεΓΦ , Ωε≥ε≡√σ ±≥αΓΦ≥ Microsoft Γ ±επδα°σφΦ ⌡, ε≈σφⁿ φσ≡ατ≤∞φ√,
  1528. α ∩ε≡εΘ Φ αß±εδ■≥φε φσ∩≡Φσ∞δσ∞√. ┬ε≥ ∩ε≈σ∞≤ MS ±≥αδΩΦΓασ≥±  ± ∩≡εßδσ∞εΘ
  1529. φσδσπαδⁿφεπε Φ±∩εδⁿτεΓαφΦ  ±ΓεΦ⌡ ∩≡εΣ≤Ω≥εΓ Γ ╤╪└, ╚≥αδΦΦ, ┴≡ατΦδΦΦ Φ
  1530. σΓ≡ε∩σΘ±ΩΦ⌡ ±≥≡αφα⌡.
  1531.  
  1532. *(╫α±≥ⁿ 6) ╩αΩ ≡αßε≥α≥ⁿ ±ε ±Γ τφ√∞Φ ±∩Φ±Ωα∞Φ, σ±δΦ Γ Java φσ≥ ≤Ωατα≥σδσΘ?
  1533.  
  1534. [*] ╚τ Γ±σ⌡ ταßδ≤µΣσφΦΘ, ±Γ ταφ√⌡ ± Java, ²≥ε - ±α∞εσ φσ∩≡Φ ≥φεσ.
  1535. ╬ßⁿσΩ≥φε-ε≡Φσφ≥Φ≡εΓαφφεσ ∩≡επ≡α∞∞Φ≡εΓαφΦσ ε±φεΓαφε Φ±Ωδ■≈Φ≥σδⁿφε φα
  1536. ≤Ωατα≥σδ ⌡. ╚φα≈σ πεΓε≡ , Σε±≥≤∩ Ω εßⁿσΩ≥α∞ ∩≡εΦ±⌡εΣΦ≥ Γ±σπΣα ≈σ≡στ
  1537. ≤Ωατα≥σδΦ, Φ φΦΩεπΣα - φα∩≡ ∞≤■. Hε ²≥ε ≤Ωατα≥σδΦ φατΓαφ√ "±±√δΩα∞Φ" Φ
  1538. Γ±σπΣα αΓ≥ε∞α≥Φ≈σ±ΩΦ "≡ατ√∞σφεΓ√Γα■≥± ".
  1539.  
  1540. ┬ Java φσ≥ α≡Φ⌠∞σ≥ΦΩΦ ≤Ωατα≥σδσΘ Φ ∩≡εΦτΓεδⁿφεπε ∩≡σεß≡ατεΓαφΦ  ≥Φ∩εΓ.
  1541. ╟α∩≡σ≥ΦΓ ±ετΣαΓα≥ⁿ Φ ∞σφ ≥ⁿ ≤Ωατα≥σδΦ ∩ε ±Γεσ∞≤ ≤±∞ε≥≡σφΦ■, Java Σσδασ≥
  1542. ≡αßε≥≤ ± ∩α∞ ≥ⁿ■ ßεδσσ φαΣσµφεΘ, φε ∩ετΓεδ σ≥ ±ετΣαΓα≥ⁿ ΣΦφα∞Φ≈σ±ΩΦσ
  1543. ±≥≡≤Ω≥≤≡√. ╩≡ε∞σ ≥επε, Γ Java σ±≥ⁿ NullPointerException (φ≤δσΓεΘ
  1544. ≤Ωατα≥σδⁿ), α φσ NullReferenceException (φ≤δσΓα  ±±√δΩα).
  1545.  
  1546. ╩δα±± ±Γ ταφεπε ±∩Φ±Ωα ∞επ Γ√πδ Σσ≥ⁿ ∩≡Φ∞σ≡φε ≥αΩ:
  1547.  
  1548.     public class LinkedList {
  1549.  
  1550.         public LinkedList head;
  1551.  
  1552.         public LinkedList next;
  1553.  
  1554.         public Object data;
  1555.  
  1556.         public LinkedList advanceToNext(LinkedList current) { ...
  1557.  
  1558.     }
  1559.  
  1560.  
  1561.  
  1562. ─≡≤πεΘ Γα≡Φαφ≥ - Φ±∩εδⁿτεΓα≥ⁿ ±≥αφΣα≡≥φ√Θ Ωδα±± java.util.Vector, Ωε≥ε≡√Θ
  1563. ∩≡ΦφΦ∞ασ≥ Φ ⌡≡αφΦ≥ εßⁿσΩ≥√ Γ ∩≡εΦτΓεδⁿφ√⌡ ΩεδΦ≈σ±≥Γα⌡ (ΩαΩ ±∩Φ±ΩΦ), Φ
  1564. Γ√Σασ≥ Φ⌡ ∩ε φε∞σ≡≤ (ΩαΩ ∞α±±ΦΓ). ┬σΩ≥ε≡ αΓ≥ε∞α≥Φ≈σ±ΩΦ ∞σφ σ≥ ±ΓεΘ ≡ατ∞σ≡
  1565. ∩≡Φ φσεß⌡εΣΦ∞ε±≥Φ. ─εßαΓδσφΦσ ²δσ∞σφ≥α Γ φα≈αδε ΓσΩ≥ε≡α - ßεδσσ ∞σΣδσφφα 
  1566. ε∩σ≡α÷Φ , ≈σ∞ ΣεßαΓδσφΦσ Γ ±∩Φ±εΩ, φε τα≥ε Γ√ßε≡Ωα ²δσ∞σφ≥α ∩≡εΦ±⌡εΣΦ≥
  1567. ß√±≥≡σσ. ╫≥ε Γαµφσσ Σδ  Γα°σπε ∩≡ΦδεµσφΦ ?
  1568.  
  1569. *(╫α±≥ⁿ 6) ╩αΩ ∩≡σΣα■≥±  ∩α≡α∞σ≥≡√ - ∩ε τφα≈σφΦ■ ΦδΦ ∩ε ±±√δΩσ?
  1570.  
  1571. [*] ┬±σ ∩α≡α∞σ≥≡√ (ΩαΩ ßατεΓ√σ ≥Φ∩√ ≥αΩ Φ ±±√δΩΦ φα εßⁿσΩ≥√) ∩σ≡σΣα■≥±  ∩ε
  1572. τφα≈σφΦ■. Hε φσ Γ±σ ≥αΩ ∩≡ε±≥ε, ≥αΩ ΩαΩ ≡αßε≥α ± εßⁿσΩ≥α∞Φ ∩≡εΦτΓεΣΦ≥±  ∩ε
  1573. ±±√δΩσ. ╧ε²≥ε∞≤ ∞εµφε ±Ωατα≥ⁿ, ≈≥ε εßⁿσΩ≥√ ∩σ≡σΣα■≥±  ∩ε ±±√δΩσ (α ±±√δΩα
  1574. ∩σ≡σΣασ≥±  ∩ε τφα≈σφΦ■). ▌≥ε - ±δσΣ±≥ΓΦσ ≥επε, ≈≥ε ∩σ≡σ∞σφφ√σ ±εΣσ≡µα≥ φσ
  1575. ±α∞Φ εßⁿσΩ≥√, α ±±√δΩΦ φα φΦ⌡ (±∞. ∩≡σΣ√Σ≤∙ΦΘ Γε∩≡ε± ε ±Γ τφ√⌡ ±∩Φ±Ωα⌡).
  1576.  
  1577. ╧≡Φ∞σ≈αφΦσ: ╩επΣα ∩α≡α∞σ≥≡ ∩≡Φ∞Φ≥ΦΓφεπε ≥Φ∩α (int, char Φ ≥.∩.) Φτ∞σφ σ≥± 
  1578. Γφ≤≥≡Φ ∞σ≥εΣα, Φ±⌡εΣφα  ∩σ≡σ∞σφφφα  _φσ ∞σφ σ≥± _. ╥σ∞ φσ ∞σφσσ, ∩εδ 
  1579. εßⁿσΩ≥εΓ ∞σφ ■≥±  ∩≡Φ Φτ∞σφσφΦΦ ∩εδ  ∩α≡α∞σ≥≡α Γ Γ√τΓαφε∞ ∞σ≥εΣσ.
  1580.  
  1581. ╤∞. Γ FAQ:
  1582. ╩αΩ ≡αßε≥α≥ⁿ ±ε ±Γ τφ√∞Φ ±∩Φ±Ωα∞Φ, σ±δΦ Γ Java φσ≥ ≤Ωατα≥σδσΘ?
  1583. ╤∞. ≥αΩµσ:
  1584. JLS 8.4.1 Formal Parameters
  1585.  
  1586. *(╫α±≥ⁿ. 6) ╫≥ε ≥αΩεσ "δΦ≥σ≡αδ√ Ωδα±±α"? (class litrals)
  1587.  
  1588. [*] HεΓ√Θ ±Φφ≥αΩ±Φ± Γ JDK 1.1. ▌≥ε Ωεφ±≥αφ≥√ ≥Φ∩α "Class", ±εΣσ≡µα°Φσ
  1589. Φφ⌠ε≡∞α÷Φ■ ε ΩεφΩ≡σ≥φε∞ Ωδα±±σ. ┼±≥ⁿ Σαµσ Ωεφ±≥αφ≥√ Σδ  ≥Φ∩α "void" Φ
  1590. ∞α±±ΦΓεΓ, φα∩≡Φ∞σ≡:
  1591.  
  1592.     Class myCl1 = Character.class;
  1593.  
  1594.     Class myCl2 = Void.class;
  1595.  
  1596.     Class myCl3 = Object.class;
  1597.  
  1598.     Class myCl4 = String[].class;
  1599.  
  1600.     Class myCl5 = int[][].class;
  1601.  
  1602.  
  1603.  
  1604. ▌≥ε ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ, φα∩≡Φ∞σ≡, ≥αΩ:
  1605.  
  1606.     Class cl = thing.getClass();
  1607.  
  1608.     if (cl.equals(myCl1))
  1609.  
  1610.     System.out.println("It's a Character class");
  1611.  
  1612.  
  1613.  
  1614. ╟α∞σ≥ⁿ≥σ, ≈≥ε δΦ≥σ≡αδ Ωδα±±α
  1615.  
  1616.         Component.class
  1617.  
  1618.  
  1619.  
  1620. σ±≥ⁿ ²ΩΓΦΓαδσφ≥
  1621.  
  1622.         Class.forName("java.awt.Component")
  1623.  
  1624.  
  1625.  
  1626. ╧ε±δσΣφσσ ∞εµσ≥ Γ√ß≡α±√Γα≥ⁿ Φ±Ωδ■≈σφΦσ, Γ ε≥δΦ≈Φσ ε≥ ∩σ≡Γεπε. ┼±δΦ Γ ∞ε∞σφ≥
  1627. φα∩Φ±αφΦ  Φ∞  ΩεφΩ≡σ≥φεπε Ωδα±±α φσ ΦτΓσ±φε, ≥ε Γ√ φσ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ
  1628. ∩σ≡Γ≤■ ⌠ε≡∞≤.
  1629.  
  1630. *(Sect. 6) ╩αΩΦσ ±επδα°σφΦ  εß Φ∞σφα⌡ ±≤∙σ±≥Γ≤■≥ Γ Java?
  1631.  
  1632. [*] ╤επδα°σφΦ  εß Φ∞σφα⌡ ∩≡ε±≥√:
  1633.  
  1634.   1. Hσ±εΓ∩αΣσφΦ  Φ∞σφ ∩αΩσ≥εΓ πα≡αφ≥Φ≡εΓαφ√ Φ±∩εδⁿτεΓαφΦσ Φ∞σφΦ Σε∞σφα Γ
  1635.      εß≡α≥φε∞ ∩ε≡ ΣΩσ: com.javasoft.jag - "com" Φ "edu" εß√≈φε Γ Γσ≡⌡φσ∞
  1636.      ≡σπΦ±≥≡σ, φε ≥σ∩σ≡ⁿ ≡σΩε∞φσΣ≤σ≥±  Γ φΦµφσ∞.
  1637.   2. ╚∞σφα Ωδα±±εΓ - ε∩Φ±α≥σδⁿφ√σ ±≤∙σ±≥ΓΦ≥σδⁿφ√σ, ± ταπδαΓφεΘ ß≤ΩΓεΘ Γ
  1638.      φα≈αδσ ΩαµΣεπε ±δεΓα: PolarCoords (╧εδ ≡φ√σ╩εε≡ΣΦφα≥√). ╫α±≥ε (φε φσ
  1639.      Γ±σπΣα) Φφ≥σ≡⌠σΘ±√ φατ√Γα■≥±  "≈≥ε-≥ε-able", φα∩≡Φ∞σ≡, "Runnable"
  1640.      (τα∩≤±Ωασ∞√Θ), "Sortable" (≤∩ε≡ Σε≈σΓασ∞√Θ). ╧≡σΣ≤∩≡σµΣσφΦσ:
  1641.      java.util.Observable φσ Φφ≥σ≡⌠σΘ±, α java.util.Observer - Φφ≥σ≡⌠σΘ±.
  1642.      ▌≥Φ ΣΓα Φ∞σφΦ ∩δε⌡ε ∩≡εΣ≤∞αφ√.
  1643.   3. ╧σ≡σ∞σφφ√Θ Φ ∩εδ  - ±≤∙σ±≥ΓΦ≥σδⁿφεσ/⌠≡ατα ± ±≤∙σ±≥ΓΦ≥σδⁿφ√∞, ± ∩σ≡ΓεΘ
  1644.      ß≤ΩΓεΘ Γ φΦµφσ∞ ≡σπΦ±≥≡σ Φ ∩≡σΓεΘ ß≤ΩΓεΘ ∩εΣ±δεΓα - Γ Γσ≡⌡φσ∞:
  1645.      currentLimit (≥σΩ≤∙ΦΘ╧≡σΣσδ).
  1646.   4. ╚∞σφα ∞σ≥εΣεΓ - πδαπεδ/⌠≡ατα ± πδαπεδε∞, ± ∞αδσφⁿΩεΘ ß≤ΩΓ√, ΩαµΣεσ
  1647.      ∩εΣ±δεΓε - ± ßεδⁿ°εΘ: calculateCurrentLimit (Γ√≈Φ±δΦ≥ⁿ╥σΩ≤∙ΦΘ╧≡σΣσδ).
  1648.   5. ╚∞σφα Ωεφ±≥αφ≥ (± ∞εΣΦ⌠ΦΩα≥ε≡ε∞ final) ∩Φ°≤≥±  ßεδⁿ°Φ∞Φ ß≤ΩΓα∞Φ:
  1649.      UPPER_LIMIT
  1650.   6. ╤∞. Γ FAQ:
  1651.      ├Σσ Γτ ≥ⁿ ≡≤ΩεΓεΣ±≥Γε ε ±επδα°σφΦ ⌡ εß Φ∞σφα⌡ Γ Java?
  1652.      ╤∞. ≥αΩµσ:
  1653.      JLS 6.8 Naming conventions
  1654.  
  1655. *(╫α±≥ⁿ 6) ╦≤≈°σ δΦ Φ±∩εδⁿτεΓα≥ⁿ Φ∞∩ε≡≥ {package}.{class} Γ∞σ±≥ε
  1656. {package}.*?
  1657. ╧εΓδΦ σ≥ δΦ ²≥ε φα ⌠αΘδ Ωδα±±α, σ±δΦ   Φ∞∩ε≡≥Φ≥≡≤■ Γσ±ⁿ ∩αΩσ≥ Γ∞σ±≥ε
  1658. Φ±∩εδⁿτεΓαφΦ  ∩εδφεπε Φ∞σφΦ, ≥.σ.
  1659.  
  1660.     import java.rmi.server.*;
  1661.  
  1662.     ...
  1663.  
  1664.     RemoteObject ro;
  1665.  
  1666. Γ∞σ±≥ε
  1667.  
  1668.     java.rmi.server.RemoteObject ro;
  1669.  
  1670. [*] ▌≥ε φΦΩαΩ φσ ε≥≡ατΦ≥±  φα ⌠αΘδσ Ωδα±±α ΦδΦ ±Ωε≡ε±≥Φ Γ√∩εδφσφΦ . ╚∞∩ε≡≥
  1671. - ²≥ε ∩≡ε±≥ε ±εΩ≡α∙σφΦσ Σδ  Σδ  ∩εδφ√⌡ Φ∞σφ Ωδα±±εΓ ∩αΩσ≥σ (ΩαΩ Γ ∩≡Φ∞σ≡σ
  1672. Γ√°σ). ╚∞∩ε≡≥Φ≡εΓαφΦσ δΦ°φσπε Ωδα±±α φσ ∩≡ΦΓεΣΦ≥ Ω σπε ταπ≡≤τΩσ ∩≡Φ
  1673. Γ√∩εδφσφΦΦ. Hσ≥ φΦΩαΩΦ⌡ ε≥≡Φ÷α≥σδⁿφ√⌡ ²⌠⌠σΩ≥εΓ ∩≡Φ Φ±∩εδⁿτεΓαφΦΦ ⌠ε≡∞√ "*".
  1674. ╘αΘδ Ωδα±±α Γ±σπΣα ±εΣσ≡µΦ≥ Φ∞σφα ≥εδⁿΩε Φ±∩εδⁿτ≤σ∞√⌡ ∩αΩσ≥εΓ, Φ ταπ≡≤τ≈ΦΩ
  1675. ß≤Σσ≥ Φ±Ωα≥ⁿ ≥σ Ωδα±±√, Ωε≥ε≡√σ φσεß⌡εΣΦ∞√.
  1676.  
  1677. ┬ε Γ≡σ∞  Ωε∞∩Φδ ÷ΦΦ ΓΦΣ Φ∞∩ε≡≥α ∞εµσ≥ ΩαΩ Φτ∞σφΦ≥ⁿ, ≥αΩ Φ φσ Φτ∞σφΦ≥ⁿ Γ≡σ∞ 
  1678. Ωε∞∩Φδ ÷ΦΦ. ╥αΩεσ ≡ατδΦ≈Φσ, ±Ωε≡σσ Γ±σπε, ß≤Σσ≥ φσ τα∞σ≥φε, Φ ²≥ε φσ ∞εµσ≥
  1679. ±δ≤µΦ≥ⁿ ΣεΓεΣε∞ Σδ  Γ√ßε≡α ΓΦΣα Φ∞∩ε≡≥Φ≡εΓαφΦ .
  1680.  
  1681. ╥σ∞ φσ ∞σφσσ, ±≤∙σ±≥Γ≤■≥ ±≥ΦδσΓ√σ ∩≡Φ≈Φφ√. HσΩε≥ε≡√σ ≤≥Γσ≡µΣα■≥, ≈≥ε
  1682. Φ∞∩ε≡≥Φ≡εΓαφΦσ Ωδα±±εΓ Φδ≤≈°ασ≥ "≈Φ≥αßσδⁿφε±≥ⁿ" ∩≡επεα∞∞√. ┬ ∩≡ε≡α∞∞√⌡ ±
  1683. ßεδⁿ°Φ∞ ΩεδΦ≈σ±≥Γε∞ "*" ΦφεπΣα ≥≡≤Σφε ∩εφ ≥ⁿ, ΩαΩεΘ Ωδα±± ε≥Ω≤Σα
  1684. Φ∞∩ε≡≥Φ≡≤σ≥± . ┼±δΦ Γ√  ±φε εßⁿ Γδ σ≥σ Φ∞∩ε≡≥ Σδ  ΩαµΣεπε Ωδα±±α Γ φα≈αδσ
  1685. ∩≡επ≡α∞∞√, Γ√ ΣεΩ≤∞σφ≥Φ≡≤σ≥σ, πΣσ ±εΣσ≡µ≥±  ΩαµΣ√Θ Φ±∩εδⁿτ≤σ∞√Θ Ωδα±±.
  1686. ╥αΩΦσ δ■ΣΦ ∩≡σΣδαπα■≥ Φ±∩εδⁿτεΓα≥ⁿ
  1687.  
  1688. import java.rmi.server.RemoteObject;
  1689.  
  1690.  
  1691.  
  1692. Γ∞σ±≥ε
  1693.  
  1694. import java.rmi.server.*;
  1695.  
  1696.  
  1697.  
  1698. ─≡≤πΦσ µσ ≤≥Γσ≡µΣα■≥, ≈≥ε σ∙σ ∩εφ ≥φσΘ Φ±∩εδⁿτεΓα≥ⁿ ∩εδφ√σ Φ∞σφα ∩αΩσ≥εΓ Φ
  1699. Ωδα±±εΓ ΓστΣσ, πΣσ Γ√ Φ±∩εδⁿτ≤σ≥σ Ωδα±±√ Φτ Σ≡≤πΦ⌡ ∩αΩσ≥εΓ.
  1700. ▌≥Φ δ■ΣΦ ∩≡σΣδαπα■≥ ∩Φ±α≥ⁿ
  1701.  
  1702. java.rmi.server.RemoteObject ro;
  1703.  
  1704.  
  1705.  
  1706. ▌≥ε ±≥αφεΓΦ≥±  φσ∞φεπε ΣδΦφσσ, ΩεπΣα Γ√ ΦφΦ÷ΦαδΦτΦ≡≤σ≥σ ∩≡σ∞σφφ≤■:
  1707.  
  1708.         java.rmi.server.RemoteObject ro
  1709.  
  1710.                   = new java.rmi.server.RemoteObject();
  1711.  
  1712.  
  1713.  
  1714. ┬√ Γ±σπΣα ∞εµσ≥σ Γ√ß≡α≥ⁿ, φαß≡α≥ⁿ δΦ Γα∞ ∩εδφεσ Φ∞  ΦδΦ Φ±∩εδⁿτεΓα≥ⁿ
  1715. Φ∞∩ε≡≥.
  1716.  
  1717. ┼±≥ⁿ σ∙σ εΣφα ∩≡Φ≈Φφα φσ Φ±∩εδⁿτεΓα≥ⁿ "*". ┼±δΦ Γ√ Φ∞∩ε≡≥Φ≡≤σ≥σ ΣΓα ∩αΩσ≥α,
  1718. Φ∞σ■∙Φσ Ωδα±±√ ± εΣΦφαΩεΓ√∞Φ Φ∞σφα∞Φ Φ Γ√ ⌡ε≥Φ≥σ Φ±∩εδⁿτεΓα≥ⁿ ≥εδⁿΩεεΣΦφ Φτ
  1719. φΦ⌡. Hα∩≡Φ∞σ≡,
  1720.  
  1721.     import com.sun.*;
  1722.  
  1723.     import com.ms.*;
  1724.  
  1725.  
  1726.  
  1727. πΣσ ±εΣσ≡µα≥±  ΣΓα Ωδα±±α ± Φ∞σφσ∞ Modem Γ εßσΦ⌡ ∩αΩσ≥α⌡. ┼±δΦ Φ±∩εδⁿτ≤σ≥± 
  1728. "*"-⌠ε≡∞α, ≥ε εßα Ωδα±±α ß≤Σ≤≥ Φ∞∩ε≡≥Φ≡εΓαφ√, Φ Γ√ εß ταφ√ ∩Φ±α≥ⁿ ∩εδφ√σ
  1729. Φ∞σφα Ωδα±±εΓ ΓστΣσ, πΣσ εφΦ Φ±∩εδⁿτεΓαφ√, ≈≥εß√ Ωε∞∩Φδ ≥ε≡ ∩εφ δ, ≈≥ε Γ√
  1730. Φ∞σσ≥σ Γ ΓΦΣ≤. ┬ Java 1.2 ß√δ ∩≡σΣ±≥αΓδσφ Ωδα±± java.util.List. ▌≥ε≥ Ωδα±±
  1731. Φ∞σσ≥ ≥εµσ Φ∞ , ≈≥ε Φ java.util.List. ┼±δΦ Γ√ Φ±∩εδⁿτ≤σ≥σ Γ ∩≡επ≡α∞∞σ
  1732. "import java.awt.*; import java.util.*;", Γα°α ∩≡επ≡α∞∞α, Γετ∞εµφε, φσ
  1733. ß≤Σσ≥ Ωε∞∩ΦδΦ≡εΓα≥ⁿ±  - Γ√ ∩εδ≤≈Φ≥σ ±εεß∙σφΦσ ε φσεΣφετφα≈φ√⌡ Φ∞σφα⌡. ┼±δΦ
  1734. Γ√ Φ∞∩ε≡≥Φ≡≤σ≥σ Γ±σ ⌠αΘδ√ ßστ ≡ατßε≡α, ≥ε Γ ±δ≤≈ασ Φτ∞σφσφΦ  API ≤ Γα±
  1735. ∞επ≤≥ ∩ε ΓΦ≥ⁿ±  ∩≡εßδσ∞√.
  1736.  
  1737. ┬ Java 1.0, σ±δΦ Φ∞∩ε≡≥Φ≡≤σ≥±  Ωδα±±, Ωε≥ε≡√Θ Φ∞σσ≥ ≥ε µσ Φ∞ , ≈≥ε Φ Ωδα±±
  1738. Γ ≥σΩ±≥σ, ≥ε Γ√ ∩εδ≤≈Φ≥σ ±εεß∙σφΦσ ε Ωεφ⌠δΦΩ≥σ Φ∞σφ. ┬ Java 1.1 ß≤Σσ≥
  1739. Φ∩εδⁿτεΓαφ δεΩαδⁿφ√Θ Ωδα±±, σ±δΦ φσ ≤Ωαταφε Φ∞  ∩αΩσ≥α. ─δ  Φ±∩εδⁿτεΓαφΦ 
  1740. "Φ∞∩ε≡≥φεπε" Ωδα±±α Φ±∩εδⁿτ≤Θ≥σ ∩εδφεσ Φ∞ .
  1741.  
  1742. ╤α∞εσ δ≤≈°σσ - ∩Φ±α≥ⁿ ∩≡επ≡α∞∞≤ ≥αΩ, ≈≥εß√ εφα ß√δα ΩαΩ ∞εµφε ßεδσσ
  1743. ≈Φ≥αßσδⁿφα. ┼δΦ Φ±∩εδⁿτ≤σ≥±  π≡≤∩∩α °Φ≡εΩε ΦτΓσ±≥φ√⌡ Ωδα±±εΓ, ΩαΩ java.awt,
  1744. ≥ε φσ≥ ε±εß√⌡ ∩≡Φ≈Φφ φσ Φ±∩εδⁿτεΓα≥ⁿ "import java.awt.*;"
  1745.  
  1746. *(╫α±≥ⁿ 6) ╫≥ε ±δ≤≈Φδε±ⁿ ± "private protected"?
  1747.  
  1748. [*] ┬∩σ≡Γ√σ ²≥ε ∩ε ΓΦδε±ⁿ Γ JDK 1.0 FCS (σπε φσ ß√δε Γ ßσ≥α⌡). ╟α≥σ∞ ß√δε
  1749. ≤ß≡αφε Γ JDK 1.0.1. ▌≥ε ß√δ π≡ τφ√Θ ⌡αΩ ±Φφ≥αΩ±Φ±α, Φ εφ φσ ±εε≥Γσ≥±≥ΓεΓαδ
  1750. δεπΦ≈σ±ΩΦ Σ≡≤πΦ∞ ∞εΣΦ⌠ΦΩα≥ε≡α∞ Σε±≥≤∩α. ╬φ φΦΩεπΣα φσ ≡αßε≥αδ ∩≡αΓΦδⁿφε: Γ
  1751. Γσ≡±Φ ⌡ JDK, Σε ≥επε ΩαΩ εφ ß√δ ≤ß≡αφ, Γ√τεΓ√ private protected ∞σ≥εΣεΓ φσ
  1752. ±Γ τ√ΓαδΦ±ⁿ ΣΦφα∞Φ≈σ±ΩΦ, ΩαΩ ²≥ε Σεδµφε ß√δε ß√ ß√≥ⁿ. ╬φ ΣεßαΓδ δ ε≈σφⁿ
  1753. φσ∞φεπε Γετ∞εµφε±≥σΘ Ω  τ√Ω≤. ╚±∩εδⁿτεΓα≥ⁿ ±≤∙σ±≥Γ≤■∙Φσ Ωδ■≈σΓ√σ ±δεΓα ±
  1754. Σ≡≤πΦ∞ τφα≈σφΦσ∞- Γ±σπΣα ∩δε⌡α  ΦΣσ . ╚±∩εδⁿτεΓα≥ⁿ ΣΓα Φτ φΦ⌡ Γ∞σ±≥σ - σ∙σ
  1755. ⌡≤µσ.
  1756.  
  1757. ╧ε ε⌠Φ÷ΦαδⁿφεΘ Γσ≡±ΦΦ ²≥ε ßαπ. Hε ²≥ε φσ∩εδφα  Φ±≥ε≡Φ . Private protected
  1758. ß√δ ΣεßαΓδσφ ∩ε≥ε∞≤, ≈≥ε ≤ φσπε ß√δΦ ±Φδⁿφ√σ τα∙Φ≥φΦΩΦ. ╬φ ß√δ ≤ß≡αφ, ΩεπΣα
  1759. ß√δ ε±≤µΣσφ Γ±σεß∙Φ∞ ∞φσφΦσ∞.
  1760.  
  1761. Hα±δσΣεΓαφΦσ (inheritance)
  1762.  
  1763. *╩αΩεΓε ≡ατδΦ≈Φσ ∞σµΣ≤ φα±δσΣεΓαφΦσ∞ Φ αß±≥≡αΩ≥φ√∞ Ωδα±±ε∞?
  1764.  
  1765. [*] HσΩε≥ε≡εσ ±σ∞αφ≥Φ≈σ±Ωεσ ε≥δΦ≈Φσ: ╠εΣσδⁿ αß±≥≡αΩ≥φ√⌡ ±≤∩σ≡Ωδα±±εΓ
  1766. ∞εΣσδΦ≡≤σ≥ ±Γ τΦ "σ±≥ⁿ", ≥επΣα ΩαΩ Φφ≥σ≡⌠σΘ± ∞εΣσδΦ≡≤σ≥ ±Γ τⁿ "Φ∞σσ≥".
  1767. ╧≡αΓΦδε ≥αΩεΓε - σ±δΦ ²≥ε ∩εΣ≥Φ∩, φα±δσΣ≤Θ≥σ, Φφα≈σ - ≡σαδΦτ≤Θ≥σ.
  1768.  
  1769. Hε, Γ ε≥±≤≥±≥ΓΦσ ≡σαδⁿφ√⌡ ⌡α≡αΩ≥σ≡Φ±≥ΦΩ Σδ  Γ√ΣσδσφΦ  εß·σΩ≥εΓ Φτ Φ⌡
  1770. ±ΓεΘ±≥Γ Φ ∩≡σΣΩεΓ, ²≥ε ±≥αφεΓΦ≥±  α≡π≤∞σφ≥ε∞, ΣσΘ±≥Γ≤■∙Φ∞ Φ Γ ≥≤ Φ Γ Σ≡≤π≤■
  1771. ±≥ε≡εφ≤. ┬ ²≥ε∞ ±δ≤≈ασ ┬√ Σεδµφ√ ∩ε±∞ε≥≡σ≥ⁿ φα ∩≡αΩ≥Φ≈σ±Ωεσ ≡ατδΦ≈Φσ Γ Java
  1772. (Γ ±≡αΓφσφΦΦ ± C++) .
  1773.  
  1774. ╬±φεΓφ√σ ≡ατδΦ≈Φ  ∞σµΣ≤ Φφ≥σ≡⌠σΘ±α∞Φ Φ αß±≥≡αΩ≥φ√∞Φ Ωδα±±α∞Φ ∩≡εΦτ≡α±≥α■≥
  1775. Φτ ≥≡σ⌡ ⌡α≡αΩ≥σ≡Φ±≥ΦΩ:
  1776.  
  1777.   1. ╬ßα ε∩≡σΣσδ ■≥ ε∩Φ±αφΦ  ∞σ≥εΣεΓ, Ωε≥ε≡√σ ß≤Σσ≥ Φ∞σ≥ⁿ ∩≡εΦτΓεΣφ√Θ
  1778.      Ωδα±±.
  1779.   2. └ß±≥≡αΩ≥φ√Θ Ωδα±± ∞εµσ≥ ≥αΩµσ ε∩≡σΣσδ ≥ⁿ ≈α±≥Φ≈φ≤■ ≡σαδΦτα÷Φ■.
  1780.   3. ╩δα±± ∞εµσ≥ ≡σαδΦτεΓα≥ⁿ ∞φεπε Φφ≥σ≡⌠σΘ±εΓ, φε φα±δσΣ≤σ≥±  ≥εδⁿΩε ε≥
  1781.      εΣφεπε Ωδα±±α.
  1782.  
  1783. ┴εδσσ Σσ≥αδⁿφε:
  1784.  
  1785.   1. ╬∩Φ±αφΦ  ∞σ≥εΣεΓ ╚ Φφ≥σ≡⌠σΘ±√ Φ αß±≥≡αΩ≥φ√σ Ωδα±±√ ∩ετΓεδ ■≥
  1786.      εß≡α∙α≥ⁿ±  ± Ωδα±±ε∞ ∩≡εΦτΓεΣφεπε ≥Φ∩α ΩαΩ ± Ωδα±±ε∞ ≥Φ∩α, ε≥ Ωε≥ε≡επε
  1787.      εφ ≤φα±δσΣεΓαφ. ╬ßα ε∩≡σΣσδ ■≥ φαßε≡ Σε±≥≤∩φ√⌡ ∞σ≥εΣεΓ ±∩ε±εßε∞,
  1788.      Ωε≥ε≡√Θ ∞εµσ≥ ß√≥ⁿ ≤±Φδσφ ∞σ⌡αφΦτ∞ε∞ ∩≡εΓσ≡ΩΦ ≥Φ∩α. ▌≥ε εß√≈φε
  1789.      Φ±∩εδⁿτ≤σ≥±  Σδ  ≥επε, ≈≥εß√ ∩ετΓεδΦ≥ⁿ ≡ατδΦ≈φ√∞ (∩≡εΦτΓεΣφ√∞) ≥Φ∩α∞
  1790.      Φ∞σ≥ⁿ εΣΦφαΩεΓεΓσ ∩εΓσΣσφΦσ (≥αΩ ΩαΩ εφΦ Γ±σ φα±δσΣφΦΩΦ, ≥.σ. εφΦ Γ±σ
  1791.      Φ∞σ■≥ ε∩≡σΣσδσφφ√σ ∞σ≥εΣ√). Hα∩≡Φ∞σ≡, Γ±σ ≥Φ∩α java,* ∞επ≤≥ ß√≥ⁿ
  1792.      ≡α±∩σ≈α≥αφ√ ΩαΩ String, ≥αΩ ΩαΩ Object, ±≤∩σ≡Ωδα±± Γ±σ⌡ ≥Φ∩εΓ java.*,
  1793.      Φ∞σσ≥ ∞σ≥εΣ toString(). └φαδεπΦ≈φε, Γ±σ ≥Φ∩√, Ωε≥ε≡√σ ≡σαδΦτ≤■≥
  1794.      Φφ≥σ≡⌠σΘ± Observable Σε±≥≤∩φ√ ΩαΩ Observer Σδ  ±ΦπφαδΦτα÷ΦΦ, ≈≥ε
  1795.      ±εß√≥Φσ ∩≡εΦτε°δε. ▌≥ε ∩ετΓεδ σ≥ αδπε≡Φ≥∞≤ ΦδΦ ±σ≡ΓΦ±≤ ≡αßε≥α≥ⁿ ±
  1796.      ≡ατδΦ≈φ√∞Φ (∩≡εΦτΓεΣφ√∞Φ) ≥Φ∩α∞Φ, ≥αΩ ΩαΩ ß≤Σ≥ε εφΦ εΣφεπε (ε≥
  1797.      Ωε≥ε≡επε ≤φα±δσΣεΓαφ√) ≥Φ∩α.
  1798.      ▌≥ε≥ ∞σ⌡αφΦτ∞ ∩εΣΣσ≡µΦΓασ≥ φσ ≥εδⁿΩε ∩εδΦ∞ε≡⌠Φτ∞ (εΣΦφ εß·σΩ≥
  1799.      εß≡αßα≥√Γασ≥±  ΩαΩ Σ≡≤πεΘ), φε Φ ΣΦ⌠⌠σ≡σφ÷Φα÷Φ■. ┬ δ■ßε∞ ±δ≤≈ασ ≥Φ∩√
  1800.      (∩≡εΦτΓεΣφ√σ) ∞επ≤≥ ≡σαδΦτεΓ√Γα≥ⁿ ∞σ≥εΣ ±∩ε±εßε∞, ±εε≥Γσ≥±≥Γ≤■∙Φ∞
  1801.      ²≥ε∞≤ ≥Φ∩≤. ╬ΣφαΩε, ┬√ φσ εß ταφ√ ∩σ≡σΩ≡√Γα≥ⁿ ≤φα±δσΣεΓαφφ≤■
  1802.      ⌠≤φΩ÷Φεφαδⁿφε±≥ⁿ, φε ┬√ Σεδµφ√ ≡σαδΦτεΓα≥ⁿ ∞σ≥εΣ√ Φφ≥σ≡⌠σΘ±α, ≥αΩ ≈≥ε
  1803.      σ±δΦ ┬√ εµΦΣασ≥σ τφα≈Φ≥σδⁿφ√σ ≡ατδΦ≈Φ , ≥ε ∞εµσ≥ ß√≥ⁿ ε∩≡αΓΣαφφ√∞
  1804.      Φ±∩εδⁿτεΓαφΦσ Φφ≥σ≡⌠σΘ±α.
  1805.      HαΩεφσ÷, ²≥ε≥ ∞σ⌡αφΦτ∞ ∩εΣΣσ≡µΦΓασ≥ ±δαß√Θ Γα≡Φαφ≥ Ωεφ≥≡εδ  Σε±≥≤∩α.
  1806.      ╥εδⁿΩε ≤φα±δσΣεΓαφφ√σ ∞σ≥εΣ√ Σε±≥≤∩φ√ Γ√τ√Γα■∙σ∞≤, Ωε≥ε≡√Θ Φ∞σσ≥
  1807.      Σε±≥≤∩ Ω ε∩Φ±αφΦ■ ±≤∩σ≡Ωδα±±α ΦδΦ Φφ≥σ≡⌠σΘ±α. ▌≥ε ±δαßε±≥ⁿ,≥αΩ ΩαΩ
  1808.      Γετ∞εµφε ≤Ωατα≥ⁿ ΩεφΩ≡σ≥φ√Θ ≥Φ∩, σ±δΦ εφ ΦτΓσ±≥σφ. ┬ δ■ßε∞ ±δ≤≈ασ, ²≥ε
  1809.      ≤∞σφⁿ°ασ≥ ±δεµφε±≥ⁿ.
  1810.   2. Hα±δσΣεΓαφΦσ ≡σαδΦτα÷ΦΦ Hα±δσΣεΓαφΦσ ≡σαδΦτα÷ΦΦ ∩εδστφε, ΩεπΣα ΩεΣ
  1811.      Σεδµσφ ß√≥ⁿ ≡ατΣσδ σ∞√∞. ╥αΩεσ ±δ≤≈ασ≥±  ΩεπΣα ∩≡εΦτΓεΣφ√σ ≥Φ∩√
  1812.      ≡ατδΦ≈α■≥±  Γ ⌠≤φΩ÷Φεφαδⁿφε±≥Φ ε≈σφⁿ φσ∞φεπε, ΦδΦ ΩεπΣα Ωε∞∩δσΩ±φ√Θ
  1813.      φαßε≡ Φφ≥σ≡⌠σΘ±εΓ ∞σ≥εΣεΓ ∞εµσ≥ ß√≥ⁿ ≡σαδΦτεΓαφ ≈σ≡στ ΓταΦ∞φ√σ ±±√δΩΦ
  1814.      ± ε≥φε±Φ≥σδⁿφε φσßεδⁿ°Φ∞ ΩεδΦ≈σ±≥Γε∞ ∞σ≥εΣεΓ, ≡σαδΦτεΓαφφ√⌡ Γ
  1815.      ∩≡εΦτΓεΣφ√⌡ ≥Φ∩α⌡. ┬√ ∞εµσ≥σ ≥αΩµσ ∩εΓ≥ε≡φε Φ±∩εδⁿτεΓα≥ⁿ ΩεΣ, ±ΣσδαΓ
  1816.      ┬α° Ωδα±± ±εΣσ≡µα∙Φ∞ ΦδΦ Φ±∩εδⁿτ≤■∙Φ∞ εß·σΩ≥ Σ≡≤πεπε ≥Φ∩α, Ωε≥ε≡√Θ
  1817.      ≡σαδΦτ≤σ≥ ²≥ε≥ ΩεΣ, φε ²≥ε φσ Σασ≥ Γετ∞εµφε±≥Φ Γ√τ√Γα■∙Φ∞ Φ±∩εδⁿτεΓα≥ⁿ
  1818.      Γα± ε±εß√∞ εß≡ατε∞. ╧εδ≤≈σφΦσ Φ ⌠≤φΩ÷Φεφαδⁿφε±≥Φ Φ Γετ∞εµφε±≥Φ ß√≥ⁿ
  1819.      Φ±∩εδⁿτεΓαφφ√∞, ΩαΩ ±≤∩σ≡Ωδα±± - ±≤∙φε±≥ⁿ ε≥φε°σφΦΘ ≥Φ∩/∩εΣ≥Φ∩.
  1820.   3. ╧≡αΓΦδε εΣΦφε≈φεπε φα±δσΣεΓαφΦ  Γ Java Java ε≥δΦ≈ασ≥±  ε≥ C++ ≥σ∞, ≈≥ε
  1821.      ∩ετΓεδ σ≥ ≥εδⁿΩε εΣΦφε≈φεσ φα±δσΣεΓαφΦσ. ▌≥ε ∩≡ΦΓεΣΦ≥ Ω ≥≡≤Σφε∞≤
  1822.      Γ√ßε≡≤, σ±δΦ ┬√ ⌡ε≥Φ≥σ ±εΓ∞σ±≥Φ≥ⁿ ⌠≤φΩ÷Φεφαδⁿφε±≥ⁿ φα±δσΣεΓαφΦ  Φ
  1823.      ∩εδΦ∞ε≡⌠Φτ∞α Φτ ßεδσσ, ≈σ∞ εΣφεπε Φ±≥ε≈φΦΩα. ╬ΣφαΩε ²≥ε ≤±ΦδΦΓασ≥
  1824.      ∩≡σΣ±≥αΓδσφΦσ ε φα±δσΣεΓαφΦσσ ΩαΩ ε ±Γ τΦ ∩εΣ≥Φ∩εΓ, Φ ∩≡σΣ±≥αΓδσφΦ■
  1825.      ²≥επε ≥Φ∩α ±Γ τΦ Γ ΓΦΣσ Σσ≡σΓα, α φσ ±σ≥Φ.
  1826.  
  1827. ┼∙σ ≡ατδΦ≈Φ :
  1828.  
  1829.   1. ╨σαδΦτα÷ΦΦ αß±≥≡αΩ≥φ√⌡ Ωδα±±εΓ ∞επ≤≥ ΓΩδ■≈α≥ⁿ ∩εδ 
  1830.   2. ╚φ≥σ≡⌠σΘ±√ ∞επ≤≥ ΓΩδ■≈α≥ⁿ final ≈δσφ√ Σαφφ√⌡
  1831.   3. ┬√τεΓ ∞σ≥εΣα ≈σ≡στ Φφ≥σ≡⌠σΘ± ∩≡σφσß≡σµΦ∞ε ∞σΣδσφφσσ. ╚∞σσ≥±  Σαµσ
  1832.      ∞σφⁿ°α  ∩ε≥σ≡  ∩≡Φ Γ√τεΓσ ±≤∩σ≡Ωδα±±α ≈σ≡στ ±±√δΩ≤ φα ∩εΣΩδα±± ( ≥.σ.
  1833.      ΩεπΣα ∩εΣΩδα±± φσ ∩σ≡σΩ≡√Γασ≥ ∞σ≥εΣ). ╧ε≈≥Φ φσ≥ ∩ε≥σ≡ⁿ ∩≡Φ Γ√τεΓσ
  1834.      ∞σ≥εΣα ∩εΣΩδα±±α ∩≡Φ ±±√δΩσ φα ±≤∩σ≡Ωδα±± (┬±σ ∩≡Φ ±≡αΓφσφΦΦ ± ∩≡ ∞√∞
  1835.      Γ√τεΓε∞, ≥.σ. Γ√τεΓε∞ ∞σ≥εΣα ∩≡εΦτΓεΣφεπε Ωδα±±α ≈σ≡στ ±±√δΩ≤ φα
  1836.      ∩≡εΦτΓεΣφ√Θ Ωδα±±)
  1837.  
  1838. *(╫α±≥ⁿ 6) ╩αΩ ±≥α≥Φ≈σ±ΩΦσ ∞σ≥εΣ√ ΓταΦ∞εΣσΘ±≥Γ≤■≥ ± φα±δσΣεΓαφΦσ∞?
  1839.  
  1840. [*] ╤≥α≥Φ≈σ±ΩΦσ (Σδ  Ωδα±±α, α φσ Σδ  εß·σΩ≥α) ∞σ≥εΣ√ φσ ≤≈α±≥Γ≤■≥ Γ
  1841. ∩σ≡σΩ≡√≥ΦΦ (Γ√ßε≡σ φ≤µφεπε ∞σ≥εΣα Γε Γ≡σ∞  Γ√∩εδφσφΦ  φα ε±φεΓαφΦΦ Ωδα±±α
  1842. εß·σΩ≥α) ┬ετ∞εµφε δ≤≈°ΦΘ Φ φαΦßεδσσ ∩≡ε±≥εΘ ∩≤≥ⁿ Σ≤∞α≥ⁿ εß ²≥ε∞ ( Φ ∩Φ±α≥ⁿ
  1843. ┬α° ΩεΣ ) - ∩Φ±α≥ⁿ ΩαµΣ√Θ Γ√τεΓ ±≥α≥Φ≈σ±Ωεπε ∞σ≥εΣα, Φ±∩εδⁿτ≤  ∩εδφεσ Φ∞ 
  1844. Ωδα±±α:
  1845.  
  1846.     class A {
  1847.     public static method1() {
  1848.             A.method2();
  1849.         }
  1850.     public static method2() {
  1851.         }
  1852.     }
  1853.  
  1854.     class B extends A {
  1855.         public static method3() {
  1856.             A.method1();
  1857.         }
  1858.         public static method2() {
  1859.         }
  1860.     }
  1861.  
  1862.  
  1863. ╤σΘ≈α± ∩≡σΩ≡α±φε ΓΦΣφε, ≈≥ε ±≥α≥Φ≈σ±ΩΦΘ method2() Γ√τ√Γασ≥ A.method2(), α
  1864. φσ B.method2(). A.method2() ß≤Σσ≥ Γ√τΓαφ φσταΓΦ±Φ∞ε ε≥ ≥επε, Φ±∩εδⁿτ≤σ≥σ ┬√
  1865. ∩εδφεσ Φ∞  Ωδα±±α ΦδΦ φσ≥, φε Φ±∩εδⁿτεΓαφΦσ "A." Σσδασ≥ ²≥ε ε≈σΓΦΣφ√∞ Σδ 
  1866. Γ±σ⌡.
  1867.  
  1868. *(╫α±≥ⁿ 6) ╧ε≈σ∞≤ Ωδα±± String final? ▀ ≈α±≥ε ⌡ε≈≤ ∩σ≡σΩ≡√≥ⁿ σπε.
  1869.  
  1870. [*] ╘Φφαδⁿφε±≥ⁿ πα≡αφ≥Φ≡≤σ≥, ≈≥ε ²Ωτσ∞∩δ ≡√ String ≥εδⁿΩε Σδ  ≈≥σφΦ  (
  1871. Ωδα±± String ≡σαδΦτ≤σ≥ εß·σΩ≥√ ≥εδⁿΩε Σδ  ≈≥σφΦ , φε σ±δΦ εφ φσ final, ≥ε
  1872. Γετ∞εµφε φα∩Φ±α≥ⁿ ∩εΣΩδα±± string, Ωε≥ε≡√Θ ∩ετΓεδΦ≥ ß√≥ⁿ ²Ωτσ∞∩δ ≡α∞
  1873. Φτ∞σφ σ∞√∞Φ.) Strings Σεδµσφ ß√≥ⁿ ≥εδⁿΩε Σδ  ≈≥σφΦ  Σδ  ßστε∩α±φε±≥Φ Φ
  1874. ²⌠⌠σΩ≥ΦΓφε±≥Φ.
  1875.  
  1876. ╫≥ε Ωα±ασ≥±  ²⌠⌠σΩ≥ΦΓφε±≥Φ, String ε≈σφⁿ ≈α±≥ε Φ±∩εδⁿτ≤σ≥± , Σαµσ φσ Γφε
  1877. Ωε∞∩Φδ ≥ε≡ε∞ Java. ┼⌠⌠σΩ≥ΦΓφε±≥ⁿ, Φ∞σ■∙α ±  Γ Ωδα±±σ String Σασ≥ ßεδⁿ°Φσ
  1878. ∩pσΦ∞≤∙σ±≥Γα. ╥αΩ ΩαΩ φΦΩ≥ε φσ ∞εµσ≥ Φτ∞σφΦ≥ⁿ String, ≥ε ┬√ φσ Σεδµφ√
  1879. ßσ±∩εΩεΦ≥ⁿ±  ε ≥ε∞, Ω≥ε σ∙σ ±±√δασ≥±  φα ┬α° String. ╧≡ε∙σ ε∩≥Φ∞ΦτΦ≡εΓα≥ⁿ
  1880. Σε±≥≤∩ Ω εß·σΩ≥≤, ∩≡ε Ωε≥ε≡√Θ ΦτΓσ±≥φε, ≈≥ε εφ φσ ∞σφ σ≥± .
  1881.  
  1882. ßστε∩α±φε±≥ⁿ- σ∙σ ßεδσσ Γαµφα  ∩≡Φ≈Φφα. ╧≡σµΣσ ≈σ∞ String ß√δ Φτ∞σφσφ φα
  1883. final (∩εΩα Java 1.0 ß√δα σ∙σ ßσ≥εΘ) ß√δε ≤±δεΓΦσ, Ωε≥ε≡εσ ∞επδε ß√≥ⁿ
  1884. Φ±∩εδⁿτεΓαφε Σδ  ∩≡σεΣεδσφΦ  επ≡αφΦ≈σφΦΘ ±σΩⁿ■≡Φ≥Φ. ▌≥ε ∞επδε ß√≥ⁿ ±Σσδαφε
  1885. Φτ∞σφσφΦσ∞ ∩≤≥Φ Ω ⌠αΘδ≤ Γ εΣφε∞ ≥≡σΣσ, ∩±εδσ ≥επε ΩαΩ Σ≡≤πεΘ ≥≡σΣ ∩≡εΓσ≡Φδ,
  1886. ≈≥ε Σε±≥≤∩ Ω φσ∞≤ ≡ατ≡σ°σφ Φ ±εßΦ≡αδ±  ε≥Ω≡√≥ⁿ σπε.
  1887.  
  1888. ╤≤∙σ±≥Γ≤■≥ Σ≡≤πΦσ ∩≤≥Φ Σδ  ≡σ°σφΦ  ²≥εΘ ∩≡εßδσ∞√, φε ≡ατ≡αßε≥≈ΦΩΦ ∩≡σΣ∩ε≈δΦ
  1889. ±Σσδα≥ⁿ String final, ε±εßσφφε ≥αΩ ΩαΩ Φ∞σσ≥±  αδⁿ≥σ≡φα≥ΦΓφ√Θ Ωδα±±
  1890. StringBuffer .
  1891.  
  1892. *(╫α±≥ⁿ 6) ┼±δΦ   ≡α±°Φ≡ ■/φα±δσΣ≤■ Ωδα±±, φα±δσΣ≤■≥±  δΦ Ωεφ±≥≡≤Ω≥ε≡√?
  1893.  
  1894. [*] "─σΩδα≡α÷ΦΦ Ωεφ±≥≡≤Ω≥ε≡εΓ φσ  Γδ ■≥±  ≈δσφα∞Φ. ╬φΦ φΦΩεπΣα φσ
  1895. φα±δσΣ■≥±  Φ ∩ε²≥ε∞≤ φσ  Γδ ■≥±  ∩≡σΣ∞σ≥ε∞ ±Ω≡√≥Φ  ΦδΦ ∩σ≡σΩ≡√≥Φ ."
  1896. ╩εφ±≥≡≤Ω≥ε≡ ∩ε ≤∞εδ≈αφΦ■ φσ φα±δσΣ≤σ≥± , φε εßσ±∩σ≈ΦΓασ≥± . (╤∞. JLS 8.6.7
  1897. Default Constructors)
  1898.  
  1899. ┼±δΦ ┬√ φσ Σασ≥σ ┬α°σ∞≤ Ωδα±±≤ Ωεφ±≥≡≤Ω≥ε≡√, ≥ε εßσ±∩σ≈ΦΓασ≥±  Ωεφ±≥≡≤Ω≥ε≡
  1900. ∩ε ≤∞εδ≈αφΦ■ ßστ α≡π≤∞σφ≥εΓ, Ωε≥ε≡√Θ Γ√τ√Γασ≥ Ωεφ±≥≡≤Ω≥ε≡ ±≤∩σ≡Ωδα±±α. ┼±δΦ
  1901. ±≤∩σ≡Ωδα±± φσ Φ∞σσ≥ Ωεφ±≥≡≤Ω≥ε≡α ßστ α≡π≤∞σφ≥εΓ, ┬√ Σεδµφ√ ±ετΣα≥ⁿ
  1902. Ωεφ±≥≡≤Ω≥ε≡ Φ Γ√τΓα≥ⁿ ±εε≥Γσ≥±≥Γ≤■∙ΦΘ Ωεφ±≥≡≤Ω≥ε≡ ±≤∩σ≡Ωδα±±α.
  1903.  
  1904. ╥αΩ µσ Γ FAQ:
  1905. ╤εεß∙σφΦ  Ωε∞∩Φδ ≥ε≡α No constructor {superclass}()
  1906.  
  1907. ─≡≤πΦσ ±αΘ≥√:
  1908. JLS 8.6.7 ╩εφ±≥p≤Ω≥εp√ ∩ε ≤∞εδ≈αφΦ■
  1909.  
  1910. *(╫α±≥ⁿ 6) ╩αΩ ßστε∩α±φε ±ε⌡≡αφΦ≥ⁿ ε±εß√σ ≥Φ∩√ Γ εß√≈φ√⌡ Ωεφ≥σΘφσ≡α⌡?
  1911. ╫α±≥ε ß√Γασ≥ φσεß⌡εΣΦ∞ε ±ε⌡≡αφΦ≥ⁿ ε±εß√σ ≥Φ∩√ εß·σΩ≥εΓ, φε   φσ ⌡ε≈≤
  1912. ≡ατßΦΓα≥ⁿ ε±φεΓφ√σ Ωδα±±√ ∩α∞ ≥Φ ≈≥εß√ Σε±≥Φ≈ⁿ ²≥επε, ≥.Ω. ∞εµσ≥ ΓετφΦΩφ≤≥ⁿ
  1913. ±δΦ°Ωε∞ ßεδⁿ°εσ ΩεδΦ≈σ±≥Γε ∩εΣΩδα±±εΓ (φα∩≡Φ∞σ≡, IntegerLinkedList,
  1914. StringLinkedList Φ ≥.Σ.)
  1915.  
  1916. [*] ╨εΣεΓεσ ∩≡επ≡α∞∞Φ≡εΓαφΦσ φα Java (∩≡ΦßδΦτΦ≥σδⁿφ√Θ ²ΩΓΦΓαδσφ≥ °αßδεφεΓ Γ
  1917. C++) ≡αßε≥ασ≥ ∩≡Φσ∞δσ∞ε, ΩεπΣα Γ±σ java-Ωδα±±√  Γδ ■≥±  ∩εΣΩδα±±α∞Φ
  1918. ╬ß·σΩ≥α. ╬ΣφαΩε ±≤∙σ±≥Γ≤σ≥ ∩ε≥σφ÷Φαδⁿφα  ∩≡εßδσ∞α - Γ±σπΣα σ±≥ⁿ Γσ≡ε ≥φε±≥ⁿ
  1919. ≥επε, ≈≥ε ≡εΣεΓεΘ Ωεφ≥σΘφσ≡ ß≤Σσ≥ ±εΣσ≡µα≥ⁿ ≡ατδΦ≈φ√σ Ωδα±±√ εß·σΩ≥εΓ.
  1920.  
  1921. ╧≡σΣ∩εδεµΦ∞, ┬√ ±ετΣαδΦ ≡εΣεΓεΘ Ωδα±± LinkedList. ╩αΩ εßστε∩α±Φ≥ⁿ ≥Φ∩√ ßστ
  1922. φσεß⌡εΣΦ∞ε±≥Φ ±ετΣαΓα≥ⁿ ∞φεµσ±≥Γε ∩εΣΩδα±±εΓ (IntegerLinkedList,
  1923. StringLinkedList Φ ≥.Σ.)?
  1924.  
  1925. ╫≥εß√ εßεΘ≥Φ ²≥≤ ∩≡εßδσ∞≤, ∩≡Φ∞σφσφΦ≥σ Γ ≡εΣεΓε∞ Ωδα±±σ ±ε±≥αΓφεΘ
  1926. Ωεφ±≥≡≤Ω≥ε≡, Ωε≥ε≡√Θ ß≤Σσ≥ ß≡α≥ⁿ ∩α≡α∞σ≥≡ ≥Φ∩α "Class" Φ Φ±∩εδⁿτεΓα≥ⁿ σπε
  1927. Γ∞σ±≥σ ± ∞σ≥εΣε∞ "isInstance" ²≥επε Ωδα±±α, ≈≥εß√ πα≡αφ≥Φ≡εΓα≥ⁿ
  1928. ∩≡σΣ∩εδαπασ∞√Θ ≥Φ∩ Σδ  ╬ß·σΩ≥εΓ, ΣεßαΓδσφφ√⌡ Γ Ωεφ≥σΘφσ≡.
  1929.  
  1930.     public class LinkedList {
  1931.         Protected Class type = Object.class;
  1932.  
  1933.         public LinkedList(Class type) { this.type = type; }
  1934.  
  1935.         public void addElement(Object element) throws Exception
  1936.         {
  1937.         if(!type.isInstance( element ))
  1938.             throw new Exception(
  1939.                  "╬µΦΣασ∞√Θ ²δσ∞σφ≥ ≥Φ∩α (" + type    + ")" +
  1940.                  " ∩εδ≤≈σφφ√Θ ²δσ∞σφ≥ ≥Φ∩α ("     + element + ")"   );
  1941.          ...
  1942.          }
  1943.      }
  1944.  
  1945.  
  1946. ╟α∞σ≥ⁿ≥σ, ≈≥ε Ωε∞∞σφ≥α≡ΦΦ Γ Φ±⌡εΣφε∞ ≥σΩ±≥σ Σδ  isInstance() ±±√δα■≥±  φα
  1947. "ε∩≡σΣσδσφφ√Θ ∩α≡α∞σ≥≡ ╩δα±±α", φα∞σΩα , ≈≥ε ┬α∞ ∩≡σΣδαπασ≥±  φα∩Φ±α≥ⁿ
  1948. ≈≥ε-≥ε ≥Φ∩α:
  1949.  
  1950.         public void addElement(Object element) throws Exception
  1951.     {
  1952.         Class c = element.getClass();
  1953.         if(!type.isInstance(c))
  1954.  
  1955.  
  1956. ▌≥ε ≡αßε≥ασ≥, φε ΣεΩ≤∞σφ≥α÷Φ  φα isInstance ≡ατ· ±φ σ≥, ≈≥ε ∩α≡α∞σ≥≡
  1957. ∩≡σΣ∩ε≈≥Φ≥σδⁿφσσ ±Σσδα≥ⁿ ╬ß·σΩ≥ε∞ α φσ ╩δα±±ε∞. ╥αΩµσ τα∞σ≥ⁿ≥σ, ≈≥ε Γ JDK
  1958. 1.2 Φ∞σ■≥±  "╩εδδσΩ÷ΦΦ", Ωε≥ε≡√σ εßσ±∩σ≈ΦΓα■≥ πε≡ατΣε ßεδσσ ßστε∩α±φ√Θ Φ
  1959. πΦßΩΦΘ ∞σ⌡αφΦτ∞. ╚φ⌠ε≡∞α÷Φ  εß ²≥ε∞ ±εΣσ≡µΦ≥±  φα ±αΘ≥σ Java Γ ≡ατΣσδσ Java
  1960. Developer Connection: http://java.sun.com/
  1961.  
  1962. ╚φ≥σ≡⌠σΘ±√ ∞σ≥εΣα
  1963.  
  1964. *╩αΩ ∩σ≡σΣα≥ⁿ Γ ∞σ≥εΣ ∩σ≡σ∞σφφεσ ≈Φ±δε α≡π≤∞σφ≥εΓ?
  1965.  
  1966. [*]
  1967.  
  1968.   1. (╦σπΩΦΘ ±∩ε±εß). ╚±∩εδⁿτ≤Θ≥σ ∩σ≡σπ≡≤τΩ≤ ∞σ≥εΣα Σδ  ∩εΣΣσ≡µΩΦ ≡ατδΦ≈φ√⌡
  1969.      ∩α≡α∞σ≥≡εΓ. ▌≥ε ≤∩≡ε∙ασ≥ ±α∞ Γ√τεΓ, φε ∞εµσ≥ Γ√Θ≥Φ Φτ ∩εΣ Ωεφ≥≡εδ ,
  1970.      σ±δΦ ┬√ τα⌡ε≥Φ≥σ ∩εΣΣσ≡µΦΓα≥ⁿ ßεδⁿ°εσ ≈Φ±δε ≡ατφεεß≡ατφ√⌡ ≥Φ∩εΓ
  1971.      ∩α≡α∞σ≥≡εΓ. ╩επΣα ΓετφΦΩασ≥ ≥αΩα  φσεß⌡εΣΦ∞ε±≥ⁿ, ±≥εΦ≥ ταΣα≥ⁿ ±σßσ
  1972.      Γε∩≡ε±, π≡α∞ε≥φε δΦ ε≡παφΦτεΓαφ ΩεΣ ┬α°σΘ ∩≡επ≡α∞∞√?
  1973.   2. (┴εδσσ τα∩≤≥αφφ√Θ). ╚±∩εδⁿτ≤Θ≥σ ∞α±±ΦΓ√. ┬ετ∞εµφε Σαµσ εß· Γδ ≥ⁿ
  1974.      ∞α±±ΦΓ√ ±εß±≥Γσφφε ∩≡Φ Γ√τεΓσ, ΩαΩ ∩εΩαταφε φΦµσ:
  1975.  
  1976.          foo("╧α≡α∞σ≥≡",
  1977.              new Object[] {"∩α≡α∞σ≥≡3", "∩α≡α∞σ≥≡4", new Integer(5)} );
  1978.       // ...
  1979.  
  1980.       void foo(String param1, Object param2[]) {
  1981.           System.out.println(param1);
  1982.           for (int i = 0; i < param2.length; i++) {
  1983.               System.out.println(param2[i].toString());
  1984.           }
  1985.       }
  1986.  
  1987.  
  1988.      ╚±∩εδⁿτ≤  Σαφφ√Θ ±∩ε±εß, ∞εµφε ∩σ≡σΣαΓα≥ⁿ Σαµσ ∞α±±ΦΓ√ ∞α±±ΦΓεΓ.
  1989.      ┼±≥σ±≥Γσφφε, Γφ≤≥≡Φ ∞σ≥εΣα, φσεß⌡εΣΦ∞ε ±≤∞σ≥ⁿ ∩≡αΓΦδⁿφε ε∩≡σΣσδΦ≥ⁿ
  1990.      α≡π≤∞σφ≥√ Φ ±εε≥Γσ≥±≥Γσφφε Φ±∩εδⁿτεΓα≥ⁿ Φ⌡.
  1991.   3. ┬ Ωα≈σ±≥Γσ αδⁿ≥σ≡φα≥ΦΓ√ ∞εµφε ±ετΣα≥ⁿ Ωδα±±, ±εΣσ≡µα∙ΦΘ Γ±σ Γετ∞εµφ√σ
  1992.      ∩εδ , Ωε≥ε≡√σ ┬√ ⌡ε≥Φ≥σ ∩σ≡σΣαΓα≥ⁿ Γ ∞σ≥εΣ (∩δ■± ß≤δσΓ±ΩΦσ ∩σ≡σ∞σφφ√σ
  1993.      Σδ  ≤ΩαταφΦ , ΓΩδ■≈σφε Σαφφεσ ∩εδσ ΦδΦ φσ≥), Φ ±Σσδα≥ⁿ εß·σΩ≥ Σαφφεπε
  1994.      Ωδα±±α ∩α≡α∞σ≥≡ε∞ ∞σ≥εΣα. ╥αΩΦ∞Φ µσ ±∩ε±εßα∞Φ ∞εµφε ΓετΓ≡α∙α≥ⁿ
  1995.      ≡ατδΦ≈φ√σ τφα≈σφΦ  Φτ ∞σ≥εΣα; δΦßε Φ±∩εδⁿτ≤  ∞α±±ΦΓ√, δΦßε
  1996.      εß·σΩ≥-εßεδε≈Ω≤.
  1997.  
  1998. ╬ΣφαΩε, φσ ±≥εΦ≥ ταß√Γα≥ⁿ Φ ∞≤Σ≡√σ ±δεΓα ∩≡ε⌠σ±±ε≡α └δαφα ╧σ≡δΦ±α (Alan
  1999. Perlis): "┼±δΦ ┬α°α ∩≡ε÷σΣ≤≡α Φ∞σσ≥ ßεδⁿ°σ, ≈σ∞ ∩εδ-Σ■µΦφ√ ∩α≡α∞σ≥≡εΓ, ≥ε,
  2000. Γσ≡ε ≥φε, Γ√ ε ≈σ∞-φΦß≤Σⁿ ταß√δΦ". ╧σ≡σΣα≈α ßεδⁿ°επε ΩεδΦ≈σ±≥Γα α≡π≤∞σφ≥εΓ
  2001. Γ ⌠≤φΩ÷Φ■ ετφα≈ασ≥, ≈≥ε ²≥α ⌠≤φΩ÷Φ  ∩δε⌡ε ε≡παφΦτεΓαφα.
  2002.  
  2003. *(╫α±≥ⁿ 6) ╩αΩ ΓετΓ≡α∙α≥ⁿ ≡ατδΦ≈φ√σ εß·σΩ≥√ Γ ∩α≡α∞σ≥≡σ ∞σ≥εΣα?
  2004. ╩αΩ ∩σ≡σΣα≥ⁿ εß·σΩ≥ Γ ∞σ≥εΣ, Φ τα±≥αΓΦ≥ⁿ ∞σ≥εΣ Φτ∞σφΦ≥ⁿ ±±√δΩ≤ ≥αΩ, ≈≥εß√
  2005. εφα ≤Ωατ√Γαδα φα Σ≡≤πεΘ εß·σΩ≥ ∩≡Φ ΓετΓ≡α≥σ Γ Γ√τ√Γα■∙ΦΘ ΩεΣ?
  2006.  
  2007. [*] ╤≤∙σ±≥Γ≤σ≥ ΣΓα ±∩ε±εßα. ╬≈σΓΦΣφ√Θ ∩≤≥ⁿ - "∩≡ε±≥ε ΣεßαΓΦ≥ⁿ σ∙σ εΣΦφ
  2008. ≤≡εΓσφⁿ Γ Ωε±Γσφφ≤■ αΣ≡σ±α÷Φ■". ╧ε∞σ±≥Φ≥σ εß·σΩ≥ Γ Σ≡≤πεΘ Ωδα±±,
  2009. ∩≡σΣφατφα≈σφΦσ Ωε≥ε≡επε - ß√≥ⁿ ∩σ≡σΣαφφ√∞ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α, ∩ετΓεδ  
  2010. ∞εΣΦ⌠Φ÷Φ≡εΓα≥ⁿ ±±√δΩ≤ φα φσ±ε∞√Θ εß·σΩ≥.
  2011. ┬≥ε≡εΘ ±∩ε±εß - ßεδσσ ∩εφ ≥φ√Θ Γα≡Φαφ≥ ∩σ≡Γεπε. ╧σ≡σΣαΘ≥σ εß·σΩ≥ Γ
  2012. εΣφε±Φ∞Γεδⁿφε∞ ∞α±±ΦΓσ. ╥αΩ ΩαΩ ∞α±±ΦΓ√ ±α∞Φ  Γδ ■≥±  εß·σΩ≥α∞Φ, ≥ε ²≥ε
  2013. ≡αßε≥ασ≥.
  2014.  
  2015.         void jfoo(Object ref[]){
  2016.         ref[0] = new Object();
  2017.     }
  2018.     ...
  2019.     Object kludge[] = new Object[1];
  2020.     kludge[0]= myObj;
  2021.     jfoo(kludge);
  2022.     if (kludge[0] == myObj) ...
  2023.     else ...
  2024.  
  2025.  
  2026. ╟α∞σ≥ⁿ≥σ, ≈≥ε Φτ∞σφσφΦσ πδεßαδⁿφεΘ ∩σ≡σ∞σφφεΘ/εß·σΩ≥α Γφ≤≥≡Φ ∞σ≥εΣα
  2027.  Γδ σ≥±  ∩δε⌡Φ∞ ±≥Φδσ∞ ∩≡επ≡α∞∞Φ≡εΓαφΦ ; ∩≡Φ ²≥ε∞ εß√≈φε φα≡≤°α■≥± 
  2028. ε±φεΓφ√σ Ωεφ±≥≡≤Ω÷ΦΦ ╬╬╧.
  2029.  
  2030. *(╫α±≥ⁿ 6) ╩αΩ ±Σσδα≥ⁿ, ≈≥εß√ ∞σ≥εΣ ΓετΓ≡α∙αδ φσ±ΩεδⁿΩε τφα≈σφΦΘ?
  2031.  
  2032. [*] ╠εµφε ∩≡ε±≥ε φα∩Φ±α≥ⁿ ⌠≤φΩ÷Φ■, ΓετΓ≡α∙α■∙≤■ ┬σΩ≥ε≡. ▌≥ε ε±εßσφφε
  2033. ≤Σεßφε, ΩεπΣα ┬√ φσ ≤Γσ≡σφ√ Γ ΩεδΦ≈σ±≥Γσ ΓετΓ≡α∙ασ∞√⌡ τφα≈σφΦΘ, ≥.Ω. εφε
  2034. ταΓΦ±Φ≥ ε≥ ∩≡εΦ±⌡εΣ ∙σπε Γ ∞σ≥εΣσ. ┬σΩ≥ε≡ ∩ε ±≤∙σ±≥Γ≤  Γδ σ≥±  ΣΦφα∞Φ≈σ±ΩΦ
  2035. ≡α±°Φ≡ σ∞√∞ ∞α±±ΦΓε∞. ╨σπ≤δ ≡φ√σ ∞α±±ΦΓ√ φσ ∞επ≤≥ ≤ΓσδΦ≈ΦΓα≥ⁿ±  ∩ε±δσ ≥επε,
  2036. ΩαΩ Φ⌡ εß· ΓΦδΦ - ∩≡Φ⌡εΣΦ≥±  εß· Γδ ≥ⁿ φεΓ√Θ ∞α±±ΦΓ ßεδⁿ°σΘ ≡ατ∞σ≡φε±≥Φ Φ
  2037. ∩σ≡σΩΦΣ√Γα≥ⁿ Γ φσπε ±εΣσ≡µΦ∞εσ ±≥α≡επε.
  2038.  
  2039. ╠α±±ΦΓ√
  2040.  
  2041. *(╫α±≥ⁿ 6) ╩αΩ ≡ατ∞σ±≥Φ≥ⁿ Γ ∩α∞ ≥Φ ∞φεπε∞σ≡φ√Θ ∞α±±ΦΓ?
  2042.  
  2043. [*] ┼±≥ⁿ φσ±ΩεδⁿΩε ±∩ε±εßεΓ. ┼±δΦ ┬α∞ φσεß⌡εΣΦ∞ ∩≡ ∞ε≤πεδⁿφ√Θ ∞α±±ΦΓ, ≥ε
  2044. Γ±■ ∩α∞ ≥ⁿ Σδ  φσπε ∞εµφε Γ√ΣσδΦ≥ⁿ τα εΣΦφ ≡ατ. ╤δσΣ≤■∙ΦΘ ∩≡Φ∞σ≡ ±ετΣασ≥
  2045. ∞α±±ΦΓ 4x5:
  2046.  
  2047.     int arr[][] = new int[4][5];
  2048.  
  2049.  
  2050. ┼±δΦ ┬√ ⌡ε≥Φ≥σ, ≈≥εß√ ΩαµΣ√Θ ≡ Σ ±εΣσ≡µαδ ±Γεσ ≈Φ±δε ΩεδεφεΩ, ∞εµσ≥σ
  2051. Φ±∩εδⁿτεΓα≥ⁿ ≥ε≥ ⌠αΩ≥, ≈≥ε ΣΓ≤⌡≡ατ∞σ≡φ√Θ ∞α±±ΦΓ φα ±α∞ε∞ Σσδσ  Γδ σ≥± 
  2052. ∞α±±ΦΓε∞ ∞α±±ΦΓεΓ. ╤δσΣ≤■∙α  ≈α±≥ⁿ ΩεΣα ≡ατ∞σ∙ασ≥ Γ ∩α∞ ≥Φ ≥≡σ≤πεδⁿφ√Θ
  2053. ∞α±±ΦΓ:
  2054.  
  2055.     int arr[][] = new int[4][];    // ≡ατ∞σ∙σφΦσ ∞α±±ΦΓα Φτ ≈σ≥√≡σ⌡ ≡ ΣεΓ
  2056.     for (int i = 0; i < 4; i++) // ΦφΦ÷ΦαδΦτα÷Φ  ΩαµΣεπε ≡ Σα
  2057.     arr[i] = new int[i + 1];       // ≡ Σ i ±εΣσ≡µΦ≥ i+1 ΩεδεφΩ≤
  2058.  
  2059.  
  2060. ╟α∞σ≥ⁿ≥σ, ≈≥ε σ±δΦ ≡ατ∞σ∙ασ≥±  ∞α±±ΦΓ δ■ß√⌡ εß·σΩ≥εΓ (Γ ∩≡ε≥ΦΓε∩εδεµφε±≥ⁿ
  2061. ∩≡Φ∞Φ≥ΦΓφ√∞ ≥Φ∩α∞), ≥ε Γ±σ ±±√δΩΦ ß≤Σ≤≥ ∩ε ≤∞εδ≈αφΦ■ "null-±±√δΩα∞Φ",
  2062. Ωε≥ε≡√σ ∩≡Φ ∩ε∩√≥Ωσ ≡ατ√∞σφεΓαφΦ  ∞επ≤≥ ∩≡σΓ≡α≥Φ≥ⁿ±  Γ Φ±Ωδ■≈σφΦ 
  2063. NullPointerException.
  2064. ─≡≤πΦ∞Φ ±δεΓα∞Φ, ∩ε±δσ:
  2065.  
  2066.     int arr[] = new int[4];
  2067.  
  2068.  
  2069. ∞εµφε φα∩Φ±α≥ⁿ
  2070.  
  2071.         if (arr[2] == 0)
  2072.  
  2073.  
  2074. ╬ΣφαΩε, ∩ε±δσ
  2075.  
  2076.         Integer Iarr[] = new Integer[4];
  2077.  
  2078.  
  2079. ┬√ Σεδµφ√ τα∩εδφΦ≥ⁿ ±±√δΩ≤ φα εß·σΩ≥ ∩σ≡σΣ σσ Φ±∩εδⁿτεΓαφΦσ∞. Hα∩≡Φ∞σ≡,
  2080.  
  2081.         Iarr[2] = myInt;
  2082.  
  2083.  
  2084. ΦδΦ
  2085.  
  2086.         arr[2] = new Int(27);
  2087.  
  2088.  
  2089. ∩σ≡σΣ ²≥Φ∞ ∞εµφε φα∩Φ±α≥ⁿ
  2090.  
  2091.         if (Iarr[2].equals(myInt))
  2092.  
  2093. *(Sect. 6) ╩αΩ ±Ωε∩Φ≡εΓα≥ⁿ ∞α±±ΦΓ?
  2094.  
  2095. [*] ┼±δΦ ∞α±±ΦΓ ±ε±≥εΦ≥ Φτ ²δσ∞σφ≥εΓ εΣφεπε Φτ ßατεΓ√⌡ ≥Φ∩εΓ ΦδΦ µσ Γα∞
  2096. φσεß⌡εΣΦ∞ε ±Ωε∩Φ≡εΓα≥ⁿ ≥εδⁿΩε ±±√δΩΦ (α φσ ±ετΣαΓα≥ⁿ Ωε∩ΦΦ εß·σΩ≥εΓ),
  2097. Φ±∩εδⁿτ≤Θ≥σ ∞σ≥εΣ
  2098.  
  2099.     java.lang.System.arraycopy(Object src, int src_position,
  2100.         Object dst, int dst_position, int length);
  2101.  
  2102.  
  2103. ┼±δΦ µσ Γα°α ÷σδⁿ - ±ετΣα≥ⁿ Ωε∩ΦΦ εß·σΩ≥εΓ, Γ√ Σεδµφ√ ±ετΣα≥ⁿ φεΓ√Θ ∞α±±ΦΓ
  2104. Φ φα∩Φ±α≥ⁿ ÷ΦΩδ, Ωε≥ε≡√Θ ±Ωε∩Φ≡≤σ≥ ΩαµΣ√Θ ²δσ∞σφ≥ ±≥α≡επε ∞α±±ΦΓα Γ
  2105. ±εε≥Γσ≥±≥Γ≤■∙ΦΘ σ∞≤ ²δσ∞σφ≥ φεΓεπε.
  2106.  
  2107. ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ: Γ ΣεΩ≤∞σφ≥α÷ΦΦ φα java.lang.System.arraycopy() ≤Ωαταφε,
  2108. ≈≥ε σ±δΦ src Φ dst ±±√δα■≥±  φα εΣΦφ Φ ≥ε≥ µσ εß·σΩ≥, ≥ε arraycopy() ΓσΣσ≥
  2109. ±σß  ≥αΩ, ΩαΩ σ±δΦ ß√ ²δσ∞σφ≥√ Φ±⌡εΣφεπε ∞α±±ΦΓα Ωε∩Φ≡εΓαδΦ±ⁿ Γε Γ≡σ∞σφφ√Θ
  2110. ∞α±±ΦΓ (≥.σ. εφΦ ±ε⌡≡αφ ■≥± ). Sun φσ ≤Ωατ√Γασ≥, ±ετΣασ≥±  δΦ ΣσΘ±≥ΓΦ≥σδⁿφε
  2111. ∩≡Φ ²≥ε∞ Γ≡σ∞σφφ√Θ ∞α±±ΦΓ.
  2112.  
  2113. ─≡≤πΦσ Φ±≥ε≈φΦΩΦ:
  2114. JLS 20.18.16 {java.lang.System.arraycopy()}
  2115.  
  2116. *(Sect. 6) ╩αΩ ε≈Φ±≥Φ≥ⁿ ∞α±±ΦΓ?
  2117.  
  2118. [*] ╠σ≥εΣεΓ Σδ  ε≈Φ±≥ΩΦ ∞α±±ΦΓα Γ 0.0, 0, null, false, '\u0000' Φ ≥.∩. φσ
  2119. ±≤∙σ±≥Γ≤σ≥. ╩επΣα Γ√ ±ετΣασ≥σ ∞α±±ΦΓ, σπε ²δσ∞σφ≥√ ΦφΦ÷ΦαδΦτΦ≡≤■≥± 
  2120. τφα≈σφΦσ∞ ∩ε ≤∞εδ≈αφΦ■ (default value), φε ∩εΓ≥ε≡Φ≥ⁿ αΓ≥ε∞α≥Φ≈σ±Ω≤■
  2121. ΦφΦ÷ΦαδΦτα÷Φ■ φσΓετ∞εµφε.
  2122.  
  2123. ┼±δΦ Γα∞ φσεß⌡εΣΦ∞ε ∞φεπε ≡ατ ≤±≥αφαΓδΦΓα≥ⁿ ∞α±±ΦΓ Γ εΣφε Φ ≥ε µσ ∞φεµσ±≥Γε
  2124. τφα≈σφΦΘ, ±ετΣαΘ≥σ ∞α±±ΦΓ-°αßδεφ. ╚φΦ÷ΦαδΦτΦ≡≤Θ≥σ σπε φσεß⌡εΣΦ∞√∞ φαßε≡ε∞
  2125. τφα≈σφΦΘ Φ Φ±∩εδⁿτ≤Θ≥σ System.arraycopy() Σδ  Ωε∩Φ≡εΓαφΦ  Γ ≡αßε≈ΦΘ ∞α±±ΦΓ
  2126. ΩαµΣ√Θ ≡ατ, ΩεπΣα ≥≡σß≤σ≥±  ∩σ≡σ≤±≥αφεΓΩα τφα≈σφΦΘ ≡αßε≈σπε ∞α±±ΦΓα.
  2127.  
  2128. *(Sect. 6) ╩αΩεΘ φαΦßεδσσ ß√±≥≡√Θ ∩≤≥ⁿ ≤±≥αφεΓΩΦ τφα≈σφΦΘ Γ±σ⌡ ²δσ∞σφ≥εΓ
  2129. ∞α±±ΦΓα?
  2130. ▀ φσ ⌡ε≈≤ Φ±∩εδⁿτεΓα≥ⁿ ∞α±±ΦΓ-°αßδεφ. ▀ ⌡ε≥σδ ß√ Σσδα≥ⁿ ²≥ε ßστ
  2131. Σ≤ßδΦ≡εΓαφΦ  (Γετ∞εµφε, ßεδⁿ°επε) ∞α±±ΦΓα.
  2132.  
  2133. [*] ╚±∩εδⁿτεΓαφΦσ ÷ΦΩδα, Ωε≥ε≡√Θ ∩εε≈σ≡σΣφε ∩≡Φ±ΓαΦΓασ≥ τφα≈σφΦ  ²δσ∞σφ≥α∞
  2134. ∞α±±ΦΓα, Γ 20 - 40 ≡ατ ∞σΣδσφφσσ, ≈σ∞ ±≥α≡√Θ Σεß≡√Θ memset() Γ ╤Φ.
  2135.  
  2136. Hα ∞φεπΦ⌡ Java Virtual Machine (JVM) ∞εµφε ±Σσδα≥ⁿ ≥αΩ: ∩≡Φ±ΓεΦ≥ⁿ τφα≈σφΦσ
  2137. ∩σ≡Γε∞≤ ßαΘ≥≤ ∞α±±ΦΓα, Φ±∩εδⁿτεΓα≥ⁿ System.arraycopy() Σδ 
  2138. ∩ε±δσΣεΓα≥σδⁿφεπε τα∩εδφσφΦ  ±δσΣ≤■∙σπε ßαΘ≥α, τα≥σ∞ ±δσΣ≤■∙Φ⌡ ΣΓ≤⌡ ßαΘ≥,
  2139. ±δσΣ≤■∙Φ⌡ ≈σ≥√≡σ⌡ ßαΘ≥, ±δσΣ≤■∙Φ⌡ Γε±ⁿ∞Φ ßαΘ≥ Φ ≥.Σ. ∩εΩα φσ ε±≥αφσ≥± 
  2140. ∞σφⁿ°α  ≈α±≥ⁿ ∞α±±ΦΓα, Ωε≥ε≡≤■ System.arraycopy() τα∩εδφΦ≥ Γ εΣΦφ ∩≡Φσ∞.
  2141.  
  2142.     public static void bytefill(byte[] array, byte value) {
  2143.     int len = array.length;
  2144.     if (len > 0)
  2145.     array[0] = value;
  2146.     for (int i = 1; i < len; i += i)
  2147.         System.arraycopy( array, 0, array, i,
  2148.             ((len - i) < i) ? (len - i) : i);
  2149.     }
  2150.  
  2151.  
  2152. Hα Sun'εΓ±ΩεΘ JVM ²≥ε≥ ΩεΣ Γ√∩εδφ σ≥±  ß√±≥≡σσ, ≈σ∞ εß√≈φ√Θ ÷ΦΩδ, Φ Σαµσ
  2153. ß√±≥≡σσ, ≈σ∞ φα JIT-Ωε∞∩Φδ ≥ε≡α⌡, ∩ε≥ε∞≤ ≈≥ε Ωεφ≥≡εδⁿ Γ√⌡εΣα τα π≡αφΦ÷√
  2154. ∞α±±ΦΓα τΣσ±ⁿ ∩≡εΓεΣΦ≥±  Γ±σπε δΦ°ⁿ Σε log2(array.length) ≡ατ. ╧≡Φ≈σ∞ ²≥ε≥
  2155. ±∩ε±εß ≡αßε≥ασ≥, Σαµσ σ±δΦ ≡ατ∞σ≡ ∞α±±ΦΓα φσ  Γδ σ≥±  ±≥σ∩σφⁿ■ ΣΓ≤⌡.
  2156.  
  2157.                        ------------------------------
  2158.  
  2159. 7. I/O
  2160.  
  2161.   1. (Sect. 7) ╩αΩ ∩≡ε≈Φ≥α≥ⁿ ⌠αΘδ, ±εΣσ≡µα∙ΦΘ ≈Φ±δα Γ ±Φ∞ΓεδⁿφεΘ ⌠ε≡∞σ?
  2162.  
  2163.      [*] ┼±≥ⁿ φσ±ΩεδⁿΩε ±∩ε±εßεΓ. HΦµσ ∩≡ΦΓσΣσφ εΣΦφ Φτ φΦ⌡. ─ε∩≤±≥Φ∞, ⌠αΘδ
  2164.      φατ√Γασ≥±  "C:\work\mydata.txt" Φ ±εΣσ≡µΦ≥ ±≥≡εΩΦ ΓΦΣα:
  2165.  
  2166.          135   7512   3659814  328   1 54829
  2167.          68522 19982810  38
  2168.  
  2169.      ≥.e. φσ±ΩεδⁿΩε ±≥≡εΩ ASCII, Γ Ωε≥ε≡√⌡ ≈Φ±δα ≡ατΣσδσφ√ ∩≡εßσδα∞Φ.
  2170.      ┬ε≥ ⌠≡απ∞σφ≥ ΩεΣα:
  2171.  
  2172.      //  ╬≥Ω≡√Γασ∞ ⌠αΘδ
  2173.      RandomAccessFile f = new RandomAccessFile("c:\\work\\datafile.txt", "r");
  2174.  
  2175.      // ╫Φ≥ασ∞ Φτ φσπε εΣφ≤ ±≥≡εΩ≤
  2176.      String s= f.readLine();
  2177.  
  2178.      // ╨ατßΦ≡ασ∞ ±≥≡εΩ≤
  2179.      StringTokenizer st = new StringTokenizer(s);
  2180.  
  2181.      // ╚τΓδσΩασ∞ Φτ ±≥≡εΩΦ ÷σδεσ ≈Φ±δε
  2182.      i = Integer.parseInt(st.nextToken());
  2183.  
  2184.      ╠√ Φ±∩εδⁿτεΓαδΦ RandomAccessFile, ∩ε≥ε∞≤ ≈≥ε τΣσ±ⁿ φα∩≡ ∞≤■
  2185.      ∩εΣΣσ≡µΦΓασ≥±  ∞σ≥εΣ readLine(). └δⁿ≥σ≡φα≥ΦΓεΘ ∞επδε ß√ ß√≥ⁿ ±ετΣαφΦσ
  2186.      FileReader Φ φα σπε ßατσ BufferedReader. ╥σ∩σ≡ⁿ ±ΓσΣσ∞ Γ±σ ²≥ε Γ∞σ±≥σ,
  2187.      Φ, ΣεßαΓΦΓ εß≡αßε≥Ω≤ Φ±Ωδ■≈σφΦ  Γ ±δ≤≈ασ σ±δΦ ⌠αΘδ φσ ±≤∙σ±≥Γ≤σ≥,
  2188.      ∩εδ≤≈Φ∞ ±δσΣ≤■∙σσ:
  2189.  
  2190.      import java.io.*;
  2191.      import java.util.*;
  2192.      public class c  {
  2193.          public static void main(String args[]) {
  2194.            try {
  2195.              RandomAccessFile f = new RandomAccessFile
  2196.                                              ("datafile.txt", "r");
  2197.              String s;
  2198.              while ( (s=f.readLine()) != null )  {
  2199.                  System.out.println("read: "+s);
  2200.  
  2201.                  StringTokenizer st = new StringTokenizer(s);
  2202.                  int i=0;
  2203.                  while (st.hasMoreTokens()) {
  2204.                     i = Integer.parseInt(st.nextToken());
  2205.                     // i ±σΘ≈α± ±εΣσ≡µΦ≥ ±δσΣ≤■∙σσ ÷σδεσ ≈Φ±δε Φτ ±≥≡εΩΦ
  2206.                     // αφαδεπΦ≈φε Φ±∩εδⁿτ≤σ≥±  Double.parseDouble(), Φ ≥.∩..
  2207.  
  2208.                     System.out.print(" "+ i);
  2209.                  }
  2210.                  System.out.println();
  2211.              }
  2212.  
  2213.            } catch (Exception e) {System.out.println("Excpn: "+e); }
  2214.            // ⌠αΘδεΓ√Θ ΓΓεΣ-Γ√ΓεΣ, Φτ ΩφΦπΦ "Just Java" ╧σ≥σ≡α Γαφ Σσ≡ ╦ΦφΣσφα
  2215.          }
  2216.      }
  2217.  
  2218.      ╤∞ε≥≡Φ≥σ ≥αΩµσ ±δσΣ≤■∙ΦΘ Γε∩≡ε±: ΩαΩ ≈Φ≥α≥ⁿ Σαφφ√σ ± ΩδαΓΦα≥≤≡√.
  2219.  
  2220.   2. (Sect. 7) ╩αΩ ≈Φ≥α≥ⁿ String/int/boolean/≥.∩. ± ΩδαΓΦα≥≤≡√?
  2221.  
  2222.      [*] ╤α∞εσ δσπΩεσ ≡σ°σφΦσ - ≡ατΣεß√≥ⁿ Φ±⌡εΣφΦΩΦ Ωδα±±α EasyIn, δσµα∙Φσ
  2223.      ∩ε αΣ≡σ±≤ http://www.afu.com/ (≥α∞ µσ, πΣσ αφπδε τ√≈φα  Γσ≡±Φ  ²≥επε
  2224.      FAQ). ╤Ωε∞∩ΦδΦ≡≤Θ≥σ Φ⌡ ± Γα°Φ∞ ΩεΣε∞ Φ Φ±∩εδⁿτ≤Θ≥σ, φα∩≡Φ∞σ≡, ≥αΩ:
  2225.  
  2226.      EasyIn easy = new EasyIn();
  2227.  
  2228.      int i = easy.readInt(); // ≈Φ≥ασ∞ int Φτ System.in
  2229.      boolean b = easy.readBoolean(); // ≈Φ≥ασ∞ boolean Φτ System.in
  2230.      double d = easy.readDouble(); // ≈Φ≥ασ∞ double Φτ System.in
  2231.  
  2232.  
  2233.      ... Φ ≥αΩ Σαδσσ.
  2234.  
  2235.      EasyIn ßσ±∩δα≥σφ, ± σπε Φ±⌡εΣφΦΩα∞Φ Γ√ Φ∞σσ≥σ ∩≡αΓε Σσδα≥ⁿ Γ±σ ≈≥ε Γα∞
  2236.      φ≡αΓΦ≥± . ┬ ≥ε∞ ≈Φ±δσ ≤δ≤≈°α≥ⁿ Φ⌡.
  2237.  
  2238.      ┼±δΦ Γα∞ φσεß⌡εΣΦ∞ ≥εδⁿΩε ±εß±≥Γσφφε≡≤≈φε φα∩Φ±αφφ√Θ ΩεΣ (τα≈σ∞,
  2239.      Φφ≥σ≡σ±φε), ≥ε Γ JDK 1.0.2
  2240.  
  2241.      java.io.DataInputStream in = new java.io.DataInputStream(System.in);
  2242.      String s = in.readLine();
  2243.  
  2244.  
  2245.      ┼∙σ εΣΦφ ±∩ε±εß Γ JDK 1.1:
  2246.  
  2247.      java.io.BufferedReader in =
  2248.       new java.io.BufferedReader( new InputStreamReader(System.in));
  2249.  
  2250.      String s = in.readLine();
  2251.  
  2252.  
  2253.      ┼±δΦ φσεß⌡εΣΦ∞ε ≡ατεß≡α≥ⁿ ±≥≡εΩ≤, Φτ φσσ ∞εµφε δσπΩε Γ√ΣσδΦ≥ⁿ δσΩ±σ∞√
  2254.      δ■ßεπε ≥Φ∩α, ΩαΩ ≤µσ ß√δε ∩εΩαταφε Γ√°σ Γ ²≥ε∞ FAQ. HσΣε±≥α≥εΩ ²≥επε
  2255.      ±∩ε±εßα Γ ≥ε∞, ≈≥ε Φ±Ω≤±±≥Γσφφε ≤±δεµφ σ≥±  ∩≡ε±≥σΘ°σσ ≡σ°σφΦσ Σδ 
  2256.      ΓΓεΣα/Γ√ΓεΣα ± ΩδαΓΦα≥≤≡√. ┬ ßδΦµαΘ°σ∞ ß≤Σ≤∙σ∞ Javasoft Γ≡ Σ δΦ
  2257.      ∩≡σΣδεµΦ≥ ßεδσσ ≤Σεßφ√Θ ±∩ε±εß.
  2258.  
  2259.   3. (Sect. 7) ╧ε≈σ∞≤ ΓετφΦΩα■≥ ∩≡εßδσ∞√ ± System.out.println()? ╧≡εΓσ≡ⁿ≥σ
  2260.      φα∩Φ±αφΦσ. ╧ε±δσΣφΦσ ΣΓσ ß≤ΩΓ√ - ²≥ε "l" Φ "n", α φσ εΣφα "n".
  2261.  
  2262.      ╚∞  ∞σ≥εΣα ∩≡εΦ±⌡εΣΦ≥ ε≥ ±δεΓε±ε≈σ≥αφΦ  "print line" ("∩σ≈α≥ⁿ
  2263.      ±≥≡εΩΦ"), ≥αΩ ΩαΩ εφ (∞σ≥εΣ) Γ√ΓεΣΦ≥ φα ∩σ≈α≥ⁿ εß·σΩ≥ Ωδα±±α String Φ
  2264.      ∩σ≡σ⌡εΣΦ≥ φα ±δσΣ≤■∙≤■ ±≥≡εΩ≤ (Γ ε≥δΦ≈Φσ ε≥ System.out.print() ). ╩
  2265.      ±εµαδσφΦ■, ±επδα°σφΦσ ε φατΓαφΦ ⌡ ∞σ≥εΣεΓ Γ Java ±εßδ■Σασ≥± 
  2266.      ±δαßεΓα≥ε. ╥αΩ, Φ∞  ∞σ≥εΣα, ∩≡σΣφατφα≈σφφεπε Σδ  ≈≥σφΦ  ±≥≡εΩΦ ±
  2267.      ΩδαΓΦα≥≤≡√, ΓεΓ±σ φσ readln(), ∞επδε ß√ ∩εΩατα≥ⁿ± , α readLine().
  2268.  
  2269.   4. (Sect. 7) ╩αΩ ∩Φ±α≥ⁿ Γ COM ∩ε≡≥, Φ±∩εδⁿτ≤  Java?
  2270.  
  2271.      [*] ┬ JDK 1.2 σ±≥ⁿ ∩δα≥⌠ε≡∞σφφε-φσταΓΦ±Φ∞√Θ Φφ≥σ≡⌠σΘ±
  2272.      ∩ε±δσΣεΓα≥σδⁿφεπε ∩ε≡≥α. ─εΩ≤∞σφ≥α÷Φ■ Ω φσ∞≤ ∞εµφε ∩εδ≤≈Φ≥ⁿ,
  2273.      τα≡σπΦ±≥≡Φ≡εΓαΓ°Φ±ⁿ φα Java Developer Connection (²≥ε ßσ±∩δα≥φε),
  2274.      http://java.sun.com) α ≥α∞ ΦΣΦ≥σ φα
  2275.      http://java.sun.com/jdc/earlyAccess/communications.html.
  2276.  
  2277.      ─δ  ±Φ±≥σ∞ ±≥α≡°σ JDK 1.2 σ±≥ⁿ ΩαΩ ∞ΦφΦ∞≤∞ ΣΓσ ßΦßδΦε≥σΩΦ Σδ  ≡αßε≥√ ±
  2278.      COM- ∩ε≡≥α∞Φ. ╤∞ε≥≡Φ≥σ
  2279.         o http://www.sc-systems.com σ±≥ⁿ Γσ≡±ΦΦ Σδ  Windows 95, WindowsNT,
  2280.           OS/2, Macintosh PPC, Solaris Sparc, Linux x86, FreeBSD x86, HP/UX
  2281.           PA-RISC, Φ Γετ∞εµφε σ∙σ Σδ  φσΩε≥ε≡√⌡.
  2282.         o http://www.cd.com/portio
  2283.         o ╩ ≥ε∞≤ µσ Γ Unix σ±≥ⁿ ≤≥ΦδΦ≥α Σδ  ≡αßε≥√ ± ∩ε±δσΣεΓα≥σδⁿφ√∞Φ
  2284.           ∩ε≡≥α∞Φ. ╬φα Γ∞σ±≥σ ± Φ±⌡εΣφΦΩα∞Φ δσµΦ≥ φα
  2285.           http://jarvi.ezlink.com/rxtx/ ╬φα ßσ±∩δα≥φα φα ≤±δεΓΦ ⌡ GPL, Φ
  2286.           ≡αßε≥ασ≥ φα Linux, Irix, Solaris, Windows 95, Φ NT.
  2287.  
  2288.      ┼±≥ⁿ σ∙σ εΣφε ≡σ°σφΦσ ∩≡εßδσ∞√, ∩σ≡σφε±Φ∞εσ, ≡αßε≥α■∙σσ φα Java 1.1 Φ
  2289.      Σαµσ 1.0, φε ∞αδε ∩εΣ⌡εΣ ∙σσ Σδ  Σε∞α°φΦ⌡ ∩εδⁿτεΓα≥σδσΘ. ╧εΩ≤∩αΘ≥σ
  2290.      COM-∩ε≡≥√ Γ ⌠ε≡∞σ "≥σ≡∞Φφαδⁿφεπε ±σ≡Γσ≡α" ("terminal server").
  2291.      ╚±∩εδⁿτεΓαφΦσ COM-∩ε≡≥α ±≥αφεΓΦ≥±  ≥αΩΦ∞ µσ ∩≡ε±≥√∞, ΩαΩ ∩εΣ±εσΣΦφσφΦσ
  2292.      Ω ∩ε≡≥≤ ± ∩ε∞ε∙ⁿ■ Socket. ╧α≡α∞σ≥≡√ ∩ε≡≥α ∞επ≤≥ ß√≥ⁿ ∩≡επ≡α∞∞φε
  2293.      Φτ∞σφσφ√ ± ∩ε∞ε∙ⁿ■ SNMP Σδ  ßεδⁿ°Φφ±≥Γα ≥σ≡∞Φφαδⁿφ√⌡ ±σ≡Γσ≡εΓ (σ±δΦ ┬√
  2294.      ≡αßε≥ασ≥σ ± ±εΓ≡σ∞σφφ√∞ ∞εΣσ∞ε∞, ┬α∞ ²≥ε Γ≡ Σ δΦ ∩εφαΣεßΦ≥± ). ╦■ßεΘ
  2295.      Ωε∞∩ⁿ■≥σ≡ Γ ±σ≥Φ (Σαµσ σ±δΦ εφ ∩εΣ Win95) ∞εµσ≥ ≡αßε≥α≥ⁿ ΩαΩ
  2296.      ≥σ≡∞Φφαδⁿφ√Θ ±σ≡Γσ≡, Φ∞σ  ∩≡ε±≥εσ ±σ≡Γσ≡φεσ ╧╬, φε ∩εΩ≤∩Ωα
  2297.      ±∩σ÷ΦαδΦτΦ≡εΓαφφεπε α∩∩α≡α≥φεπε εßσ±∩σ≈σφΦ  τφα≈Φ≥σδⁿφε ≤∩≡ε±≥Φ≥
  2298.      ταΣα≈≤.
  2299.  
  2300.      ╩ ≥ε∞≤ µσ, Γα°Φ Windows95 ∩≡ΦδεµσφΦ  ∞επ≤≥ ±εΓ∞σ±≥φε Φ±∩εδⁿτεΓα≥ⁿ
  2301.      ╤╬╠-∩ε≡≥√ (± δ■ß√∞Φ ∞εΣσ∞α∞Φ φα ∩ε≡≥α⌡) ± ∩ε∞ε∙ⁿ■ ╧╬ "Dial-out IP" ∩εΣ
  2302.      Windows95. ╤∞ε≥≡Φ≥σ τΣσ±ⁿ: http://www.tactical-sw.com/.
  2303.  
  2304.      ┼±δΦ ∩ε≡≥ ∩εΣ∞εφ≥Φ≡εΓαφ Ω ⌠αΘδεΓεΘ ±Φ±≥σ∞σ, Γ√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ σπε
  2305.      ΩαΩ ⌠αΘδ, ε≥Ω≡√Γα  Σδ  ≈≥σφΦ  Φ/ΦδΦ τα∩Φ±Φ. ╥αΩΦ∞ µσ ∩≤≥σ∞ ∞εµφε
  2306.      Γ√ΓεΣΦ≥ⁿ φα ∩σ≈α≥ⁿ ≥σΩ±≥, Ωε∩Φ≡≤  σπε Γ ≤±≥≡εΘ±≥Γε "prn" ΦδΦ "lpt1" φα
  2307.      ╨╤-±εΓ∞σ±≥Φ∞√⌡ ±Φ±≥σ∞α⌡ (εß τα≥σδⁿφε ταΓσ≡°ΦΓ ≥σΩ±≥ ±Φ∞Γεδε∞ Ωεφ÷α
  2308.      ⌠αΘδα), ΦδΦ Γ "/dev/≈≥ε-φΦß≤Σⁿ" Γ Unix. HΦµσ ∩≡ΦΓσΣσφ ∩≡Φ∞σ≡:
  2309.  
  2310.      // Ωδα±±, ε≥Ω≡√Γα■∙ΦΘ ∩≡Φφ≥σ≡ ΩαΩ ⌠αΘδ
  2311.      // Φ τα∩Φ±√Γα■∙ΦΘ Γ φσπε ±≥≡εΩ≤ "Hello, world"
  2312.  
  2313.      import java.io.*;
  2314.      public class lpt {
  2315.          public static void main (String[] argv) {
  2316.              try {
  2317.                  FileOutputStream os = new FileOutputStream("LPT1");
  2318.                  //±ετΣασ∞ "Σ≡≤µσ±≥Γσφφ√Θ" PrintStream
  2319.                  PrintStream ps = new PrintStream(os);
  2320.  
  2321.                  //Γ√ΓεΣΦ∞ ≥σΩ±≥
  2322.                  ps.println("Hello world!");
  2323.  
  2324.                  //∩≡ΦτφαΩ Ωεφ÷α ⌠αΘδα -- ²≥ε Γαµφε
  2325.                  //┴στ φσπε ≥σΩ±≥ ∩≡ε±≥ε ∩ε∩αΣσ≥ Γ ß≤⌠σ≡ ∩≡Φφ≥σ≡α
  2326.                  // ∩εΩα ≈≥ε-φΦß≤Σⁿ σ∙σ φσ ß≤Σσ≥ Γ√ΓεΣΦ≥ⁿ±  φα ∩σ≈α≥ⁿ.
  2327.                  ps.print("\f");
  2328.                  //±ß≡α±√Γασ∞ ß≤⌠σ≡ Φ ταΩ≡√Γασ∞ ∩ε≥εΩ
  2329.                  ps.close();
  2330.              } catch (Exception e) {
  2331.                  System.out.println("Exception occurred: " + e);
  2332.              }
  2333.          }
  2334.      }
  2335.  
  2336.  
  2337.      ┼±δΦ φσεß⌡εΣΦ∞ε Φτ∞σφΦ≥ⁿ ⌡α≡αΩ≥σ≡Φ±≥ΦΩΦ ∩ε≡≥α (φα∩≡., ±Ωε≡ε±≥ⁿ ΦδΦ
  2338.      ≈σ≥φε±≥ⁿ), α φσ ∩≡ε±≥ε ∩Φ±α≥ⁿ ΦδΦ ±≈Φ≥√Γα≥ⁿ Σαφφ√σ, ≥ε, Ω ±εµαδσφΦ■,
  2339.      Java φα Σαφφ√Θ ∞ε∞σφ≥ φσ Φ∞σσ≥ ∩σ≡σφε±Φ∞√⌡ ≡σ°σφΦΘ Σδ  ²≥εΘ ∩≡εßδσ∞√.
  2340.      ┬α∞ ∩≡ΦΣσ≥±  Γε±∩εδⁿτεΓα≥ⁿ±  εΣφεΘ Φτ ßΦßδΦε≥σΩ, ≤Ωαταφφ√⌡ Γ√°σ, ΦδΦ
  2341.      µσ εß≡α≥Φ≥ⁿ±  Ω ±Φ±≥σ∞φε-ταΓΦ±Φ∞ε∞≤ ΩεΣ≤ ΦδΦ ≤≥ΦδΦ≥σ.
  2342.  
  2343. *(╫α±≥ⁿ 7) ╩αΩ   ∞επ≤ ±Σσδα≥ⁿ ß√±≥≡σσ ΓΓεΣ/Γ√ΓεΣ? ╠ε  ∩≡επ≡α∞∞α
  2344. Ωε∩Φ≡εΓαφΦ  ⌠αΘδεΓ ≡αßε≥ασ≥ ∞σΣδσφφε.
  2345.  
  2346. [*] ─δ  ²≥εΘ ÷σδΦ φαΣε Φ±∩εδⁿτεΓα≥ⁿ BufferedInputStream. HσΣε±≥α≥Ωε∞ Java
  2347.  Γδσ≥±  ≥ε, ≈≥ε ß≤⌠σ≡ΦτεΓαφφ√Θ ΓΓεΣ/Γ√ΓεΣ φσ Φ±∩εδⁿτ≤σ≥±  ∩ε ≤∞εδ≈αφΦ■;
  2348. ∞εµφε ß√δε ß√ Φ±∩εδⁿτεΓα≥ⁿ φσΩΦΘ ⌠δαπ ΦδΦ αδⁿ≥σ≡φα≥ΦΓφ√Θ Ωεφ±≥≡≤Ω≥ε≡ Σδ 
  2349. σπε ε≥Ωδ■≈σφΦ . ╧αΩσ≥ ΓΓεΣα/Γ√ΓεΣα - Γ≥ε≡εΘ φαΦßεδσσ ∩δε⌡ε ≡σαδΦτεΓαφφ√Θ
  2350. ∩αΩσ≥ Γ Java ∩ε±δσ Ωδα±±α Data.
  2351.  
  2352. *(╫α±≥ⁿ 7) ╩αΩ   ∞επ≤ ε≡παφΦτεΓα≥ⁿ ⌠ε≡∞α≥Φ≡εΓαφφ√Θ ΓΓεΣ/Γ√ΓεΣ Γσ∙σ±≥Γσφφ√⌡
  2353. ≈Φ±σδ?
  2354.  
  2355. [*] ╚±∩εδⁿτ≤Θ≥σ Ωδα±± java.text.NumberFormat.
  2356.  
  2357. ╥αΩµσ Γ√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ http://www.newbie.net/sharky/lava/, ΦδΦ
  2358. Φ±∩εδⁿτ≤Θ≥σ ∩αΩσ≥ Cay Horstmann'α
  2359. http://www.horstmann.com/corejava/Format.java
  2360. Hσ±∞ε≥≡  φα ≥ε,≈≥ε ∞φεπε ≡ατδΦ≈φ√⌡ ≤≥ΦδΦ≥ τα Γδ ■≥ ∩εΣΣσ≡µΩ≤ Γ±σ⌡
  2361. Γετ∞εµφε±≥σΘ ⌠≤φΩ÷ΦΦ printf  τ√Ωα C, ≥εδⁿΩε Γ√°σ∩≡ΦΓσΣσφφ√σ ∩αΩσ≥√
  2362. Ωε≡≡σΩ≥φε ∩εΣΣσ≡µΦΓα■≥ ²ΩΓΦΓαδσφ≥ %e Γ printf.
  2363.  
  2364. *(╫α±≥ⁿ 7) ╩αΩ   ∞επ≤ ∩≡ε≈Φ≥α≥ⁿ ≈Φ±δα Γ φα≤≈φε∞ (²Ω±∩εφσφ÷Φαδⁿφε∞)
  2365. ⌠ε≡∞α≥σ?
  2366.  
  2367. [*] HΦµσ∩≡ΦΓσΣσφφα  ∩≡επ≡α∞∞α, φα∩Φ±αφφα  Steve Chapel, Φ±∩εδⁿτ≤σ≥ Ωδα±±
  2368. StreamTokenizer Σδ  ≥επε, ≈≥εß√ ∩≡ε≈Φ≥α≥ⁿ Σαφφ√σ Φτ ±≥αφΣα≡≥φεπε ΓΓεΣα Φ
  2369. ≡α±∩ετφα≥ⁿ Γσ∙σ±≥Γσφφ√σ ≈Φ±δα ΣΓεΘφεΘ ≥ε≈φε±≥Φ (double) Γ ²Ω±∩εφσφ÷Φαδⁿφε∞
  2370. ⌠ε≡∞α≥σ (φα∩≡Φ∞σ≡, -1.23e-45).
  2371.  
  2372. import java.io.*;
  2373.  
  2374. public class ReadExponential {
  2375.     public static void main(String argv[]) {
  2376.         DataInputStream in = new DataInputStream(System.in);
  2377.         StreamTokenizer st = new StreamTokenizer(in);
  2378.         try {
  2379.             while (st.nextToken() != StreamTokenizer.TT_EOF) {
  2380.                 switch (st.ttype) {
  2381.  
  2382.    case StreamTokenizer.TT_NUMBER:
  2383.              double num = st.nval;
  2384.              int exp = 0;
  2385.              st.ordinaryChars('\0', ' ');
  2386.              st.nextToken();
  2387.              st.whitespaceChars('\0', ' ');
  2388.              if (st.ttype == StreamTokenizer.TT_WORD &&
  2389.                  Character.toUpperCase(st.sval.charAt(0)) == 'E') {
  2390.                  try {
  2391.                     exp = Integer.parseInt(st.sval.substring(1));
  2392.                  } catch (NumberFormatException e) {
  2393.                     st.pushBack();
  2394.                  }
  2395.              } else if (st.ttype < 0 || st.ttype > ' ')
  2396.                  st.pushBack();
  2397.              System.out.println("Num " + num * Math.pow(10, exp));
  2398.              break;
  2399.     case StreamTokenizer.TT_WORD:
  2400.              System.out.println("Word " + st.sval);
  2401.              break;
  2402.     default:
  2403.              System.out.println("Char '" + (char) st.ttype + "'");
  2404.              break;
  2405.          } // end switch
  2406.      }  // end while
  2407.    } catch (IOException e) {
  2408.      System.out.println("IOException: " + e);
  2409.    }
  2410.  } // end main
  2411. }
  2412.  
  2413.  
  2414. *(╫α±≥ⁿ 7) ▀ ∩√≥α■±ⁿ ∩≡ε≈Φ≥α≥ⁿ ±Φ∞Γεδ Φτ ≥σΩ±≥εΓεπε ⌠αΘδα, Φ±∩εδⁿτ≤  ∞σ≥εΣ
  2415. readChar() Ωδα±±α DataInputStream. └ ΩεπΣα   ∩√≥α■±ⁿ σπε φα∩σ≈α≥α≥ⁿ,
  2416. ∩εδ≤≈α■ ±Φ∞Γεδ√ '?'.
  2417.  
  2418. [*] ╧ε∞φΦ≥σ, ≈≥ε Γ Java Φ±∩εδⁿτ≤■≥±  16-ßΦ≥φ√σ ±Φ∞Γεδ√ Unicode, Γ ≥ε Γ≡σ∞ 
  2419. ΩαΩ ∞φεπΦσ ±Φ±≥σ∞√ ⌡≡αφ ≥ ±Φ∞Γεδ√ ΩαΩ 8-ßΦ≥φ√σ Γ ΩεΣΦ≡εΓΩσ ASCII. ╥αΩΦ∞
  2420. εß≡ατε∞, ≈≥εß√ ∩≡ε≈Φ≥α≥ⁿ ε≥Σσδⁿφ√σ ±Φ∞Γεδ√ Φτ ≥σΩ±≥εΓεπε ⌠αΘδα, φσεß⌡εΣΦ∞ε
  2421. ≤ßσΣΦ≥ⁿ±  Γ ∩≡αΓΦδⁿφεΘ ΩεφΓσ≡≥α÷ΦΦ. ╧≡αΓΦδⁿφε ²≥ε Σσδασ≥±  ≥αΩ -
  2422. Φ±∩εδⁿτ≤Θ≥σ InputStreamReader, Ωε≥ε≡√Θ ∩≡σεß≡ατεΓ√Γασ≥ ∩ε≥εΩ Φτ 8-ßΦ≥φεπε Γ
  2423. 16-ßΦ≥φ√Θ:
  2424.  
  2425. FileInputStream fis = new FileInputStream("myfile.txt");
  2426. InputStreamReader isr = new InputStreamReader(fis);
  2427.  
  2428. char c3 = (char) isr.read();
  2429.  
  2430. ─≡≤πεΘ, ∞σφσσ ∩≡σΣ∩ε≈≥Φ≥σδⁿφ√Θ ∩≤≥ⁿ, ±ε±≥εΦ≥ Γ ≥ε∞, ≈≥εß√ ∩≡ε≈Φ≥α≥ⁿ ßαΘ≥ Φ
  2431. ∩≡σεßατεΓα≥ⁿ σπε Γ ±Φ∞Γεδ:
  2432.  
  2433. FileInputStream fis = new FileInputStream("myfile.txt");
  2434. DataInputStream dis = new DataInputStream(fis);
  2435. char c1 = (char) dis.readByte();
  2436.  
  2437.  
  2438. *(╫α±≥ⁿ 7) ╩αΩ ≤ΣαδΦ≥ⁿ ΣΦ≡σΩ≥ε≡Φ■ Γ Java?
  2439.  
  2440. [*] JDK 1.0 φσ ∩εΣΣσ≡µΦΓασ≥ ≤ΣαδσφΦσ ΣΦ≡σΩ≥ε≡ΦΘ. JDK 1.1 ∩εΣΣσ≡µΦΓασ≥
  2441. ≤ΣαδσφΦσ ΣΦ≡σΩ≥ε≡ΦΘ ∩≡Φ ∩ε∞ε∙Φ ∞σ≥εΣα public boolean delete() Ωδα±±α
  2442. java.io.File
  2443.  
  2444. ╙ßσΣΦ≥σ±ⁿ, ≈≥ε Γ ΣΦ≡σΩ≥ε≡ΦΦ, Ωε≥ε≡≤■ Γ√ ±εßΦ≡ασ≥σ±ⁿ ≤ΣαδΦ≥ⁿ, φσ≥ φΦ εΣφεπε
  2445. ε≥Ω≡√≥επε ∩ε≥εΩα (stream). ┬√∩εδφΦ≥σ Ωε∞αφΣ≤ close() Σδ  Γ±σ⌡ ∩ε≥εΩεΓ, Σαµσ
  2446. σ±δΦ ≈Φ≥ασ∞√Θ ⌠αΘδ ταΩεφ≈Φδ±  (the underlying file is gone).
  2447.  
  2448. *(╫α±≥ⁿ 7) ╩αΩ   ∞επ≤ ≤τφα≥ⁿ, ±ΩεδⁿΩε ±ΓεßεΣφε ΣΦ±ΩεΓεπε ∩≡ε±≥≡αφ±≥Γα?
  2449.  
  2450. [*] Hα Σαφφ√Θ ∞ε∞σφ≥ φσ ±≤∙σ±≥Γ≤σ≥ ⌡ε≡ε°σπε API (∩≡επ≡α∞∞φεπε Φφ≥σ≡⌠σΘ±α)
  2451. Σδ  Φφ±∩σΩ≥Φ≡εΓαφΦ  ±Φ±≥σ∞√. ┬ Java φσΓετ∞εµφε Ωεφ≥≡εδΦ≡εΓα≥ⁿ ∩≡ε÷σ±±√ ΦδΦ
  2452. ±∞ε≥≡σ≥ⁿ φα ≡σ±≤≡±√ ±Φ±≥σ∞√. ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ
  2453. Runtime.getRuntime().exec() Σδ  Γ√τεΓα "df" Γ ■φΦΩ±σ ΦδΦ "dir" Γ Windows.
  2454.  
  2455. ╤ Σ≡≤πεΘ ±≥ε≡εφ√, Γτπδ φΦ≥σ φα JConfig ∩ε αΣ≡σ±≤:
  2456. http://www.tolstoy.com/samizdat/jconfig.html
  2457. JConfig - ²≥ε ∞σµ∩δα≥⌠ε≡∞σφφα  ßΦßδΦε≥σΩα, Ωε≥ε≡α  τα∩εδφ σ≥ ∞φεπΦσ
  2458. ∩≡ε∞σµ≤≥ΩΦ Γ Java API, Φ Σασ≥ Γετ∞εµφε±≥ⁿ ≡αßε≥α≥ⁿ ± ⌠αΘδα∞Φ, ∩≡ε÷σ±±α∞Φ,
  2459. ∞εφΦ≥ε≡α∞Φ Φ ≥.Σ. Γ ∞αφσ≡σ, φα∩ε∞Φφα■∙σΘ Windows ΦδΦ Mac.
  2460.  
  2461. *(╫α±≥ⁿ 7) ╩αΩ   ∞επ≤ ∩εδ≤≈Φ≥ⁿ ±∩Φ±εΩ ⌠αΘδεΓ Γ Ωα≥αδεπσ C:\ ?
  2462.  
  2463. [*] ╩αµ≤∙ΦΘ±  ε≈σΓΦΣφ√∞ ∩εΣ⌡εΣ - Γ√τΓα≥ⁿ File.list("C:\") - φσ ≡αßε≥ασ≥.
  2464. ─δ  ²≥επε σ±≥ⁿ ΣΓσ ∩≡Φ≈Φφ√. ┬ε-∩σ≡Γ√⌡, \ (slash)  Γδ σ≥±  escape-±Φ∞Γεδε∞ Γ
  2465. Java, ≥ε σ±≥ⁿ, σ±δΦ Γα∞ φ≤µσφ ²≥ε≥ ±Φ∞Γεδ, φαΣε φα∩Φ±α≥ⁿ σπε ΣΓαµΣ√.
  2466. ┬ε-Γ≥ε≡√⌡, φσεß⌡εΣΦ∞ε ≤Ωατα≥ⁿ Φ∞  ΣΦ≡σΩ≥ε≡ΦΦ, ≥ε σ±≥ⁿ ≥ε≈Ω≤. ╬ß·σΣΦφΦΓ Γ±σ
  2467. ²≥ε Γ∞σ±≥σ, ≤ΓΦΣΦ∞, ≈≥ε δ■ßεΘ Φτ ±δσΣ≤■∙Φ⌡ Γ√τεΓεΓ ≡αßε≥ασ≥:
  2468.  
  2469. File.list("C:\\.");
  2470.  
  2471.  
  2472. ΦδΦ
  2473.  
  2474. File.list("C:/.");
  2475.  
  2476.  
  2477. ╟α∞σ≈αφΦσ: ≡ατΣσδΦ≥σδⁿ "/" ≡αßε≥ασ≥ ≥ε≈φε ≥αΩ µσ, ΩαΩ Φ "\" Γε ∞φεπΦ⌡
  2478. ∩≡επ≡α∞∞α⌡ Φ ±Φ±≥σ∞φ√⌡ Γ√τεΓα⌡ Windows. ─σδε Γ ≥ε∞, ≈≥ε Γ ∩≡α≡εΣΦ≥σδσ DOS -
  2479. ε∩σ≡α÷ΦεφφεΘ ±Φ±≥σ∞σ CP/M - φσ ß√δε ΣΦ≡σΩ≥ε≡ΦΘ Φ, ±δσΣεΓα≥σδⁿφε,
  2480. ≡ατΣσδΦ≥σδσΘ Γ Φ∞σφα⌡ ⌠αΘδεΓ. ╧≡ ∞εΘ ±δ²° "/" ß√δ ≤µσ ταΣσΘ±≥ΓεΓαφ Σδ 
  2481. ∩σ≡σΣα≈Φ ε∩÷ΦΘ Ωε∞αφΣα∞ CP/M; εß≡α≥φ√Θ ±δ²° "\" ±≥αδΦ Φ±∩εδⁿτεΓα≥ⁿ ΩαΩ
  2482. ≡ατΣσδΦ≥σδⁿ ΣΦ≡σΩ≥ε≡ΦΘ Γ Φ∞σφα⌡ ⌠αΘδεΓ, εΣφαΩε εßεδε≈Ωα ∩εφΦ∞ασ≥ Φ "/" Σδ 
  2483. ±εΓ∞σ±≥Φ∞ε±≥Φ ± Σ≡≤πΦ∞Φ ε∩σ≡α÷Φεφφ√∞Φ ±Φ±≥σ∞α∞Φ.
  2484.  
  2485. *(╫α±≥ⁿ 7) ┬ ≈σ∞ ≡ατφΦ÷α ∞σµΣ≤ ≡ατδΦ≈φ√∞Φ ⌠ε≡∞α≥α∞Φ ZIP: ZIP, GZIPΦ PKZIP?
  2486.  
  2487. [*] Zip - ⌠ε≡∞α≥ α≡⌡ΦΓφεπε ⌠αΘδα, ∩ε∩≤δ ≡φ√Θ φα PC, Ωε≥ε≡√Θ ±εΣσ≡µΦ≥
  2488. φσ±ΩεδⁿΩε ±µα≥√⌡ ⌠αΘδεΓ Γφ≤≥≡Φ.
  2489. GZIP - ²≥ε GNU ZIP. ╨σαδⁿφε ²≥ε ∩εΣ∞φεµσ±≥Γε ⌠ε≡∞α≥α ZIP ± εΣφΦ∞ ⌠αΘδε∞
  2490. Γφ≤≥≡Φ. ┬ GZIP φσδⁿτ  ∩ε∞σ±≥Φ≥ⁿ ÷σδ≤■ ΣΦ≡σΩ≥ε≡Φ■, α ∞εµφε ≥εδⁿΩε εΣΦφ ⌠αΘδ.
  2491.  
  2492. PKZIP - φαßε≡ Ωε∞∞σ≡≈σ±ΩΦ⌡ ∩≡επ≡α∞∞ Σδ  ±ετΣαφΦ  ⌠αΘδεΓ Zip.
  2493. ┬±σ ≥≡Φ Φ±∩εδⁿτ≤■≥ αδπε≡Φ≥∞ ±µα≥Φ , ε±φεΓαφφ√Θ φα LZ77. ▌≥ε≥ ∞σ≥εΣ ±µα≥Φ 
  2494. ≥αΩµσ Φ±∩εδⁿτ≤σ≥±  ßΦßδΦε≥σΩεΘ ZLIB Φ, ±δσΣεΓα≥σδⁿφε, π≡α⌠Φ≈σ±ΩΦ∞ ⌠ε≡∞α≥ε∞
  2495. PNG (Ωε≥ε≡√Θ Φ±∩εδⁿτ≤σ≥ ZLIB). PNG - Portable Network Graphics -
  2496. ∩≡σΣε±≥αΓδ σ≥ ±ΓεßεΣφ≤■, φσ τα∙Φ∙σφφ≤■ ΩαΩΦ∞Φ-δΦßε ∩α≥σφ≥α∞Φ, τα∞σφ≤ GIF Φ
  2497. TIFF.
  2498.  
  2499. └δⁿ≥σ≡φα≥ΦΓφα  ≥σ⌡φεδεπΦ  ±µα≥Φ , LZW, τα∙Φ∙σφα ∩α≥σφ≥ε∞ Unisys. LZW
  2500. Φ±∩εδⁿτ≤σ≥±  Γ ⌠αΘδα⌡ GIF Φ Γ Ωε∞αφΣσ Unix'α compress. ╩ ±≈α±≥ⁿ■, ß≤Σ≤≈Φ
  2501. ±ΓεßεΣφ√∞ ε≥ ∩α≥σφ≥φ√⌡ ταΓΦ±Φ∞ε±≥σΘ, LZ77 ≥αΩµσ Σασ≥ δ≤≈°σσ ±Σα≥Φσ, ≈σ∞
  2502. LZW. LZW - φα≈αδⁿφ√σ ß≤ΩΓ√ ⌠α∞ΦδΦΘ ≥≡σ⌡ ≤≈σφ√⌡, ≡ατ≡αßε≥αΓ°Φ⌡ αδπε≡Φ≥∞
  2503. (Lempel, Ziv, Welch).
  2504.  
  2505. ╬±φεΓφ√σ Ωδα±±√ (εφΦ φα⌡εΣ ≥±  Γ java.util.zip), ∩εΣΣσ≡µΦΓα■∙Φσ ⌠ε≡∞α≥ LZ77
  2506. - Deflater Φ Inflater. ╬φΦ Φ±∩εδⁿτ≤■≥±  Ωδα±±α∞Φ DeflaterOutputStream Φ
  2507. InflaterInputStream. ┬ ∩αΩσ≥σ java.util.zip σ±≥ⁿ ≥αΩ µσ Ωδα±±√
  2508. GZIPInputStream Φ ZipInputStream, ≤φα±δσΣεΓαφφ√σ ε≥ InflaterInputStream.
  2509.  
  2510. PKZIP - Ωε∞∞σ≡≈σ±Ωα  ∩≡επ≡α∞∞α Σδ  DOS, Windows Φ OS/2, ∩≡εΣαΓασ∞α  PKWARE.
  2511.  
  2512. ╘αΘδ√ Jar (Java Archive) ⌡≡αφ ≥±  Γ ⌠ε≡∞α≥σ ZIP, φε ±≤∙σ±≥Γ≤σ≥ εΣφε ε≥δΦ≈Φσ
  2513. - φσ ±ε⌡≡αφ ■≥±  α≥≡Φß≤≥√ ⌠αΘδεΓ. ╚τΓσ±≥φε, ≈≥ε φσΩε≥ε≡√σ Γσ≡±ΦΦ WinZip
  2514. φσ∩≡αΓΦδⁿφε ∩εΣΣσ≡µΦΓα■≥ ∩εδφ√Θ ⌠ε≡∞α≥ ZIP. ╦≤≈°σ Φ±∩εδⁿτεΓα≥ⁿ InfoZIP ΦδΦ
  2515. PKZIP.
  2516.  
  2517. *(╫α±≥ⁿ 8) ╤≤∙σ±≥Γ≤■≥ δΦ ∩αΩσ≥√ Γ Java Σδ  ≤∩≡αΓδσφΦ  HTML?
  2518.  
  2519. [*] ╤∞ε≥≡Φ≥σ ε≥Γσ≥ φα ┬ε∩≡ε± 13.14.
  2520.  
  2521. *(╫α±≥ⁿ 8) ╧ε≈σ∞≤ Dialogs φσ ≡αßε≥α■≥ ≥αΩ, ΩαΩ   ⌡ε≈≤?
  2522.  
  2523. [*] ╠εΣαδⁿφ√σ ΣΦαδεπΦ (ΣΦαδεπεΓ√σ εΩφα, ∩≡Φ±≤≥Γ≤■∙Φσ ∩εΩα φα φΦ⌡ φσ
  2524. ∙σδΩφ≤≥ⁿ) ∩≡ε Γδ ■≥ πδ■ΩαΓε±≥ⁿ Γε ∞φεπΦ⌡ ß≡α≤τσ≡α⌡ Φ Γ JDK 1.0.2. ╬ΣΦφ Φτ
  2525. ßαπεΓ ²≥ε ΩεπΣα ΣΦαδεπ φσ ±≥αφεΓΦ≥±  αΩ≥ΦΓφ√∞ εΩφε∞, ∩≡Φ Γ√ΓεΣσ φσ ²Ω≡αφ.
  2526. ╠φεπΦσ Φτ ßαπεΓ Φ±∩≡αΓδσφ√ Γ JDK 1.1.
  2527.  
  2528.  (╫α±≥ⁿ 8) ├Σσ   ∞επ≤ ∩εδ≤≈Φ≥ⁿ Φφ⌠ε≡∞α÷Φ■ ε Ωδα±±α⌡ sun.* Γ JDK?
  2529.  
  2530. [ ] ▌≥Φ Ωδα±±√ ∩εΣΣσ≡µΦΓα■≥ ≥εδⁿΩε ⌠≤φΩ÷ΦΦ Γ java.* Φσ≡α≡⌡ΦΦ. ╬φΦ φσ
  2531.  Γδ ■≥±  ≈α±≥ⁿ■ API, Φ φσ ß≤Σ≤≥ ≡αßε≥α≥ⁿ Γ Java ±Φ±≥σ∞α⌡ ε≥ ∩ε±≥αΓ∙ΦΩεΓ φσ
  2532. Sun. HσΩε≥ε≡√σ δ■ΣΦ Φτ∞σφ δΦ ΩεΣ Φ ε∩≤ßδΦΩεΓ√ΓαδΦ API Σδ  ≡αßε≥√ ± ²≥Φ∞Φ
  2533. Ωδα±±α∞Φ, φε Γ√ ß≤Σσ≥σ Φ±∩εδⁿτεΓα≥ⁿ Φ⌡ φα ±ΓεΘ ≡Φ±Ω, Φ ²≥ε ∞εµσ≥ Φ±∩ε≡≥Φ≥ⁿ
  2534. ≈≥ε-δΦßε ßστ ∩≡σΣ≤∩≡σµΣσφΦ .
  2535.  
  2536. ╧δε⌡ε, ≈≥ε ²≥Φ ∩≡επ≡α∞∞√ φσ ß√δΦ ∩σ≡σφσ±σφ√ φα εß√≈φ≤■ Java Φ ß≤Σ≤≥
  2537. ≡αßε≥α≥ⁿ ≥εδⁿΩε φα JDK ε≥ Sun. ╧ε ²≥εΘ ∩≡Φ≈Φφσ ∞√ φσ ≡σΩΩε∞σφΣ≤σ∞
  2538. Φ±∩εδⁿτεΓα≥ⁿ Ωδα±±√ Γφσ java.* ΩεπΣα Γ√ Φ±∩εδⁿτ≤σ≥σ JDK ε≥ Σ≡≤πΦ⌡ ⌠Φ≡∞.
  2539.  
  2540. ┼±δΦ Γ√ Γ±σ-µσ φα±≥αΦΓασ≥σ φα ≥ε∞, ≈≥ε ß√ Φ⌡ Φ±∩εδⁿτεΓα≥ⁿ, ∞εµσ≥σ
  2541. ∩ε±∞ε≥≡σ≥ⁿ τΣσ±ⁿ:
  2542. http://java.sun.com/products/api-overview/index.html
  2543. http://www.parmly.luc.edu/javaudio/
  2544. http://www.users.interport.net/~mash/javamidi.html
  2545.  
  2546. *(╫α±≥ⁿ 8) ╩αΩ ∩≡ε≈Φ≥α≥ⁿ τφα≈σφΦ  ∩σ≡σ∞σφφ√⌡ ╬╤ Φ±∩εδⁿτ≤  ∩≡επ≡α∞∞≤ φα
  2547. Java?
  2548.  
  2549. [*] ╧σ≡σ∞σφφ√σ εΩ≡≤µσφΦ  ±Φ±≥σ∞√ φσ Φ±∩εδⁿτ≤■≥±  Γ Java, ≥αΩ ΩαΩ εφΦ
  2550. ταΓΦ± ≥ ε≥ ∩δα≥⌠ε≡∞√. Mac-±Φ±≥σ∞√ Γεεß∙σ φσ Φ∞σ■≥ ≥αΩΦ⌡ ∩σ≡σ∞σφφ√⌡,
  2551. φα∩≡Φ∞σ≡. ╙ ∩≡ΦδεµσφΦΘ Windows 95 φσ τα∩≤±Ωα■∙Φ⌡±  Φτ εΩφα DOS φσ≥
  2552. ∩σ≡σ∞σφφ√⌡ εΩ≡≤µσφΦ . ╚±∩εδⁿτ≤Θ≥σ ε∩÷ΦΦ Γ∞σ±≥ε φΦ⌡. ┬ JDK 1.0 ß√δα Σε∩≤∙σφα
  2553. ε°ΦßΩα, Φτ-τα Ωε≥ε≡εΘ ∩≡επ≡α∞∞Φ±≥α∞ ±α∞Φ∞ ∩≡Φ⌡εΣΦδε±ⁿ ≤±≥αφαΓδΦΓα≥ⁿ
  2554. τφα≈σφΦσ ∩σ≡σ ∞σφφεΘ CLASSPATH. ▌≥ε τφα≈σφΦσ Σεδµφε ß√≥ⁿ ≤±≥αφεΓδσφε Γ
  2555. ⌠αΘδσ ±ΓεΘ±≥Γ.
  2556.  
  2557. ╤ετΣαΘ≥σ Γα° ±εß±≥Γσφφ√Θ ⌠αΘδ ±ΓεΘ±≥Γ(±∞. java.util.Properties) ΦδΦ ≤ΩαµΦ
  2558. ≥σ ε∩÷ΦσΘ -D ΩεπΣα Γ√ τα∩≤±Ωασ≥σ Φφ≥σ≡∩≡σ≥α≥ε≡ ΦδΦ JRE. ─ε∩εδφΦ≥σδⁿφε φα
  2559. φσΩε≥ε≡√⌡ ±Φ±≥σ∞α⌡ Γ√ ∞εµσ≥σ ≤±≥αφεΓΦ≥ⁿ τφα≈σφΦσ Φτ Ωε∞∞αφΣφεΘ ±≥≡εΩΦ,
  2560. φα∩≡Φ∞σ≡:
  2561.  
  2562. java -Dfoo=$foo MyClass (Unix)
  2563.  
  2564. ΦδΦ
  2565.  
  2566. java -Dfoo=%foo% MyClass (Win95/NT)
  2567.  
  2568. ▌≥ε ≤±≥αφεΓΦ≥ τφα≈σφΦσ "foo" Γ τφα≈σφΦσ ∩σ≡σ∞σφφεΘ εΩ≡≤µσφΦ  foo, Φ ±Σσδασ≥
  2569. ²≥ε Σε±≥≤∩φ√∞ Γ ε∩÷Φ ⌡ System. ╤δσΣΦ≥σ τα ≥σ∞, ≈≥εß√ φσ ß√δε ∩≡εßσδεΓ ∩ε±δσ
  2570. -D ΦδΦ ΓεΩ≡≤π τφαΩα ≡αΓσφ±≥Γα("=") ┬φ≤≥≡Φ ∩≡επ≡α∞∞√ Γ√ ∩εδ≤≈Φ≥σ τφα≈σφΦσ
  2571. ∩σ≡σ∞σφφεΘ foo ≥αΩΦ∞ εß≡ατε∞:
  2572.  
  2573. String env = System.getProperty("foo");
  2574.  
  2575. ╠εµφε ∩ε±≥≤∩Φ≥ⁿ ßεδσσ ∩≡ε±≥ε, φα∩Φ±αΓ τφα≈σφΦσ Σδ  foo Γ Ωε∞∞αφΣφεΘ ±≥≡εΩσ
  2576. Φ ∩≡ε≈Φ≥αΓ σσ ΩαΩ arg[0].
  2577.  
  2578. java MyClass %FOO% ; Win32
  2579.     java MyClass $FOO ; Unix
  2580.  
  2581.  
  2582. HαΩεφσ÷, Γ√ ∞εµσ≥σ τα∩≤±≥Φ≥ⁿ Runtime ∩≡ε÷σ±± Σδ  ∩εδ≤≈σφΦ  ∩σ≡σ∞σφφεΘ
  2583. εΩ≡≤µσφΦ , σ±δΦ Γ√ Φ±∩εδⁿτ≤σ≥σ ∩δα≥⌠ε≡∞≤, Σε∩≤±Ωα■∙≤■ ²≥ε.
  2584.  
  2585. import java.io.*;
  2586. import java.util.Properties;
  2587.  
  2588. public class Main {
  2589.     public static void main(String[] argv) {
  2590.         Properties envVars = new Properties();
  2591.  
  2592.         try {
  2593.           envVars.load(   // Φ±∩εδⁿτ≤Θ≥σ "set" Γ Windows
  2594.                 Runtime.getRuntime().exec("/bin/env").getInputStream());
  2595.         } catch (Throwable t) {t.printStackTrace();}
  2596.  
  2597.         System.out.println("\n\n"+argv[0]+" = <"+envVars.get(argv[0])+">");
  2598.     }
  2599. }
  2600.  
  2601. ▌≥ε φσ εß√≈φ√Θ ∩εΣ⌡εΣ Ω Java Φ ²≥ε ∩ε±≥≡εΦ≥± , Γ ταΓΦ±Φ∞ε±≥Φ ε≥ ∩δα≥⌠ε≡∞√,
  2602. Ωε≥ε≡≤■ Γ√ Φ±∩εδⁿτ≤σ≥σ. ╤∞ε≥≡Φ≥σ ┬ε∩≡ε± 10.6 Σδ  Σσ≥αδσΘ. ┬ Unix, Ωε∞∞αφΣα
  2603. Γ√ΓεΣ ∙α  ∩σ≡σ∞σφφ√σ ╬╤ ²≥ε "/usr/bin/env". ┬ Windows 95, ²≥ε "set".
  2604.  
  2605. *(╫α±≥ⁿ 8) ╩αΩ ∞εµφε ±Γ τα≥ⁿ Java ± ßατεΘ Σαφφ√⌡ Microsoft Access?
  2606.  
  2607. [*] ╚±∩εδⁿτ≤Θ≥σ JDBC-ODBC ∞ε±≥. ▌≥ε φσ ±δΦ°Ωε∞ ≥≡≤Σφε Γ ≤±≥αφεΓΩσ, φε ²≥ε
  2608. ≥≡σß≤σ≥ ε±εßσφφεπε ΓφΦ∞αφΦ  Ω Σσ≥ δ ∞. ╠√ ∩≡σΣδαπασ∞ ∩≡Φ∞σ≡ "°απ-τα-°απε∞"
  2609. Φτ ≥σΩ±≥α ╦ΦφΣσφ(van der Linden) "╧≡ε±≥ε Java" ≤∩ε∞ φ≤≥ε∞ Γ ≡ατΣσδσ
  2610. ±ετΣα≥σδσΘ ²≥επε ΣεΩ≤∞σφ≥α.
  2611.  
  2612. ╟α∞σ≥ⁿ≥σ, ≈≥ε Γσ≡±Φ  JDK ε≥ Microsoft φσ ∩εΣΣσ≡µΦΓασ≥ JDBC-ODBC Σε±≥≤∩,
  2613. Φτ-τα φσ±≥αφΣα≡≥φεπε Φφ≥σ≡⌠σΘ±α.
  2614. JDBC FAQ ∞εµφε φαΘ≥Φ φα
  2615. http://java.sun.com/products/jdbc/jdbc-frequent.html
  2616.  
  2617. *(╫α±≥ⁿ 8) ▀ φσ ∞επ≤ ±∞σφΦ≥ⁿ ≥σΩ≤∙≤■ ≡αßε≈≤■ ΣΦ≡σΩ≥ε≡Φ■, φσ ≥αΩ-δΦ?.
  2618.  
  2619. [*] ┬±σ Γσ≡φε. ▌≥ε ≤∩≤∙σφφα  Γετ∞εµφε±≥ⁿ  Γδ σ≥±  φσΣε±∞ε≥≡ε∞, Ωε≥ε≡√Θ ∞√
  2620. φαΣσσ∞±  Φ±∩≡αΓΦ≥ⁿ Γ ß≤Σ≤∙σ∞. ID ²≥επε ßαπα 4156278, ∩εµαδ≤Θ±≥α
  2621. ∩≡Φ±εσΣΦφ Θ≥σ±ⁿ Ω JDC, Φ πεδε±≤Θ≥σ, ≈≥εß√ Φ±∩≡αΓΦ≥ⁿ ²≥ε(Φ ε±≥αδⁿφεσ).
  2622. ╚τ∞σφσφΦσ ε∩÷ΦΦ user.dir ∩≡ε±≥ε Φτ∞σφΦ≥ ≥σΩ±≥εΓεσ τφα≈σφΦσ, φσ Γε∩δε∙α 
  2623. Φτ∞σφσφΦ  Γ µΦτφⁿ.
  2624.  
  2625. ╤≤∙σ±≥Γ≤■≥ φσ±ΩεδⁿΩε εß⌡εΣεΓ ²≥επε.
  2626.  
  2627.    * ╟α∩≤±≥Φ≥σ Γα°σ ∩≡ΦδεµσφΦσ java ΩαΩ .bat ΦδΦ .sh ⌠αΘδ Φ ±ΣσδαΘ≥σ "cd" Γ
  2628.      φσ∞(∩σ≡σΣ τα∩≤±Ωε∞, ≡ατ≤∞σσ≥± ), σ±δΦ Γ√ ≤Γσ≡σφ√ Γ ≥ε∞, ≈≥ε Γ±σ
  2629.      Γφσ°φΦσ ∩≡ε÷σ±±√, τα∩≤±Ωασ∞√σ Γα°σΘ ∩≡επ≡α∞∞εΘ ∞επ≤≥ ß√≥ⁿ τα∩≤∙σφ√ Φτ
  2630.      ²≥εΘ ΣΦ≡σΩ≥ε≡ΦΦ.
  2631.    * ╤ΣσδαΘ≥σ: exec("cd /home/wherever; externalApp.exe") Γ Unix, (²≥ε∞≤,
  2632.      Ωαµσ≥± , φσ≥ ²ΩΓΦΓαδσφ≥α φα NT).
  2633.    * ┬∞σ±≥ε τα∩≤±Ωα .exe φα∩≡ ∞≤■, τα∩≤±ΩαΘ≥σ (ΦδΦ τα∩Φ±√ΓαΘ≥σ φα δσ≥≤)
  2634.      .bat ΦδΦ .sh ⌠αΘδ, Ωε≥ε≡√Θ Σσδασ≥ cd Φ τα≥σ∞ τα∩≤±Ωασ≥ Γα° .exe (²≥ε
  2635.      ∞εµσ≥ ±ετΣα≥ⁿ ∩≡εßδσ∞≤ ± ΓετΓ≡α∙σφΦσ∞ εß≡α≥φε Γσ≡φεπε ±ε±≥ε φΦ ).
  2636.  
  2637. *(╫α±≥ⁿ 8) ╩αΩ ∞φσ ±ετΣα≥ⁿ ΓσΩ≥ε≡ ≈Φ±δα?
  2638.  
  2639. [*] ╫Φ±δα ²≥ε εß√≈φ√σ ≥Φ∩√ Φ ±δσΣεΓα≥σδⁿφε φσ ∞επ≤≥ ≤∩≡αΓδ ≥ⁿ±  ΓσΩ≥ε≡φ√∞
  2640. Ωδα±±ε∞, Ωε≥ε≡√Θ ±εΣσ≡µΦ≥ εß·σΩ≥√, Γα∞ ∩≡ΦΣσ≥±  ε≥Ωε≡≡σΩ≥Φ≡εΓα≥ⁿ ≈Φ±δα.
  2641. ╧ε∩≡εß≤Θ≥σ ²≥ε:
  2642.  
  2643. int i =7;
  2644. Vector holdsInts = new Vector(5,1);
  2645.  
  2646. holdsInts.addElement(new Integer(i));
  2647. int j = ((Integer)holdsInts.elementAt(0)).intValue();
  2648.  
  2649.  
  2650. *(╫α±≥ⁿ 8) ╙ ∞σφ  σ±≥ⁿ φσ±ΩεδⁿΩε ≡αßε≈Φ⌡ φΦ≥σΘ. ▀ ⌡ε≈≤, ≈≥εß√ ∞ε  πδαΓφα 
  2651. φΦ≥ⁿ εµΦΣαδα, ∩εΩα ε±≥αδⁿφ√σ ταΩεφ≈α≥ ≡αßε≥≤, Φ ΣσΘ±≥ΓΦσ φα≈φσ≥±  φα±≥εδⁿΩε
  2652. ±Ωε≡ε, φα±ΩεδⁿΩε εφΦ Γ±σ ταΩεφ≈α≥ ≡αßε≥≤. ▀ φσ τφα■, ΩαΩα  Φτ φΦ≥σΘ
  2653. ταΩεφ≈Φ≥ ≡αßε≥≤ ≡αφⁿ°σ ε±≥αδⁿφ√⌡, ∩ε²≥ε∞≤   φσ Φεπ≤ Γ√τΓα≥ⁿ Thread.join φα
  2654. ²≥εΘ φΦ≥Φ. ╩αΩ ∞φσ ß√≥ⁿ?
  2655.  
  2656. [*] ┬α∞ φαΣε Φ±∩εδⁿτεΓα≥ⁿ ∞σ⌡αφΦτ∞ εµΦΣαφΦσ/±εεß∙σφΦσ, ≈≥εß√ ∩ετΓεδΦ≥ⁿ
  2657. δ■ßεΘ Φτ ≡αßε≈Φ⌡ φΦ≥σΘ ≡ατß≤ΣΦ≥ⁿ Γα°≤ πδαΓφ≤■ φΦ≥ⁿ, ΩεπΣα ∩σ≡Γα  ταΩεφ≈Φ≥
  2658. ≡αßε≥≤.
  2659.  
  2660. *(╫α±≥ⁿ 8) ╩αΩ ∞φσ ∩εδ≤≈Φ≥ⁿ ±δ≤≈αΘφ√σ ≈Φ±δα?
  2661.  
  2662. [*] ┼±δΦ Γα∞ φ≤µφε ß√±≥≡ε φαΘ≥Φ φσßεδⁿ°εσ ±δ≤≈αΘφεσ ≈Φ±δε ε≥ 0.0 Φ Σε 1.0
  2663.  
  2664. double myrandom = Math.random(); // [0,1)
  2665.  
  2666.  
  2667. ╤Φ±≥σ∞α εßετφα≈σφΦ  "[0,1)" ²≥ε εß√≈φεσ ∞α≥σ∞α≥Φ≈σ±Ωεσ Γα≡αµσφΦσ Σδ  "ε≥
  2668. φ≤δ  Σε .9999999 Φ ≥.∩." ╬∩Φ±αφΦ  ε≥ Sun πεΓε≡ ≥, ≈≥ε ²≥ε ΓετΓ≡α∙ασ≥
  2669. τφα≈σφΦσ ε≥ 0 Σε 1, φε Φ±±δσΣεΓαφΦσ Φ±⌡εΣφ√⌡ ΩεΣεΓ ∩εΩατ√Γασ≥, ≈≥ε εφΦ
  2670. ε°Φßα■≥± . ╬ΣφαΩε, ±δσΣ≤σ∞√σ τα ∩≡Φ±≤∙Φ∞Φ α≡Φ⌠∞σ≥Φ≈σ±ΩεΘ ∩δαΓα■∙σΘ ≥ε≈Ωσ
  2671. φσ≥ε≈φε±≥ ∞Φ, ±δ≤≈αΘφ√Θ Γ√ßε≡ N Σε 0.999999 ∞εµσ≥ ∩≡ΦΓσ±≥Φ Ω ε°ΦßΩσ.
  2672.  
  2673. ┬ JDK 1.2 Γ⌡εΣΦ≥ Σ≡≤πα  Γσ≡±Φ  nextInt, Ωε≥ε≡α  ∩ετΓεδΦ≥ ßεδσσ ≥ε≈φε Φ
  2674. ßστε°Φßε≈φε ΓετΓ≡α∙α≥ⁿ ±δ≤≈αΘφ√σ ≈Φ±δα, ταΣαφφεπε Φφ≥σ≡Γαδα.
  2675.  
  2676. ╤≤∙σ±≥Γ≤σ≥ φσßεδⁿ°α  ⌡Φ≥≡ε±≥ⁿ σ±δΦ Γ√ Φ±∩εδⁿτ≤σ≥σ JDK 1.1, Φ Γα∞ φαΣε
  2677. ∩εδ≤≈Φ≥ⁿ int Γ ε∩≡σΣσδσφφε∞ Φφ≥σ≡Γαδσ. ─ε∩≤±≥Φ∞, Γ Φφ≥σ≡Γαδσ ε≥ 1 Σε 6,
  2678. ≈≥εß√ ±²∞≤δΦ≡εΓα≥ⁿ ß≡ε±εΩ Ωε±≥σΘ ΦδΦ ε≥ 1 Σε 52 ≈≥εß√ ∩≡σΣ±≥αΓΦ≥ⁿ Φπ≡αδⁿφ√σ
  2679. Ωα≡≥√. ╩δα±± Random Φ∞σσ≥ ∞σ≥εΣ nextInt, Ωε≥ε≡√Θ Γετ≡α≥Φ≥ δ■ßεσ ≈Φ±δε.
  2680.  
  2681. import java.util.Random;
  2682. Random r = new Random();
  2683. int i = r.nextInt();
  2684.  
  2685.  
  2686. ╬ΣφαΩε, σ±≥ⁿ ∩ε≈≥Φ 50% φα ≥ε, ≈≥ε ²≥ε ≈Φ±δε εΩαµσ≥±  φσ Φτ ∩≡αΓΦδⁿφεπε
  2687. Φφ≥σ≡Γαδα. ╥αΩ, Γ√ ∩≡ε±≥ε ∩εδ≤≈Φ≥σ τφα≈σφΦσ abs() Φ τα≥σ∞ ≡ατΣσδΦ≥σ σπε φα
  2688. Γσ≡⌡φ■■ π≡αφΦ÷≤ Φφ≥σ≡Γαδα.
  2689.  
  2690. int dice_throw = 1 + Math.abs(i) % 6;
  2691.  
  2692.  
  2693. ╚±Ωδ■≈σφΦσ∞  Γδ σ≥±  ≥ε, ≈≥ε ∞σ≥εΣ abs() π≡≤ßε ε°Φßασ≥±  Γ ∩≡Φ±≤≥±≥ΓΦΦ
  2694. Integer.MIN_VALUE (²≥ε ≥εµσ Γετ≡α∙ασ≥ ε≥≡Φ÷α≥σδⁿφ√Θ ≡στ≤δⁿ≥α≥!). ╧ε²≥ε∞≤,
  2695. δ≤≈°σ Γ√∩εδφΦ≥ⁿ δεπΦ≈σ±Ωεσ ≤∞φεµσφΦσ(and) Σδ  Σε±≥ΦµσφΦ  Γσ≡φ√⌡ τφα≈σφΦΘ -
  2696. ∩≡Φ ∩εδ≤≈σφΦΦ ≈Φ±δα ∞σµΣ≤ ε∩≡σΣσδσφφ√∞Φ Γ√±°Φ∞ Φ φΦτ°Φ∞ τφα≈σφΦ ∞Φ
  2697. Φφ≥σ≡Γαδα (ΓΩδ■≈Φ≥σδⁿφε):
  2698.  
  2699. java.util.Random r = new java.util.Random();
  2700. int j = (r.nextInt() & Integer.MAX_VALUE) % (high-low+1) + low;
  2701.  
  2702.  
  2703. ▌≥ε ≡σ°σφΦσ ±≡αßε≥ασ≥ Ωε≡≡σΩ≥φε "(∩ε≈≥Φ) Γ 50% ±δ≤≈ασΓ" ∩ε≥ε∞≤ ≈≥ε
  2704. ±≤∙σ±≥Γ≤σ≥ φα εΣφε τφα≈σφΦσ ßεδⁿ°σ Γ ε≥≡Φ÷α≥σδⁿφ√⌡ ≈Φ±δα⌡, ≈σ∞ Γ
  2705. ∩εδεµΦ≥σδⁿφ√⌡ Γ α≡Φ⌠∞σ≥Φ≈σ±ΩΦ⌡ Ωε∞δσΩ≥α⌡, ΩαΩΦσ Φ±∩εδⁿτ≤σ≥ Java. ─δ 
  2706. ßεδⁿ°Φφ±≥Γα ÷σδσΘ, ²≥ε ∩≡σΣ≤ßσµΣσφΦσ ß≤Σσ≥ φστφα≈Φ≥σδⁿφ√∞, α ∞√ "Φ"
  2707. nextInt() ±ΓεΣΦ∞ Φ⌡ Ω φ≤δ■. ╩εφσ≈φε, ²≥ε ∞αδεΓσ≡ε ≥φε, ≈≥ε Γα∞ Γ±≥≡σ≥Φ≥± 
  2708. ²≥α ε°ΦßΩα, φε Γ√ µσ φσ ⌡ε≥Φ≥σ Φ∞σ≥ⁿ Ω≡Φ≥Φ≈σ±Ω≤■ ±Φ≥≤α÷Φ■, ≥εδⁿΩε Φτ-τα
  2709. ≥επε, ≈≥ε ≤∩≤±≥ΦδΦ ²≥ε≥ ±δ≤≈αΘ ∩≡Φ ≥σ±≥Φ≡εΓαφΦΦ ±Γεσπε ∩≡ΦδεµσφΦ .
  2710.  
  2711. Hσ∩≡Φ ≥φα  ∩≡εßδσ∞α ²≥ε ≥ε, ≈≥ε ± ≥αΩΦ∞ αδπε≡Φ≥∞ε∞, ∞δαΣ°Φσ ßΦ≥√ ∩ε∩αΣα■≥± 
  2712. ≡σµσ, ≈σ∞ ±≥α≡°Φσ, ∩≡Φ ±δ≤≈αΘφε∞ Γ√ßε≡σ. ╧≡Φ≈Φφα Γ ≥ε∞, ≈≥ε ∩≡Φ ε∩σ≡α÷ΦΦ
  2713. ΣσδσφΦ  (mod 2^n) ∞δαΣ°Φσ ßΦ≥√ "∩≡ε∩αΣα■≥" ≈α∙σ, ≈σ∞ ±≥α≡°Φσ. ╠εµφε
  2714. ∩≡σΣ∩εδεµΦ≥ⁿ, ≈≥ε Φ±∩εδⁿτ≤  java.security.SecureRandom, ∩εδ≤≈Φ≥±  ßεδσσ
  2715. ßεδⁿ°α  ≡ατß≡ε±αφφε±≥ⁿ ±δ≤≈αΘφ√⌡ ≈Φ±σδ, ≥αΩ ΩαΩ ²≥ε Φ±∩εδⁿτ≤σ≥
  2716. "╩≡Φ∩≥επ≡α⌠Φ≈σ±Ω≤■ ≡ατß≡ε±αφφε±≥ⁿ" (Cryptograpic hash), φε ²≥ε ≥αΩµσ
  2717. ∩ε≥≡σß≤σ≥ ßεδσσ εß·σ∞φ√⌡ Γ√≈Φ±δσφΦΘ ε≥ Ωε∞∩ⁿ■≥σ≡α.
  2718.  
  2719. *(╫α±≥ⁿ 9) ╩αΩΦσ Φτ∞σφσφΦ  ∩≡εΦτε°δΦ ± java.util.Date ∩≡Φ ∩σ≡σ⌡εΣσ ε≥ JDK
  2720. 1.0 Ω JDK 1.1?
  2721.  
  2722. [*] ┬ JDK 1.1 Ωδα±± java.util.Date ß√δ ≡ατΣσδσφ Σδ  ≥επε, ≈≥εß√
  2723. εßσ±∩σ≈ΦΓα≥ⁿ δ≤≈°≤■ ∩εΣΣσ≡µΩ≤ Γ≡σ∞σφφ√⌡ τεφ Φ Φφ≥σ≡φα÷Φεφαδⁿφ√⌡ ±ΓεΘ±≥Γ.
  2724.  
  2725. ╩δα±±√, ε≥φε± ∙Φσ±  Ω Σα≥α∞, Γ√∩Φ±αφ√ φΦµσ:
  2726.  
  2727.        1. ╩δα±± Date ∩≡σΣ±≥αΓδ σ≥ ε∩≡σΣσδσφφ√Θ ∞ε∞σφ≥ Γ≡σ∞σφΦ, ±
  2728.           ≥ε≈φε±≥ⁿ■ Σε ∞ΦδδΦ±σΩ≤φΣ√.
  2729.        2. ╩δα±± TimeZone ²≥ε αß±≥≡αΩ≥φ√Θ Ωδα±±, Ωε≥ε≡√Θ ∩≡σΣ±≥αΓδ σ≥
  2730.           ±∞σ∙σφΦσ ≈α±εΓεπε ∩ε ±α, α ≥αΩµσ Γ√≈Φ±δ σ≥ ∩ε∩≡αΓΩ≤ ∩≡Φ
  2731.           ∩σ≡σ⌡εΣσ φα δσ≥φσσ Γ≡σ∞ .
  2732.        3. ╩δα±± SimpleTimeZone ²≥ε σΣΦφ±≥Γσφφ√Θ φσ∩ε±≡σΣ±≥Γσφφ√Θ
  2733.           ∩εΣΩδα±± Ωδα±±α TimeZone Γ JDK.  ┬±σ ≈≥ε εφ ε∩≡σΣσδ σ≥, ²≥ε
  2734.           εß√≈φ√Θ ≈α±εΓεΘ ∩ε ± ± ∩≡ε±≥√∞ ∩σ≡σ⌡εΣε∞ φα δσ≥φσσ Γ≡σ∞  Φ
  2735.           ∩σ≡ΦεΣε∞ (²≥επε ∩σ≡σ⌡εΣα).
  2736.        4. ╩δα±± Calendar ²≥ε αß±≥≡αΩ≥φ√Θ Ωδα±± Σδ  ΩεφΓσ≡≥Φ≡εΓαφΦ 
  2737.           εß·σΩ≥α Date Γ φαßε≡ ÷σδ√⌡ ≈Φ±σδ, ≥αΩΦ⌡ ΩαΩ πεΣ, ∞σ± ÷, Σσφⁿ
  2738.           Φ ≈α± (Φ εß≡α≥φε).
  2739.        5. ╩δα±± GregorianCalendar ²≥ε σΣΦφ±≥Γσφφ√Θ φσ∩ε±≡σΣ±≥Γσφφ√Θ
  2740.           ∩εΣΩδα±± Ωδα±±α Calendar Γ JDK. ╬φ ∩≡εΦτΓεΣΦ≥ ∩≡σεß≡ατεΓαφΦ 
  2741.           Φτ Ωδα±±α Σα≥√ Γ ÷σδ√σ ≈Φ±δα (Date-to-fields) Σδ 
  2742.           εß∙σ≤∩ε≥≡σßΦ≥σδⁿφεΘ ΩαδσφΣα≡φεΘ ±Φ±≥σ∞√.
  2743.        6. ╩δα±± DateFormat ²≥ε αß±≥≡αΩ≥φ√Θ Ωδα±±, Ωε≥ε≡√Θ ∩ετΓεδ σ≥
  2744.           ┬α∞ ΩεφΓσ≡≥Φ≡εΓα≥ⁿ Ωδα±± Date Γ ∩σ≈α≥ασ∞≤■ ±≥≡εΩ≤ ± ∩εδ ∞Φ
  2745.           ταΣαφφεπε ΓΦΣα (φα∩≡Φ∞σ≡ dd/mm/yy ΦδΦ dd.MMM.yyyy).
  2746.        7. ╩δα±± SimpleDateFormat ²≥ε σΣΦφ±≥Γσφφ√Θ φσ∩ε±≡σΣ±≥Γσφφ√Θ
  2747.           ∩εΣΩδα±± Ωδα±±α DateFormat Γ JDK. ╬φ ßσ≡σ≥ ±≥≡εΩ≤ ⌠ε≡∞α≥α Φ
  2748.           δΦßε ≡ατßΦ≡ασ≥ ±≥≡εΩ≤, ≈≥εß√ ∩εδ≤≈Φ≥ⁿ Σα≥≤, δΦßε ßσ≡σ≥ Σα≥≤
  2749.           Φ ∩εδ≤≈ασ≥ ±≥≡εΩ≤.
  2750.  
  2751. ╧ε Ω≡αΘφσΘ ∞σ≡σ εΣΦφ Ω≡Φ≥ΦΩ ≤∩ε≥≡σßΦδ ≥σ≡∞Φφ "∩≡Φ≈≤ΣδΦΓα ", ΩεπΣα ε∩Φ±√Γαδ
  2752. ±δεµφε±≥ⁿ ±Γ ταφφ√⌡ Ωδα±±εΓ Σα≥√ Γ Java, ⌡ε≥  ε±≥αδⁿφ√σ ±ΩαταδΦ ß√
  2753. "δε∞αφα ". ╒ε≡ε°σΘ φεΓε±≥ⁿ■  Γδ σ≥±  ≥ε, ≈≥ε Γ JDK 1.2 Γ±σ εß∙Φσ ∩≡εßδσ∞√
  2754. ß√δΦ ≡σ°σφ√, Φ ∞φεµσ±≥Γε ε°ΦßεΩ ß√δε Φ±∩≡αΓδσφε Γ 1.1.4 Φ 1.1.6. ─αµσ Γ
  2755. 1.1.1 ┬√ ∞εµσ≥σ Φτßσµα≥ⁿ ßεδⁿ°Φφ±≥Γα φαΦßεδσσ ≡α±∩ε±≥≡αφσφφ√⌡ ε°ΦßεΩ,
  2756. Γ±σπΣα Φ∞σ  Γ ΓΦΣ≤, ΩαΩ≤■ Γ≡σ∞σφφ≤■ τεφ≤ Φ±∩εδⁿτ≤σ≥ ΩαµΣ√Θ Ωδα±±.
  2757.  
  2758. *(╫α±≥ⁿ 9) ╫≥ε µσ Γ ≥ε≈φε±≥Φ ∩≡σΣ±≥αΓδ σ≥ Φτ ±σß  java.util.Date?
  2759.  
  2760. [*] ╩δα±± java.util.Date ⌡≡αφΦ≥ ∞ε∞σφ≥ Γ≡σ∞σφΦ, ΩαΩ ΣδΦφφεσ ÷σδεσ (long
  2761. integer), Ωε≥ε≡εσ ∩≡σΣ±≥αΓδ σ≥ Φτ ±σß  ≈Φ±δε ∞ΦδδΦ±σΩ≤φΣ, ∩≡ε°σΣ°Φ⌡
  2762. ± 00:00:00 Jan 1, 1970 UTC (Coordinated Universal Time). ▌≥ε≥ ∞ε∞σφ≥
  2763. ε≥±≈σ≥α ΦτΓσ±≥σφ ΩαΩ "Epoch" ("▌∩ε⌡α"). ▌≥ε ≥ε≥ µσ ∞ε∞σφ≥ ε≥±≈σ≥α (Epoch),
  2764. Ωε≥ε≡√Θ Φ±∩εδⁿτ≤σ≥±  Γ ±Φ±≥σ∞α⌡ UNIX. ┴εδσσ ≡αφφΦσ Σα≥√, ≈σ∞ Epoch,
  2765. ∩≡σΣ±≥αΓδσφ√ Γ ΓΦΣσ ε≥Φ÷α≥σδⁿφ√⌡ ≈Φ±σδ, ε≥±≈Φ≥√Γασ∞√⌡ ε≥ 1/1/1970.
  2766.  
  2767. ▌≥εΘ ±⌡σ∞√ Σε±≥α≥ε≈φε, ≈≥εß√ ∩≡σΣ±≥αΓδ ≥ⁿ Σα≥√ ε≥ 292,269,053 B.C. (Σε
  2768. φα°σΘ ²≡√) Σε 292,272,993 A.D. (φα°σΘ ²≡√) (64 ßΦ≥α ∩εΩ≡√Γα■≥ ΣΦα∩ατεφ ε≥
  2769. -9,223,372,036,854,775,808 Σε +9,223,372,036,854,775,807 ∞ΦδδΦ±σΩ≤φΣ).
  2770. ╟α∞σ≥ⁿ≥σ, ≈≥ε Γσ≡±ΦΦ, ∩≡σΣ°σ±≥Γ≤■∙Φσ JDK 1.2, GregorianCalendar φσ ∞επ≤≥
  2771. ∩≡ΦφΦ∞α≥ⁿ τφα≈σφΦ  ≡αφⁿ°σ, ≈σ∞ 4716 B.C.
  2772.  
  2773. ╩δα±± java.util.Date ²≥ε δσπΩεΓσ±φα  (light-weight) Ωεφ±≥≡≤Ω÷Φ ,
  2774. ∩≡σΣφατφα≈σφφα  ≥εδⁿΩε Σδ  ⌡≡αφσφΦ  τφα≈σφΦ  ∞ΦδδΦ±σΩ≤φΣ. ╬φ Φ±∩εδⁿτ≤σ≥± 
  2775. Σδ  ⌡≡αφσφΦ  Φ ∩σ≡σΣα≈Φ ∞ε∞σφ≥α Γ≡σ∞σφΦ. ─≡≤πΦσ ταΣα≈Φ, ≥αΩΦσ ΩαΩ ±ετΣαφΦσ
  2776. ⌠ε≡∞α≥Φ≡εΓαφφεΘ ±≥≡εΩΦ, Γ√≈Φ±δσφΦσ Σα≥, ≡σαδΦτεΓαφ√ Γ Σ≡≤πΦ⌡ Ωδα±±α⌡.
  2777.  
  2778. *(╫α±≥ⁿ 9) ╧≡σΣ±≥αΓδ σ≥ δΦ Ωδα±± java.util.Date Γσ≡φεσ τφα≈σφΦσ UTC?
  2779.  
  2780. [*] Hσ≥, φε σπε ±Γσ≡°σφφε Σε±≥α≥ε≈φε Σδ  ßεδⁿ°Φφ±≥Γα ∩εδⁿτεΓα≥σδⁿ±ΩΦ⌡
  2781. ταΣα≈, ≡αßε≥■∙Φ⌡ ± Γ≡σ∞σφσ∞ (time-keeping). Hα ßεδⁿ°Φφ±≥Γσ Ωε∞∩ⁿ■≥σ≡εΓ εφ
  2782. ∩≡σΣ±≥αΓδ σ≥ ≥εδⁿΩε Γ≡σ∞  ± ∞ε∞σφ≥α epoch ΩαΩ ≈Φ±δε, ∩εδ≤≈σφφεσ Φτ τφα≈σφΦ 
  2783. Σα≥√, ±εΣσ≡µα∙σΘ±  Γ α∩∩α≡α≥φε∞ εßσ±∩σ≈σφΦΦ. ┼±δΦ Γα°σ α∩∩α≡α≥φεσ
  2784. εßσ±∩σ≈σφΦσ ±Φφ⌡≡εφΦτΦ≡εΓαφε ± α≥ε∞φ√∞Φ ≈α±α∞Φ, ≥ε Γα°σ Γ≡σ∞  ∩≡σΣ±≥αΓδσφε
  2785. Γ UTC; ßεδⁿ°Φφ±≥Γε α∩∩α≡α≥φεπε εßσ±∩σ≈σφΦ  ∩εΣ≡ατ≤∞σΓασ≥, ≈≥ε Σσφⁿ ΣδΦ≥± 
  2786. 24 ≈α±α, φε σ±≥ⁿ σ∙σ 20 ±σΩ≤φΣ (leap seconds), Ωε≥ε≡√σ φ≤µφε ΣεßαΓδ ≥ⁿ Ω
  2787. UTC, ± ≥σ⌡ ∩ε≡ ΩαΩ εΣφαµΣ√ ²≥ε ß√δε ±Σσδαφε Γ 1972 πεΣ≤.
  2788.  
  2789. *(╫α±≥ⁿ 9) ╩αΩ   ∞επ≤ ±ετΣα≥ⁿ εß·σΩ≥ Date, Ωε≥ε≡√Θ ∩≡σΣ±≥αΓδ σ≥ Φτ ±σß 
  2790. ≥σΩ≤∙σσ Γ≡σ∞ ?
  2791.  
  2792. [*] ╟φα≈σφΦσ ∩ε ≤∞εδ≈αφΦ■ εß·σΩ≥α Date ²≥ε ≥σΩ≤∙σσ Γ≡σ∞ . ╥αΩΦ∞ εß≡ατε∞
  2793. ±δσΣ≤■∙ΦΘ ΩεΣ ±ετΣασ≥ εß·σΩ≥ Σα≥√, Ωε≥ε≡√Θ ±εΣσ≡µΦ≥ ≥σΩ≤∙σσ Γ≡σ∞ .
  2794.  
  2795. Date now = new Date();
  2796.  
  2797. *(╫α±≥ⁿ 9) ▀ ⌡ε≈≤ ±ετΣα≥ⁿ ±≥≡εΩ≤, Ωε≥ε≡α  ∩≡σΣ±≥αΓδ σ≥ Φτ ±σß  Σα≥≤, Γ
  2798. ⌠ε≡∞α≥σ ε≥δΦ≈φε∞ ε≥ ≥επε, Ωε≥ε≡√Θ ΓετΓ≡α∙ασ≥ ∞σ≥εΣ
  2799. java.util.Date.toString(). ─εδµσφ δΦ   Φ±∩εδⁿτεΓα≥ⁿ ╩αδσφΣα≡ⁿ (Calendar)?
  2800.  
  2801. [*] Hσ≥. ┬∞σ±≥ε ≥επε, ≈≥εß√ ±ετΣαΓα≥ⁿ ╩αδσφΣα≡ⁿ, Γ√≥ πΦΓα≥ⁿ Φτ φσπε Γ±σ
  2802. φσεß⌡εΣΦ∞√σ ∩εδ  Φ ±ετΣαΓα≥ⁿ ±≥≡εΩ≤, ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ Σδ  σσ ±ετΣαφΦ 
  2803. SimpleDateFormat.format().
  2804.  
  2805. *(╫α±≥ⁿ 9) ╧ε≈σ∞≤ Γ±σ ∞σ≥εΣ√ Γ java.util.Date ε≥Ωατ√Γα■≥±  ≡αßε≥α≥ⁿ?
  2806.  
  2807. [*] ┬σ≡ε ≥φσσ Γ±σπε ∩ε≥ε∞≤, ≈≥ε Φ±⌡εΣφ√Θ java.util.Date φσ ß√δ ΩαΩ ∩εδεµσφε
  2808. ΦτΓσ∙σφ ε Γ≡σ∞σφφεΘ τεφσ Φ "φσ ß√δ ε≥Γσ≥±≥Γσφσφ τα Φφ≥σ≡φα÷ΦεφαδΦτα÷Φ■".
  2809. ╫≥εß√ φα≤≈Φ≥ⁿ ²≥εΘ Γ≡σ∞σφφεΘ τεφσ Φ Φφ≥σ≡φα÷ΦεφαδΦτΦ≡εΓα≥ⁿ ∩ε≥≡σß≤σ≥± 
  2810. ΣεßαΓδσφΦσ φσΩε≥ε≡εΘ ⌠≤φΩ÷Φεφαδⁿφε±≥Φ, Ωε≥ε≡≤■ ∞εµφε ≤ΓΦΣσ≥ⁿ Γ
  2811. java.util.Calendar Φ φσΩε≥ε≡εΘ ⌠≤φΩ÷Φεφαδⁿφε±≥Φ Φτ java.util.DateFormat.
  2812. ┼±δΦ ┬√ φα⌡εΣΦ≥σ Ωε∞ßΦφα÷Φ■ Γ±σ⌡ ≡εΣ±≥Γσφφ√⌡ Ωδα±±εΓ Σα≥√ ±δεµφεΘ, ≥ε
  2813. ε±≥ασ≥±  ≡αΣεΓα≥ⁿ±  ≈≥ε εφΦ ß√δΦ ≡ατΣσδσφ√ φα ≡ατφ√σ Ωδα±±√.
  2814.  
  2815. *(╫α±≥ⁿ 9) ╠φσ ±εΓσ≡°σφφε φσ φ≤µφ√ Φφ≥σ≡φα÷ΦεφαδΦτα÷Φ , Φφ⌠ε≡∞α÷Φ  ε
  2816. Γ≡σ∞σφφεΘ τεφσ, ±Γσ⌡πΦßΩΦΘ φαßε≡ Ωδα±±εΓ ⌠ε≡∞α≥Φ≡εΓαφΦ  Σα≥√, σ±≥ⁿ
  2817. ≈≥ε-φΦß≤Σⁿ σ∙σ, ≈≥ε ∩ετΓεδΦδε ß√ ∞φσ ⌡≡αφΦ≥ⁿ Σα≥√ Φ ∩ετΓεδ δε ß√
  2818. ∩≡εΦτΓεΣΦ≥ⁿ φσΩε≥ε≡√σ Γ√≈Φ±δσφΦ  ± φΦ∞Φ?
  2819.  
  2820. [*] ┬√ ∞εµσ≥σ ≡α±±∞ε≥≡σ≥ⁿ Φ±εδⁿτεΓαφΦσ Ωδα±±α BigDate, φα∩Φ±αφφεπε ╨εΣΦ
  2821. ├≡Φφε∞ (Roedy Green), Φ Σε±≥≤∩φεπε Γ σπε Γσ±ⁿ∞α Φφ⌠ε≡∞α≥ΦΓφε∞ πεδε±±α≡ΦΦ
  2822. (Φ∙Φ≥σ BigDate). ┼±δΦ ┬√ φα∞σ≡σφ√ ±ε⌡≡αφ ≥ⁿ ≡στ≤δⁿ≥α≥ Γ ßατσ Σαφφ√⌡ ΩαΩ
  2823. εß·σΩ≥√ Date ΦδΦ TimeStamp. ≥ε ┬α∞ ≡σΩε∞σφΣ≤σ≥±  ∩≡ε≈Φ≥α≥ⁿ ±δσΣ≤■∙≤■ φΦµσ
  2824. ╫α±≥ⁿ ε Ωδα±±σ java.sql.Date.
  2825.  
  2826. *(╫α±≥ⁿ 9) ┼±δΦ Ωεφ±≥≡≤Ω≥ε≡ Date( String ) Φ±Ωδ■≈ασ≥±  Φτ Ωδα±±α, ≥ε ≈≥ε  
  2827. Σεδµσφ Φ±∩εδⁿτεΓα≥ⁿ Γ∞σ±≥ε φσπε?
  2828.  
  2829. [*] ─δ  ±ετΣαφΦ  εß·σΩ≥α java.util.Date δ≤≈°σ Γ±σπε Φ±∩εδⁿτεΓα≥ⁿ
  2830. SimpleDateFormat.parse().
  2831.  
  2832. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α Date, Ωε≥ε≡√Θ ∩≡ΦφΦ∞ασ≥ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±≥≡εΩ≤,
  2833. φατ√Γασ≥±  Date.parse( String). ╠σ≥εΣ Date.parse() Φ∞σσ≥ ±ΓεΦ ±εß±≥Γσφφ√σ
  2834. ∩≡αΓΦδα Σδ  ∩σ≡σΓεΣα 2-⌡ ÷Φ⌠≡εΓεπε πεΣα (ΩαΩ ≥ε≈Ω≤ ε≥±≈σ≥α Φ±∩εδⁿτ≤σ≥ 1980
  2835. πεΣ) Φ Σ≡≤πΦσ επ≡αφΦ≈σφΦ , Ωε≥ε≡√σ Σσδα■≥ σπε ∞αδε τφα≈Φ∞√∞. ─≡≤πΦσ
  2836. "≥εφΩε±≥Φ" Date.parse(), Ωε≥ε≡√σ φσ ∩εΣΣσ≡µΦΓα■≥±  Γ SimpleDate φσ
  2837. ≤±Ωεδⁿτφ≤δΦ ε≥ Γτπδ Σα ∞φεπΦ⌡ ≡ατ≡αßε≥≈ΦΩεΓ.
  2838.  
  2839. *(╫α±≥ⁿ 9) ╩εφ±≥≡≤Ω≥ε≡ Date(int year, int month, int date) Φ αφαδεπΦ≈φ√σ
  2840. Ωεφ±≥≡≤Ω≥ε≡√ ≤ßΦ≡α■≥±  Φτ Ωδα±±α, ≈≥ε Φ±∩εδⁿτεΓα≥ⁿ Γ∞σ±≥ε φΦ⌡?
  2841.  
  2842. [*] ╩εφ±≥≡≤Ω≥ε≡ GregorianCalendar(int year, int month, int date) - Γε≥ σπε
  2843. φεΓα  τα∞σφα. ╥αΩµσ πεΣΦ≥±  ∞σ≥εΣ Calendar.set( year, month, day ).
  2844. ╟α∞σ≥ⁿ≥σ, ≈≥ε πεΣ Γ GregorianCalendar φα≈Φφασ≥±  ± 1 A.D., α φσ ± 1901, ΩαΩ
  2845. Γ ±≥α≡ε∞ Ωεφ±≥≡≤Ω≥ε≡σ Ωδα±±α Date.
  2846.  
  2847.  
  2848.                              java.util.TimeZone
  2849.  
  2850. *(╫α±≥ⁿ 9) ╩αΩ   ∞επ≤ ∩≡εΓσ≡Φ≥ⁿ, ∩≡αΓΦδⁿφ≤■ δΦ Γ≡σ∞σφφ≤■ τεφ≤ Φ±∩εδⁿτ≤σ≥
  2851. ∞ε  JVM?
  2852.  
  2853. [*] ╤δσΣ≤■∙ΦΘ ΩεΣ Γ√ΓεΣΦ≥ φα ²Ω≡αφ ID ≥σΩ≤∙σΘ Γ≡σ∞σφφεΘ τεφ√ ∩ε ≤∞εδ≈αφΦ■.
  2854.  
  2855.   System.out.println( TimeZone.getDefault().getID() );
  2856.  
  2857. *(╫α±≥ⁿ 9) ╟φα≈σφΦσ TimeZone.getDefault φσ ≥αΩεσ, ΩαΩ   εµΦΣαδ(α). ┬ ≈σ∞
  2858. ∩≡εßδσ∞α?
  2859.  
  2860. [*] ╟φα≈σφΦσ Γ≡σ∞σφφεΘ τεφ√ ∩ε ≤∞εδ≈αφΦ■ ßατΦ≡≤σ≥±  φα τφα≈σφΦΦ ±Φ±≥σ∞φεπε
  2861. ±ΓεΘ±≥Γα "user.timezone". JVM ∩≡σΣ∩εδαπασ≥ ≤±≥αφεΓΦ≥ⁿ ²≥ε τφα≈σφΦσ. ┬ ≥αΩΦ⌡
  2862. ≡σδΦτα⌡, ΩαΩ JDK 1.1 τφα≈σφΦσ user.timezone ≈α±≥ε ß√Γασ≥ φσ ≤±≥αφεΓδσφε, Φ
  2863. ≥αΩΦ∞ εß≡ατε∞ TimeZone.getDefault() Φ±∩εδⁿτ≤σ≥ ±Γεσ ±εß±≥Γσφφεσ Γ±≥≡εσφφεσ
  2864. "φσΦ≥≡αδΦτΦ≡≤■∙σσ" ("fallback") τφα≈σφΦσ (∩ε ≤∞εδ±αφΦ■ ΩεπΣα φσ≥ τφα≈σφΦ 
  2865. ∩ε ≤∞εδ≈αφΦ■). ┬ ΣαδⁿφσΘ°Φ⌡ JDK 1.1 ≡σδΦτα⌡ Φ Γ JDK 1.2 ≤±≥αφεΓΩα τφα≈σφΦ 
  2866. user.timezone πε≡ατΣε δ≤≈°σ Φ τφα≈σφΦσ "fallback" ≥σ∩σ≡ⁿ GMT (Greenwich
  2867. Mean Time). ┬∩δε≥ⁿ Σε JDK 1.1.3, τφα≈σφΦσ "fallback" ß√δε "PST" (North
  2868. American Pacific Timezone).
  2869.  
  2870. *(╫α±≥ⁿ 9) ╚±∩εδⁿτ≤■≥ δΦ Γ±σ ±≥αφΣα≡≥φ√σ εß·σΩ≥√ εΣφε Φ ≥ε µσ Do all the
  2871. standard objects use the τφα≈σφΦσ Γ≡σ∞σφφεΘ τεφ√ ∩ε ≤∞εδ≈αφΦ■?
  2872.  
  2873. [*] Hσ≥, Σε JDK 1.2. ┬ JDK 1.1, Date.toString() Φ Calendar Φ±∩εδⁿτ≤■≥
  2874. τφα≈σφΦσ TimeZone.getDefault() Ωε≥ε≡εσ ≈α±≥ε ∞εµσ≥ ß√≥ⁿ φσε∩≡σΣσδσφφ√∞
  2875. (±∞ε≥≡Φ≥σ ∩≡σΣ√Σ≤∙ΦΘ Γε∩≡ε±). ┬ JDK 1.1, Calendar Γ SimpleDateFormat ß√δ
  2876. ≤±≥αφεΓδσφ Γ 1-■ Γ≡σ∞σφφ≤■ τεφ≤ (Σδ  US ²≥ε PST).
  2877.  
  2878. System.out.println( "Date format TZ = " + TimeZone.getDefault().getID() );
  2879. sdf = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG );
  2880. System.out.println( "Date format TZ = " + sdf.getTimeZone().getID() );
  2881. Calendar cal = Calendar.getInstance();
  2882. System.out.println( "Calendar TZ = " + cal.getTimeZone().getID() );
  2883.  
  2884. ╩επΣα τα∩≤±Ωασ≥±  Γ ±Φ±≥σ∞σ JDK 1.1.6, H┼ Γ ╤σΓσ≡εα∞σ≡ΦΩαφ±Ωε∞
  2885. ╥Φ⌡εεΩσαφ±Ωε∞ Γ≡σ∞σφΦ Φ φσ Γε Γ≡σ∞σφφεΘ τεσ GMT, ≥ε ≡στ≤δⁿ≥α≥ ß≤Σσ≥ :
  2886.  
  2887. Timezone default = GMT
  2888. Date format TZ = PST
  2889. Calendar TZ = GMT
  2890.  
  2891. ▌≥ε≥ ∩≡Φ∞σ≡ ∩εΩατ√Γασ≥ 2 ε°ΦßΩΦ (bugs) τφα≈σφΦσ user.timezone φσ
  2892. ε∩≡σΣσδσφε, Φ εφε ≤±≥αφεΓδσφε Γ GMT (±∞ε≥≡Φ≥σ εß±≤µΣσφΦσ
  2893. TimeZone.getDefault()) α ≥αΩ µσ ∩εΩαταφε, ≈≥ε DateFormat ταΓΦ±Φ≥ ε≥ 1-πε
  2894. τφα≈σφΦ , Ωε≥ε≡√∞  Γδ σ≥±  Γ Σαφφε∞ ±δ≤≈ασ PST.
  2895.  
  2896. ┼±δΦ ┬√ φσ ⌡ε≥Φ≥σ Φ±∩εδⁿτεΓα≥ⁿ DateFormat Γ Ωα≈σ±≥Γσ ╠σ±≥φεΘ Γ≡σ∞σφφεΘ τεφ√,
  2897. ±∞ε≥≡Φ≥σ ΩεΣ ∩≡σΣ±≥αΓδσφφ√Θ φΦµσ.
  2898.  
  2899. *(╤σΩ÷Φ  15) ╧ε≈σ∞≤ < Windows RMI/∞εΘ java debugger/IDE/Σ≡≤πεσ> ταΓΦ±ασ≥
  2900. φα φσ±ΩεδⁿΩε ∞Φφ≤≥ σ±δΦ ∞εΘ Windows PC φσ ∩εΣΩδ■≈σφ Ω ╚φ≥σ≡φσ≥≤?
  2901.  
  2902. [*] Java Φ∞σσ≥ Γ±≥≡εσφ≤■ ±σ≥σΓ≤■ ∩εΣΣσ≡µΩ≤. ╩επΣα Java ∩≡επ≡α∞∞α ±≥α≡≥≤σ≥,
  2903. αΓ≥ε∞α≥Φ≈σ±ΩΦ ταπ≡≤µασ≥±  Winsock DLL. ╧σ≡Γεσ, ≈≥ε εφα ∩√≥ασ≥±  Γ√∩εδφΦ≥ⁿ,
  2904. ²≥ε ε∩≡σΣσδΦ≥ⁿ (resolve) ∩εδφε±≥ⁿ■ ΩΓαδΦ⌠Φ÷Φ≡εΓαφφεσ Φ∞  Σε∞σφα Σδ  ∞α°Φφ√
  2905. "localhost". ┼±δΦ Γ ┬α°σΘ ±Φ±≥σ∞σ φσ ε∩Φ±αφε ²≥ε Φ∞ , εφα ß≤Σσ≥ ∩√≥α≥ⁿ± 
  2906. τα∩≡ε±Φ≥ⁿ σπε ≤ ±σ≡Γσ≡α Φ∞σφ ╚φ≥σ≡φσ≥α, Ωε≥ε≡√Θ εß√≈φε φα⌡εΣΦ≥±  ≤ ┬α°σπε
  2907. ∩≡εΓαΘΣσ≡α ╚φ≥σ≡φσ≥ (ISP). ╧ε²≥ε∞≤ ±Φ±≥σ∞α δΦßε τα∩≡ε±Φ≥ ┬α± ∩εΣΩδ■≈Φ≥ⁿ±  Ω
  2908. ∩≡εΓαΘΣσ≡≤ ╚φ≥σ≡φσ≥, δΦßε ß≤Σσ≥ µΣα≥ⁿ ∩εΩα φσ Φ±≥σ≈σ≥ Γ≡σ∞  ∩ε∩√≥ΩΦ.
  2909.  
  2910. ┼±≥ⁿ ∞φσφΦσ, ≈≥ε ∞εµφε Φτßσµα≥ⁿ ²≥εΘ ∩≡εßδσ∞√ Γ Win95 ΣαΓ ε∩≡σΣσδΦΓ Γ
  2911. ±Φ±≥σ∞σ Σ≡≤πεΘ ±∩ε±εß ε∩≡σΣσδ ≥ⁿ DNS Φ∞σφα. ╙ ∞σφ  ²≥ε φσ ≡αßε≥ασ≥.
  2912. ╬≥≡σΣαΩ≥Φ≡≤Θ≥σ ⌠αΘδ hosts ┬α°σΘ ±Φ±≥σ∞√ ≥αΩ, ≈≥εß√ localhost Φ ∩εδφεσ Φ∞ 
  2913. Σε∞σφα ß√δΦ εßα ε∩≡σΣσδσφ√. ┬ Windows 95 ⌠αΘδ hosts φα⌡εΣΦ≥Φ±  Γ
  2914. %windir%\HOSTS (φα∩≡Φ∞σ≡, C:\WINDOWS\HOSTS). ┬ Windows NT ⌠αΘδ hosts
  2915. φα⌡εΣΦ≥±  Γ: %windir%\System32\DRIVERS\ETC\HOSTS φα∩≡Φ∞σ≡,
  2916. C:\WINNT\System32\DRIVERS\ETC\HOSTS).
  2917. ┬ Win95 σ±≥ⁿ δεΓ≤°Ωα, Ωε≥ε≡α  ταΩδ■≈ασ≥±  Γ ≥ε∞, ≈≥ε σ±δΦ ∩ε±δσΣφ   τα∩Φ±ⁿ
  2918. φσ ταΩαφ≈ΦΓασ≥±  ±Φ∞Γεδα∞Φ carriage-return/line-feed, ≥ε ⌠αΘδ hosts
  2919. ≈Φ≥ασ≥±  φσ Σε Ωεφ÷α. ╥αΩ, σ±δΦ ±Φ±≥σ∞α φατ√Γασ≥±  goober.best.com
  2920. ∩≡ΦΓσΣΦ≥σ ⌠αΘδ hosts ε≥ ΓΦΣα
  2921.  
  2922.  
  2923.         127.0.0.1 localhost
  2924.  
  2925.  
  2926. Ω ΓΦΣ≤
  2927.  
  2928.  
  2929.         127.0.0.1 goober.best.com localhost
  2930.  
  2931.  
  2932. ╘αΘδ ∞εµσ≥ Γ√πδ Σσ≥ⁿ ±δσΣ≤■∙Φ∞ εß≡ατε∞:
  2933.  
  2934.      # Hosts file
  2935.      127.0.0.1       localhost
  2936.      129.146.77.177  goober
  2937.  
  2938.  
  2939. ─≡≤πεΘ ±∩ε±εß ±ε±≥εΦ≥ Γ ≥ε∞, ≈≥εß√ ≤±≥αφεΓΦ≥ⁿ PPP ±εσΣΦφσφΦσ ± ∩≡εΓαΘΣσ≡ε∞
  2940. ╚φ≥σ≡φσ≥ Γ± ΩΦΘ ≡ατ, ΩεπΣα ┬√ ß≤Σσ≥σ τα∩≤±Ωα≥ⁿ ±σ≥σΓ√σ ∩≡επ≡α∞∞√.
  2941.  
  2942. ╬∩√≥ φσΩε≥ε≡√⌡ δ■ΣσΘ πεΓε≡Φ≥ ε ≥ε∞, ≈≥ε ≡αßε≥α ± ±σ≥ⁿ■ φσ ±εΓ±σ∞
  2943. ≤ΣεΓδσ≥Γε≡Φ≥σδⁿφα ∩εΣ Windows95 ± Φ±∩εδⁿτεΓαφΦσ∞ Winsock 1.1, Φ Γ≡σ∞  ε≥
  2944. Γ≡σ∞σφΦ φσεß· ±φΦ∞ε πδ■≈Φ≥. ┬√ ∞εµσ≥σ ∩ε∩√≥α≥ⁿ±  ταπ≡≤τΦ≥ⁿ Winsock 2.0.
  2945. ╫≥εß√ ∩εδ≤≈Φ≥ⁿ Winsock 2.0, ┬√ Σεδµφ√ Γ√≥α∙Φ≥ⁿ σπε Φτ φαßε≡α Microsoft
  2946. Windows Sockets 2.0 Software Development Kit. ▌≥ε≥ ±ε⌠≥ ∞εµσ≥ ß√≥ⁿ ∩εδ≤≈σφ
  2947. ±ε ±δσΣ≤■∙Φ⌡ αΣ≡σ±εΓ:
  2948. http://www.microsoft.com/win32dev/netwrk/winsock2/ws295sdk.html ΦδΦ:
  2949. ftp://ftp.microsoft.com/bussys/WinSock/winsock2/
  2950.  
  2951. ╧α≥≈Φ, Ωε≥ε≡√σ φ≤µφ√ Σδ  ≤δ≤≈∙σφΦ  ≡αßε≥√ Γ ±σ≥Φ ≤µσ σ±≥ⁿ Γ Win98.
  2952.  
  2953.                            ─≡≤πΦσ ╤σ≥σΓ√σ ┬ε∩≡ε±√
  2954.  
  2955. *(╤σΩ÷Φ  15) ┼±δΦ   Γ√τ√Γα■ InetAddress.getByName() ∞σ≥εΣ ± α≡π≤∞σφ≥ε∞ IP
  2956. - αΣ≡σ±ε∞ Γ ΓΦΣσ ±≥≡εΩΦ, ≥Φ∩α "192.168.0.1", ∩εδ≤≈α■ φα φσΩε≥ε≡√⌡ (φε φσ φα
  2957. Γ±σ⌡) ∩δα≥⌠ε≡∞α⌡ UnknownHostException. ╩εΣ :
  2958.  
  2959. Socket sock = new Socket("155.152.5.1", 23);
  2960.  
  2961. ß≡ε±ασ≥ Φ±Ωδ■≈σφΦσ. ╧ε≈σ∞≤?
  2962.  
  2963. [*] ▌≥ε ∩δα≥⌠ε≡∞σφφεσ ≡ατδΦ≈Φσ, Ωε≥ε≡εσ ΓετφΦΩασ≥ Φτ ≡ατδΦ≈φεΘ ±σ∞αφ≥ΦΩΦ
  2964. δσµα∙Φ⌡ Γ ε±φεΓσ ±σ≥σΓ√⌡ ßΦßδΦε≥σΩ, Φ ∩ε⌠ΦΩ±σφε Γ JDK 1.1. ┬ Solaris Φ
  2965. Windows NT, ±≥≡εΩα IP αΣ≡σ±α ≡αßε≥ασ≥ ≥εδⁿΩε Σδ  ≥σ⌡ αΣ≡σ±εΓ, Ωε≥ε≡√σ Φ∞σ■≥
  2966. α±±ε÷ΦΦ≡εΓαφφεσ Φ∞  ⌡ε±≥α. Hα Linux Φ Windows 95 ±≥≡εΩΦ IP αΣ≡σ±α
  2967. ±≡αßα≥√Γα■≥ Γ±σπΣα.
  2968. ╩επΣα ±ετΣασ≥±  ²Ωτσ∞∩δ ≡ InetAddress ± IP αΣ≡σ±ε∞ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α,
  2969. Γ√∩εδφ σ≥±  εß≡α≥φεσ DNS ∩≡σεß≡ατεΓαφΦσ. ┼±δΦ IP αΣ≡σ± φσ α±±ε÷ΦΦ≡εΓαφ ±
  2970. ∩≡αΓΦδⁿφ√∞ Φ∞σφσ∞ ⌡ε±≥α, ≥ε ±ετΣαφΦσ ²Ωτσ∩δ ≡α Ωδα±±α InetAddress ∩ε≥σ≡∩Φ≥
  2971. φσ≤Σα≈≤. ▌≥ε  Γδ σ≥±  ≈α±≥ⁿ■ ßε≡ⁿß√ ± DNS-spoofing (∩εΣ∞σφα DNS), Φ Γ JDK
  2972. 1.1 ≡αßε≥ασ≥ ∩ε≥ε∞≤ ≈≥ε εß≡α≥φεσ ∩≡σεß≡ατεΓαφΦσ φσ ∩≡εΦ±⌡εΣΦ≥ ∩εΩα Φ∞ 
  2973. ⌡ε±≥α φσ τα∩≡ε°σφε. ╥αΩ Γ JDK 1.1,
  2974.  
  2975.         InetAddress in = InetAddress.getByName("155.152.5.1");
  2976.  
  2977.  
  2978. [Note: ▌≥≤ Φφ⌠ε≡∞α÷Φ■ φ≤µφε ∩εΣ≥Γσ≡ΣΦ≥ⁿ. ╤σ≥σΓ√σ π≤≡≤?]
  2979. ─≡≤πΦσ ±αΘ≥√:
  2980.  
  2981.      ╙ Microsoft σ±≥ⁿ φσ±ΩεδⁿΩε network-related ∩α≥≈σΘ φα Φ⌡ ±αΘ≥σ
  2982.      http://www.microsoft.com/
  2983.  
  2984. *(╤σΩ÷Φ  15) ▀ ⌡ε≈≤ ∩σ≡σΣα≥ⁿ class ⌠αΘδ Γ±σ∞ ≥σ∞ µσδα■∙Φ∞, Ω≥ε Φ±∩εδⁿτ≤σ≥
  2985. ∞εΘ α∩∩δσ≥. ┼±≥ⁿ ΦΣσΦ φα±≈σ≥ ≥επε ΩαΩ?
  2986.  
  2987. [*] ╥√ Σεδµσφ Φ±∩εδⁿτεΓα≥ⁿ ∞αδσφⁿΩ≤■ ⌡Φ≥≡ε±≥ⁿ: ≡ατ∞σ±≥Φ≥ⁿ ≥ΓεΘ .class
  2988. ⌠αΘδ(√) Γ .zip α≡⌡ΦΓσ Φ Φ±∩εδⁿτεΓα≥ⁿ ∞σ≥εΣ showDocument() ε≥ URL. HσΩ≥ε,
  2989. εß≡α∙α ±ⁿ Ω ²≥ε∞≤ URL ∩εδ≤≈Φ≥ εΩφε ΣΦαδεπα, Γ Ωε≥ε≡ε∞ εφ ß≤Σσ≥ τα∩≡ε°σφ ε
  2990. ±ε⌡≡αφσφΦΦ ⌠αΘδα φα σπε δεΩαδⁿφε∞ ΣΦ±Ωσ.
  2991. ─≡≤πΦσ ±αΘ≥√:
  2992.  
  2993.      ┬√ ∞εµσ≥σ ≤ΓΦΣσ≥ⁿ ²≥ε µΦΓⁿσ∞ Φ ∩ε∩≡εßεΓα≥ⁿ φα ±σßσ φα:
  2994.      http://www.best.com/~rmlynch/saveit.html
  2995.  
  2996. *(╤σΩ÷Φ  15) ╩αΩ τα±≥αΓΦ≥ⁿ URLConnection ≡αßε≥α≥ⁿ ≈σ≡στ proxy firewall?
  2997. ╥.σ. ╩αΩ τα±≥αΓΦ≥ⁿ Java ∩≡ΦδεµσφΦσ Γ√∩εδφ ≥ⁿ Σε±≥≤∩ Ω Web ≈σ≡στ ∩≡εΩ±Φ?
  2998.  
  2999. [*] ▌≥ε εß√≈φε φ≤µφε Σδ  δ■ßεπε ±σ≥σΓεπε Σε±≥≤∩α Ω Σ≡≤πε∞≤ Σε∞σφ≤. ┬√
  3000. Σεδµφ√ ταΣα≥ⁿ runtime ±Φ±≥σ∞σ ≈≥ε ┬√ ∩√≥ασ≥σ±ⁿ ±Σσδα≥ⁿ Φ±∩εδⁿτ≤  α≡π≤∞σφ≥√
  3001. Ωε∞αφΣφεΘ ±≥≡εΩΦ ΩεπΣα τα∩≤±Ωασ≥σ ∩≡επ≡α∞∞≤.
  3002.  
  3003. java -DproxySet=true -DproxyHost=SOMEHOST -DproxyPort=SOMENUM code.java
  3004.  
  3005. ╬≥∞σ≥≥ⁿσ, ≈≥ε proxyPort  Γδ σ≥±  ε∩÷Φεφαδⁿφ√∞ Φ ∩ε ≤∞εδ≈αφΦ■ ≡αΓσφ 80. ┴στ
  3006. ²≥επε ┬√ ≤ΓΦΣΦ≥σ Φ±Ωδ■≈σφΦσ ≥Φ∩α java.net.UnknownHostException ΦδΦ
  3007. java.net.NoRouteToHostException
  3008.  
  3009. ╙±≥αφεΓΩΦ ∩≡εΩ±Φ ≡αßε≥α■≥ Φ Σδ  java.net.URLConnection, Φ Σδ 
  3010. java.net.Sockets.
  3011.  
  3012. Netscape'Γ±Ωα  Φ IE'α  JVMs (ΓΦ≡≥≤αδⁿφ√σ Java ∞α°Φφ√) (∩ε Ω≡αΘφσΘ ∞σ≡σ Γ
  3013. Γσ≡±Φ ⌡ 4.⌡+) ∩≡ΦφΦ∞α■≥ ≤±≥αφεΓΩΦ ∩≡εΩ±Φ Σδ  α∩∩δσ≥εΓ Φτ Ωεφ⌠Φπ≤≡α÷ΦΦ
  3014. ∩≡εΩ±Φ ß≡α≤τσ≡α. ┬√ ∞εµσ≥σ ≥αΩµσ ≡αßε≥α≥ⁿ ± ∩≡εΩ±Φ Γ ∩≡εΦδεµσφΦ ⌡ (φσ
  3015. α∩∩δσ≥α⌡) ΣεßαΓΦΓ ±δσΣ≤■∙Φσ ±≥≡εΩΦ
  3016.  
  3017.  
  3018.     // ≤±≥αφεΓΦ≥σ ≈≥εß√ Φ±∩εδⁿτεΓα≥ⁿ ∩≡εΩ±Φ
  3019.     System.getProperties().put("proxySet", "true");
  3020.     System.getProperties().put("proxyHost", "myproxy.server.name");
  3021.     System.getProperties().put("proxyPort", "80");
  3022.  
  3023.  
  3024. Hε ΩαΩ ∞φσ ≤τφα≥ⁿ Φ∞  ∩≡εΩ±Φ ±σ≡Γσ≡α?
  3025. ▌≥ε≥ ΩεΣ ∩≡ε±≥ε πεΓε≡Φ≥ ┬α∞ ΩαΩ ∞εµφε ∩εδ≤≈Φ≥ⁿ URL ±εσΣΦφσφΦσ ≈σ≡στ ∩≡εΩ±Φ.
  3026. Hε ≥αΩ ΩαΩ ²≥ε ┬α° ∩≡εΩ±Φ ±σ≡Γσ≡, ≥ε ∩≡σΣ∩εδαπασ≥± , ≈≥ε ┬√ τφασ≥σ σπε Φ∞ .
  3027. ╚ φσ ±≤∙σ±≥Γ≤σ≥ ΩεΣα, Ωε≥ε≡√Θ ∞εµφε φα∩Φ±α≥ⁿ, Ωε≥ε≡√Θ ∩ετΓεδΦ≥ ∩≡εΦτΓεδⁿφ√∞
  3028. URL ±εσΣΦφσφΦ ∞ ß√≥ⁿ ΦφΦ÷ΦΦ≡εΓαφ√∞Φ ΦτΓφσ firewall'α. ╧εΣ≤∞αΘ≥σ εß ²≥ε∞!
  3029. ┼±δΦ ß√ ²≥ε ß√δε ≥αΩ, ≥ε firewall φσ Γ√∩εδφ δ ß√ ±Γε■ ≡αßε≥≤.
  3030.  
  3031. ╥αΩµσ ε≥∞σ≥≥ⁿσ, ≈≥ε ±≤∙σ±≥Γ≤■≥ ±εε≥Γσ≥±≥Γ≤■∙Φσ socksProxyPort Φ
  3032. socksProxyHost ΩεπΣα socks Φ±∩εδⁿτ≤■≥±  Γ∞σ±≥ε ∩≡εΩ±Φ. Socks ∩ε≡≥ ∩ε
  3033. ≤∞εδ≈αφΦ■ - 1080.
  3034.  
  3035. *(╤σΩ÷Φ  15) ╫≥ε ετφα≈ασ≥ "swizzle"(φσ≥ε≈φ√Θ ±ΦφεφΦ∞ - ΓτßΦ≥ⁿ[ΩεΩ≥σΘδⁿ]),
  3036. φα∩≡Φ∞σ≡ "Swizzle an object?"
  3037.  
  3038. [*] ▌≥ε ετφα≈ασ≥ ±σ≡ΦαδΦτεΓα≥ⁿ. "To swizzle an object" ετφα≈ασ≥ ≡σΩ≤≡±ΦΓφε
  3039. ±σ≡ΦαδΦτεΓα≥ⁿ ±ετΣαφφ√σ εß·σΩ≥√.
  3040.  
  3041. *(╤σΩ÷Φ  15) ▀ Φ±∩εδⁿτ≤■ Γετ∞εµφε±≥Φ ±±σ≡ΦαδΦτα÷ΦΦ Γ 1.1 ≈≥εß√ ±ε⌡≡αφΦ≥ⁿ
  3042. φσΩε≥ε≡√σ εß·σΩ≥√ φα ΣΦ±Ωσ. ▀ ΣεßαΓΦδ φεΓεσ ∩εδσ Γ εΣΦφ Φτ ∞εΦ⌡ εß·σΩ≥εΓ,
  3043. Ωε≥ε≡√Θ ±σ≡ΦαδΦτ≤σ≥±  Φ ≥σ∩σ≡ⁿ Σσ±σ≡ΦαδΦτα÷Φ  ∞εΦ⌡ ±≥α≡√⌡ εß·σΩ≥εΓ ßεδⁿ°σ
  3044. φσ ≡αßε≥ασ≥. ▀ ∩εδ≤≈α■ ≥αΩεσ Φ±Ωδ■≈σφΦσ :
  3045.  
  3046.  
  3047. java.io.InvalidClassException: MacroData; Local class not compatible
  3048.  
  3049.  
  3050. [*] ┬α∞ φ≤µφε ΣεßαΓΦ≥ⁿ εß· ΓδσφΦσ ≥Φ∩α
  3051.  
  3052.  
  3053.     static final long serialVersionUID = 4021215565287364875L;
  3054.  
  3055.  
  3056. Γ ∞εΣΦ⌠Φ÷Φ≡εΓαφφ√Θ Ωδα±±. └Ω≥≤αδⁿφεσ τφα≈σφΦσ ²≥επε ΣδΦφφεπε ÷σδεπε
  3057. ∩≡σΣε±≥αΓδ σ≥±  ≤≥ΦδΦ≥εΘ "serialver", Ωε≥ε≡α  σ±≥ⁿ Γ JDK. ╦■ßα  ε≥δΦ≈φα  ε≥
  3058. ∩σ≡ΓεΘ Γσ≡±Φ  Ωδα±±α ≥≡σß≤σ≥, ≈≥εß√ ²≥α ±≥α≥Φ≈σ±Ωα  ∩σ≡σ∞σφφα  ß√δα
  3059. ε∩≡σΣσδσφα Γ Ωδα±±σ.
  3060.  
  3061. *(╤σΩ÷Φ  15) ╠εΘ ΩεΣ ≡αßε≥α■∙ΦΘ ± ±εΩσ≥α∞Φ Γ√πδ ΣΦ≥ ∩≡αΓΦδⁿφ√∞, φε φσ
  3062. ≡αßε≥ασ≥!
  3063.  
  3064. [*] ╧≡Φ Φ±∩εδⁿτεΓαφΦΦ ±εΩσ≥εΓ ┬√ εß√≈φε ε≥Ω≡√Γασ≥σ εßα Γ⌡εΣ ∙ΦΘ Φ Φ±⌡εΣ ∙ΦΘ
  3065. ∩ε≥εΩΦ. TCP ±εσΣΦφσφΦσ  Γδ σ≥±  ∩εδφεΣ≤∩δσΩ±φ√∞, φε δΦßε ε≥±√δα■∙α , δΦßε
  3066. ∩≡ΦφΦ∞α■∙α  ±≥ε≡εφ√ ∞επ≤≥ ταΩ≡√Γα≥ⁿ±  φσταΓΦ±Φ∞ε. ╧ε ≤∞εδ≈αφΦ■, ΩεπΣα
  3067. ≤±≥αφεΓδσφε ≈≥ε ≤Σαδσφφα  ±≥ε≡εφα ταΩ≡√δα ±εσΣΦφσφΦσ, δεΩαδⁿφα  ±≥ε≡εφα
  3068. ∩≡ε±≥ε ταΩ≡√Γασ≥ σπε. ╧≡εΓσ≡ⁿ≥σ, ∞εµσ≥ ß√≥ⁿ ²≥ε ±δ≤≈ασ≥±  ± ┬α∞Φ
  3069. ΣεßαΓδσφΦσ∞ ±εε≥Γσ≥±≥Γ≤■∙σΘ ∩α≡√. ╚±∩εδⁿτ≤Θ≥σ tcpdump ≈≥εß√ ∩≡εΓσ≡Φ≥ⁿ ²≥ε.
  3070.  
  3071. *(╤σΩ÷Φ  15) ╩αΩ ∞φσ ∩εδ≤≈Φ≥ⁿ ±εε≥Γσ≥±≥ΓΦσ IP αΣ≡σ±α Φ Φ∞σφΦ ⌡ε±≥α?
  3072.  
  3073. [*] ┬ Java 1.1 (≡αφφΦσ Γσ≡±ΦΦ ß√δΦ πδ■ΩαΓ√∞Φ) Φ±∩εδⁿτ≤Θ≥σ:
  3074.  
  3075.  
  3076.     String host = InetAddress.getByName("211.10.2.119").getHostName();
  3077.  
  3078.  
  3079. *(╤σΩ÷Φ  15) ╩αΩ ∞φσ Γ±≥≡εΦ≥ⁿ  Ωε≡ⁿ (anchor) Γ URL? ╧≡ε±≥ε ∩ε∞σ±≥Φ≥ⁿ σπε
  3080. ΩαΩ ≈α±≥ⁿ ±≥≡εΩΦ Γ Ωεφ±≥≡≤Ω≥ε≡ φσ ≡αßε≥ασ≥.
  3081.  
  3082. [*] ╫≥ε-≥ε ≥Φ∩α:
  3083.  
  3084.  
  3085.     URL url = new URL("http://www.my_domain.com/my_page.html");
  3086.     URL anchor = new URL(url, "#section2");
  3087.     this.getAppletContext().showDocument(anchor);
  3088.  
  3089. *(╫α±≥ⁿ 10) ▀ Φ±∩εδⁿτ≤■ add(Component), ≈≥εß√ ΣεßαΓΦ≥ⁿ Ωε∞∩εφσφ≥√ Γ
  3090. Ωεφ≥σΘφσ≡. ┼±≥ⁿ δΦ ±∩ε±εß  Γφεπε ≤ΩαταφΦ  z-∩ε≡ ΣΩα ²≥Φ⌡ Ωε∞∩εφσφ≥?
  3091.  
  3092. [*] ┬ JDK 1.0 φσ≥  Γφεπε ±∩ε±εßα ≤±≥αφεΓΦ≥ⁿ z-∩ε≡ ΣεΩ Ωε∞∩εφσφ≥. ┬√ ∞εµσ≥σ
  3093. ∩ε∩≡εßεΓα≥ⁿ ²Ω±∩σ≡Φ∞σφ≥αδⁿφε ∩εΣεß≡α≥ⁿ σπε ± ∩ε∞ε∙ⁿ■ Φ±∩εδⁿτ≤σ∞επε Γα∞Φ
  3094. ß≡ε≤τσ≡α, ΦδΦ ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ CardLayoutManager, ≈≥εß√
  3095. ≤Σε±≥εΓσ≡Φ≥± , ≈≥ε φσεß⌡εΣΦ∞α  Γα∞ ∩αφσδⁿ ±∩σ≡σΣΦ.
  3096.  
  3097. ┬ JDK 1.1 z-∩ε≡ ΣεΩ Ωε∞∩εφσφ≥ ("z-∩ε≡ ΣεΩ" ετφα≈ασ≥ ∩ε≡ ΣεΩ
  3098. "±∩σ≡σΣΦ-±ταΣΦ", ≥.σ. ΩαΩεσ εΩφε ∩σ≡σΣ ΩαΩΦ∞ φα⌡εΣΦ≥± ) ≤∩≡αΓδ σ≥± 
  3099. ∩ε±≡σΣ±≥Γε∞ ∞σ≥εΣα add(Component comp, int index). ╧ε ≤∞εδ≈αφΦ■ Ωε∞∩εφσφ≥√
  3100. ΣεßαΓδ ■≥±  ε≥ 0 Σε N. ╠σ≥εΣ Ωδα±±α Container paint ε≥≡Φ±εΓ√Γασ≥ σπε
  3101. ΓΦΣΦ∞√σ Ωε∞∩εφσφ≥√ ε≥ N Σε 0.
  3102.  
  3103. *(╫α±≥ⁿ 10) ╩αΩ   ∞επ≤ ∩εδ≤≈Φ≥ⁿ ≡ατ∞σ≡√ Φ ≡ατ≡σ°σφΦσ ²Ω≡αφα?
  3104.  
  3105. [*] ╚±∩εδⁿτ≤Θ≥σ
  3106.  
  3107. java.awt.Toolkit.getDefaultToolkit().getScreenSize()
  3108.  
  3109. ΦδΦ
  3110.  
  3111. java.awt.Toolkit.getDefaultToolkit().getScreenResolution()
  3112.  
  3113. ╨ατ≡σ°σφΦσ ²Ω≡αφα ΓετΓ≡α∙ασ≥±  Γ ≥ε≈Ωα⌡-φα-Σ■Θ∞ (dpi, dots-per-inch).
  3114.  
  3115. ╟απδ φΦ≥σ Γ Ωδα±± Toolkit - ≥α∞ ∞φεπε ∩εδστφ√⌡ ∞σ≥εΣεΓ
  3116.  
  3117. Toolkit.getDefaultToolkit().getColorModel().getPixelSize()
  3118.  
  3119. ΓετΓ≡α∙ασ≥ ÷Γσ≥εΓ≤■ ∞εΣσδⁿ Γ ßΦ≥α⌡-φα-∩ΦΩ±σδ (bpp, bits-per-pixel)
  3120.  
  3121. Math.pow(2, Toolkit.getDefaultToolkit().
  3122.     getColorModel().getPixelSize())
  3123.  
  3124. ΓετΓ≡α∙ασ≥ ÷Γσ≥εΓ≤■ ∞εΣσδⁿ Γ ΓΦΣσ ΩεδΦ≈σ±≥Γα ÷Γσ≥εΓ. ╚δΦ Φ±∩εδⁿτ≤Θ≥σ ²≥ε:
  3125.  
  3126. 1 << Toolkit.getDefaultToolkit().
  3127.     getColorModel().getPixelSize()
  3128.  
  3129. ╤≥σ∩σφⁿ 2 Γ√≈Φ±δ σ≥±  ΩαΩ ΣΓεΦ≈φ√Θ ±ΣΓΦπ 1.
  3130.  
  3131. *(╫α±≥ⁿ 10) ╩αΩ   ∞επ≤ ≤≈σ±≥ⁿ ≡ατ∞σ≡√ ταπεδεΓΩα Φ ≡α∞ΩΦ ∩≡Φ ε≥≡Φ±εΓΩσ
  3132. Frame'α?
  3133.  
  3134. [*] ╚±∩εδⁿτ≤Θ≥σ ∞σ≥εΣ MyFrame.getInsets(). ╬φ ΓετΓ≡α∙ασ≥ εß·σΩ≥
  3135. java.awt.Insets Ωε≥ε≡√Θ Φ∞σσ≥ ≈σ≥√≡σ ÷σδ√⌡ ∩εδ : top, left, bottom, right,
  3136. Ωε≥ε≡√σ Σα■≥ ΩεδΦ≈σ±≥Γε ∩ΦΩ±σδεΓ Σδ  ΩαµΣεπε Φτ ∩εδσΘ, ε≥ΩδαΣ√Γασ∞√⌡
  3137. ±Γσ≡⌡≤. ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ ²≥Φ τφα≈σφΦ , ≈≥εß√ ε≥≡σπ≤δΦ≡εΓα≥ⁿ εß·σΩ≥
  3138. Dimension, ΓετΓ≡α∙ασ∞√Θ ╤omponent.getSize().
  3139.  
  3140. ┼±δΦ ┬√ ²≥ε Σσδασ≥σ ²≥ε Γ Ωεφ±≥≡≤Ω≥ε≡σ, ┬α∞ φσεß⌡εΣΦ∞ε ≤Σε±≥εΓσ≡Φ≥± , ≈≥ε
  3141. Peer εß·σΩ≥ Frame'α ≤µσ ±ετΣαφ. ╚φα≈σ εß·σΩ≥ Insets, ΓετΓ≡α∙ασ∞√Θ
  3142. getInsets(), ß≤Σσ≥ ±ε±≥ε ≥ⁿ Φτ φ≤δσΘ. ┬√τεΓΦ≥σ Frame.addNotify(), ≈≥εß√
  3143. ±∩≡εΓε÷Φ≡εΓα≥ⁿ ±ετΣαφΦσ Peer'α.
  3144.  
  3145. *(╫α±≥ⁿ 10) ╩αΩ φ≤µφε Φτ∞σφ ≥ⁿ pατ∞σp√ ±∩Φ±Ωα? ▀ εß· ΓΦδ ±∩Φ±εΩ ΩαΩ
  3146.  
  3147. List tlist = new List(10);
  3148.  
  3149. φε ±≥pεΩΦ Γ ±∩Φ±Ωσ ß√δΦ ΣδΦφεΘ 80 ±Φ∞ΓεδεΓ Φ ≥εδⁿΩε 15 ∩σ≡Γ√⌡ ß√δΦ
  3150. ∩εΩαταφ√. ╠φσ φσ ≤Σαδε±ⁿ Φτ∞σφΦ≥ⁿ ≡ατ∞σ≡ ±∩Φ±Ωα, ≈≥εß√ ∩εΩατα≥ⁿ σπε
  3151. ±εΣσ≡µΦ∞εσ, φσ ∩≡Φßσπα  Ω Φ±∩εδⁿτεΓαφΦ■ ∩εδε± ∩≡εΩ≡≤≥ΩΦ.
  3152.  
  3153. [*] Hσδⁿτ  Φτ∞σφ ≥ⁿ ≡ατ∞σ≡ ±∩Φ±Ωα Γ Ωεφ±≥≡≤Ω≥ε≡σ, ≥αΩ ≈≥ε ΣεßαΓ≥σ ±δσΣ≤■∙Φσ
  3154. ±≥≡εΩΦ Γ Applet (ΦδΦ πΣσ ß√ ≥ε φΦ ß√δε):
  3155.  
  3156. public void paint (Graphics g) {
  3157.     tlist.setSize(200,200);
  3158. }
  3159.  
  3160. ╧ε≥ε∞ ∩σ≡σΣ ≥σ∞ ΩαΩ ∩εΩατα≥ⁿ Panel/Frame ±ε ±∩Φ±Ωε∞:
  3161.  
  3162. tlist.resize(400,400);
  3163.  
  3164. *(╫α±≥ⁿ 10) ╩αΩ ∞φσ ≤τφα≥ⁿ, ΩεπΣα ∩≡εΦτε°δε Φτ∞σφσφΦσ ≡ατ∞σ≡εΓ εΩφα?
  3165.  
  3166. [*] ╧σ≡σπ≡≤τΦ≥σ ∞σ≥εΣ Component.setBounds(int, int, int, int), ≈≥ε ß√
  3167. Σσδα≥ⁿ ≥ε ≈≥ε ┬α∞ φσεß⌡εΣΦ∞ε. ╩εφσ≈φε, ┬α∞ ≥αΩ µσ φ≤µφε Γ√τ√Γα≥ⁿ
  3168. super.setBounds(). Hσεß⌡εΣΦ∞ε τα∞σ≥Φ≥ⁿ, ≈≥ε setBounds() τα∞σφΦδ ≤±≥α≡σΓ°ΦΘ
  3169. (deprecated) ∞σ≥εΣ reshape().
  3170.  
  3171. ╟α∞σ≥ⁿ≥σ, ≈≥ε φεΓεσ API Γ√τ√Γασ≥ φσ ≈≥ε Φφεσ ΩαΩ ≤±≥α≡σΓ°σσ API. Hα∩≡Φ∞σ≡
  3172. Component.setBounds Γ√τ√Γασ≥ Component.reshape, φε φσ reshape Γ√τ√Γασ≥
  3173. setBounds. ▌≥ε ∩≡εΦ±⌡εΣΦ≥ ∩ε≥ε∞≤, ≈≥ε AWT ≈α±≥ε ≥≡σß≤σ≥±  Γ√τ√Γα≥ⁿ σπε Σδ 
  3174. ±ΓεΦ⌡ ±εß±≥Γσφφ√⌡ φ≤µΣ. ┼±δΦ AWT Γ√τεΓσ≥ ±≥α≡√Θ ∞σ≥εΣ, τα≥σ∞ φεΓ√Θ ∞σ≥εΣ, Φ
  3175. ┬√ ∩σ≡σπ≡≤τΦδΦ φεΓ√Θ ∞σ≥εΣ, AWT (≈≥ε σ±≥ⁿ φσ∩≡αΓΦδⁿφε) φσ Γ√τεΓσ≥ ┬α°≤
  3176. ∩≡ε÷σΣ≤≡≤. ┬ ±δ≤≈ασ σ±δΦ AWT Γ√τ√Γασ≥ φεΓ√Θ ∞σ≥εΣ (α εφ Γ ±Γε■ ε≈σ≡σΣⁿ
  3177. Γ√τ√Γασ≥ ±≥α≡√Θ), δ■ß√σ ∩σ≡σπ≡≤τΩΦ φεΓεπε ∞σ≥εΣα ß≤Σ≤≥ Ωε≡≡σΩ≥φε Γ√τΓαφ√
  3178. AWT ∩ε φσεß⌡εΣΦ∞ε±≥Φ. ┼±δΦ Γ√°σ±Ωαταφεσ Γα∞ φσ ∩εφ ≥φε, ∩≡ε±≥ε ταß≤Σ≥σ ²≥ε.
  3179.  
  3180. *(╫α±≥ⁿ 10) ╩αΩ ∞φσ ε≥÷σφ≥≡Φ≡εΓα≥ⁿ ΣΦαδεπεΓεσ εΩφε?
  3181.  
  3182. [*] Hα ≥σΩ≤∙ΦΘ ∞ε∞σφ≥, ┬√ φσ ∞εµσ≥σ ∩εδ≤≈Φ≥ⁿ αß±εδ■≥φ√σ Ωεε≡ΣΦφα≥√ α∩∩δσ≥α
  3183. φα ²Ω≡αφσ. ┼πε ∩εδεµσφΦσ (0,0) ε≥φε±Φ≥σδⁿφε ß≡ε≤τσ≡α, α φσ ²Ω≡αφα. Hε Γ√
  3184. ∞εµσ≥σ ε≥÷σφ≥≡Φ≡εΓα≥ⁿ φσ≈≥ε, ≈≥ε Γ±∩δ√Γασ≥ ΦδΦ ∩εΩατ√Γασ≥± , φα ²Ω≡αφσ ±
  3185. ∩ε∞ε∙ⁿ■ ΩεΣα, ΩαΩ ²≥ε≥:
  3186.  
  3187. Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
  3188. my_window.move(
  3189.  ( screen.width - my_window.size().width ) / 2,
  3190.  ( screen.height - my_window.size().height ) / 2 );
  3191.  
  3192. my_window.show().
  3193.  
  3194. ┬ ∩εΣεßφεΘ ∞αφσ≡σ, ┬√ ∞εµσ≥σ ε≥÷σφ≥≡Φ≡εΓα≥ⁿ φσ≈≥ε ε≥φε±Φ≥σδⁿφε σπε ∩≡σΣΩα.
  3195. ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ φα ≤∞φεσ Φ±∩εδⁿτεΓαφΦσ ≥αΩεπε API, ΩαΩ translate(),
  3196. Ωε≥ε≡εσ Σσδασ≥ ≡αßε≥≤ τα ┬α±:
  3197.  
  3198. void center(Component parent) {
  3199.     pack();
  3200.  
  3201.     Point p = parent.getLocation();
  3202.     Dimension d = parent.getSize();
  3203.     Dimension s = getSize();
  3204.  
  3205.     p.translate((d.width - s.width) / 2,
  3206.                 (d.height - s.height) / 2);
  3207.     setLocation(p);
  3208. }
  3209.  
  3210. *(╫α±≥ⁿ 10) ╩αΩ   ∞επ≤ ∩εδ≤≈Φ≥ⁿ αß±εδ■≥φ√σ Ωεε≡ΣΦφα≥√ ∞√°Φ?
  3211.  
  3212. [*] ┬√ Φ∞σσ≥σ Γ ΓΦΣ≤, ≈≥ε σ±δΦ ≡ατ∞σ≡√ ß≡ε≤τσ≡α 640x480, ┬√ ⌡ε≥Φ≥σ ∩εδ≤≈Φ≥ⁿ
  3213. Y-Ωεε≡ΣΦφα≥≤ Γ ΣΦα∩ατεφσ ε≥ 0 Σε 480. └ σ±δΦ εΩφε ß≡ε≤τσ≡α εΩεδε 800⌡600,
  3214. ≥ε Γ ΣΦα∩ατεφσ ε≥ 0 Σε 600. ▌≥ε ∞εµσ≥ ∩εφαΣεßΦ≥±  Σδ  Γ±∩δ√Γα■∙ΦΘ ∞σφ■,
  3215. ΩεπΣα Γ√ ⌡ε≥Φ≥σ σπε ∩εΩατα≥ⁿ ∩ε αß±εδ■≥φ√∞ Ωεε≡ΣΦφα≥α∞ ∞√°Φ.
  3216.  
  3217. ╠σ≥εΣ ταΩδ■≈ασ≥±  Γ αφαδΦτσ ±εß√≥ΦΘ ∞√°Φ Φ ∩εδεµσφΦΘ ≤Ωατα≥σδ  Φ σπε
  3218. ≡εΣΦ≥σδσΘ ∩εΩα φσ ß≤Σσ≥ ≡εΣΦ≥σδ . ╒ε≥  Σδ  φσΩε≥ε≡√⌡ ß≡ε≤τσ≡εΓ ²≥ε
  3219. φσ∩≡Φ∞σφΦ∞ε. [╞Σσ∞ δ≤≈°Φ⌡ ∩≡σΣδεµσφΦΘ.]
  3220.  
  3221. *(╫α±≥ⁿ 10) ╩αΩ   ∞επ≤ ε∩≡σΣσδΦ≥ⁿ Φτ∞σφσφΦσ ≡ατ∞σ≡α ⌠pσΘ∞α ΦδΦ Σ≡≤πεπε
  3222. Ωε∞∩εφσφ≥α?
  3223.  
  3224. [*] ┼±δΦ ┬√ Φ±∩εδⁿτ≤σ≥σ JDK 1.0.2, ┬√ ∞εµσ≥σ ∩σ≡σπ≡≤τΦ≥ⁿ ∞σ≥εΣ
  3225. Component.reshape(int, int, int, int) ≈≥ε ß√ Σσδα≥ⁿ Γ±σ ≈≥ε ┬α∞ φσεß⌡εΣΦ∞ε,
  3226. Ωεφσ≈φε φσεß⌡εΣΦ∞ε Γ√τ√Γα≥ⁿ super.reshape().
  3227. ┬ JDK 1.1.⌡, setBounds() ∩≡Φ°σδ φα ±∞σφ≤ reshape(), ≥σ∞ φσ ∞σφσσ ±≤∙σ±≥Γ≤σ≥
  3228. ∩≤≥ⁿ δ≤≈°σ, ≈σ∞ ∩σ≡σπ≡≤τΩα ∞σ≥εΣα setBounds(), Σδ  ε∩≡σΣσδσφΦ  Φτ∞σφσφΦ 
  3229. ≡ατ∞σ≡εΓ - Φ±∩εδⁿτεΓα≥ⁿ φεΓ≤■ ∞εΣσδⁿ ±εß√≥ΦΘ. ╟α∞σ≥ⁿ≥σ, ≈≥ε φεΓεσ API
  3230. Γ√τ√Γασ≥ ≤±≥α≡σΓ°σσ.
  3231.  
  3232. ╧≡Φσ∞δΦ∞√Θ ∩≤≥ⁿ ε∩≡σΣσδσφΦ  Φτ∞σφσφΦ  ≡ατ∞σ≡εΓ Γ JDK 1.1.⌡ ²≥ε
  3233. τα≡σπΦ±≥≡Φ≡εΓα≥ⁿ ComponentListener φα Frame'σ, ∩≡ΦßδΦτΦ≥σδⁿφε ≥αΩ:
  3234.  
  3235. import java.awt.*;
  3236. import java.awt.event.*;
  3237.  
  3238. class MyFrame extends Frame {
  3239.     public MyFrame() {
  3240.         addComponentListener(new CmpAdapter());
  3241.     }
  3242.  
  3243.     class CmpAdapter extends ComponentAdapter {
  3244.         public void componentResized(ComponentEvent evt) {
  3245.             //doSomething();
  3246.         }
  3247.     }
  3248. }
  3249.  
  3250. ╚φα≈σ ≥αΩεπε µσ ²⌠⌠σΩ≥α ∞εµφε ΣεßΦ≥±  ≥αΩΦ∞ εß≡ατε∞:
  3251.  
  3252. class MyFrame extends Frame implements ComponentListener {
  3253.     public MyFrame() {
  3254.         addComponentListener(this);
  3255.     }
  3256.  
  3257.     public componentHidden(ComponentEvent evt) { }
  3258.     public componentMoved(ComponentEvent evt) { }
  3259.     public componentShown(ComponentEvent evt) { }
  3260.     public componentResized(ComponentEvent evt) {
  3261.         //doSomething
  3262.     }
  3263. }
  3264.  
  3265. ╚δΦ ≥αΩ:
  3266.  
  3267.   public MyFrame() {
  3268.           addComponentListener(new ComponentAdapter() {
  3269.             public void componentResized(ComponentEvent evt) {
  3270.               // doSomething;
  3271.         }
  3272.       } );
  3273.     }
  3274.  
  3275. *(╫α±≥ⁿ 10) ─δ  ≈σπε ∩≡σΣφατφα≈σφ√ ∞σ≥εΣ√ Component preferredSize() Φ
  3276. minimumSize()?
  3277.  
  3278. [*] ▌≥Φ ∞σ≥εΣ√ ∩ετΓεδ ■≥ LayoutManager≤ Γ√≈Φ±δ ≥ⁿ ∩≡εΣ∩ε≈≥Φ≥σδⁿφ√Θ Φ
  3279. ∞ΦφΦ∞αδⁿφ√Θ ≡ατ∞σ≡√ Ωε∞∩εφσφ≥, Ωε≥ε≡√σ εφ ≤∩ε≡ Σε≈ΦΓασ≥. ┬√ ∞εµσ≥σ
  3280. ≤∩≡αΓδ ≥ⁿ τφα≈σφΦ ∞Φ, Ωε≥≡√σ Φ±∩εδⁿτ≤σ≥ LayoutManager, ±ετΣαΓα  ∩εΣΩδα±±√
  3281. Φ±∩εδⁿτ≤σ∞√⌡ Γα∞Φ Ωε∞∩εφσφ≥εΓ Φ ∩σ≡σπ≡≤µα  ²≥Φ ∞σ≥εΣ√. ┬√ Φ⌡ φσ Γ√τ√Γασ≥σ,
  3282. ┬√ ∩σ≡σπ≡≤µασ≥σ Φ⌡ Φ εφΦ Γ√τ√Γα■≥±  Φτ Γφσ.
  3283.  
  3284. *(╫α±≥ⁿ 10) Hε ≡ατΓσ AWT φσ ∞εµσ≥ ∩≡ε±≥ε τα∩ε∞φΦ≥ⁿ, ≈≥ε ß√δε Γ√ΓσΣσφε Γ
  3285. Σαφφ√Θ Ωεφ≥σΩ±≥ Graphics Φ ∩≡εΣ≤ßδΦ≡εΓα≥ⁿ ²≥ε Γ∞σ±≥ε ≥επε, ≈≥εß√ Γ√τ√Γα≥ⁿ
  3286. paint()?
  3287.  
  3288. [*] HαΓσ≡φεσ, ∞εµσ≥, φε ΩαΩ Γ√ ±∞εµσ≥σ ε≥∞σφΦ≥ⁿ ≈≥ε-≥ε, ≈≥ε ≤µσ ß√δε
  3289. φα≡Φ±εΓαφε? ╩αΩ Γ√ ±∞εµσ≥σ φα≈α≥ⁿ ≡Φ±εΓαφΦσ ταφεΓε, ± Σ≡≤πΦ∞ ±εΣσ≡µΦ∞√∞?
  3290. ▌≥Φ ∩≡εßδσ∞√ ∞εµφε ≡σ°Φ≥ⁿ, σ±δΦ ΓΓσ±≥Φ Σε∩εδφΦ≥σδⁿφ√σ ∞σ≥εΣ√, φε ²≥ε φσ
  3291. δ≤≈°ΦΘ Γ√⌡εΣ. Hα ∩≡αΩ≥ΦΩσ πε≡ατΣε ∩≡ε∙σ Φ∞σ≥ⁿ Γετ∞εµφε±≥ⁿ Γτπδ φ≤≥ⁿ φα
  3292. ∞σ≥εΣ paint Φ ≤ΓΦΣσ≥ⁿ Γ±σ, ≈≥ε ß≤Σσ≥ ±Σσδαφε ∩≡Φ ∩σ≡σ≡Φ±εΓΩσ ²≥εΘ
  3293. Ωε∞∩εφσφ≥√. ╚≥επ: ╚±∩εδⁿτ≤Θ≥σ paint(), α φσ g=getGraphics(); g.drawString(
  3294. ...
  3295.  
  3296. *(╫α±≥ⁿ 10) ╩επΣα   ≈α±≥ε Γ√τ√Γα■ repaint(), ∩εδεΓΦφα ∞εΦ⌡ τα∩≡ε±εΓ
  3297. ≥σ≡ σ≥±  Φ φσ ε≥εß≡αµασ≥±  φα ²Ω≡αφσ. ╧ε≈σ∞≤?
  3298.  
  3299. [*] repaint() ≥εδⁿΩε ±εεß∙ασ≥ AWT, ≈≥ε Γ√ ⌡ε≥Φ≥σ, ≈≥εß√ ∩≡εΦτε°δα
  3300. ∩σ≡σ≡Φ±εΓΩα. AWT ±εßσ≡σ≥ φσ±ΩεδⁿΩε ∩ε±δσΣεΓα≥σδⁿφ√⌡ τα∩≡ε±εΓ φα ∩σ≡σ≡Φ±εΓΩ≤
  3301. Γ εΣΦφ, ≥αΩ ≈≥ε ß≤Σσ≥ Γ√∩εδφσφα ≥εδⁿΩε ±α∞α  ∩ε±δσΣφ   ∩σ≡σ≡Φ±εΓΩα. ╬ΣΦφ Φτ
  3302. Γετ∞εµφ√⌡ εß⌡εΣφ√⌡ ∩≤≥σΘ - Φ±∩εδⁿτεΓα≥ⁿ ε≥±σΩα■∙ΦΘ ∩≡ ∞ε≤πεδⁿφΦΩ Φ
  3303. ∩σ≡σ≡Φ±εΓ√Γα≥ⁿ ≥εδⁿΩε ≥σ ≤≈α±≥ΩΦ, Ωε≥ε≡√σ ß√δΦ Φτ∞σφσφ√.
  3304. *(╫α±≥ⁿ 10) ╧ε≈σ∞≤   ∩εδ≤≈α■ ²≥ε ±εεß∙σφΦσ, σ±δΦ Φ±∩εδⁿτ≤■ JDK 1.1 ∩εΣ X
  3305. Windows?
  3306.  
  3307. java.lang.NullPointerException
  3308. at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:59)
  3309. at sun.awt.motif.MToolkit.createFrame(MToolkit.java:153)
  3310. at java.awt.Frame.addNotify(Frame.java)
  3311. at java.awt.Window.pack(Window.java)
  3312.  
  3313. [*] ┬ Γα°σΘ ±Φ±≥σ∞σ ε≥±≤≥±≥Γ≤σ≥ °≡Φ⌠≥. ╧σ≡σΦ∞σφ≤Θ≥σ font.properties Φτ
  3314. ∩εΣΩα≥αδεπα "lib" Γ font.properties.bak. ╥επΣα JDK φσ ß≤Σσ≥ Φ±Ωα≥ⁿ
  3315. φσ±≤∙σ±≥Γ≤■∙ΦΘ °≡Φ⌠≥.
  3316.  
  3317. ▌≥α ∩≡εßδσ∞α ΓετφΦΩασ≥, ∩ε±ΩεδⁿΩ≤ ßΦßδΦε≥σΩΦ Motif AWT Φ±∩εδⁿτ≤■≥ °≡Φ⌠≥
  3318. "plain Dialog 12 point" Γ Ωα≈σ±≥Γσ °≡Φ⌠≥α ∩ε ≤∞εδ≈αφΦ■. ╩ φσ±≈α±≥ⁿ■, σ±δΦ
  3319. Φ±∩εδⁿτ≤σ≥±  ≤Σαδσφφ√Θ X ±σ≡Γσ≡, ²≥ε °≡Φ⌠≥ ΦφεπΣα φσΣε±≥≤∩σφ.
  3320.  
  3321. ─δ  X ≥σ≡∞Φφαδα ΣΦαπφε±≥Φ≈σ±ΩΦσ ±εεß∙σφΦ  ∞επ≤≥ ±δσπΩα ε≥δΦ≈α≥ⁿ± :
  3322.  
  3323. % appletviewer HelloWorldApplet.html
  3324. SIGSEGV 11* segmentation violation
  3325. si_signo [11]: SIGSEGV 11* segmentation violation
  3326. si_errno [0]: Error 0
  3327. si_code [1]: SEGV_ACCERR [addr: 0x14]
  3328.  
  3329. ─δ  ≥επε, ≈≥εß√ ε∩≡σΣσδΦ≥ⁿ, ΩαΩΦσ °≡Φ⌠≥√ Φ∞σ■≥±  ≤ Γα± Γ φαδΦ≈ΦΦ,
  3330. Φ±∩εδⁿτ≤Θ≥σ Ωε∞αφΣ≤ ΓΦΣα
  3331.  
  3332. xlsfonts > ~/fonts.txt
  3333.  
  3334. ╟α≥σ∞ ∩≡εΘΣΦ≥σ±ⁿ ∩ε ΣδΦφφε∞≤ ±∩Φ±Ω≤ °≡Φ⌠≥εΓ Φ Γ√ßσ≡Φ≥σ ≥σ, Ωε≥ε≡√σ ⌡ε≥Φ≥σ
  3335. Φ±∩εδⁿτεΓα≥ⁿ. ╧≡επ≡α∞∞α xfd Σσ∞εφ±≥≡Φ≡≤σ≥ Γ√ß≡αφφ√Θ °≡Φ⌠≥:
  3336.  
  3337. xfd -fn "Φ∞  Γα°σπε °≡Φ⌠≥α" &
  3338.  
  3339. *(Sect. 10) ╧ε≈σ∞≤ GridBagLayout ≥αΩ ±δεµφε Φ±∩εδⁿτεΓα≥ⁿ?
  3340.  
  3341. [*] ─δ  ²≥επε σ±≥ⁿ ΣΓσ ∩≡Φ≈Φφ√. ┬ε-∩σ≡Γ√⌡, ⌡ε≥  φσßεδⁿ°Φσ ≤∩αΩεΓΩΦ ΣεΓεδⁿφε
  3342. ∩≡ε±≥√, Σσ≥αδΦτΦ≡εΓαφφα  ≤∩αΩεΓΩα Σδ  GUI ε≈σφⁿ ±δεµφα. ┬ε-Γ≥ε≡√⌡, ∩≡Φ
  3343. ≡ατ≡αßε≥Ωσ GridBagLayout ≈σδεΓσ≈σ±ΩΦΘ ⌠αΩ≥ε≡ Φ ∩≡ε±≥ε≥α Φ±∩εδⁿτεΓαφΦ  φσ
  3344. ß√δΦ ε±φεΓφεΘ ÷σδⁿ■. ┼±δΦ ²≥ε Γα± ≡ατΣ≡αµασ≥ (∞σφ  ²≥ε ≡ατΣ≡αµασ≥), φσ
  3345. Φ±∩εδⁿτ≤Θ≥σ GridBagLayout. ╨ατ∞σ±≥Φ≥σ ±ΓεΘ GUI φα φσ±ΩεδⁿΩΦ⌡ ∩αφσδ ⌡ Φ
  3346. Φ±∩εδⁿτ≤Θ≥σ Σδ  ΩαµΣεΘ Φτ φΦ⌡ ±ΓεΘ ∞σφσΣµσ≡ ≤∩αΩεΓΩΦ, ≈≥εß√ Σε±≥Φ≈ⁿ φ≤µφεπε
  3347. Γα∞ ²⌠⌠σΩ≥α. ╬⌠Φ÷Φαδⁿφεσ εß· ±φσφΦσ, Σαφφεσ ≡≤ΩεΓεΣΦ≥σδσ∞ ∩≡εσΩ≥α AWT
  3348. ≤≈α±≥φΦΩα∞ Mountain View Java Users Group 4 ΣσΩαß≡  1996, τΓ≤≈Φ≥ ≥αΩ:
  3349.  
  3350.      "╥αΩ ±δ≤≈Φδε±ⁿ, Φ ²≥ε ≤µσ ∩≡Φφ ≥ε Ω ±ΓσΣσφΦ■, ≈≥ε GridBagLayout
  3351.      ±δΦ°Ωε∞ ±δεµσφ Σδ  ≥επε, ≈≥εß√ Γ√∩εδφ ≥ⁿ Γετδεµσφφ√σ φα φσπε ⌠≤φΩ÷ΦΦ.
  3352.      GBL ß≤Σσ≥ ∩ε-∩≡σµφσ∞≤ ∩εΣΣσ≡µΦΓα≥ⁿ± , φε ≥αΩµσ ß≤Σσ≥ Γ±Ωε≡σ Γ√∩≤∙σφ
  3353.      ≤δ≤≈°σφφ√Θ Φ ≤∩≡ε∙σφφ√Θ Γα≡Φαφ≥. ▌≥ε≥ '≤δ≤≈°σφφ√Θ GBL' ∞εµσ≥ ß√≥ⁿ
  3354.      Φ±∩εδⁿτεΓαφ Γ∞σ±≥ε GBL."
  3355.  
  3356. ╚≥επ: φσ φ≤µφε ≥≡α≥Φ≥ⁿ ≤±ΦδΦΘ φα GBL, φα Σαφφ√Θ ∞ε∞σφ≥ ±≤∙σ±≥Γ≤■≥ ßεδσσ
  3357. ∩≡ε±≥√σ αδⁿ≥σ≡φα≥ΦΓ√. ╩ ≥ε∞≤ µσ, GBL  Γδ σ≥±  ∩≡Φ≈ΦφεΘ ≤≥σ≈ΩΦ ∩α∞ ≥Φ. GBL
  3358. Γ±≥αΓδ σ≥ "ΣεßαΓδσφφ√σ" Ωε∞∩εφσφ≥√ Γ ⌡²°-≥αßδΦ÷≤, φε
  3359. removeLayoutComponent() Φ⌡ φΦΩεπΣα φσ ≤Σαδ σ≥. ╤∞. ε°ΦßΩ≤ φε∞σ≡ 4195295.
  3360.  
  3361. ╥≡≤Σφε ∩≡εΘ≥Φ ∞Φ∞ε ΣεΩ≤∞σφ≥α÷ΦΦ ∩ε GBL. ╬±φεΓ√Γα ±ⁿ φα ε≈σΓΦΣφε∞ ±⌡εΣ±≥Γσ,
  3362. σσ ∞εµφε Γτ ≥ⁿ Φτ grid layout manager Φτ Tk (Tcl/Tk). ┼±δΦ Γα∞ φσ φ≡αΓ ≥± 
  3363. Γδεµσφφ√σ ∩αφσδΦ Φ φΦ εΣΦφ Φτ Σ≡≤πΦ⌡ ∞σφσΣµσ≡εΓ ≤∩αΩεΓΩΦ φσ Σσδασ≥ ≥επε,
  3364. ≈≥ε Γα∞ φ≤µφε (ΦδΦ Γ√ ≡αßε≥ασ≥σ ± ≤φα±δσΣεΓαφφ√∞ ΩεΣε∞, Ωε≥ε≡√Θ ≤µσ σπε
  3365. Φ±∩εδⁿτ≤σ≥), ΣεΩ≤∞σφ≥α÷Φ  Φτ Tk ∞εµσ≥ Γα∞ ∩≡ΦπεΣΦ≥ⁿ± .
  3366.  
  3367. *(╫α±≥ⁿ 10) MyClass ≡αßε≥ασ≥ ε≥δΦ≈φε, τα Φ±Ωδ■≈σφΦσ∞ ±δ≤≈α , ΩεπΣα   ⌡ε≈≤
  3368. ≤±≥αφεΓΦ≥ⁿ Σ≡≤πεΘ °≡Φ⌠≥. ▀ φσ ∞επ≤ τα±≥αΓΦ≥ⁿ ²≥ε ≡αßε≥α≥ⁿ ∩εΣ Win95, φε ≥ε
  3369. µσ ±α∞εσ ≡αßε≥ασ≥ ∩εΣ MacOS Φ Unix.
  3370.  
  3371. [*] ┬√, ±Ωε≡σσ Γ±σπε, ≤ΩαταδΦ °≡Φ⌠≥, Ωε≥ε≡√Θ ε≥±≤≥±≥Γ≤σ≥ Γ Γα°σΘ ∩ε±≥αΓΩσ
  3372. Win95; ²≥ε εΣφε Φτ ≡ατδΦ≈ΦΘ ∞σµΣ≤ ∩δα≥⌠ε≡∞α∞Φ, φα Ωε≥ε≡√σ Γ√ ∞εµσ≥σ
  3373. φα≥εδΩφ≤≥ⁿ± , σ±δΦ Φ±∩εδⁿτ≤σ≥σ ±∩σ÷Φ⌠ΦΩ≤ εΣφεΘ Φτ ∩δα≥⌠ε≡∞, φα∩≡Φ∞σ≡,
  3374. ταΣασ≥σ "Arial" Γ Ωα≈σ±≥Γσ °≡Φ⌠≥α Φ ≡α±±≈Φ≥√Γασ≥σ, ≈≥ε ²≥ε ß≤Σσ≥ ≡αßε≥α≥ⁿ
  3375. φα ∩δα≥⌠ε≡∞α⌡, ε≥δΦ≈φ√⌡ ε≥ Windows.
  3376.  
  3377. ─δ  Windows 95 Φ Solaris 2.6 ²≥Φ °≡Φ⌠≥√
  3378.  
  3379.    * Dialog
  3380.    * SansSerif
  3381.    * Serif
  3382.    * Monospaced
  3383.    * Helvetica
  3384.    * TimesRoman
  3385.    * Courier
  3386.    * DialogInput
  3387.    * ZapfDingbats
  3388.  
  3389. εßφα≡≤µσφ√ ±δσΣ≤■∙σΘ ∩≡επ≡α∞∞εΘ:
  3390.  
  3391. import java.awt.*;
  3392.  
  3393. class foonly {
  3394.     static public void main(String s[])
  3395.     {
  3396.         String n[]= new Frame().getToolkit().getFontList();
  3397.         for (int i=0;i<n.length; i++)
  3398.             System.out.println(n[i]);
  3399.  
  3400.         System.exit(0);
  3401.     }
  3402. }
  3403.  
  3404. ─≡≤πΦ∞Φ ±δεΓα∞Φ, Γ√ ∞εµσ≥σ ∩εδ≤≈Φ≥ⁿ ∞α±±ΦΓ ≥Φ∩α String Φ∞σφ °≡Φ⌠≥εΓ,
  3405. Φ±∩εδⁿτ≤ 
  3406.  
  3407. String[] fonts = Toolkit.getDefaultToolkit().getFontList()
  3408.  
  3409. ┬∞σ±≥ε φα±≥ε ∙Φ⌡ Φ∞σφ °≡Φ⌠≥εΓ, ≥αΩΦ⌡ ΩαΩ Helvetica, TimesRoman, Φ Courier Γ
  3410. JDK 1.1 ß√δε ε≥Σαφε ∩≡σΣ∩ε≈≥σφΦσ ±≥Φδ ∞, ≥αΩΦ∞, ΩαΩ SansSerif, Serif, Φ
  3411. Monospaced (±εε≥Γσ≥±≥Γσφφε). ╤≥Φδⁿ °≡Φ⌠≥α ß≤Σσ≥ ε≥εß≡αµα≥ⁿ±  Γ φαΦßεδσσ
  3412. ∩εΣ⌡εΣ ∙ΦΘ °≡Φ⌠≥ Σδ  ΣαφφεΘ ∩δα≥⌠ε≡∞√.
  3413.  
  3414. ┬ φα±≥ε ∙ΦΘ ∞ε∞σφ≥ Σδ  ε≥εß≡αµσφΦ  ±≥ΦδσΘ Γ Φ∞σφα ±Φ±≥σ∞φ√⌡ °≡Φ⌠≥εΓ
  3415. Φ±∩εδⁿτ≤■≥±  τα∩Φ±Φ Γ εΣφε∞ Φτ ⌠αΘδεΓ font.properties Γ $JAVAHOME/lib.
  3416. ╚∞σσ≥±  φσ±ΩεδⁿΩε ⌠αΘδεΓ font.properties, ±εε≥Γσ≥±≥Γ≤■∙Φ⌡ ≡ατφ√∞
  3417. δεΩαδΦτα÷Φ ∞. ┼±δΦ Γα∞ φ≤µφε ß√±≥≡ε ∩≡ε≥σ±≥Φ≡εΓα≥ⁿ φεΓ√Θ °≡Φ⌠≥, Γ√ ∞εµσ≥σ
  3418. Φτ∞σφΦ≥ⁿ ⌠αΘδ ΦδΦ Σε∩εδφΦ≥ⁿ σπε ≥αΩ, ≈≥ε ε≥εß≡αµσφΦσ ß≤Σσ≥ ∩≡εΦτΓεΣΦ≥ⁿ±  Γ
  3419. ≥ε≥ °≡Φ⌠≥, Ωε≥ε≡√Θ Γ√ ⌡ε≥Φ≥σ ∩≡εΓσ≡Φ≥ⁿ.
  3420.  
  3421. *(╫α±≥ⁿ 10) ▀ ±ετΣαδ Lightweight-Ωε∞∩εφσφ≥≤ (Ωε∞∩εφσφ≥≤, φσ∩ε±≡σΣ±≥Γσφφε
  3422. ≡α±°Φ≡ ■∙≤■ Ωδα±± Component), φε εφα ∞σ≡÷ασ≥/φσ ∩σ≡σ≡Φ±εΓ√Γασ≥±  ΩαΩ
  3423. ±δσΣ≤σ≥. ╧ε≈σ∞≤?
  3424.  
  3425. [*] Lightweight-Ωε∞∩εφσφ≥√, ∩ε±ΩεδⁿΩ≤ εφΦ ±≈Φ≥α■≥±  "∩≡ετ≡α≈φ√∞Φ", φσ
  3426. ∩σ≡σ≡Φ±εΓ√Γα■≥±  φσ∩ε±≡σΣ±≥Γσφφε Γ ε≥Γσ≥ φα repaint(). ╘αΩ≥Φ≈σ±ΩΦ
  3427. Component.repaint() ∩≡ε±∞α≥≡ΦΓασ≥ ±≥σΩ Ωε∞∩εφσφ≥ ±φΦτ≤ ΓΓσ≡⌡, φα⌡εΣΦ≥
  3428. "φσ∩≡ετ≡α≈φ≤■" Heavyweight-Ωε∞∩εφσφ≥≤ (εφα Σεδµφα ß√≥ⁿ Ωεφ≥σΘφσ≡ε∞), Φ
  3429. τα≥σ∞ Γ√τ√Γασ≥ *σσ* ∞σ≥εΣ repaint().
  3430.  
  3431. ╚τ ²≥εΘ ≥ε≈ΩΦ ≤∩≡αΓδσφΦσ Γ Φ≥επσ ∩σ≡σΣασ≥±  ∞σ≥εΣ≤ Container.update().
  3432. ╧σ≡Γεσ, ≈≥ε εφ Σσδασ≥ - Γ√τ√Γασ≥ super.update, ∩≡ΦΓεΣ  φα± Ω
  3433. Component.update(), Ωε≥ε≡√Θ ε≈Φ∙ασ≥ Ωε∞∩εφσφ≥≤ ÷Γσ≥ε∞ ⌠εφα, ∩ε±ΩεδⁿΩ≤ εφ
  3434. ß√δ Γ√τΓαφ Σδ  heavyweight-Ωε∞∩εφσφ≥√, Φ ταΓσ≡°ασ≥± . ╟α≥σ∞
  3435. Container.update() Γ√τ√Γασ≥ update ≡σΩ≤≡±ΦΓφε Σδ  Γ±σ⌡
  3436. Lightweight-Ωε∞∩εφσφ≥, Ωε≥ε≡√σ ²≥ε≥ Ωεφ≥σΘφσ≡ ±εΣσ≡µΦ≥.
  3437.  
  3438. ╚≥επ: "∩≡ετ≡α≈φε±≥ⁿ" lightweight-Ωε∞∩εφσφ≥ ß≤Σσ≥ ≡αßε≥α≥ⁿ ∩≡αΓΦδⁿφε (ßστ
  3439. ∞σ≡÷αφΦ ) σ±δΦ ∩σ≡Γα  Σε±≥≤∩φα  Γ√°σ ∩ε Φσ≡α≡⌡ΦΦ ΓΩδ■≈σφΦ 
  3440. heavyweight-Ωε∞∩εφσφ≥α  Γδ σ≥± 
  3441.  
  3442.    * heavyweight-Ωε∞∩εφσφ≥εΘ ± ΣΓεΘφεΘ ß≤⌠σ≡Φτα÷ΦσΘ (εφα Σεδµφα ß√≥ⁿ
  3443.      Ωεφ≥σΘφσ≡ε∞), ΦδΦ
  3444.    * heavyweight-Ωε∞∩εφσφ≥εΘ, Ωε≥ε≡α  φΦΩεπΣα φσ εßφεΓδ σ≥± , α ≥εδⁿΩε
  3445.      ∩σ≡σ≡Φ±εΓ√Γασ≥±  (≥.σ. ≥αΩεΘ, πΣσ ∞σ≥εΣ update() ∩σ≡σΩ≡√≥ Φ ⌠εφ ∩ε
  3446.      ≤∞εδ≈αφΦ■ φσ ε≈Φ∙ασ≥± ).
  3447.  
  3448. ┼±δΦ ²≥ε φσ ±Σσδαφε, update() ∩ε ≤∞εδ≈αφΦ■ ß≤Σσ≥ Γ±σπΣα ε≈Φ∙α≥ⁿ ⌠εφ ∩σ≡σΣ
  3449. ΩαµΣεΘ ∩σ≡σ≡Φ±εΓΩεΘ, Γ√τ√Γα  φσ∩≡Φ ≥φεσ ∞σ≡÷αφΦ■.
  3450.  
  3451. ─≡≤πεΘ Γαµφ√Θ ∞ε∞σφ≥ ±ε±≥εΦ≥ Γ ≥ε∞, ≈≥ε σ±δΦ Γα° Ωεφ≥σΘφσ≡ ε∩≡σΣσδ σ≥
  3452. ±εß±≥Γσφφ√Θ ∞σ≥εΣ paint(), ≥ε εφ εß ταφ Γ√τ√Γα≥ⁿ super.update/paint(),
  3453. Φφα≈σ ±εΣσ≡µα∙Φσ±  Γ φσ∞ lightweight-Ωε∞∩εφσφ≥√ φΦΩεπΣα φσ ß≤Σ≤≥
  3454. ∩σ≡σ≡Φ±εΓαφ√. ╤εß≡αΓ ²≥ε ΓεσΣΦφε, ∞√ ΓΦΣΦ∞, ≈≥ε Γ Σαφφε∞ ±δ≤≈ασ Σδ 
  3455. φε≡∞αδⁿφεΘ ≡αßε≥√ φ≤µφε Γφσ±σφΦσ ∞ΦφΦ∞αδⁿφ√⌡ Φτ∞σφσφΦΘ Γ ΩεΣ - ∩ε∞σ±≥Φ≥ⁿ
  3456. ∞σ≥εΣ
  3457.  
  3458. public void update(Graphics g) {
  3459.     super.paint(g);
  3460. }
  3461.  
  3462. Γ ßδΦµαΘ°ΦΘ Γ Φσ≡α≡⌡ΦΦ Ωε∞∩εφσφ≥ heavyweight-Ωεφ≥σΘφσ≡, ±εΣσ≡µα∙ΦΘ
  3463. lightweight-Ωε∞∩εφσφ≥√, Ωε≥ε≡√σ φΦ≈σπε φσ Γ√ΓεΣ ≥ Γ ≥σ⌡ εßδα±≥ ⌡, Ωε≥ε≡√σ
  3464. ≤µσ ß√δΦ ∩≡ε≡Φ±εΓαφ√ Φ⌡ ≡εΣΦ≥σδ ∞Φ, ≥.σ. "φσ∩≡ετ≡α≈φ√σ" Ωε∞∩εφσφ≥√. ├≡ τφε,
  3465. φε ß√±≥≡ε.
  3466.  
  3467. ┼±δΦ Γ√ ⌡ε≥Φ≥σ φε≡∞αδⁿφε ≡αßε≥α≥ⁿ ± ∩≡ετ≡α≈φ√∞Φ Ωε∞∩εφσφ≥α∞Φ, ε∩Φ±αφφ√Θ
  3468. Γ√°σ ∞σ≥εΣ τα∞σφ σ≥±  φα
  3469.  
  3470.   public void update(Graphics g) {
  3471.     // ±≥αφΣα≡≥φεσ ±ετΣαφΦσ Γφσ²Ω≡αφφεπε Ωεφ≥σΩ±≥α.
  3472.     offg.fillRect(φ≤µφ√Θ ÷Γσ≥ ⌠εφα, ∩εδφ√Θ ≡ατ∞σ≡);
  3473.     super.paint(offg);
  3474.     g.drawImage(myimage, 0, 0, null);
  3475.     }
  3476.  
  3477.   public void paint(Graphics g) {
  3478.     // φα ±δ≤≈αΘ Φτ∞σφσφΦ  ≡ατ∞σ≡α ∞εµσ≥ Γφα≈αδσ Γ√τ√Γα≥ⁿ update().
  3479.     super.paint(offg);
  3480.     g.drawImage(myimage, 0, 0, null);
  3481.     }
  3482.  
  3483. ╚⌡ ∞εµφε εß·σΣΦφΦ≥ⁿ, σ±δΦ τα±≥αΓΦ≥ⁿ this.update() Γ√τ√Γα≥ⁿ this.paint(), ±
  3484. ∩εΣ±≥αφεΓΩεΘ ≡ατδΦ≈φ√⌡ τφα≈σφΦΘ ∩α≡α∞σ≥≡εΓ, φε ∩≡ε∙σ Γ±σπε ∩σ≡σΩ≡√≥ⁿ Φ⌡ ∩ε
  3485. ε≥Σσδⁿφε±≥Φ, ΩαΩ Γ ∩≡Φ∞σ≡σ.
  3486.  
  3487. *(╫α±≥ⁿ 10) ┬ ≈σ∞ ≡ατφΦ÷α ∞σµΣ≤ ∞σ≥εΣε∞ setForeground(Color c) Ωδα±±α
  3488. Component Φ setColor(Color c) Ωδα±±α Graphics?
  3489.  
  3490. [*] ┬ε ∩σ≡Γ√⌡, ²≥Φ ΣΓα ∞σ≥εΣα Σσδα■≥ εΣφε Φ ≥εµσ: ≤±≥αφαΓδΦΓα■≥ ÷Γσ≥ Γ
  3491. τφα≈σφΦσ ∩α≡α∞σ≥≡α. ╨ατφΦ÷α Γ ≥ε∞, πΣσ ²≥ε Φ±∩εⁿτ≤σ≥± . ┼±≥ⁿ σ∙σ
  3492. Component.setBackground, Ωε≥ε≡√Θ ≤±≥αφαΓδΦΓασ≥ ÷Γσ≥ ⌠εφα.
  3493.  
  3494. ┼±δΦ ┬√ ∩Φ°Φ≥σ Ωεφ±≥≡≤Ω≥ε≡ ΦδΦ εß≡αßε≥≈ΦΩ ±εß√≥Φ  (Γ≡εΣσ "Hαµ∞Φ≥σ τΣσ±ⁿ
  3495. ≈≥εß√ ±Σσδα≥ⁿ ≡Φ±≤φεΩ ±ΦφΦ∞"), ≥ε ≤ Γα± σ±≥ⁿ Component Φ φ≤µφε Φ±∩εδⁿτεΓα≥ⁿ
  3496. ∞σ≥εΣ setForeground(). └ Γε≥ Γ ∞σ≥≥εΣσ paint() ≤ Γα± σ±≥ⁿ α≡π≤∞σφ≥ ≥Φ∩α
  3497. Graphics, Φ ∩ε²≥ε∞≤ εß√≈φε Φ±∩εδⁿτ≤σ≥±  g.setColor(c).
  3498.  
  3499. ┬ ε≥δΦ≈Φσ ε≥ Ωδα±±α Component, Ωδα±± Graphics φσ Φ∞σσ≥ φσταΓΦ±Φ∞√⌡ ÷Γσ≥α
  3500. ⌠εφα Φ ÷Γσ≥α ≡Φ±≤φΩα. ├≡α⌠Φ≈σ±ΩΦΘ εßⁿσΩ≥ ∩ε±≥≤∩ασ≥ ± ÷Γσ≥ε∞, ∩εδ≤≈σφ√∞ ε≥
  3501. ≡Φ±≤σ∞εΘ ∩εΓσ≡⌡φε±≥Φ. Hε ∩ε±δσ Γ√τεΓα setColor() Γ±  π≡α⌠ΦΩα ß≤Σσ≥
  3502. ≡Φ±εΓα≥ⁿ±  ≤Ωαταφ√∞ ÷Γσ≥ε∞. ╥αΩ ΩαΩ ²≥Φ ∞σ≥εΣ√ Σσδα■≥ ≡ατφ√σ Γσ∙Φ, φατΓαφ√
  3503. εφΦ ∩ε ≡ατφε∞≤.
  3504.  
  3505. *(╫α±≥ⁿ 10) ╩επΣα   ΣΓΦπα■ ∞√°ⁿ■ ± φαµα≥εΘ Ωφε∩ΩεΘ Γ Component Φ τα≥σ∞
  3506. ±ΣΓΦπα■ ∞√°ⁿ ± Component, ≥ε Γ±σ ±εß√≥Φ  ∩ε±√δα■≥±  Γ ≥ε≥ Component, ⌡ε≥ 
  3507. Ω≤≡±ε≡ Φ Γφσ σπε. ▌≥ε ε°ΦßΩα?
  3508.  
  3509. [*] Hσ≥, ²≥ε ε±εßεσ ±ΓεΘ±≥Γε. ─εΩ≤∞σφ≥α÷Φ  ε Java API πδα±Φ≥:
  3510.  
  3511.      "... ╧≡Φ φαµα≥εΘ Ωφε∩Ωσ ∞√°Φ ±εß√≥Φ  ε ΣΓΦµσφΦΦ ∞√°Φ ∩ε±√δα■≥±  Γ
  3512.      Ωε∞∩εφσφ≥ Σαµσ ΩεπΣα Ω≤≡±ε≡ Γ√⌡εΣΦ≥ τα ∩≡σΣσδ√ Ωε∞∩εφσφ≥α. ▌≥ε
  3513.      ∩≡εΣεδµασ≥±  Σε ≥σ⌡ ∩ε≡, ∩εΩα Ωφε∩Ωα φσ ß≤Σσ≥ ε≥∩≤∙σφα..."
  3514.  
  3515. ▌≥ε ±Σσδαφε Σδ  ≤Σεß±≥Γα Φ εßδσπ≈σφΦ  ∩≡επ≡α∞∞Φ≡εΓαφΦ . ┬√ ∞εµσ≥σ
  3516. εß≡αßα≥√Γα≥ⁿ "∩≡σ≥α±ΩΦΓαφΦ " ± ∞σ±≥ε φα ∞σ±≥ε. ┼±δΦ ²≥ε Γα∞ φσ φ≤µφε, ≥ε
  3517. ∩≡ε±≥ε ∩≡εΓσ≡≥σ Ωεε≡ΣΦφα≥√ ±εß√≥Φ , Φ Φπφε≡Φ≡≤Θ≥σ Φ⌡, σ±δΦ εφΦ ∩≡εΦ±⌡εΣ ≥
  3518. Γφσ Ωε∞∩εφσφ≥α.
  3519.  
  3520. *(╫α±≥ⁿ 10) ╧ε≈σ∞≤ ∞εΦ εΩφα φσ ταΩ≡√Γα■≥± , ΩεπΣα   φαµΦ∞α■ φα Ωφε∩Ω≤
  3521. ταΩ≡√≥Φ  Γ ταπεδεΓΩσ?
  3522.  
  3523. [*] ┬ε≥ ΩαΩ φ≤µφε Σσδα≥ⁿ:
  3524.  
  3525.    * JDK 1.0.2: ∩σ≡σ⌡Γα≥√ΓαΘ≥σ Event.WINDOW_DESTROY Φ Γ√τ√ΓαΘ≥σ ∞σ≥εΣ√
  3526.      hide() Φ dispose() Σδ  Frame.
  3527.    * JDK 1.1:
  3528.         o ╤δ≤°αΘ≥σ ±εß√≥Φ  WindowEvent Φ Γ ∞σ≥εΣσ windowClosing() Γ√τ√ΓαΘ≥σ
  3529.           hide() Φ dispose(). ▌≥ε Σεδµφε ß√δε ß√≥ⁿ ΣσΘ±≥ΓΦσ ∩ε ≤∞εδ≈αφΦ■, Φ
  3530.           φαΩεφσ÷ ²≥ε ±Σσδαφε Γ Swing'εΓ±Ωε∞ JFrame.
  3531.         o ╨ατ≡σ°Φ≥σ ±εß√≥Φ  ≥Φ∩α AWTEvent.WINDOW_CLOSING Φ Γ√τ√ΓαΘ≥σ hide()
  3532.           Φ dispose() Γ σ≥εΣσ processWindowEvent().
  3533.    * JDK 1.2: ╩ε∞∩εφσφ≥ JFrame ∩ε ≤∞εδ≈αφΦ■ ±α∞ ταΩ≡√Γσ≥±  ∩≡Φ φαµα≥ΦΦ φα
  3534.      Ωε∩Ω≤ ταΩ≡√≥Φ  (±∞. ≡ατΣσδ 10).
  3535.  
  3536. *(╫α±≥ⁿ 10) ╩αΩ ∩≡Φφ≤ΣΦ≥σδⁿφε ±Φφ⌡≡εφΦτΦ≡εΓα≥ⁿ π≡α⌠Φ≈σ±ΩΦσ ε∩σ≡α÷ΦΦ,
  3537. φα∩≡Φ∞σ≡, ±∞σφ≤ Ω≤≡±ε≡α ΦδΦ αφΦ∞α÷Φ■?
  3538.  
  3539. [*] ▌≥ε Σσδασ≥±  ∞σ≥εΣε∞ sync() Γ Toolkit. ┬ε≥ ≥αΩ:
  3540.  
  3541. AnyComponent.getToolkit().sync();
  3542.  
  3543. *(╫α±≥ⁿ 10) ╩αΩ ± ∩ε∞ε°ⁿ■ ΩδαΓΦ°Φ Tab ∩σ≡σΣΓΦπα≥ⁿ ⌠εΩ≤± ∩ε Ωε∞∩εφσφ≥α∞?
  3544.  
  3545. [*] ┬ JDK 1.0 ┬√ Σεδµφ√ ±α∞Φ ≡σαπΦ≡εΓα≥ⁿ φα φαµα≥Φσ ΩδαΓΦ° Φ ±α∞ε∞≤
  3546. ∩≡επ≡α∞∞Φ≡εΓα≥ⁿ ∩σ≡σΣΓΦµσφΦ■. JDK 1.1 ∩εΣΣσ≡µΦΓασ≥ Tab Φ Shift+Tab (φαταΣ)
  3547. αΓ≥ε∞α≥Φ≈σ±ΩΦ. ╘εΩ≤± ∩σ≡σΣΓΦπασ≥±  Γ ≥ε∞ ∩ε≡ ΣΩσ, Γ ΩαΩε∞ Ωε∞∩εφσφ≥√ ß√δΦ
  3548. ∩ε∞σ∙σφ√ Γ Ωεφ≥σΘφσ≡.
  3549.  
  3550. *(╫α±≥ⁿ 10) ┬ ≈σ∞ ≡ατφΦ÷α ∞σµΣ≤ "φΦτΩε≤≡εΓφσΓ√∞Φ" Φ "±σ∞αφ≥Φ≈σ±ΩΦ∞Φ"
  3551. ±εß√≥Φ ∞Φ?
  3552.  
  3553. [*] HΦτΩε≤≡εΓφσΓ√σ ±εß√≥Φ  ±Γ ταφ√ ± ΩεφΩ≡σ≥φ√∞ Ωε∞∩εφσφ≥ε∞ (Φτ∞σφσφΦσ
  3554. ≡ατ∞σ≡α εΩφα, ΣΓΦµσφΦσ ∞√°ⁿ■, φαµα≥Φσ ΩδαΓΦ°Φ, ΣεßαΓδσφΦσ Ωε∞∩εφσφ≥α Γ
  3555. Ωεφ≥σΘφσ≡ Φ ≥.∩.). ╤σ∞αφ≥Φ≈σ±ΩΦσ ±εß√≥Φ  ΓετφΦΩα■≥, ΩεπΣα ┬√ ΣσΘ±≥Γ≤σ≥σ φα
  3556. ≤∩≡αΓδ ■∙ΦΘ Ωε∞∩εφσφ≥ (ΣΓΦπασ≥σ δΦφσΘΩ≤ ∩≡εΩ≡≤≥ΩΦ, φαµΦ∞ασ≥σ φα Ωφε∩Ω≤,
  3557. Γ√ßΦ≡ασ≥σ ∩≤φΩ≥ ∞σφ■ Φ ≥.∩.), Φ ≥αΩεΘ ≥Φ∩ ±εß√≥ΦΘ ∞εµσ≥ ß√≥ⁿ πσφσ≡Φ≡εΓαφ
  3558. φσ±ΩεδⁿΩΦ∞Φ ≡ατφ√∞Φ Ωε∞∩εφσφ≥α∞Φ. Button Φ List πσφσ≡Φ≡≤■≥ ±εß√≥Φσ Action
  3559. ΩεπΣα ┬√ φα φΦ⌡ φαµΦ∞Φσ≥σ.
  3560.  
  3561. ╤α∞√∞ πδαΓφ√∞ Σδ  ∩≡επ≡α∞∞Φ±≥α  Γδ σ≥±  ≥ε, ≈≥ε ┬√ ∞εµσ≥σ Φτ∞σφ ≥ⁿ
  3562. φΦτΩε≤≡εΓφσΓ√σ ±εß√≥Φ , ΩαΩ, φα∩≡Φ∞σ≡, τφα≈σφΦσ ΩδαΓΦ°Φ Γ ±εß√≥ΦΦ ε φαµα≥ΦΦ
  3563. ΩδαΓΦ°Φ, ∩≡Φ ²≥ε∞ φεΓεσ τφα≈σφΦσ ß≤Σσ≥ ε≥εß≡αµσφε. ╩≡ε∞σ ≥επε, ┬√ ±α∞Φ
  3564. ∞εµσ≥σ "∩ε≥≡σßΦ≥ⁿ" ≥αΩεσ ±εß√≥Φσ, Φ εφε φσ ß≤Σσ≥ Σε±≥αΓδσφε Ωε∞∩εφσφ≥≤. Hε
  3565. ± ±σ∞αφ≥Φ≈σ±ΩΦ∞Φ ±εß√≥Φ ∞Φ ≥αΩεσ φσ ∩≡εΘΣσ≥ - εφΦ ≤µσ ∩ε∩αδε Γ Ωε∞∩εφσφ≥.
  3566.  
  3567. ╤σ∞αφ≥Φ≈σ±ΩΦσ ±εß√≥Φ : Φ±∩εδⁿτ≤Θ≥σ addXListener() ≈≥εß√ ΣεßαΓΦ≥ⁿ ±δ≤°α≥σδ ,
  3568. Ωε≥ε≡√Θ ≡σαδΦτ≤σ≥ Φφ≥σ≡⌠σΘ± XListener Φ ∞εµσ≥ ∩εδ≤≈α≥ⁿ ±εß√≥Φ  ≥Φ∩α XEvent.
  3569. HΦτΩε≤≡εΓφσΓ√σ ±εεß√≥Φ : Φ±∩εδⁿτ≤Θ≥σ ∞σ≥εΣ enableEvents() Φ ∩σ≡σΩ≡εΘ≥σ
  3570. performX(), ≈≥εß√ ∩σ≡σ⌡Γα≥√Γα≥ⁿ ±εß√≥Φ  Γ ±α∞ε∞ εß·σΩ≥σ.
  3571.  
  3572. *(╫α±≥ⁿ 10) ┬ετ∞εµφε δΦ ±Σσδα≥ⁿ ≥αΩ, ≈≥εß√ εΩφε Γ Java ∩δαΓαδε ∩εΓσ≡⌡
  3573. Σ≡≤πΦ⌡? Hα∩≡Φ∞σ≡, ΩεδεφΩα Φφ±≥≡α∞σφ≥εΓ ∩δαΓασ≥ φαΣ εß√≈φ√∞Φ εΩφα∞Φ, Γ
  3574. Ωε≥ε≡√⌡ ²≥Φ Φφ±≥≡≤∞σφ≥√ Φ±∩εδⁿτ≤■≥± ...
  3575.  
  3576. [*] ┬ MS Windows εßⁿσΩ≥ ≥Φ∩α Window ∩δαΓασ≥ ∩εΓσ≡⌡ Σ≡≤πΦ⌡ εΩεφ, Γ ε≥δΦ≈Φσ
  3577. ε≥ Frame, Ωε≥ε≡√Θ φα⌡εΣΦ≥±  ΓφΦτ≤ ΩαΩ εß√≈φεσ εΩφε. ≥αΩεσ ∩εΓσΣσφΦσ Σασ≥
  3578. "∩δαΓα■∙ΦΘ" ²⌠⌠σΩ≥. Hε εß τα≥σδⁿφε δΦ Σεδµφε Window ∩δαΓ≥ⁿ ∩εΓσ≡⌡ Σ≡≤πΦ⌡ -
  3579. ²≥ε ±εΓσ≡°σφφε Σ≡≤πεΘ Γε∩≡ε±.
  3580.  
  3581. Hα ╠αΩΦφ≥ε°α⌡ Window δΦßε δσµΦ≥ ≥αΩ µσ ΩαΩ Φ εß√≈φ√σ εΩφα, δΦßε ∩εδφε±≥ⁿ■
  3582. ∞εΣαδⁿφεσ - Γ ταΓΦ±Φ∞ε±≥Φ ε≥ VM, Ωε≥ε≡≤■ ┬√ Φ±∩εδⁿτ≤σ≥σ. ┬ Java φσ≥ δσπΩεπε
  3583. ±∩ε±εßα ΣεßΦ≥ⁿ±  ≥αΩεπε ∩εΓσΣσφΦ . ┼±δΦ Ω≥ε-φΦß≤Σⁿ τφασ≥ ≥αΩεΘ ±∩ε±εß,
  3584. ∩εµαδ≤Θ±≥α, ∩εΣσδΦ≥σ±ⁿ.
  3585.  
  3586. *(╫α±≥ⁿ 10) ╠επ≤ δΦ   ±Γσ≡φ≤≥ⁿ/≡ατΓσ≡φ≤≥ⁿ εΩφε Γ Java?
  3587.  
  3588. [*] ┬ JDK 1.1 φσ ß√δε ±∩ε±εßα ±Σσδα≥ⁿ ²≥ε. ┬ JDK 1.2 ²≥α Γετ∞εµφε±≥ⁿ
  3589. ∩ε ΓΦδα±ⁿ:
  3590.  
  3591.      MyFrame.setState( Frame.ICONIFIED );
  3592.      MyFrame.setState( Frame.NORMAL );
  3593.  
  3594. Σσδασ≥ ²≥ε. ╙±≥αφεΓΦ≥σ φ≤µφεσ ±ε±≥ε φΦσ.
  3595.  
  3596. *(╫α±≥ⁿ 10) ╩αΩ ≤τφα≥ⁿ, ΩαΩα  Ωφε∩Ωα ∞√°Φ ß√δα φαµα≥α Φ ±ΩεδⁿΩε ≡ατ?
  3597.  
  3598. [*] ─δ  εß≡αßε≥ΩΦ ±εß√≥ΦΘ ∞√°Φ ┬√ Σεδµφ√ ε±≤∙σ±≥ΓΦ≥ⁿ Φφ≥σ≡⌠σΘ±
  3599. MouseListener δΦßε ≡α±°Φ≡Φ≥ⁿ Ωδα±± MouseAdapter Φ ≈≥εß√ ∩σ≡σε∩≡σΣσδΦ≥ⁿ εΣΦφ
  3600. Φτ ∞σ≥εΣεΓ εß≡αßε≥ΩΦ ±εß√≥ΦΘ ∞√°Φ. └≡π≤∞σφ≥ ≥Φ∩α MouseEvent, ∩σ≡σΣαΓασ∞√Θ Γ
  3601. ∞σ≥εΣ√, ±εΣσ≡µΦ≥ ∩εδ , πεΓε≡ ∙Φσ ε ≥ε∞, ΩαΩα  Ωφε∩Ωα φαµα≥α, Φ ±≈σ≥≈ΦΩ
  3602. φαµα≥ΦΘ. ╚±∩εδⁿτ≤Θ≥σ ≈≥ε-≥ε Γ≡εΣσ:
  3603.  
  3604. public void mouseClicked(MouseEvent m) {
  3605.  boolean leftButtonPush   =
  3606.     (m.getModifiers() & java.awt.event.InputEvent.BUTTON1_MASK) != 0;
  3607.  boolean centerButtonPush =
  3608.     (m.getModifiers() & java.awt.event.InputEvent.BUTTON2_MASK) != 0;
  3609.  boolean rightButtonPush  =
  3610.     (m.getModifiers() & java.awt.event.InputEvent.BUTTON3_MASK) != 0;
  3611.  
  3612.  int click = m.getClickCount();    // ∞εµσ≥ ß√≥ⁿ 1, 2, 3 ∙σδ≈Ωα ΦδΦ ßεδⁿ°σ
  3613.  
  3614. ┬√ ∞εµσ≥σ Γ√τΓα≥ⁿ m.isPopupTrigger(). ┼±δΦ ²≥ε≥ ∞σ≥εΣ ΓετΓ≡α∙ασ≥ true, ≥ε
  3615. ∩εδⁿτεΓα≥σδⁿ τα∩≡ε±Φδ Γ±∩δ√Γα■∙σσ ∞σφ■. ┬ε ∞φεπΦ⌡ ±Φ±≥σ∞α⌡ ∩≡αΓα  Ωφε∩Ωα
  3616. ±δ≤µΦ≥ Σδ  Γ√τεΓα ≥αΩΦ⌡ ∞σφ■.
  3617.  
  3618. ┬√ ∞εµσ≥σ ∩σ≡σΩ≡√≥ⁿ ∞σ≥εΣ processMouseEvent Σδ  ┬α°σπε Ωε∞∩εφσφ≥α.
  3619.  
  3620. public void processMouseEvent(MouseEvent e) {
  3621.     if (e.isPopupTrigger())  {
  3622.        // ΣσδαΘ≥σ ≈≥ε ⌡ε≥Φ≥σ
  3623.     }
  3624.     else
  3625.       super.processMouseEvent(e);
  3626.   }
  3627.  
  3628. ▌≥ε≥ ΩεΣ ∩εΣ⌡εΣΦ≥ Σδ  JDK 1.1. ╩≡ε∞σ ≥επε, Γ JDK 1.2 ∞εµφε Γ√τΓα≥ⁿ
  3629. java.awt.swing.SwingUtilities.isRightMouseButton(MouseEvent me).
  3630.  
  3631. ╤∞. Γε∩≡ε± 15.10.
  3632.  
  3633.                        ------------------------------
  3634.  
  3635. 11. Swing
  3636.  
  3637.   1. (╫α±≥ⁿ 11) ╫≥ε ≥αΩεσ Swing?
  3638.  
  3639.      [*] Swing - ²≥ε φεΓα  εΩεφφα  ßΦßδΦε≥σΩα, ΓΩδ■≈σφα  Γ JDK 1.2, Φ
  3640.      Σε±≥≤∩φα  ΩαΩ Σε∩εδφΦ≥σδⁿφα  ßΦßδΦε≥σΩα Σδ  JDK 1.1. Swing Γ⌡εΣΦ≥ Γ
  3641.      Java Foundation Classes Φ ∩εΣΣσ≡µΦΓασ≥ εΩεφ≤■ ßΦßδΦε≥σΩ≤, Ωε≥ε≡α  Σασ≥
  3642.      ≡ατ≡εßε≥≈ΦΩα∞ ±ετΣαΓα≥ⁿ Ωε∞∩εφσφ≥√, Ωε≥ε≡√σ ∞επ≤≥ Φ∞σ≥ⁿ Φτ∞σφ σ∞√Θ
  3643.      Γφσ°φΦΘ ΓΦΣ Φ ∩εΓσΣσφΦσ. ╤ ≥ε≈ΩΦ τ≡σφΦ  α≡⌡Φ≥σΩ≥≤≡√, Swing ≡α±°Φ≡ σ≥
  3644.      (φε φσ τα∞σφ σ≥ ∩εδφε±≥ⁿ■) Abstract Windowing Toolkit (AWT).
  3645.  
  3646.      Swing ±εΣσ≡µΦ≥ ∞φεµσ±≥Γε Ωε∞∩εφσφ≥, Ωε≥ε≡√σ ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ Γ∞σ±≥ε
  3647.      Ωε∞∩εφσφ≥εΓ AWT (JFrame Γ∞σ±≥ε Frame, JButton Γ∞σ±≥ε Button, JApplet
  3648.      Γ∞σ±≥ε Applet, JPanel Γ∞σ±≥ε Panel Φ ≥.∩.) ╩≡ε∞σ ≥επε, σ±≥ⁿ σ±≥ⁿ
  3649.      Ωε∞∩εφσφ≥√, φσ Φ∞σ■∙Φσ αφαδεπεΓ Γ AWT (∩αφσδΦ Φ δΦφσΘΩΦ Φφ±≥≡≤∞σφ≥εΓ,
  3650.      δΦφσΘΩΦ ∩≡επ≡σ±±α Φ Σ≡.) ╥σ∞ φσ ∞σφσ, Γ ε±φεΓσ Swing δσµΦ≥ AWT.
  3651.  
  3652.      Swing ∩ετΓεδ σ≥ ±ετΣαΓα≥ⁿ Ωε∞∩εφσφ≥√ ±≥εδⁿ µσ ±δεµφ√σ, ΩαΩ Φ Γ
  3653.      ∩δα≥⌠ε≡∞ε-ταΓΦ±Φ∞√⌡ εΩεφφ√⌡ ßΦßδΦε≥σΩα⌡, ΩαΩ, φα∩≡Φ∞σ≡, MFC - Φ Γ
  3654.      ±εε≥Γσ≥±ΓΦ ± ∩≡σΦ∞≤∙σ±Γα∞Φ Java, Γ±σ ²≥ε ß≤Σσ≥ ≡αßε≥α≥ⁿ φα δ■ß√⌡
  3655.      ∩δα≥⌠ε≡∞α⌡. ╚τ∞σφ σ∞√Θ Γφσ°φΦΘ ΓΦΣ ετφα≈ασ≥, ≈≥ε Ωε∞∩εφσφ≥√ ∞επ≤≥
  3656.      Φ∞σ≥ⁿ εΣΦφαΩεΓ√Θ ΓΦΣ φα δ■ßεΘ ∩δα≥⌠ε≡∞σ, ΦδΦ µσ ┬√ ∞εµσ≥σ ±Σσδα≥ⁿ ≥αΩ,
  3657.      ≈≥ε εΩφα ß≤Σ≤≥ Γ√πδ Σσ≥ⁿ Γ ±≥Φδσ Windows φα PC, Γ ±≥Φδσ Motif - φα
  3658.      Unix-±≥αφ÷ΦΦ, δΦßε ∩ε Γ√ßε≡≤ ∩εδⁿτεΓα≥σδ .
  3659.  
  3660.      ╩≡ε∞σ ≥επε, Swing ∩εΣσ≡µΦΓασ≥ Accessiblity API. ▌≥ε≥ API ∩ετΓεδ σ≥
  3661.      αΣα∩≥Φ≡≤■∙Φ∞ ∩≡επ≡α∞∞α∞ Σδ  δ■ΣσΘ ± ⌠ΦτΦ≈σ±ΩΦ∞Φ φσΣε±≥α≥Ωα∞Φ φα∩≡σ∞≤■
  3662.      ΓταΦ∞εΣσΘ±≥ΓεΓα≥ⁿ ± Java VM Φ ∩εδ≤≈α≥ⁿ Φφ⌠ε≡∞α÷Φ■ ε Γ√∩εδφ σ∞εΘ
  3663.      ∩≡επ≡α∞∞σ; ²≥ε ∩≡Φ∞σφ σ≥±  Σδ  ≡αßε≥√ ± Ωε∞∩εφσφ≥α∞Φ. ╧≡επ≡α∞∞√ ∞επ≤≥
  3664.      τα≥σ∞ ∩σ≡σΓσ±≥Φ ²≥ε Γ ⌠ε≡∞≤, Σε±≥≤∩φ≤■ ∩εδⁿτεΓα≥σδ■ (φα∩≡Φ∞σ≡,
  3665.      ∩≡ε≈Φ≥α≥ⁿ Γ±δ≤⌡ ≥σΩ±≥ Γ εΩφσ). Swing φσ Φ±∩εδⁿτ≤σ≥ ∩δα≥⌠ε≡∞ε-ταΓΦ±Φ∞√σ
  3666.      Ωε∞∩εφσφ≥√, α αΣα∩≥ΦΓφ√σ ∩≡επ≡α∞∞√ ≡α±≈Φ≥αφ√ φα ε∩≡Σσδσφφ≤■ ∩δα≥⌠ε≡∞≤,
  3667.      Accessiblity API ±δ≤µΦ≥ ∞ε±≥ε∞ ∞σµΣ≤ Swing Φ ∩≡επ≡α∞∞εΘ αΣα∩≥α÷ΦΦ.
  3668.      ─ε±≥εΦφ±≥Γε∞ Accessiblity API  Γδ σ≥±  ≥ε, ≈≥ε Σδ  σπε ∩εΣΣσ≡µΩΦ
  3669.      ≡ατ≡αßε≥≈ΦΩα∞ φ≤µφε ±Σσδα≥ⁿ ±εΓ±σ∞ φσ∞φεπε, εφΦ Σεδµφ√ ±ετφαΓα≥ⁿ ²≥ε,
  3670.      σ±δΦ ±εßΦ≡α■≥±  ΣεßεΓδ ≥ⁿ φεΓ√σ Ωε∞∩εφσφ≥√.
  3671.  
  3672.      ┬ Swing ∩δα≥⌠ε≡∞ε-ταΓΦ±Φ∞√∞Φ  Γδ ■≥±  δΦ°ⁿ Ω≡α  εΩφα, α ≥αΩµσ ≥αΩΦσ
  3673.      Γσ∙Φ, ΩαΩ °≡Φ⌠≥√ Φ ß≤⌠⌠σ≡√. ┬±σ ε±≥αδⁿφεσ - Ωε∞∩ετΦ÷Φ , ≡α±∩εδεµσφΦσ Φ
  3674.      ε≥≡Φ±εΓΩα - Ωεφ≥≡εδΦ≡≤σ≥±  ∩≡επ≡α∞∞φ√∞ ΩεΣε∞ φα Java. ╥αΩΦ∞ εß≡ατε∞,
  3675.      εΣΦφαΩεΓ√Θ ΩεΣ ±ετΣασ≥ Φ ≤∩≡αΓδ σ≥ Φφ≥σ≡⌠σΘ±ε∞ ∩εδⁿτεΓα≥σδ  φα δ■ßεΘ
  3676.      ∩δα≥⌠ε≡∞σ. Swing εßσ±∩σ≈ΦΓασ≥ εΣΦφαΩεΓεσ ∩εΓσΣσφΦσ ∩≡επ≡α∞√√ φα ≡ατφ√⌡
  3677.      ∩δα≥⌠ε≡∞α⌡.
  3678.  
  3679.      Swing ≡αßε≥ασ≥ ± JDK 1.1, ±Ωα≈αΘ≥σ ⌠αΘδ swing.jar Φ Σεß√Γ≥σ σπε Γ ∩≤≥ⁿ
  3680.      ∩εΦ±Ωα Ωδα±±εΓ. Swing Γ±≥≡εσφ Γ JDK 1.2, Φ Javasoft φσΣαΓφε ±∞σφΦδα
  3681.      φατΓαφΦσ ∩αΩσ≥α φα javax.swing.
  3682.  
  3683. *(╫α±≥ⁿ 11) ╧ε≈σ∞≤ Ω≤≡±ε≡, ε∩≡σΣσδσφφ√Θ ΩαΩ Ω≤≡±ε≡ εµΦΣαφΦ  (WAIT_CURSOR),
  3684. Φτ∞σφ σ≥±  ≥εδⁿΩε, ΩεπΣα φα⌡εΣΦ≥±  φαΣ φσΩε≥ε≡√∞Φ Ωε∞∩εφσφ≥α∞Φ?
  3685. ΦδΦ
  3686. ╩αΩ Φτ∞σφΦ≥ⁿ εß√≈φ√Θ Ω≤≡±ε≡ φα Ω≤≡±ε≡ εµΦΣαφΦ  φαΣ δ■ßεΘ Φτ εßδα±≥σΘ εΩφα,
  3687. ΓΩδ■≈α  σπε Ωε∞∩εφσφ≥√, Σδ  ∩≡σΣε≥Γ≡α∙σφΦ  ΩαΩΦ⌡-δΦßε ΣσΘ±≥ΓΦΘ ±ε ±≥ε≡εφ√
  3688. ∩εδⁿτεΓα≥σδ  Γε Γ≡σ∞  εß≡αßε≥ΩΦ φσΩε≥ε≡επε ±εß√≥Φ ? (Hα∩≡Φ∞σ≡ Σε±≥≤∩ Ω ßατσ
  3689. Σαφφ√⌡, ε≥Ω≡√≥Φσ Σ≡≤πεπε εΩφα, ταπ≡≤τΩα Φτεß≡αµσφΦ , ±ε≡≥Φ≡εΓΩα Σαφφ√⌡ Φ
  3690. ≥.Σ.)
  3691.  
  3692. [*] ┬ JDK 1.0.2 Φτ∞σφ ≥ⁿ Ω≤≡±ε≡ ∞επ ≥εδⁿΩε ╘≡σΘ∞ awt. Hα≈Φφα  ± JDK 1.1
  3693. ≡αßε≥α ± ╩≤≡±ε≡ε∞ ß√δα ∩σ≡σφσ±σφα Γ Ωδα±± Component. ╥σ∩σ≡ⁿ Γ±σ ╩ε∞∩εφσφ≥√
  3694. Φ∞σ■≥ Σε±≥≤∩ Ω Ωδα±±≤ Cursor.
  3695.  
  3696. ┬√ ∞επδΦ Φτ∞σφ ≥ⁿ ╩≤≡±ε≡ φα Ω≤≡±ε≡ εµΦΣαφΦ  Σδ  ΩαµΣεπε Φτ ╩ε∞∩εφσφ≥εΓ. ┬
  3697. ≡ Σσ ±δ≤≈ασΓ ²≥ε ε≥φΦ∞αδε φσ∞αδε Γ≡σ∞σφΦ, ≥αΩ ΩαΩ ∩ε≥σφ÷Φαδⁿφε Φ⌡ ≤ ┬α±
  3698. ∞επδε ß√≥ⁿ ΣεΓεδⁿφε ∞φεπε. Hα≈Φφα  ± JFC Swing ∩ε ΓΦδ±  ∞σ⌡αφΦτ∞ Σδ 
  3699. Φτ∞σφσφΦ  ╩≤≡±ε≡α φαΣ Γ±σ∞ ╬Ωφε∞ ÷σδΦΩε∞, φσ ±≈Φ≥α ±ⁿ ± ΩεδΦ≈σ±≥Γε∞
  3700. Ωε∞∩εφσφ≥εΓ. ╩ε∞∩εφσφ≥ ßΦßδΦε≥σΩΦ Swing - JFrame ±εΣσ≡µΦ≥ ∞σ≥εΣ:
  3701.  
  3702.              public void setGlassPane(Component glassPane)
  3703.  
  3704. Ωε≥ε≡√Θ ≤±≥αφαΓδΦΓασ≥ ╩ε∞∩εφσφ≥ awt ΩαΩ 'glassPane' Σδ  JFrame.
  3705.  
  3706. ▌≥ε≥ ╩ε∞∩εφσφ≥ ∩σ≡σΩ≡εσ≥ Γ±■, ∩≡ΦφαΣδσµα∙≤■ JFrame, Σε±≥≤∩φ≤■ (ΓΦΣΦ∞≤■ Γ
  3707. Σαφφ√Θ ∞ε∞σφ≥) εßδα±≥ⁿ ∩εδⁿτεΓα≥σδ , Φ±Ωδ■≈α  π≡αφΦ÷≤, ≤±≥αφεΓδσφφ≤■
  3708. ε≥εß≡αµα■∙σΘ εΩεφφεΘ ±Φ±≥σ∞εΘ. ╚±∩εδⁿτ≤  ╩ε∞∩εφσφ≥ 'glassPane', ┬√ ∞εµσ≥σ
  3709. ΓΩδ■≈Φ≥ⁿ '╩≤≡±ε≡ εµΦΣαφΦ ' φαΣ Γ±σ∞ JFrame, τα∩≡σ∙α  ∩εδⁿτεΓα≥σδⁿ±ΩΦΘ ΓΓεΣ
  3710. (σπε ∩εδφε±≥ⁿ■ ∩εδ≤≈ασ≥ 'glassPane') Φ ßδεΩΦ≡≤  ∩εδⁿτεΓα≥σδ  ∩εΩα φσ
  3711. ταΓσ≡°Φ≥±  'Σ≡≤πεΘ' ∩≡ε÷σ±±.
  3712.  
  3713. ╟└╠┼╫└H╚┼: ┼±δΦ ┬√ ⌡ε≥Φ≥σ ΓΦΣσ≥ⁿ ╩≤≡±ε≡ εµΦΣαφΦ  Γε Γ≡σ∞  ≡αßε≥√ 'Σ≡≤πεπε'
  3714. ∩≡ε÷σ±±α, ≥ε φσεß⌡εΣΦ∞ε ±ετΣα≥ⁿ ╧ε≥εΩ Σδ  Γ√∩εδφσφΦ  ∩ε±δσΣφσπε. ╩επΣα
  3715. ∩≡εΦ±⌡εΣΦ≥ Γ√∩εδφσφΦσ 'Σ≡≤πεΘ' ≡αßε≥√, 'glassPane' ε≥εß≡αµασ≥ ╩≤≡±ε≡
  3716. εµΦΣαφΦ  Φ "∩≡επδα≥√Γασ≥" Γσ±ⁿ ΓΓεΣ ∩εδⁿτεΓα≥σδ . ╧ε ταΓσ≡°σφΦΦ 'Σ≡≤πεΘ'
  3717. ≡αßε≥√, ╧ε≥εΩ Φ±∩εδⁿτ≤σ≥ ┬α° ∞σ≥εΣ waitCursor() ≈≥εß√ ±Ω≡√≥ⁿ 'glassPane' Σε
  3718. ≥σ⌡ ∩ε≡ ∩εΩα εφ φσ ∩εφαΣεßΦ≥±  ±φεΓα.
  3719.  
  3720. *(╫α±≥ⁿ 11) ╧ε≈σ∞≤ Ωε∞∩Φδ ≥ε≡ ±εεß∙ασ≥, ≈≥ε ∞σ≥εΣ "isCanselled()",
  3721. ∩≡ΦφαΣδσµα∙ΦΘ javax.swing.ProgressMonitor, φσ φαΘΣσφ?
  3722.  
  3723. [*] ┬ α∞σ≡ΦΩαφ±Ωε∞ αφπδΦΘ±Ωε∞ σ±≥ⁿ ΣΓα Σε∩≤±≥Φ∞√⌡ Γα≡Φαφ≥α ∩≡εΦτφε°σφΦ :
  3724. "canceled" Φ "cancelled". ╟α∞σ≥ⁿ≥σ, ≈≥ε ∩σ≡Γ√Θ ±εΣσ≡µΦ≥ εΣφ≤ "l", α Γ≥ε≡εΘ
  3725. - ΣΓσ "ll". Sun Φ±∩εδⁿτ≤σ≥ Γα≡Φαφ≥ "canceled" Σδ  ProgressMonitor, φε Γε
  3726. ∞φεπΦ⌡ Γ≥ε≡ε±≥σ∩σφφ√⌡ Φ±⌡εΣφΦΩα⌡ Φτ ΣεΩ≤∞σφ≥α÷ΦΦ φα∩Φ±αφε "cancelled". ┼∙σ
  3727. φσ∩≡Φ ≥φσΘ ≥ε, ≈≥ε Γ φσΩε≥ε≡√⌡ ±δ≤≈α ⌡ Sun ≤∩ε≥≡σßδ σ≥ ≥αΩµσ Φ Γα≡Φαφ≥
  3728. "cancelled", ΩαΩ φα∩≡Φ∞σ≡ Γ φατΓαφΦΦ ∞σ≥εΣα "isCancelled()" Σδ  PrinterJob.
  3729.  
  3730. *(╫α±≥ⁿ 11) ╧ε≈σ∞≤ φαµα≥Φσ φα ΩδαΓΦ°≤ Enter φσ αΩ≥ΦΓΦτΦ≡≤σ≥ Ωφε∩Ω≤ ∩ε
  3731. ≤∞εδ≈αφΦ■ Γ ΣΦαδεπεΓε∞ εΩφσ ßΦßδΦε≥σΩΦ Swing?
  3732.  
  3733. [*] ╨α±ΩδαΣΩα ΩδαΓΦ° ∩ε ≤∞εδ≈αφΦ■ Σδ  ≥σΩ±≥εΓ√⌡ Ωε∞∩εφσφ≥εΓ ßΦßδΦε≥σΩΦ
  3734. Swing (∩≡εΦτε°σΣ°Φ⌡ ε≥ JTextComponent) ∩≡ΦΓ τ√Γασ≥ Enter (VK_ENTER) Ω
  3735. ActionEvent Σδ  ≥σΩ±≥εΓ√⌡ ∩εδσΘ. ▌≥ε ß√δε ±Σσδαφε Γ ÷σδ ⌡ ±ε⌡≡αφσφΦ 
  3736. ±εΓ∞σ±≥Φ∞ε±≥Φ ± ≡αßε≥εΘ java.awt.Textfield. ╫≥εß√ Φ±∩εδⁿτεΓα≥ⁿ ΩδαΓΦ°≤
  3737. Enter Σδ  αΩ≥ΦΓΦτα÷ΦΦ Ωφε∩ΩΦ ∩ε ≤∞εδ≈αφΦ■, ≤ΣαδΦ≥σ ∩≡ΦΓ τΩ≤ ∩σ≡ΓεΘ Φτ
  3738. ∩≡σΣδαπασ∞εΘ ≡α±ΩδαΣΩΦ ΩδαΓΦ° ≥σΩ±≥εΓεπε Ωε∞∩εφσφ≥α, ΩαΩ ∩εΩαταφε φΦµσ:
  3739.  
  3740.     static {
  3741.       KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
  3742.       Keymap map =
  3743.            JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP);
  3744.       map.removeKeyStrokeBinding(enter);
  3745.     }
  3746.  
  3747. *(╫α±≥ⁿ 11) ╩αΩ ±ετΣαΓα≥ⁿ φσ∩≡ ∞ε≤πεδⁿφ√σ ╩ε∞∩εφσφ≥√?
  3748.  
  3749. [*] ┬τπδ φΦ≥σ φα ±δσΣ≤■∙ΦΘ ∩≡Φ∞σ≡, ∩ε±≥αΓδ σ∞√Θ Γ∞σ±≥σ ± JDK:
  3750. $JAVAHOME\demo\awt-1.1\lightweight\RoundButtons\example.html
  3751.  
  3752.                        ------------------------------
  3753.  
  3754. 12. ┴≡α≤τσ≡√
  3755.  
  3756.   1. (╫α±≥ⁿ 12) ╩επΣα µσ ∞εΘ δ■ßΦ∞√Θ ß≡α≤τσ≡ ß≤Σσ≥ ∩εΣΣσ≡µΦΓα≥ⁿ Java 1.1?
  3757.  
  3758.      [*] ┬ φα±≥ε ∙ΦΘ ∞ε∞σφ≥ Γ±σ ∩ε∩≤δ ≡φ√σ ß≡α≤τσ≡√ Φ∞σ■≥ ∩εΣΣσ≡µΩ≤ JDK
  3759.      1.1. Netscape Communicator 4.04 ± ∩α≥≈σ∞ "J" ∩εδφε±≥ⁿ■ ∩εΣΣσ≡µΦΓασ≥
  3760.      Γετ∞εµφε±≥Φ Java 1.1. ╬φ ß√δ Γ√∩≤∙σφ Γ ΣσΩαß≡σ 1997 πεΣα, Φ
  3761.      σΣΦφ±≥Γσφφεσ, ≈≥ε ≥α∞ ε≥±≤≥±≥Γ≤σ≥,- ∩εΣΣσ≡µΩα JavaSoft Σδ  ∩εΣ∩Φ±Φ
  3762.      α∩∩δσ≥εΓ (Γ ²≥ε∞ Γε∩≡ε±σ Netscape ∩ε°δα ±ΓεΦ∞ ∩≤≥σ∞). ╤∞ε≥≡Φ≥σ
  3763.      http://developer.netscape.com/support/faqs/champions/java.html#21
  3764.      ┼±δΦ ┬√ Φ±∩εδⁿτ≤σ≥σ Netscape 4.05, Φ Ωεφ±εδⁿ ±εεß∙ασ≥ ≈≥ε-φΦß≤Σⁿ
  3765.      ε≥δΦ≈φεσ ε≥ Java 1.1.5, ≥ε τφα≈Φ≥ ┬α° Netscape φσ ∩εδφε±≥ⁿ■
  3766.      ∩εΣΣσ≡µΦΓασ≥ 1.1. ╟Σσ±ⁿ φα⌡εΣΦ≥±  ±∩σ÷Φαδⁿφα  ετφαΩε∞Φ≥σδⁿφα  Γσ≡±Φ :
  3767.      http://developer.netscape.com/software/jdk/download.html
  3768.  
  3769.      ┬ 1997 πεΣ≤ Netscape ε±δαßΦδα ∩εΣΣσ≡µΩ≤ Java Γ ±Γ τΦ ± τα⌡Γα≥ε∞ ≡√φΩα
  3770.      Ωε∞∩αφΦσΘ Microsoft. Microsoft Φ±∩εδⁿτ≤σ≥ IE, ΩαΩ ±≥≡α≥σπΦ≈σ±Ωεσ
  3771.      ±≡σΣ±≥Γε Σδ  ΓφσΣ≡σφΦ  ≥επε, ≈≥ε ±δ≤µα∙Φσ ²≥εΘ Ωε∞∩αφΦΦ φατ√Γα■≥
  3772.      "ταπ≡ τφσφφα  Java" ("polluted Java"). ─δ  εßεΦ⌡ ß≡α≤τσ≡εΓ ⌡ε≡ε°Φ∞
  3773.      ≡σ°σφΦσ∞  Γδ σ≥±  Java Plug-in.
  3774.  
  3775.      ┴≡α≤τσ≡ ⌠Φ≡∞√ Sun,- HotJava,- ∩εδφε±≥ⁿ■ ∩εΣΣσ≡µΦΓασ≥ Γ±σ Γετ∞εµφε±≥Φ
  3776.      JDK 1.1. ╦■Σ ∞, Γ√φ≤µΣσφφ√∞ ∩εδⁿτεΓα≥ⁿ±  ß≡α≤τσ≡ε∞ ßστ ∩εδφεΘ
  3777.      ∩εΣΣσ≡µΩΦ Java, ±δσΣ≤σ≥ ∩≡Φ∞σφ ≥ⁿ Java Plug-In, τα∞σφ ■∙ΦΘ ±≥αφΣα≡≥φ≤■
  3778.      ΓΦ≡≥≤αδⁿφ≤■ ∞α°Φφ≤ Java, Ωε≥ε≡εΘ Ωε∞∩δσΩ≥≤σ≥±  ß≡α≤τσ≡, Φ ∩ετΓεδ ■∙ΦΘ
  3779.      Φ±∩εδⁿτεΓα≥ⁿ RMI, Ωε∞∩εφσφ≥√ JavaBeans Φ ╬±φεΓφ√σ ╩δα±±√ Java (Java
  3780.      Foundation Classes) Γ Internet Explorer 3.02, 4.0 Φ 4.01. Java Plug-In
  3781.      ≥αΩµσ ßστ ∩≡εßδσ∞ ≡αßε≥ασ≥ ± ß≡α≤τσ≡α∞Φ Netscape. ┼πε ∞εµφε ∩εδ≤≈Φ≥ⁿ
  3782.      ∩ε αΣ≡σ±≤ http://java.sun.com/products/.
  3783.      ╟α∞σ≥ⁿ≥σ, ≈≥ε φαΣε φσ∞φεπε Φτ∞σφΦ≥ⁿ HTML Σδ  ∩εδφεΘ ≤Γσ≡σφφε±≥Φ Γ ≥ε∞,
  3784.      ≈≥ε ≡αßε≥ασ≥ Φ∞σφφε plug-in, α φσ JVM ß≡α≤τσ≡α. ─αφφ√Θ ∩≡εΣ≤Ω≥
  3785.      ∩≡εΦτΓεΣΦ≥ Γ±σ Φτ∞σφσφΦ  αΓ≥ε∞α≥Φ≈σ±ΩΦ.
  3786.  
  3787.   2. (╫α±≥ⁿ 12) ╩αΩΦσ ∩εΣ∩≡επ≡α∞∞√ α∩∩δσ≥α Γ√τ√Γα■≥±  Γ ≡ατδΦ≈φ√⌡ ß≡α≤τσ≡α⌡
  3788.      Φ plug-in'α⌡ Γ ε≥Γσ≥ φα Γετ∞εµφ√σ ΣσΘ±≥ΓΦ , ≤∩≡αΓδ ■∙Φσ ∩≡ε±∞ε≥≡ε∞
  3789.      (φαταΣ (back), Γ∩σ≡σΣ (forward), ταπ≡≤τΦ≥ⁿ (load) Φ ≥.Σ.)?
  3790.  
  3791.      [*] ╤≥ε≡εφφΦΩ Java - Dave Postill - ∩≡εΓσδ ≡αßε≥≤, ≈≥εß√ ∩εδ≤≈Φ≥ⁿ
  3792.      ε≥Γσ≥ φα ²≥ε≥ Γε∩≡ε±.
  3793.      ╞Φτφσφφ√Θ ÷ΦΩδ α∩∩δσ≥α ε∩≡σΣσδ σ≥±  Γ√τεΓα∞Φ init(), start(), stop() Φ
  3794.      destroy(). ┴≤Σⁿ≥σ ε±≥ε≡εµφ√ ∩≡Φ Φ±∩εδⁿτεΓαφΦΦ ∩ε≥εΩεΓ Γ α∩∩δσ≥α⌡. ┬ε
  3795.      ∞φεπΦ⌡ εß≡ατ÷α⌡ ΩεΣα ∞σ≥εΣ stop() Γ√τ√Γασ≥ ε±≥αφεΓΩ≤ Γ±σ⌡ ∩ε≥εΩεΓ Γ
  3796.      ∩≡σΣσδα⌡ α∩∩δσ≥α, α τα≥σ∞ ≤±≥αφαΓδΦΓασ≥ Φ⌡ Γ φ≤δⁿ (null).
  3797.  
  3798.      ╥αΩεσ ≤φΦ≈≥εµσφΦσ ∩ε≥εΩεΓ  Γδ σ≥±  ∩ε ∞σφⁿ°σΘ ∞σ≡σ ε∩≡ε∞σ≥≈ΦΓ√∞.
  3799.      ╠φεπΦσ Σ≤∞α■≥, ≈≥ε ∞σ≥εΣ stop() Γ√τ√Γασ≥±  ≥εδⁿΩε, ΩεπΣα ∩εδⁿτεΓα≥σδⁿ
  3800.      ∩εΩΦΣασ≥ ±≥≡αφΦ≈Ω≤ Φ ⌡ε≈σ≥ ε φσΘ ταß√≥ⁿ; φε, ≥αΩ ΩαΩ Netscape Γ√τ√Γασ≥
  3801.      stop() Σαµσ, ΩεπΣα ∩≡εΦ±⌡εΣΦ≥ Φτ∞σφσφΦσ ≡ατ∞σ≡α εΩφα, ≥ε ∩εδⁿτεΓα≥σδΦ
  3802.      ≤≥≡α≥ ≥ ±ε±≥ε φΦσ α∩∩δσ≥α, ΩεπΣα ß≤Σ≤≥ ∩≡εΦτΓεΣΦ≥ⁿ φστφα≈Φ≥σδⁿφ≤■, ∩ε
  3803.      Φ⌡ ∞φσφΦ■, φα±≥≡εΘΩ≤.
  3804.  
  3805.      ╤∞ε≥≡Φ≥σ "╤εΓσ≥ ∩ε Java (Java Tip) 8: ╧ε≥εΩΦ, Netscape Φ ∩≡εßδσ∞α
  3806.      Φτ∞σφσφΦ  ≡ατ∞σ≡α (resize) εΩφα - ╩αΩ ≡αßε≥α≥ⁿ ± Φτ∞σφσφΦσ∞ ≡ατ∞σ≡α
  3807.      εΩφα α∩∩δσ≥a Γ Netscape Navigator", JavaWorld
  3808.      http://www.javaworld.com/javatips/jw-javatip8.html. ╩ ±εµαδσφΦ■
  3809.      ≡σ°σφΦσ JavaWorld φσ ≡σ°ασ≥ ∩≡εßδσ∞≤ ∩εδφε±≥ⁿ■, ∩ε±ΩεδⁿΩ≤ Γ φσ∞ Σδ 
  3810.      ≡α±∩ετφαΓαφΦ  Φτ∞σφσφΦ  ≡ατ∞σ≡α εΩφα ∩≡σΣ∩εδαπασ≥± , ≈≥ε start() ß≤Σσ≥
  3811.      Γ√τΓαφ Γ±Ωε≡σ ∩ε±δσ stop(). ╬ΣφαΩε, σ±δΦ Γ√ ∞ΦφΦ∞ΦτΦ≡≤σ≥σ εΩφε ±
  3812.      ß≡α≤τσ≡ε∞, ≥ε εφ ∞εµσ≥ ∩ε±δα≥ⁿ └∩∩δσ≥≤ stop(), Φ τα≥σ∞ φσ Γ√τ√Γα≥ⁿ
  3813.      start(), ∩εΩα εΩφε ┴≡α≤τσ≡α φσ ß≤Σσ≥ Γε±±≥αφεΓδσφε ΦδΦ
  3814.      ∞αΩ±Φ∞ΦτΦ≡εΓαφε. ┬ ≥αΩε∞ ±δ≤≈ασ Φ±∩εδⁿτεΓαφΦσ ≡σ°σφΦ  JavaWorld Γ
  3815.      └∩∩δσ≥σ ≤φΦ≈≥εµΦ≥ σπε, σ±δΦ ∞ΦφΦ∞ΦτΦ≡εΓαφφ√Θ ┴≡α≤τσ≡ φσ Γε±±≥αφεΓΦ≥ⁿ Γ
  3816.      Φ±⌡εΣφεσ ±ε±≥ε φΦσ Σε ∞ε∞σφ≥α Φ±≥σ≈σφΦ  Γ≡σ∞σφΦ ßδεΩΦ≡εΓΩΦ ≤φΦ≈≥εµσφΦ 
  3817.      ╧ε≥εΩεΓ.
  3818.  
  3819.                                              ╧≡ε±∞ε≥≡∙ΦΩ             Internet
  3820.                      Netscape    Netscape ±  └∩∩δσ≥εΓ    Internet    Explorer
  3821.                      [4.04/JDK   Plug-In'ε∞  (Applet-    Explorer 4  ±
  3822. Plug-In'ε∞
  3823.                      1.1.4]      [4.05/ JDK  Viewer)     SP1 [5.00.0518.10
  3824.                      [4.05/JDK   1.1.5/      [JDK 1.1.5] 4.72.3110.8 / Plugin
  3825. 1.1]
  3826.                      1.1.5]      Plugin 1.1]             Σδ  NT 4.0  Σδ  NT 4.0
  3827.                                              [JDK 1.1.6] SP3         SP3
  3828.       1. ╬≈Φ±≥Ωα Ω²°α
  3829.       ß≡α≤τσ≡α       φΦ≈σπε      φΦ≈σπε      φΦ≈σπε      φΦ≈σπε      φΦ≈σπε
  3830.                      init(),
  3831.       2.             start() ΦδΦ
  3832.       ╧σ≡Γεφα≈αδⁿφα  init(),     init(),     init(),     init(),     init(),
  3833.       ταπ≡≤τΩα .html start(),    start()     start()     start()     start()
  3834.                      stop(),
  3835.                      start() [1]
  3836.  
  3837.       3. HαταΣ       stop()      stop(),     [4]         stop(),     stop(),
  3838.                                  destroy()               destroy()   destroy()
  3839.  
  3840.       4. ┬∩σ≡σΣ      start()     init(),     [4]         init(),     init(),
  3841.                                  start()                 start()     start()
  3842.                      stop(),     stop(),                 stop(),     stop(),
  3843.       5.             destroy(),  destroy(),              destroy(),  destroy(),
  3844.       ╧σ≡σταπ≡≤τΦ≥ⁿ  init(),     init(),     [4]         init(),     init(),
  3845.                      start()     start()                 start()     start()
  3846.       6. <shift>
  3847.       ∩σ≡σταπ≡≤τΦ≥ⁿ  stop(),     stop(),                 stop(),     stop(),
  3848.       [NS],          destroy(),  destroy(),              destroy(),  destroy(),
  3849.       <ctrl>         init(),     init(),     [4]         init(),     init(),
  3850.       ∩σ≡σταπ≡≤τΦ≥ⁿ  start()     start()                 start()     start()
  3851.       [IE]
  3852.       7. ╚τ∞σφΦ≥ⁿ    stop(),
  3853.       ≡ατ∞σ≡         start()     [3]         [3]         [3]         [3]
  3854.       8.
  3855.       ╠ΦφΦ∞ΦτΦ≡εΓα≥ⁿ [2]         [3]         stop()      [2]         [3]
  3856.       9. ┬ε±±≥αφεΓΦ≥ⁿ[2]         [3]         start()     [2]         [3]
  3857.  
  3858.       10. ┬√Θ≥Φ      stop(),     stop(),     stop(),     stop(),     stop(),
  3859.                      destroy()   destroy()   destroy()   destroy()   destroy()
  3860.  
  3861.      ╧≡Φ∞σ≈αφΦ :
  3862.      [1] ╨στ≤δⁿ≥α≥√ φσ ∩ε±≥ε φφ√.
  3863.      [2] Hσ ∩≡εΓσ≡ δε±ⁿ.
  3864.      [3] ╧≡εΓσ≡σφε Φ εßφα≡≤µσφε, ≈≥ε ≡α±±∞α≥≡ΦΓασ∞√σ ∞σ≥εΣ√ φσ Γ√τ√Γα■≥± .
  3865.      [4] ╥σ±≥ φσ ∩≡Φ∞σφΦ∞.
  3866.  
  3867. *(╫α±≥ⁿ 12) ┬ετ∞εµφε δΦ Φτ Java ≡ατ∞σ∙α≥ⁿ Φ ∩εδ≤≈α≥ⁿ εß≡α≥φε "Ω≤ΩΦ"
  3868. (cookies) ±∩ε±εßε∞ ±εΓ∞σ±≥Φ∞√∞ ±ε Γ±σ∞Φ ß≡α≤τσ≡α∞Φ, ∩εΣΣσ≡µΦΓα■∙Φ∞Φ "Ω≤ΩΦ"
  3869. (cookies)?
  3870.  
  3871. [*] ╩≡α≥ΩΦΘ ε≥Γσ≥: φσ≥.
  3872. ╨α±°Φ≡σφφ√Θ ε≥Γσ≥: Γσ≡ε ≥φε φσ≥.
  3873. ╬Ωεφ≈α≥σδⁿφ√Θ ε≥Γσ≥:
  3874. "╩≤ΩΦ" (╤ookie) ²≥ε φστφα≈Φ≥σδⁿφ√Θ εßⁿσ∞ Σαφφ√⌡, Ωε≥ε≡√σ ±σ≡Γσ≡ ∩ε±√δασ≥
  3875. εß≡α≥φε ΩδΦσφ≥≤, Φ ∞εµσ≥ Γε±±≥αφεΓΦ≥ⁿ ∩ε ≥≡σßεΓαφΦ■. ▌≥ε ∩ετΓεδ σ≥ ±σ≡Γσ≡≤
  3876. ±ε⌡≡αφ ≥ⁿ φσΩε≥ε≡≤■ ±≥α≥Φ≈σ±Ω≤■ Φφ⌠ε≡∞α÷Φ■ εß ΩαµΣε∞ Φτ ±ΓεΦ⌡ ΩδΦσφ≥εΓ.
  3877. ╚φ⌠ε≡∞α÷Φ  εß√≈φε ≈≥ε-≥ε ≥Φ∩α - "ΩαΩΦσ ±≥≡αφΦ÷√ ∩ε±σ∙αδΦ±ⁿ ∩εδⁿτεΓα≥σδσ∞?"
  3878. ΦδΦ "²≥ε ∩≡ΦΓΦδσπΦ≡εΓαφφ√Θ ∩εδⁿτεΓα≥σδⁿ?".
  3879. ╨ατΣσδ DevEdge φα Σε∞α°φσΘ ±≥≡αφΦ÷σ Netscape's ±εΣσ≡µΦ≥ Javascript-Java
  3880. ∩≡Φ∞σ≡ ∩εδ≤≈σφΦ  cookies. ╥αΩ µσ ±δσΣ≤■∙α  ±±√δΩα
  3881. http://www.geocities.com/SiliconValley/Vista/1337 ±εΣσ≡µΦ≥ Φφ⌠ε≡∞α÷Φ■ ε
  3882. ±Γ τ√ΓαφΦΦ α∩∩δσ≥α ± ⌠≤φΩ÷Φ ∞Φ JavaScript. ╥αΩ ΩαΩ ²≥ε ΣεΓεδⁿφε τα∩≤≥αφφε,
  3883. Φ±∩εδⁿτ≤Θ≥σ ≥εδⁿΩε Java σ±δΦ ²≥ε Γετ∞εµφε.
  3884.  
  3885. *(╫α±≥ⁿ 12) ▀ ≡ατ≡αßε≥αδ α∩∩δσ≥ Φ ∩≡ε≥σ±≥Φ≡εΓαδ σπε ∩εΣ Netscape
  3886. Navigator, Φ εßφα≡≤µΦδ ≈≥ε ∩ε±δσ ∩σ≡σΩε∞∩Φδ ÷ΦΦ, Σαµσ σ±δΦ   φαµΦ∞α■
  3887. reload, ε≈Φ∙α■ Ω²°, ∩εΓ≥ε≡φε ΓΓεµ≤ URL ΣεΩ≤∞σφ≥α   Γ±σ ≡αΓφε ∩εδ≤≈α■ ±≥α≡≤■
  3888. Γσ≡±Φ■ α∩∩δσ≥α. ╧ε≈σ∞≤?
  3889.  
  3890. [*] ╧≡Φ∞σ≈αφΦσ: ≈Φ≥α≥σδΦ Φφ⌠ε≡∞Φ≡≤■≥ ε ≥ε∞, ≈≥ε Γ Netscape Communicator
  3891. 4.05 Γετ∞εµφε ∩≡Φφ≤ΣΦ≥σδⁿφε ∩σ≡σπ≡≤τΦ≥ⁿ α∩∩δσ≥ ≤Σσ≡µΦΓα  "control"+"shift"
  3892. Φ "ΩδΦΩα " φα "Reload"
  3893. ┬ ∩≡ε°δε∞ Netscape φσ ±≤∞σδΦ ∩εδφε±≥ⁿ■ Φ±∩≡αΓΦ≥ⁿ Σσ⌠σΩ≥φ√Θ ΩεΣ, Ωε≥ε≡√Θ
  3894. Γ√∩εδφ σ≥ ≥αΩΦσ αß±≤≡Σφ√σ Γσ∙Φ. ▌≥ε ∩εΓ≥ε≡ δε±ⁿ Γε ∞φεπΦ⌡ ≤Σα≈φ√⌡ ≡σδΦτα⌡.
  3895. ╬≈Φ±≥Ωα ±σ≥σΓεπε Ω²°α φσ ΓδΦ σ≥; φσ Φ∞σσ≥ τφα≈σφΦ  πΣσ ∩≡εΦ±⌡εΣΦ≥
  3896. Ω²°Φ≡εΓαφΦσ. ╒ε≥  α∩∩δσ≥√ ΦφεπΣα ≤Σαδ ■≥±  ("pruned") Φ ∩≡εΦ±⌡εΣΦ≥ ≤ßε≡Ωα
  3897. "∞≤±ε≡α", ²≥ε≥ ∩≡ε÷σ±± φσ ∩≡σΣ±Ωατ≤σ∞, ∩ε²≥ε∞≤ ∩σ≡στα∩≤±Ω Netscape
  3898. σΣΦφ±≥Γσφφε φαΣσµφα  Γσ∙ⁿ Γ φα±≥ε ∙σσ Γ≡σ∞ .
  3899. ╤Γ ταφφ√Θ Γε∩≡ε± "ΩαΩ ±Σσδα≥ⁿ ∩σ≡σταπ≡≤τΩ≤ εΩφα ß≡α≤τσ≡α Φτ URLConnection
  3900. Γ∞σ±≥ε ∩εδ≤≈σφΦ  ±εΣσ≡µαφΦ  Φτ δεΩαδⁿφεπε Ω²°α?" ╬≥Γσ≥: Φ±∩εδⁿτ≤Θ≥σ
  3901.  
  3902.    java.net.URLConnection.setUseCaches(false)
  3903.  
  3904. ╬Ωφε ß≡α≤τσ≡α Φτ∞σφ σ≥±  Γ ±εε≥Γσ≥±≥ΓΦΦ ± ²≥Φ∞ ∩≡επ≡α∞∞φ√∞ ≥≡σßεΓαφΦσ∞.
  3905. ╩σ°Φ≡εΓαφΦσ Γ Netscap-e Γα≡ⁿΦ≡≤σ≥±  Γ ταΓΦ±Φ∞ε±≥Φ ε≥ ≥επε Φ±∩εδⁿτ≤σ≥±  δΦ
  3906. proxy ±σ≡Γσ≡, Φ ΩαΩεΘ ∩ε≥εΩ Γ α∩∩δσ≥σ Γ√∩εδφ σ≥ τα∩≡ε±.
  3907.  
  3908. ─≡≤πεΘ ∩εΣ⌡εΣ ±ε±≥εΦ≥ Γ ΣεßαΓδσφΦΦ "?<φσΩε≥ε≡εσ_≈Φ±δε>" Ω URL, ≥εσ±≥ⁿ
  3909.  
  3910.  
  3911.       http://www.somesite.com/webcam/image.jpg?100
  3912.  
  3913. Φ ≤ΓσδΦ≈σφΦΦ ²≥επε ≈Φ±δε ΩαµΣ√Θ ≡ατ ΩεπΣα α∩∩δσ≥ Γ√τ√Γασ≥ Φτεß≡αµσφΦσ.
  3914.  
  3915. *(╫α±≥ⁿ 12) ╧ε≈σ∞≤ Netscape φσ εßφεΓδ σ≥ α∩∩δσ≥ ΩεπΣα ┬√ φαµΦ∞ασ≥σ Ωφε∩Ω≤
  3916. Reload ?
  3917.  
  3918. [*] ─δ  ∩σ≡σταπ≡≤µασ∞επε α∩∩δσ≥α, φεΓα  Γσ≡±Φ  Σεδµφα ß√δα ß√ ß√≥ⁿ
  3919. ταπ≡≤µσφα Γ Σ≡≤πε∞ ClassLoader-σ. ╤≥≡α≥σπΦ  Navigator/Communicator's Σδ 
  3920. ±Γ τ√ΓαφΦ  α∩∩δσ≥α ± ClassLoader-ε∞ φσ ∩≡ΦφΦ∞ασ≥ Γε ΓφΦ∞αφΦσ ß√δα δΦ
  3921. Γ√∩εδφσφα ∩σ≡σταπ≡≤τΩα. (⌡ε≥  φσ≥ φΦΩαΩΦ⌡ ≥σ⌡φΦ≈σ±ΩΦ⌡ ∩≡Φ≈Φφ ≈≥ε ß√ ²≥επε
  3922. φσ Σσδα≥ⁿ).
  3923. HσΩε≥ε≡√σ Γσ≡±ΦΦ Netscape εßφεΓδ ■≥ α∩∩δσ≥ σ±δΦ ε≈Φ±≥Φ≥ⁿ Ω²° Φ±∩εδⁿτ≤ 
  3924. ∩≤φΩ≥√ ∞σφ■ Edit/Preferences/Advanced/Cache to Clear Memory Cache and Clear
  3925. Disk Cache, α τα≥σ∞ ≤Σσ≡µΦΓα  <Shift> φαµα≥ⁿ reload.
  3926. ┬ Explorer, Φ±∩εδⁿτ≤Θ≥σ View/Options/General/Delete Files Σδ  ε≈Φ±≥ΩΦ Ω²°α,
  3927. τα≥σ∞ <Control> 'Reload' Σδ  εßφεΓδσφΦ  ±≥≡αφΦ÷√ ±εΣσ≡µα∙σΘ α∩∩δσ≥.
  3928.  
  3929. ─ε ≥σ⌡ ∩ε≡ ∩εΩα ²≥ε φσ Φ±∩≡αΓ ≥, Φ±∩εδⁿτ≤Θ≥σ appletviewer Σδ  ≥σ±≥Φ≡εΓαφΦ 
  3930. α∩∩δσ≥εΓ. ╚ ∩Φ°Φ≥σ ∩Φ±ⁿ∞α - ≡ατ≡αßε≥≈ΦΩΦ ∞επ≤≥ Φ±∩≡αΓΦ≥ⁿ ≥εδⁿΩε ≥σ "ßαπΦ" ε
  3931. Ωε≥ε≡√⌡ τφα■≥.
  3932.  
  3933. *(╫α±≥ⁿ 12) ╫≥ε ∩≡σΣ∩ε≈≥Φ≥σδⁿφσσ Φ±∩εδⁿτεΓα≥ⁿ ⌠αΘδ√ Microsoft CAB ΦδΦ Java
  3934. JAR?
  3935.  
  3936. [*] ┬ε∩≡ε± ≡Φ≥ε≡Φ≈σ±ΩΦΘ.
  3937. ╘ε≡∞α≥ ⌠αΘδεΓ CAB ±εß±≥Γσφφε±≥ⁿ Microsoft. Hσ Φ±∩εδⁿτ≤Θ≥σ σπε ≥αΩ ΩαΩ εφ
  3938. ≡ατ≡≤°ασ≥ ∩σ≡σφε±Φ∞ε±≥ⁿ ∩≡επ≡α∞∞.
  3939. ╘αΘδεΓ√Θ ⌠ε≡∞α≥ JAR ±≥αφΣα≡≥φ√Θ ⌠ε≡∞α≥ Java, ε±φεΓαφφ√Θ φα ⌠ε≡∞α≥σ PKZIP ±
  3940. Ωε∞∩≡σ±±ΦσΘ Σαφφ√⌡, ß√δ ΓΓσΣσφ Γ JDK 1.1.
  3941. ╤±√δΩα http://www.ibm.com/java/community/viewarchive4.html ±εΣσ≡µΦ≥
  3942. Σε∩εδφΦ≥σδⁿφ≤■ Φφ⌠ε≡∞α÷Φ■.
  3943. ┬α∞ ±≥εΦ≥ Φ±∩εδⁿτεΓα≥ⁿ ±≥αφΣα≡≥φ√Θ ⌠ε≡∞α≥ Java - JAR (╘αΘδ α≡⌡ΦΓα Java),
  3944. ΩαΩ ⌠αΘδεΓ√Θ ⌠ε≡∞α≥ φσ ±Γ ταφφ√Θ ± ε∩≡σΣσδσφφ√∞ ∩ε±≥αΓ∙ΦΩε∞, ≥αΩ ΩαΩ JAR φσ
  3945. ≥εδⁿΩε ±≥αφΣα≡≥φ√Θ ⌠ε≡∞α≥ Java, φε Φ ∩≡ε∞√°δσφφ√Θ ±≥αφΣα≡≥ ≡ατφεΓΦΣφε±≥Φ
  3946. PKZIP. ╬ΣΦφ Φτ ≈Φ≥α≥σδσΘ τα∞σ≈ασ≥ ≈≥ε εßα ⌠ε≡∞α≥α ∞επ≤≥ ß√≥ⁿ Φ±∩εδⁿτεΓαφ√,
  3947. ΩαΩ φα∩≡Φ∞σ≡ Γ ±δσΣ≤■∙σ∞ ΩεΣσ
  3948.  
  3949.      <APPLET NAME=myapplet
  3950.      ARCHIVE="myzip.zip"
  3951.      CODE="com/nnnnn/nnnn/cccccccc.class"
  3952.      WIDTH=n
  3953.      HEIGHT=n>
  3954.      <PARAM NAME="cabbase" VALUE="mycab.cab">
  3955.      </APPLET>
  3956.  
  3957. IE3 φσ ∩εΣΣσ≡µΦΓασ≥ JAR
  3958. IE4 ∩εΣΣσ≡µΦΓασ≥ ±µα≥√Θ Φ φσ ±µα≥√Θ ⌠ε≡∞α≥ JAR, φε φσ ∩εΣ∩Φ±αφφ√Θ JAR
  3959.  
  3960. *(╫α±≥ⁿ 12) ╩αΩ   ∞επ≤ ≤τφα≥ⁿ Γσ≡±Φ■ Java ∩εΣΣσ≡µΦΓασ∞≤■ ∞εΦ∞ ß≡α≤τσ≡ε∞?
  3961.  
  3962. [*] ╤∞ε≥≡Φ ±±√δΩ≤
  3963. http://java.rrzn.uni-hannover.de/insel/beispiele/vertest.html. ▌≥α ±±√δΩα
  3964. ±εεß∙ασ≥ ∩εΣΣσ≡µΦΓασ≥ δΦ ┬α° ß≡α≤τσ≡ JDK 1.1.
  3965.  
  3966. ╤±√δΩα http://www.uni-kassel.de/~pfuetz/Properties.html ±εεß∙ασ≥ ΩαΩΦσ
  3967. Ωδα±±√ ∞εµφε φαΣσ ≥ⁿ±  ß≤Σ≤≥ ∩≡Φ±≤≥±≥ΓεΓα≥ⁿ Γ Γ√∩εδφ ■∙σΘ ±Φ±≥σ∞σ ß≡α≤τσ≡α.
  3968.  
  3969. *(╫α±≥ⁿ 13) ╠επ≤ δΦ   ΦτßαΓΦ≥ⁿ±  ε≥ ±εεß∙σφΦ  "Warning:Applet Window"
  3970. ΓφΦτ≤ εΩεφ, ε≥Ωp√Γασ∞√⌡ ∞εΦ∞ α∩∩δσ≥ε∞?
  3971.  
  3972. [*] ▌≥ε ±Σσδαφε Σδ  εßσ±∩σ≈σφΦ  ßστε∩α±φε±≥Φ, ≈≥εß√ φσ ∩ετΓεδΦ≥ⁿ ±ετΣα≥σδ■
  3973. α∩∩δσ≥α ε≥Ωp√≥ⁿ εΩφε, ∩ε⌡εµσσ φα ±Φ±≥σ∞φεσ Φ τα∩pα°ΦΓα■∙σσ ∩αpεδⁿ,
  3974. Φφ⌠εp∞α÷Φ■ ε ΩpσΣΦ≥φεΘ Ωαp≥σ Φ ≥.∩. ╧εδⁿτεΓα≥σδΦ Γ±σπΣα Σεδµφ√ τφα≥ⁿ, ≈≥ε
  3975. εφΦ Φ∞σ■≥ Σσδε ± φσ∩εΣ∩Φ±αφφ√∞ α∩∩δσ≥ε∞. ┬√ ∞εµσ≥σ ε≥ ²≥επε ΦτßαΓΦ≥ⁿ± ,
  3976. ∩εΣ∩Φ±αΓ α∩∩δσ≥, σ±δΦ ∩εδⁿτεΓα≥σδⁿ ∩pΦφΦ∞ασ≥ ∩εΣ∩Φ±αφφ√σ Γα∞Φ α∩∩δσ≥√. ┬
  3977. Netscape (≥εδⁿΩε) Φ±∩εδⁿτεΓαφΦσ Capabilities API Σδ  Γ√τεΓα
  3978.  
  3979.    PrivilegeManager.enablePrivilege("UniversalTopLevelWindow");
  3980.  
  3981. ∩σpσΣ ±ετΣαφΦσ∞ εß·σΩ≥α Frame ∩εΣαΓδ σ≥ ±εεß∙σφΦσ, σ±δΦ ²≥ε ∩pε∩≤±Ωασ≥
  3982. ∞σφσΣµσp ßστε∩α±φε±≥Φ.
  3983.  
  3984. *(╫α±≥ⁿ 13) ╩επΣα   pα±°Φp ■ Ωδα±± Applet, ∩ε≈σ∞≤   Σεδµσφ ∩ε∞σ∙α≥ⁿ ΩεΣ
  3985. ΦφΦ÷ΦαδΦτα÷ΦΦ Γ ∞σ≥εΣ init()? ╧ε≈σ∞≤ φσ ∩pε±≥ε Γ Ωεφ±≥p≤Ω≥εp ∞εσπε Ωδα±±α?
  3986.  
  3987. [*] ┴pα≤τσp Γ√τ√Γασ≥ Ωεφ±≥p≤Ω≥εp, τα≥σ∞ setStub, α τα≥σ∞ init().
  3988. ╤δσΣεΓα≥σδⁿφε, ΩεπΣα Γ√τ√Γασ≥±  Γα° Ωεφ±≥p≤Ω≥εp, AppletStub (α τφα≈Φ≥ Φ
  3989. AppletContext) σ∙σ φσ ±≤∙σ±≥Γ≤σ≥. ╒ε≥ , Γ ∩pΦφ÷Φ∩σ, Γ√ ∞εµσ≥σ Γ√∩εδφ ≥ⁿ Γ
  3990. Ωεφ±≥p≤Ω≥εpσ ΣσΘ±≥ΓΦ , φσ τα≥pαπΦΓα■∙Φσ (Σαµσ Ωε±Γσφφε) AppletStub ΦδΦ
  3991. AppletContext, ∩ε∞σ∙σφΦσ Γ±σΘ ΦφΦ÷ΦαδΦτα÷ΦΦ Γ ∞σ≥εΣ init() ∩ετΓεδ σ≥
  3992. Φτßσµα≥ⁿ ε°ΦßεΩ. ╥αΩ Γ√ ß≤Σσ≥σ ≤Γσpσφ√, ≈≥ε σ±δΦ ²≥Φ Ωδα±±√ Σδ  ≈σπε-≥ε
  3993. ∩εφαΣεß ≥± , εφΦ ß≤Σ≤≥ Γ φαδΦ≈ΦΦ.
  3994.  
  3995. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ Γ√≥ φ≤≥ⁿ ⌠αΘδ, φσ  Γδ ■∙ΦΘ±  Ωδα±±ε∞, φα∩pΦ∞σp .gif,
  3996. Φτ jar-⌠αΘδα?
  3997.  
  3998. [*] ┬ Γα°σ∞ Ωδα±±σ Σεδµφα ß√≥ⁿ Γετ∞εµφε±≥ⁿ ±Σσδα≥ⁿ ≈≥ε-≥ε ΓpεΣσ ²≥επε:
  3999.  
  4000.     String imageFileName = "foo.jpg"
  4001.     URL imageURL = getClass().getResource(imageFileName);
  4002.     Toolkit tk = Toolkit.getDefaultToolkit();
  4003.     Image img = null;
  4004.     try {
  4005.         java.awt.image.ImageProducer I_P;
  4006.         I_P = (java.awt.image.ImageProducer)imageURL.getContent();
  4007.         img = tk.createImage(I_P);
  4008.  
  4009. ╚δΦ, ≈≥ε ≥ε µσ ±α∞εσ, φε, Γετ∞εµφε, ∩pε∙σ:
  4010.  
  4011.     String imageFileName = "foo.jpg";
  4012.     InputStream jpgStream = getClass().getResourceAsStream(imageFileName);
  4013.     Toolkit tk = Toolkit.getDefaultToolkit();
  4014.     Image img = null;
  4015.     try {
  4016.         byte imageBytes[]=new byte[jpgStream.available()];
  4017.         jpgStream.read(imageBytes);
  4018.         img = tk.createImage(imageBytes);
  4019.  
  4020. (╩αΩ Γ±σ, ≈≥ε Ωα±ασ≥±  Jar-⌠αΘδεΓ, ²≥ε Σδ  JDK 1.1 Φ Γ√°σ.)
  4021. getResource(String) φσ pαßε≥ασ≥ Γ α∩∩δσ≥α⌡ Γ Netscape
  4022. Γ ±Γ τΦ ± ε±εßσφφε±≥ ∞Φ ±Φ±≥σ∞√ ßστε∩α±φε±≥Φ Netscape. ┬∞σ±≥ε ²≥επε Γ√
  4023. Σεδµφ√ Φ±∩εδⁿτεΓα≥ⁿ getResourceAsStream(String).
  4024. See http://developer.netscape.com/software/jdk/relnotes.htm
  4025.  
  4026. ╟α∞σ≈≤, ≈≥ε getResourceAsStream() ≥αΩµσ ⌡εpε°ε Φ±∩εδⁿτεΓα≥ⁿ Σδ  ≈≥σφΦ 
  4027. ≥σΩ±≥εΓεπε (ΦδΦ ΩαΩεπε-φΦß≤Σⁿ Σp≤πεπε) ⌠αΘδα Φτ JAR-⌠αΘδα.
  4028.  
  4029.    public void init() {
  4030.         InputStream myStream = getClass().getResourceAsStream("myFile");
  4031.         //   ...
  4032.     }
  4033.  
  4034. ╧ε±δσ ≥επε, ΩαΩ Γ√ ∩εδ≤≈ΦδΦ σπε Γ ΓΦΣσ InputStream, Γ√ ∞εµσ≥σ σπε ≈Φ≥α≥ⁿ
  4035. ≥αΩ, ΩαΩ Γα∞ ßεδⁿ°σ φpαΓΦ≥± .
  4036.  
  4037. *(╫α±≥ⁿ 13) ▀ ⌡ε≈≤ pατεßpα≥ⁿ±  ± {α∩∩δσ≥α∞Φ,∩pΦδεµσφΦ ∞Φ}, φε Γ ≥εΘ ΩφΦπσ,
  4038. Ωε≥εp≤■   Σε±≥αδ, pα±±Ωατ√Γασ≥±  ≥εδⁿΩε ε {∩pΦδεµσφΦ ⌡,α∩∩δσ≥α⌡}. ╫≥ε ∞φσ
  4039. Σσδα≥ⁿ?
  4040.  
  4041. [*] ┬ ΣσΘ±≥ΓΦ≥σδⁿφε±≥Φ, 95% ∞α≥σpΦαδα, φα Ωε≥εp√Θ εpΦσφ≥ΦpεΓαφα Γα°α ΩφΦπα,
  4042. Ωα±ασ≥±  Φ ≥σ⌡ Φ Σp≤πΦ⌡. HσΩε≥εp√σ ±ετΣα■≥ ±ΓεΦ ∩pΦδεµσφΦ  ≥αΩ, ≈≥ε εφΦ
  4043. pαßε≥α■≥ ÷σδΦΩε∞ Γ pα∞Ωα⌡ ∩αφσδΦ, α ΣαδⁿφσΘ°σσ ταΓΦ±Φ≥ ε≥ ≥επε, ß≤Σσ≥ δΦ
  4044. εφε pαßε≥α≥ⁿ ±α∞ε±≥ε ≥σδⁿφε ΦδΦ ²≥α ∩αφσδⁿ ß≤Σσ≥ Γ±≥αΓδσφα Γ ßpα≤τσpσ Γ
  4045. εΩφε ΦδΦ α∩∩δσ≥. ╘εΩ≤± Γ ≥ε∞, ≈≥ε Γ√ Σεδµφ√ ΣεßαΓΦ≥ⁿ ±δ≤°α≥σδ  Σδ  εΩφα
  4046. ∩pΦδεµσφΦ , ≈≥εß√ ±α∞ε±≥ε ≥σδⁿφε εßpαßα≥√Γα≥ⁿ ±εß√≥Φσ WINDOW_CLOSING (pαφσσ
  4047. εφε φατ√Γαδε±ⁿ WINDOW_DESTROY).
  4048. ┼±δΦ Γ√ ²≥επε φσ ±Σσδασ≥σ, ≥ε ∩pΦ pαßε≥σ Γ Ωα≈σ±≥Γσ ∩pΦδεµσφΦ  εΩφε ß≤Σσ≥
  4049. φσΓετ∞εµφε ταΩp√≥ⁿ. ╤∞ε≥pΦ ┬ε∩pε± 15.7, Γ Ωε≥εpε∞ σ±≥ⁿ ∩pΦ∞σp ∩pαΓΦδⁿφεπε
  4050. εßpαßε≥≈ΦΩα.
  4051. ┬ pα∞Ωα⌡ ²≥επε ±÷σφαpΦ , ±δσΣ≤■∙ΦΘ ΩεΣ ∩ετΓεδΦ≥ Γα∞ ε∩pσΣσδΦ≥ⁿ, Γ ΩαΩε∞
  4052. εΩp≤µσφΦΦ Γ√ pαßε≥ασ≥σ:
  4053.  
  4054.    public boolean isRunningInBrowser() {
  4055.         Component p = getParent();
  4056.         while(p != null && !(p instanceof Frame)) {
  4057.             p = p.getParent();
  4058.         }
  4059.         return (p == null);
  4060.     }
  4061.  
  4062. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ φα∩σ≈α≥α≥ⁿ ±≥pαφΦ÷≤ ± α∩∩δσ≥ε∞?
  4063.  
  4064. [*] ┴pα≤τσp√ pατpαßα≥√Γα■≥ ∩εΣΣσpµΩ≤ Σδ  ²≥επε. Hε, ∩εΩα εφα φσ ß≤Σσ≥
  4065. πε≥εΓα, δ≤≈°ΦΘ Γ√⌡εΣ Σδ  Γα± - ∩σ≈α≥α≥ⁿ εßpατ ²Ωpαφα. ┼±δΦ Φ±∩εδⁿτεΓα≥ⁿ
  4066. ßpα≤τσp Σδ  ∩σ≈α≥Φ ±≥pαφΦ÷√ ± α∩∩δσ≥ε∞, Γ√ ∞εµσ≥σ ∩εδ≤≈Φ≥ⁿ ∩≤±≥εσ ∞σ±≥ε
  4067. ≥α∞, πΣσ φα⌡εΣΦδ±  α∩∩δσ≥. ┬±≥αΓΦΓ ∩εΣΣσpµΩ≤ ∩σ≈α≥Φ Γ α∩∩δσ≥, Γ√ ±∞εµσ≥σ
  4068. φα∩σ≈α≥α≥ⁿ ≥εδⁿΩε α∩∩δσ≥, α φσ Γ±■ ε±≥αδⁿφ≤■ ±≥pαφΦ÷≤.
  4069. ╤∞. ≥αΩµσ FAQ: Q5.2.
  4070.  
  4071. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ ∩ε∞σ±≥Φ≥ⁿ ∞εΦ ΣΦαδεπΦ Γ ÷σφ≥pσ (α φσ Γ Γσp⌡φσ∞ δσΓε∞
  4072. ≤πδ≤)?
  4073.  
  4074. [*] ╚±∩εδⁿτ≤Θ≥σ ≈≥ε-≥ε ΓpεΣσ ²≥επε:
  4075.  
  4076.     void center(Component parent) {
  4077.         pack();
  4078.         Point p = parent.getLocation();
  4079.         Dimension d = parent.getSize();
  4080.         Dimension s = getSize();
  4081.         p.translate((d.width - s.width) / 2, (d.height - s.height) / 2);
  4082.         setLocation(p);
  4083.     }
  4084.  
  4085. *(╫α±≥ⁿ 13) ╩αΩ ΣΓα α∩∩δσ≥α φα εΣφεΘ ±≥pαφΦ÷σ ∞επ≤≥ ΓταΦ∞εΣσΘ±≥ΓεΓα≥ⁿ?
  4086.  
  4087. [*] ▌≥ε Σσδασ≥±  ∩pΦ ∩ε∞ε∙Φ ∩pε≥εΩεδα InfoBus. ╤∞ε≥pΦ
  4088. http://java.sun.com/beans/infobus/index.html
  4089.  
  4090. ╨αφσσ ²≥ε Σσδαδε±ⁿ ≥αΩ. ┬ Γα°σΘ HTML-±≥pαφΦ÷σ ταΣαΘ≥σ ∩εδσ NAME Γ ≥²πσ
  4091. APPLET Σδ  α∩∩δσ≥α, ∩εδ≤≈α■∙σπε ±εεß∙σφΦ , ±δσΣ≤■∙Φ∞ εßpατε∞ <APPLET ...
  4092. NAME=φσΩε≥εpεσ╚∞  ...>. ┬ ΩεΣ Σp≤πεπε α∩∩δσ≥α Γ±≥αΓⁿ≥σ
  4093.  
  4094.     Applet anotherApplet = getAppletContext.getApplet("φσΩε≥εpεσ╚∞ ");
  4095.  
  4096. ╧pΦΓσΣΦ≥σ anotherApplet Ω ±εε≥Γσ≥±≥Γ≤■∙σ∞≤ ∩ε≥ε∞Ω≤ Applet Φ ≥επΣα Γ√
  4097. ±∞εµσ≥σ Γ√τ√Γα≥ⁿ δ■ß√σ ∞σ≥εΣ√ ²≥επε α∩∩δσ≥α. Hσ ταß√ΓαΘ≥σ ε ±Φφ⌡pεφΦτα÷ΦΦ,
  4098. ΩεπΣα εßα ∩ε≥εΩα εßpα∙α■≥±  Ω εΣφΦ∞ Φ ≥σ∞ µσ ∩σpσ∞σφφ√∞. ▌≥ε pαßε≥ασ≥
  4099. ≥εδⁿΩε, σ±δΦ α∩∩δσ≥√ ΣσΘ±≥ΓΦ≥σδⁿφε φα⌡εΣ ≥±  φα εΣφεΘ Φ ≥εΘ µσ ±≥pαφΦ÷σ.
  4100. ┼±δΦ εφΦ ∩pΦφαΣδσµα≥ pατφ√∞ ⌠pσΘ∞α∞, ²≥ε φσ ±pαßε≥ασ≥.
  4101. ┬√ ∞εµσ≥σ ∩pεΘ≥Φ±ⁿ ∩ε Γ±σ∞ α∩∩δσ≥α∞ φα HTML-±≥pαφΦ÷σ, Φ±∩εδⁿτ≤  ΩεΣ,
  4102. ∩εΣεßφ√Θ ∩pΦΓσΣσφφε∞≤ φΦµσ. ╥σ∞ φσ ∞σφσσ, Γ Communicator 4.04 Σδ  Win95
  4103. ²≥ε, ∩ε⌡εµσ, φσ pαßε≥ασ≥.
  4104.  
  4105. Applet otherApplet;
  4106. AppletContext ac =getAppletContext;
  4107. Enumeration applets = null;
  4108. for (applets=ac.getApplets(); applets.hasMoreElements(); ) {
  4109.     otherApplet=(Applet)applets.nextElement();
  4110.     if (otherApplet!=this) break;
  4111.     // Σσδασ∞ ≈≥ε-≥ε ± otherApplet, φα∩pΦ∞σp,
  4112.     // if (otherApplet instanceof FooApplet) ...
  4113. }
  4114.  
  4115. HσΩε≥εp√σ ∩pσΣδαπα■≥ Φ±∩εδⁿτεΓα≥ⁿ ±≥α≥Φ≈σ±ΩΦσ ≈δσφ√ εß∙σπε Ωδα±±α Σδ 
  4116. εß∞σφα Φφ⌠εp∞α÷ΦσΘ ∞σµΣ≤ α∩∩δσ≥α∞Φ. ▌≥ε φσ pσΩε∞σφΣ≤σ≥± , ≥αΩ ΩαΩ ε±φεΓαφε
  4117. φα ±≥pα≥σπΦΦ ταπp≤τΩΦ Ωδα±±εΓ, Ωε≥εpα  ∞εµσ≥ Φτ∞σφΦ≥ⁿ±  Γ ß≤Σ≤∙σ∞. Netscape
  4118. ∩ε∞σφ δ σσ Γ εΣφεΘ Φτ ßσ≥α-Γσp±ΦΘ ≥αΩ, ≈≥ε ²≥ε≥ ∞σ≥εΣ φσ pαßε≥αδ, α τα≥σ∞
  4119. ∩ε∞σφ δ σσ εßpα≥φε ≥αΩ, ≈≥ε εφ ταpαßε≥αδ. It doesn't work if you use the
  4120. "mayscript" tag though. (╠φσ φσ ≤Σαδε±ⁿ ²≥ε ∩σpσΓσ±≥Φ - ╧pΦ∞. ∩σpσΓ.)
  4121. ┬ταΦ∞εΣσΘ±≥ΓΦσ ∞σµΣ≤ α∩∩δσ≥α∞Φ ΦφεπΣα ≥pσß≤σ≥± , ΩεπΣα ≤ Γα± Φ∞σσ≥± 
  4122. ∩pεπpα∞∞α ±ε ∞φεµσ±≥Γε∞ ²Ωpαφφ√⌡ ⌠εp∞ Φ Γ√ φσ ⌡ε≥Φ≥σ Γ√φ≤µΣα≥ⁿ ∩εδⁿτεΓα≥σδ 
  4123. ταπp≤µα≥ⁿ Γ±σ ±pατ≤. ╬Σφα Φτ αδⁿ≥σpφα≥ΦΓ - εß·σΣΦφΦ≥ⁿ Φ⌡ Γ εΣΦφ α∩∩δσ≥ ±
  4124. ΣΓ≤∞  GUI. ╤≥αpαΘ≥σ±ⁿ Φτßσπα≥ⁿ φσεß⌡εΣΦ∞ε±≥Φ εß∙σφΦ  α∩∩δσ≥εΓ ∞σµΣ≤ ±εßεΘ.
  4125. ╠εµσ≥σ ≥αΩµσ ∩ε±∞ε≥pσ≥ⁿ URL
  4126. http://java.sun.com:81/products/hotjava/1.1/applet_environment.html πΣσ
  4127. pα±±Ωατ√Γασ≥± , ΩαΩ ²≥ε ∞εµφε ±Σσδα≥ⁿ Γ HotJava 1.1. ╨σΩε∞σφΣα÷Φ :
  4128. ΦτßσπαΘ≥σ ΩεΣα, ταΓΦ± ∙σπε ε≥ ßpα≤τσpα.
  4129.  
  4130. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ Φτ∞σφΦ≥ⁿ pατ∞σp α∩∩δσ≥α?
  4131.  
  4132. [*] ┼±δΦ Γ√ ⌡ε≥Φ≥σ Φ∞σ≥ⁿ Γετ∞εµφε±≥ⁿ Φτ∞σφ ≥ⁿ pατ∞σp√ α∩∩δσ≥α, Γ√ Σεδµφ√
  4133. ±ετΣα≥ⁿ Γφσ°φσσ εΩφε, pατ∞σp√ Ωε≥εpεπε ∞εµφε ß≤Σσ≥ ∞σφ ≥ⁿ φσταΓΦ±Φ∞ε.
  4134. ╠εµφε ∩pσΣδεµΦ≥ⁿ Φ±∩εδⁿτεΓα≥ⁿ τφα≈σφΦ  Γ ∩pε÷σφ≥α⌡ ∩pΦ ταΣαφΦΦ
  4135. Γ√±ε≥√/°ΦpΦφ√ α∩∩δσ≥α, φα∩pΦ∞σp:
  4136.  
  4137.     <APPLET CODE="lewinsky.class" WIDTH="100%" HEIGHT="100%">
  4138.  
  4139.  
  4140. ┬√ φσ ∞εµσ≥σ ∞σφ ≥ⁿ pατ∞σp√ α∩∩δσ≥α φα∩p ∞≤■, φε εφΦ Φτ∞σφ ≥± , ΩεπΣα
  4141. Φτ∞σφ ≥±  pατ∞σp√ εΩφα ßpα≤τσpα (∩pεΓσpσφε Σδ  Netscape 3.04 Φ 4.04, φε φσ
  4142. pαßε≥ασ≥ Γ appletviewer'σ). ┼±δΦ φα Γα°σΘ HTML-±≥pαφΦ÷σ ßεδⁿ°σ φΦ≈σπε φσ≥ Φ
  4143. Γ√ Φ±∩εδⁿτ≤σ≥σ 100% Γ Ωα≈σ±≥Γσ °ΦpΦφ√ Φ Γ√±ε≥√, εΩφε ßpα≤τσpα Γ√πδ ΣΦ≥
  4144. ∩ε≈≥Φ ΩαΩ φα±≥ε ∙σσ ∩pΦδεµσφΦσ.
  4145. ╬≈σφⁿ Φτε∙pσφφ√Θ ±∩ε±εß: τα±≥αΓΦ≥ⁿ ßpα≤τσp ταπp≤µα≥ⁿ ±≥pαφΦ÷≤ ± α∩∩δσ≥ε∞
  4146. ταφεΓε Γ± ΩΦΘ pατ, ΩεπΣα σπε pατ∞σp√ ∞σφ ■≥± , ± φεΓ√∞Φ τφα≈σφΦ ∞Φ °ΦpΦφ√ Φ
  4147. Γ√±ε≥√ (²≥ε, Γσpε ≥φε, φσ ≥ε, ≈≥ε ß√ Γα∞ ⌡ε≥σδε±ⁿ). ┬α∞, ±Ωεpσσ Γ±σπε,
  4148. ∩εφαΣεßΦ≥±  Javascript Σδ  ΣΦφα∞Φ≈σ±ΩεΘ πσφσpα÷ΦΦ ±≥pαφΦ÷√ ∩pΦ ∩ε∞ε∙Φ
  4149. document.write("..."), ΩεπΣα pατ∞σp√ ßpα≤τσpα Φτ∞σφ ■≥± . Hσ pσΩε∞σφΣ≤σ≥± .
  4150. ─p≤πεΘ ΓαpΦαφ≥ - Φ±∩εδⁿτεΓα≥ⁿ Ωδα±± SplitPane Φτ JFC.
  4151.  
  4152. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ ∩≡ε≈Φ≥α≥ⁿ ⌠αΘδ, ⌡≡αφ ∙ΦΘ±  Γ JAR?
  4153.  
  4154. [*] ╤α∞√Θ δ≤≈°ΦΘ ±∩ε±εß ²≥ε Φ±∩εδⁿτεΓαφΦσ Class.getResourceAsStream(),
  4155. Ωε≥ε≡√Θ Σα±≥ Γα∞ Γ⌡εΣφεΘ ∩ε≥εΩ Φτ Ωε≥ε≡επε τα≥σ∞ Γ√ ±∞εµσ≥σ ∩≡ε≈Φ≥α≥ⁿ
  4156. φ≤µφ√Θ ≥σΩ±≥εΓ√Θ ⌠αΘδ, δσµα∙ΦΘ Γ JAR. ┬√ ∞εµσ≥σ Σσδα≥ⁿ ≥αΩ, ≈≥εß√,
  4157. Σε∩≤±≥Φ∞, Γτ ≥ⁿ ∩α≡α∞σ≥≡ Σδ  α∩∩δσ≥α Φτ ≥σΩ±≥εΓεπε ⌠αΘδα.
  4158. ─≡≤πΦσ ±αΘ≥√: ╤∞ε≥≡Φ≥σ http://www.uq.net.au/~zzcmumme Σδ  ∩≡Φ∞σ≡εΓ.
  4159.  
  4160. *(╫α±≥ⁿ 13) ╩αΩ ∞φσ εßετφα≈Φ≥ⁿ(sign) ∞εΘ α∩∩δσ≥?
  4161.  
  4162. [*] ╨ατ≡αßε≥≈ΦΩΦ ß≡α≤τσ≡εΓ ±ετΣαδΦ φσταΓΦ±Φ∞√σ Φ ≡ατφ√σ ≡σ°σφΦ  Σδ 
  4163. εßετφα≈σφΦ  α∩∩δσ≥εΓ (αδΦα±εΓ). ╟Σσ±ⁿ σ±≥ⁿ φσ±ΩεδⁿΩε URL'εΓ ∩ε ²≥ε∞≤
  4164. ∩εΓεΣ≤.
  4165.  
  4166. ╧ε±∞ε≥≡Φ≥σ Java Signing FAQ φα http://www.fastlane.net/~tlandry/javafaq.txt
  4167.  
  4168. ╧≡ε≈Φ≥αΘ≥σ ε±φεΓ√ εßετφα≈σφΦΘ(basics of signing) τΣσ±ⁿ:
  4169. http://www.javareport.com/html/features/archive/9802/somers.shtml
  4170. ╧ε∞φΦ≥σ, ≈≥ε ∞σ⌡αφΦτ∞√ εßετφα≈σφΦΘ Φ ≤∩≡αΓδσφΦΘ εßετφα≈σφΦΘ ±Φδⁿφε Φτ∞σφσφ√
  4171. ∞σµΣ≤ Java 1.1 Φ Java 2.
  4172.  
  4173. Netscape ∩≡σΣδαπασ≥:
  4174. http://developer.netscape.com/docs/manuals/signedobj/javadoc/netscape_security_
  4175. Target.html
  4176.  
  4177. https://certs.netscape.com/client.html
  4178. http://developer.netscape.com/docs/manuals/signedobj/capabilities/contents.htm
  4179.  
  4180. http://developer.netscape.com/docs/manuals/signedobj/targets/contents.htm
  4181.  
  4182. Micro$oft ∩≡σΣδαπασ≥:
  4183. http://www.microsoft.com/java/security/secfaq.htm
  4184. http://www.microsoft.com/java/sdk/20/tools/signcode.htm
  4185.  
  4186.                        ------------------------------
  4187.  
  4188. 14. Multi-Media
  4189.  
  4190.   1. (╫α±≥ⁿ 14) ╩αΩΦσ ±≤∙σ±≥Γ≤σ≥ ⌡ε≡ε°Φσ Java Image ßΦßδΦε≥σ≈ΩΦ?
  4191.  
  4192.      [*] ╧ε∩≡εß≤Θ≥σ Java Image Management Interface (JIMI), Ωε≥ε≡√Θ Φ∞σσ≥
  4193.      ßσ±∩δα≥φ√Θ Φ φσεπ≡αφΦ≈σφφ√Θ ∩σ≡ΦεΣ Φ±∩εδⁿτεΓαφΦ . JIMI ²≥ε φαßε≡
  4194.      Φφ±≥≡≤∞σφ≥εΓ, Ωε≥ε≡√Θ ∩ετΓεδΦ≥ Γα°Φ∞ Java ∩≡επ≡α∞∞α∞ ≈Φ≥α≥ⁿ Φ
  4195.      τα∩Φ±√Γα≥ⁿ ∞φεπΦσ π≡α⌠Φ≈σ±ΩΦσ ⌠ε≡∞α≥√ ⌠αΘδεΓ (PNG, JPG, BMP, GIF Φ
  4196.      ≥.Σ.). JIMI φα∩Φ±αφ φα 100% Java, Φ εφ ε≥δΦ≈φε ≡αßε≥ασ≥, α ≥αΩµσ δσπεΩ
  4197.      Γ Φ±∩εδⁿτεΓαφΦΦ φεΓΦ≈Ω≤. http://www.activated.com/jimi.html
  4198.  
  4199.   2. (╫α±≥ⁿ 14) ╧ε≈σ∞≤ φσ Φπ≡α■≥ ∞εΦ τΓ≤ΩεΓ√σ ⌠αΘδ√?
  4200.  
  4201.      [*] Java 1.1 Φ ßεδσσ ≡αφφΦσ Γσ≡±ΦΦ ∩εΣΣσ≡µΦΓα■≥ ≥εδⁿΩε εΣΦφ ⌠ε≡∞α≥
  4202.      ⌠αΘδεΓ. ╟Γ≤ΩεΓεΘ ⌠αΘδ Σεδµσφ ß√≥ⁿ τα∩Φ±αφ Γ ⌠ε≡∞α≥σ .au, 8 KHz, ∞εφε,
  4203.      Φ Γ ΩεΣσ mu-law. ┼±δΦ Γα° τΓ≤ΩεΓεΘ ⌠αΘδ φα⌡εΣΦ≥±  Γ ε≥δΦ≈φε∞ ε≥ ²≥επε
  4204.      ⌠ε≡∞α≥σ (φα∩≡Φ∞σ≡, wav) ΦδΦ τα∩Φ±αφ φα Σ≡≤πεΘ ≈α±≥ε≥σ, ± Σ≡≤πΦ∞Φ
  4205.      ∩α≡α∞σ≥≡α∞Φ, ≥ε Γ√ Σεδµφ√ ε≥ΩεφΓσ≡≥Φ≡εΓα≥ⁿ Γ ≥ε≥ ⌠ε≡∞α≥ Φ ± ≥σ∞Φ µσ
  4206.      ±ΓεΘ±≥Γα∞Φ, Ωε≥ε≡√σ ≤Ωαταφ√ Γ√°σ. ╧εΣΣσ≡µΩα ⌠ε≡∞α≥α wav Φ Σ≡≤πΦ⌡
  4207.       Γδ σ≥±  ≈α±≥ⁿ■ Java Media Framework, Ωε≥ε≡√Θ ß≤Σσ≥ Γ JDK 1.2.
  4208.      ╧εΦ∙Φ≥σ φα http://www.yahoo.com GoldWave Σδ  Win 95, sox Σδ  Unix Φ
  4209.      ∩ε⌡εµΦσ ∩≡σεß≡ατεΓ√Γα■∙Φσ ≤≥ΦδΦ≥√ Σδ  Σ≡≤πΦ⌡ ∩δα≥⌠ε≡∞.
  4210.      ─≡≤πΦσ ±αΘ≥√:
  4211.         o ╬Σφ≤ ≤≥ΦδΦ≥≤ ≥αΩεπε ≥Φ∩α ∞εµσ≥σ φαΘ≥Φ φα
  4212.           http://saturn.math.uaa.alaska.edu/~hursha
  4213.         o ╚±⌡εΣφ√Θ ΩεΣ Ωδα±±α Java, ∩ετΓεδ ■∙σπε Φπ≡α≥ⁿ εß√≈φ√Θ PCM .WAV
  4214.           ⌠αΘδ√ φα⌡εΣΦ≥±  τΣσ±ⁿ:
  4215.           http://www.shef.ac.uk/~cs1mjp/Java/WhiteBoard/WavePlayer.html.
  4216.           ┼πε ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ Γ δ■ßε∞ Java ∩≡ΦδεµσφΦΦ ΦδΦ α∩∩δσ≥σ.
  4217.  
  4218.   3. (╫α±≥ⁿ 14) ╩αΩ ±Σσδα≥ⁿ ΓΦΣσε ∩ε≥εΩΦ Φ±∩εδⁿτ≤  Java?
  4219.  
  4220.      [*] ╟Σσ±ⁿ ∞εµφε Φ±∩√≥α≥ⁿ StreamBean. ╧ε±∞ε≥≡Φ≥σ φα
  4221.      http://www.streambean.com/streambean/
  4222.  
  4223.   4. (Sect. 14) ╧εΣΣσ≡µΦΓασ≥ δΦ Java αφΦ∞Φ≡εΓαφφ√σ GIF'√?
  4224.  
  4225.      [*] Java 1.0.2 Φ ßεδσσ ≡αφφΦσ Γσ≡±ΦΦ Φ±∩εδⁿτ≤■≥ GIF Φ JPEG ⌠ε≡∞α≥√, Φ
  4226.      φσ ∩εΣΣσ≡µΦΓα■≥ GIF89 αφΦ∞Φ≡εΓαφφ√Θ GIF ⌠ε≡∞α≥. (└φΦ∞Φ≡εΓαφφ√Θ GIF ²≥ε
  4227.      ≥ε≥, Ωε≥ε≡√Θ ±εΣσ≡µΦ≥ ±δσΣ≤■∙Φσ εΣΦφ τα Σ≡≤πΦ∞ ΩαΣ≡√ Ωα≡≥ΦφΩΦ, Ωε≥ε≡√σ
  4228.      ß√±≥≡ε ±∞σφ ■≥ Σ≡≤π Σ≡≤πα φα ²Ω≡αφσ, ≈≥εß√ ∩εΩατα≥ⁿ ΩαΩεσ-δΦßε
  4229.      ΣΓΦµσφΦσ). ╩επΣα Γ√ Γ√ΓεΣΦ≥σ φα ²Ω≡αφ αφΦ∞Φ≡εΓαφφ√Θ GIF Γ Java 1.0.2,
  4230.      Γ√ ≤ΓΦΣΦ≥σ ≥εδⁿΩε ∩σ≡Γ√Θ ΩαΣ≡. Hσ ±≤∙σ±≥Γ≤σ≥ δσπΩεπε ∩≤≥Φ, ≈≥εß√
  4231.      ∩εΩατα≥ⁿ ε±≥αδⁿφ√σ ΩαΣ≡√.
  4232.      ╧≡σΦ∞≤∙σ±≥Γε∞ αφΦ∞Φ≡εΓαφφ√⌡ GIF ⌠αΘδεΓ  Γδ σ≥±  ≥ε, ≈≥ε Γ√ ±Ωα≈ΦΓασ≥σ
  4233.      δΦ°ⁿ εΣΦφ ⌠αΘδ, Φ ∩εδ≤≈ασ≥σ φσ∩δε⌡≤■ αφΦ∞α÷Φ■. ╧≡σΦ∞≤∙σ±≥Γε∞
  4234.      ∩≡επ≡α∞∞φεπε Ωεφ- ≥≡εδ  φαΣ ε≥Σσδⁿφ√∞Φ ΩαΣ≡α∞Φ  Γδ σ≥±  ≥ε, ≈≥ε Γ√
  4235.      Ωεφ≥≡εδΦ≡≤σ≥σ ±Ωε≡ε±≥ⁿ Φ ∩ε≡ ΣεΩ ∩εΩατα ΩαΣ≡εΓ.
  4236.      ╤■≡∩≡Φτ: JDK 1.1 ∩εΣΣσ≡µΦΓασ≥ αφΦ∞Φ≡εΓαφφ√Θ ∩εΩατ ≥αΩΦ⌡ GIF-⌠αΘδεΓ.
  4237.      ─δ  ∩≡ε±≥σΘ°σΘ αφΦ∞α÷ΦΦ αφΦ∞Φ≡εΓαφφ√σ GIF'√ φα∞φεπε ßεδσσ δσπΩΦ Φ
  4238.      ∩≡ε±≥√, ≈σ∞ ±ετΣαφΦσ ±δεµφ√⌡ ≥ε≈φ√⌡ αφΦ∞α÷ΦΘ.
  4239.  
  4240.   5. (╫α±≥ⁿ 14) ╩αΩ ±ετΣαΓα≥ⁿ αφΦ∞Φ≡εΓαφφ√σ GIF'√?
  4241.  
  4242.      [*] ╚±∩εδⁿτ≤Θ≥σ GIFanimator ε≥ ULead (πεΓε≡ ≥, ²≥ε ±α∞εσ δ≤≈°σσ)
  4243.      http://www.ulead.com, ΦδΦ GIF Construction Set ε≥ Alchemy Mindworks
  4244.  
  4245.   6. (╫α±≥ⁿ 14) ╩αΩ ∞φσ ∩ε∞σ°α≥ⁿ αφΦ∞Φ≡εΓαφφ√∞ GIF'α∞ ∞σδΩα≥ⁿ ∩≡Φ Γ√ΓεΣσ φα
  4246.      ²Ω≡αφ ?
  4247.  
  4248.      [*] ╧ε⌡εµσ, ∩≡εßδσ∞α Γ ≥ε∞, ≈≥ε Γ Γα°σ∞ ∞σ≥εΣσ ≡Φ±εΓαφΦ  Γ√ Σσδασ≥σ
  4249.      ≥αΩ:
  4250.  
  4251.          g.drawImage(img, ix, iy, this);
  4252.  
  4253.  
  4254.      ╤δσΣ≤σ≥ Σσδα≥ⁿ Γε≥ ≥αΩ:
  4255.  
  4256.          g.drawImage(img, ix, iy, getBackground(), this);
  4257.  
  4258.  
  4259.      ▌≥ε Φτ∞σφΦ≥ Γ±σ ∩≡ετ≡α≈φ√σ ∞σ±≥α Ωα≡≥ΦφΩΦ φα ÷Γσ≥ ταΣφσπε ∩δαφα ∩σ≡σΣ
  4260.      Γ√ΓεΣε∞ Ωα≡≥ΦφΩΦ φα ²Ω≡αφ. ┼±δΦ Γ√ ß≤Σσ≥σ Γ√ΓεΣΦ≥ⁿ ∩≡ετ≡α≈φ√σ φα∩≡ ∞≤■
  4261.      φα ²Ω≡αφ, ≥ε εφΦ ß≤Σ≤≥ ∞σ≡÷α≥ⁿ.
  4262.      ┼±δΦ ²≥ε φσ ∩ε∞επασ≥, ≥επΣα ∩≡εΓσ≡ⁿ≥σ Φ±∩εδⁿτ≤σ≥±  δΦ imageUpdate
  4263.  
  4264.      public boolean imageUpdate(Image img, int flags, int x, int y,
  4265.                    int width, int height) {
  4266.              if ((flags & (FRAMEBITS|ALLBITS))!= 0) repaint();
  4267.              return (flags & (ALLBITS|ABORT)) == 0;
  4268.      }
  4269.  
  4270.  
  4271.      update ²≥ε
  4272.  
  4273.          public void update(Graphics g) { paint(g); }
  4274.  
  4275.  
  4276.      ┼±δΦ ≤ Γα± σ±≥ⁿ ⌠εφεΓα  Ωα≡≥ΦφΩα, φα⌡εΣ ∙α ±  τα ≈α±≥Φ≈φε ∩≡ετ≡α≈φ√∞
  4277.      αφΦ∞Φ≡εΓαφφ√∞ GIF'ε∞, ≥ε Γα∞ ∩≡ΦΣσ≥±  Σσδα≥ⁿ ΣΓεΘφεΘ ß≤⌠σ≡. ┬√ ∞εµσ≥σ
  4278.      ΩαΣ≡Φ≡εΓα≥ⁿ ⌠εφεΓεσ Φτεß≡αµσφΦσ Σδ  ≥επε, ≈≥εß√ φσ Φ±∩εδⁿτεΓα≥ⁿ
  4279.      ΣΓεΘφεΘ ß≤⌠⌠σ≡ Γ±σπε ∩≡ΦδεµσφΦ  Φ φσ ταφΦ∞α≥ⁿ ±δΦ°Ωε∞ ∞φεπε ∩α∞ ≥Φ.
  4280.  
  4281.   7. (╫α±≥ⁿ 14) ╧εΣΣσ≡µΦΓασ≥ δΦ Java ∩≡ετ≡α≈φ√σ GIF'√?
  4282.  
  4283.      ╩α≡≥ΦφΩΦ GIF89a ± ∩≡ετ≡α≈φ√∞ ⌠εφε∞ ∩εΩαµ≤≥±  ΩαΩ ∩≡ετ≡α≈φ√σ ßστ
  4284.      Σαδⁿ°σΘ°σΘ ⌠Φδⁿ≥≡α÷ΦΦ. ▌≥ε ∩εΣΣσµΦΓασ≥±  φα≈Φφα  ± Γσ≡±ΦΦ 1.0. Java
  4285.      Ωε≡≡σΩ≥φε Γ√ΓεΣΦ≥ Φ αφΦ∞Φ≡εΓαφφ√σ GIF'√ Φ ∩≡ετ≡α≈φ√σ GIF'√.
  4286.      ┬√ ∞εµσ≥σ τα∩εδφΦ≥ⁿ ∩≡ετ≡α≈φ√σ ∩ΦΩ±σδ√ ÷Γσ≥ε∞ (≥αΩ ΩαΩ εφΦ ∩ε Γδ ■≥± 
  4287.      φσ-∩≡ετ≡α≈φ√∞Φ Γ Java ). ╧≡ε±≥ε ±ΣσδαΘ≥σ ≥ε≈φεσ τα∩εδφσφΦσ ÷Γσ≥ε∞.
  4288.  
  4289.          drawImage(img, x, y, w, h, fillcolor, this);
  4290.  
  4291.  
  4292.      ─αδσσ, Γ√ ∞εµσ≥σ ε≥⌠Φδⁿ≥≡εΓα≥ⁿ ∩ΦΩ±σδ√ Φτεß≡αµσφΦ  Σδ  ΓετΓ≡α∙σφΦ 
  4293.      ßΦ≥εΓ, Ωε≥ε≡√σ Γ√ µσδασ≥σ ±Σσδα≥ⁿ ∩≡ετ≡α≈φ√∞Φ. ╬ΣφαΩε, ßεδⁿ°σσ ≈≥ε Γ√
  4294.      ∞εµσ≥σ ±Σσδα≥ⁿ ²≥ε εßφα≡≤µΦ≥ⁿ ≈≥ε φα⌡εΣΦ≥±  ∩εΣ Ωα≡≥ΦφΩεΘ. ┬√ φσ
  4295.      ∞εµσ≥σ ∩ε±∞ε≥≡σ≥ⁿ ≈≥ε φα⌡εΣΦ≥±  ∩εΣ α∩∩δσ≥ε∞(φα∩≡Φ∞σ≡ Γ ±α∞ε∞
  4296.      ß≡α≤τσ≡σ). ╧ε ≤∞εδ≈αφΦ■ ≤ α∩∩δσ≥εΓ ≤±≥αφαΓδΦΓασ≥±  ∩≡ε±≥εΘ ±σ≡√Θ ÷Γσ≥
  4297.      φα ⌠εφσ.
  4298.  
  4299.   8. (╫α±≥ⁿ 14) ╩αΩ   ∞επ≤ ∩≡εΦπ≡α≥ⁿ ΓΦΣσε φα Java?
  4300.  
  4301.      [*] ╚±∩εδⁿτ≤σ≥σ Java Media Framework Player API.
  4302.      ┼∙σ ±αΘ≥√:
  4303.         o ╤∩σ÷Φ⌠ΦΩα÷Φ■ Java Media Framework Player API ∞εµφε φαΘ≥Φ φα
  4304.           http://java.sun.com/products/java-media/jmf/
  4305.         o Intel Γ√∩≤±≥Φδα SDK Σδ  Java Media Framework Player API. ▌≥α SDK
  4306.           ∩≡σΣδαπασ≥  Σδ  Windows 95 Φ Windows NT. ─δ  ßεδⁿ°σΘ Φφ⌠ε≡∞α÷ΦΦ,
  4307.           ±∞ε≥≡Φ≥σ http://developer.intel.com/ial/jmedia
  4308.         o SGI Γ√∩≤±≥Φδα Φφ±≥≡≤∞σφ≥ JMF Σδ  IRIX: ╤∞ε≥≡Φ ≥σ
  4309.           http://www.sgi.com/Products/motion/
  4310.  
  4311. *(╫α±≥ⁿ 14) ╩αΩεΓα ∩pΦ≈Φφα ²≥εΘ ∩pεßδσ∞√:
  4312.  
  4313. $ appletviewer m.html
  4314. Premature end of JPEG file
  4315. sun.awt.image.Im...Exception: JPEG datastream contains no image
  4316. at sun.awt.image. ... .produceImage(JPEGImageDecoder.java:133)
  4317. at sun.awt.image.Inpu...mageSource.doFetch(
  4318.                               InputStreamImageSource.java:215)
  4319. at sun.awt.image.ImageFetcher.run(ImageFetcher.java:98)
  4320.  
  4321. [*] ┬ ≡αφφΦ⌡ Γ√∩≤±Ωα⌡ JDK φσ ΦτΓσ±≥φ√ ßαπΦ, Ωε≥ε≡√σ ∞επ≤≥  ΓΦ≥ⁿ±  ∩≡Φ≈ΦφεΘ
  4322. ε°ΦßΩΦ ∩≡Φ ∩≡ε≈≥σφΦΦ JPEG φα ∞σΣδσφφ√⌡ ±εσΣΦφσφΦ ⌡. ╬°ΦßΩα ∞εµσ≥ ∩ε ΓΦ≥ⁿ± 
  4323. σ±δΦ JPEG ±εΣσ≡µΦ≥ ßεδⁿ°εΘ ßδεΩ Σαφφ√⌡ ∩≡ΦδεµσφΦΘ (APPn marker) - ∩≡εßδσ∞α
  4324. ∩≡ε ΓΦ≥±  Γ ≥ε∞, ≈≥ε ΣσΩεΣσ≡ JPEG ∩√≥ασ≥±  ∩≡ε∩≤±≥Φ≥ⁿ ∞Φ∞ε APPn Φ ±ßΦΓασ≥± 
  4325. σ±δΦ φσ Γσ±ⁿ APPn ß√δ ∩≡Φφ ≥ε Ω ²≥ε∞≤ ∞ε∞σφ≥≤. ╧≡ΦΓσΣσφφεσ Γ√°σ ±εεß∙σφΦσ
  4326. εß ε°ΦßΩσ ²≥ε ≥εδⁿΩε εΣφε Φτ φσ±ΩεδⁿΩΦ⌡ Γετ∞εµφ√⌡, φε Γ Ωε≡φσ εφΦ Γ±σ
  4327. εΣΦφαΩεΓ√.
  4328. Photoshop ²≥ε φαΦßεδσσ ≈α±≥√Θ Φ±≥ε≈φΦΩ JPEG'εΓ ±εΣσ≡µα∙Φ⌡ ßεδⁿ°Φσ APPn
  4329. ßδεΩΦ. ┬ ε±εßσφφε±≥Φ, σ±δΦ ┬√ ∩ετΓεδΦ≥σ Photoshop 4 τα∩Φ±α≥ⁿ ∞ΦφΦα≥■≡≤
  4330. (thumbnail) Γ JPEG, Γ∞σ±≥σ ± φσΘ εφ τα∩Φ⌡φσ≥ δΦ≈φ≤■ ∩ε∞σ≥Ω≤ APPn
  4331. Photoshop'α Γ φσ±ΩεδⁿΩε K, ≈σπε εß√≈φε Γ∩εδφσ Σε±≥α≥ε≈φε Σδ  ∩εδ≤≈σφΦ 
  4332. ε°ΦßΩΦ.
  4333. ╤≤∙σ±≥Γ≤σ≥ φσ±ΩεδⁿΩε Γετ∞εµφ√⌡ ≡σ°σφΦΘ:
  4334.  
  4335.    * ┬ετⁿ∞Φ≥σ φεΓ√Θ JDK - ²≥≤ ∩≡εßδσ∞≤ εßσ∙α■≥ Φ±∩≡αΓΦ≥ⁿ Γ Γσ≡±ΦΦ 1.1.
  4336.      (┼±δΦ ┬√ Γ√ΩδαΣ√Γασ≥σ Φτεß≡αµσφΦ  φα Web, ²≥επε φσ Σε±≥α≥ε≈φε Σδ 
  4337.      ≡σ°σφΦ , ≥αΩ ΩαΩ ┬√ φσ ±∞εµσ≥σ ∩≡ΦφΦ∞α≥ⁿ ≥εδⁿΩε ≥σ⌡ ∩ε±σ≥Φ≥σδσΘ, φα
  4338.      ±ΓεΘ ±αΘ≥, Ω≥ε Φ∞σσ≥ ±Γσµ≤■ Γσ≡±Φ■ Java.
  4339.    * ╩επΣα ±ετΣασ≥σ JPEG'Φ Σδ  Web Φ±∩εδⁿτ≤  Photoshop, ß≤Σⁿ≥σ ≤Γσ≡σφ√, ≈≥ε
  4340.      Γ√Ωδ■≈ΦδΦ ε∩÷Φ■ "╤ε⌡≡αφΦ≥ⁿ ∞ΦφΦ≥■≡≤" ("Save thumbnails"). (▌≥ε ⌡ε≡ε°α 
  4341.      ΦΣσ  φα ±εΓ±σ∞ ΦτßαΓΦ≥ⁿ±  ε≥ ßαπα, ∩ε≥ε∞≤ ≈≥ε ∞ΦφΦα≥■≡α ≥εδⁿΩε ≥≡α≥α
  4342.      Γ≡σ∞σφΦ ∩σ≡σΩα≈ΩΦ ≥αΩ Σεδπε, ∩εΩα Web ß≡α≤τσ≡ φσ ±εεß≡ατΦ≥. ┬√ ∞εµσ≥σ
  4343.      Γ±σ σ∙σ Φ∞σ≥ⁿ φσ∩≡Φ ≥φε±≥Φ σ±δΦ ≤ ┬α± Φ∞σ■≥±  ΣδΦφφ√σ Ωε∞∞σφ≥α≡ΦΦ ΦδΦ
  4344.      ∞φεµσ±≥Γε ∩≤≥σΘ ±ε⌡≡αφσφφ√⌡ Γ ⌠αΘδσ, φε Γ 99% ±δ≤≈ασΓ, ΦτßαΓδσφΦσ ε≥
  4345.      ∞ΦφΦα≥■≡ τα±≥αΓΦ≥ APPn Photoshop'α Σε±≥α≥ε≈φε ≤∞σφⁿ°Φ≥ⁿ± , ≈≥εß√ φσ
  4346.      Γ√τ√Γα≥ⁿ ßαπ Java.
  4347.    * ╚±∩εδⁿτ≤Θ≥σ ≥αΩεΘ Φφ±≥≡≤∞σφ≥, ΩαΩ 'jpegtran' (ε≥ HσταΓΦ±Φ∞εΘ JPEG
  4348.      ├≡≤∩∩√ - Independent JPEG Group) ≈≥εß√ ε≥≡στα≥ⁿ APPn Photoshop'α
  4349.      Γ±σ÷σδε ßστ ΩαΩεΘ-φΦß≤Σⁿ ∩ε≥σ≡Φ Ωα≈σ±≥Γα ∩≡Φ ²≥ε∞. ▌≥ε ≡σΩΩε∞σφΣ≤σ≥± 
  4350.      Σδ  ≥σ⌡, Ω≥ε Γ√φ≤µΣσφ√ ±ετΣαΓα≥ⁿ Ωε∞∞σφ≥α≡ΦΦ ΦδΦ σ∙σ ≈≥ε-φΦß≤Σⁿ, ≈≥ε
  4351.      ταΘ∞σ≥ ∞φεπε ∞σ±≥α Γ JPEG ⌠αΘδσ.
  4352.    * (┬ ∩ε±δσΣφ■■ ε≈σ≡σΣⁿ) ╟απ≡≤τΦ≥σ Φ ∩σ≡στα∩Φ°Φ≥σ Ωα≡≥ΦφΩ≤ Γ Σ≡≤πε∞
  4353.      π≡α⌠Φ≈σ±Ωε∞ ≡σΣαΩ≥ε≡σ, Ωε≥ε≡√Θ φσ Γ±≥αΓΦ≥ δΦ°φ■■ APPn ΦδΦ Σ≡≤πΦσ
  4354.      φσφ≤µφ√σ Σαφφ√σ. ▌≥ε, ε≈σΓΦΣφε, ≤⌡≤Σ°Φ≥ Γα° JPEG Φ   φσ ≡σΩΩε∞σφΣ≤■
  4355.      ²≥ε ≥σ∞, Ωε∞≤ ε±εßσφφε Γαµφε Ωα≈σ±≥Γε Φτεß≡αµσφΦ .
  4356.  
  4357. ╦■ßα  ßεδⁿ°α  Γσ≡⌡φ   ∞σ≥Ωα(overhead marker)  ΓΦ≥±  ∩≡Φ≈ΦφεΘ ≥αΩεΘ µσ
  4358. ∩≡εßδσ∞√; 4K Ωε∞∞σφ≥α≡ΦσΓ, ±Ωαµσ∞, Γ ∞σ≥Ωσ COM. ╚≥αΩ, Photoshop ²≥ε φσ
  4359. σΣΦφ±≥Γσφφ√Θ "≡ατΣ≡αµΦ≥σδⁿ" ²≥επε ßαπα.
  4360.  
  4361. *(╫α±≥ⁿ 14) ╩αΩ   ∞επ≤ ∩≡σεß≡ατεΓ√Γα≥ⁿ GIF Φ JPEG ⌠ε≡∞α≥√ Σ≡≤π Γ Σ≡≤πα?
  4362.  
  4363. [*] ╬ΣφΦ∞ ±δεΓε∞, φΦΩαΩ.
  4364. ╥≡≤Σφε ∩σ≡σΣσδα≥ⁿ ⌡ε≡ε°ε ≡αßε≥α■∙ΦΘ JPEG Γ ≥αΩµσ ⌡ε≡ε°≤■ Ωα≡≥ΦφΩ≤ ⌠ε≡∞α≥α
  4365. GIF. ╚φεπΣα, ± ßεδⁿ°Φ∞ ≥≡≤Σε∞, ┬√ ∞εµσ≥σ ∩εδ≤≈Φ≥ⁿ ∩≡Φσ∞δσ∞εσ
  4366. ∩≡σεß≡ατεΓαφΦσ, φε Γ ßεδⁿ°Φφ±≥Γσ ±δ≤≈ασΓ GIF<->JPEG ΩεφΓσ≡≥Φ≡εΓαφΦσ ∩≡ε±≥ε
  4367. ∩≡σΓ≡α≥Φ≥ ┬α°σ Φτεß≡αµσφΦσ Γ "Ωα°≤". ╦≤≈°σ ß≤Σσ≥, σ±δΦ Γα°Φ Ωα≡≥ΦφΩΦ ±≡ατ≤
  4368. ß≤Σ≤≥ Γ φ≤µφε∞ ⌠ε≡∞α≥σ.
  4369. ─≡≤πΦσ ≡σ°σφΦ :
  4370.  
  4371.    * ┼±δΦ ┬√ ε∩≡σΣσδσφφε ⌡ε≥Φ≥σ ∩≡σεß≡ατεΓα≥ⁿ ⌠ε≡∞α≥ Φτεß≡αµσφΦ ,
  4372.      ∩ε∩≡εß≤Θ≥σ GBM (Generalized Bitmap Module). ▌≥ε≥ ∩αΩσ≥ Φ∞σσ≥ GNU
  4373.      δΦ÷σφτΦ■, φα C, Φ ε≈σφⁿ ⌡ε≡ε° Γ Φ±∩εδⁿτεΓαφΦΦ. ╧εΦ∙Φ≥σ σπε φα
  4374.      http://www.interalpha.net/customer/nyangau/
  4375.      GBM ⌡ε≡ε°ε ΩεφΓσ≡≥Φ≡≤σ≥ Γ JPEG ∩pαΩ≥Φ≈σ±ΩΦ ßστ ∩ε≥σpΦ Ωα≈σ±≥Γα. ╬φ
  4376.      ≥αΩµσ ∩≡σεß≡ατεΓ√Γασ≥ Φτ/Γ εΩεδε 20 Σ≡≤πΦ⌡ ⌠ε≡∞α≥εΓ, Σσδασ≥
  4377.      ΩαΣ≡Φ≡εΓαφΦσ(cropping), Φτ∞σφ σ≥ ≡ατ∞σ≡√, ÷Γσ≥α, Ωε≡≡σΩ≥Φ≡≤σ≥ πα∞∞≤,
  4378.      ∩εδ≤≥εφα, Γ±σ ≈≥ε ⌡ε≥Φ≥σ. ╚τφα≈αδⁿφ√Θ Φ±⌡εΣφ√Θ ΩεΣ GBM φσ ∩εΣΣσ≡µΦΓασ≥
  4379.      JPEG φα∩≡ ∞≤■, φε Φ±∩εδⁿτ≤Θ≥σ ΩεΣ ∩εΣΣσ≡µΦΓα■∙ΦΘ ²≥ε≥ ⌠ε≡∞α≥ ε≥
  4380.      IJG(Independent JPEG Group), φατ√Γασ∞√Θ jpeg-6a Φ Γτ ≥ⁿ σπε ∞εµφε
  4381.      τΣσ±ⁿ -
  4382.      ftp://sun2.urz.uni-heidelberg.de/pub/simtel/graphics/jpegsr6a.zip
  4383.    * ─δ  ßεδⁿ°σΘ Φφ⌠ε≡∞α÷ΦΦ ±∞ε≥≡Φ≥σ JPEG FAQ φα
  4384.      http://www.faqs.org/faqs/jpeg-faq/
  4385.  
  4386. *(╫α±≥ⁿ 14) ┼±δΦ σ±≥ⁿ ±εΣσpµα∙ΦΘ ΦτεßpαµσφΦσ InputStream (ßεδⁿ°εΘ ⌠αΘδ),
  4387. ΩαΩ σπε Γ√Γσ±≥Φ φα ²Ωpαφ ßστ ≥εp∞ετεΓ?
  4388.  
  4389. [*] ╚±∩εδⁿτ≤Θ≥σ ²≥ε≥ ∞σ≥εΣ, Φ some adroit shuffling.
  4390.  
  4391.  
  4392.     Toolkit.getImage(URL url)
  4393.  
  4394.  
  4395. ╤ετΣαΘ≥σ φΦ≥ⁿ(thread) Ωε≥ε≡α  ß≤Σσ≥ ≈σ∞-≥ε Γ≡εΣσ http ±σ≡Γσ≡α. ╟α±≥αΓⁿ≥σ σσ
  4396. ∩≡ε±δ≤°ΦΓα≥ⁿ ΩαΩεΘ-φΦß≤Σⁿ ∩ε≡≥ (8765 φα∩≡Φ∞σ≡) φα Γ⌡εΣ ∙Φσ τα∩≡ε±√. ╩επΣα
  4397. φΦ≥ⁿ ∩εδ≤≈Φ≥ τα∩≡ε±, εφα ∩≡ε±≥ε *±∞α⌡φσ≥* ∩≡Φ±Γεσφφ√σ http ταπεδεΓΩΦ Φ
  4398. ∩≤±≥Φ≥ Φ⌡ Γ InputStream. ╥αΩΦ∞ εß≡ατε∞ Ωε∞∩εφσφ≥ Ωε≥ε≡√Θ Φ∞σσ≥ Γ⌡εΣφεΘ
  4399. ∩ε≥εΩ Φ Σεδµσφ Γ√∩εδφ ≥ⁿ getImage(url) ≥σ∩σ≡ⁿ ∞εµσ≥ ß√≥ⁿ Γ√τΓαφ:
  4400.  
  4401.     Toolkit.getImage("localhost:8765/")
  4402.  
  4403.  
  4404. HΦ≥ⁿ ß≤Σσ≥ ΣσΘ±≥ΓεΓα≥ⁿ ΩαΩ αΣα∩≥σ≡ stream-to-url, Φ ß≤Σσ≥ Γ√ΓεΣΦ≥ⁿ φα ²Ω≡αφ
  4405. Φτεß≡αµσφΦσ ∩ε ∞σ≡σ ±≈Φ≥√ΓαφΦ . ▌≥ε ΦτßαΓΦ≥ ┬α± ε≥ φαΣεßφε±≥Φ ∩≡ε≈σ±≥ⁿ 200K
  4406. Σαφφ√⌡ Φτ JPEG ∩σ≡σΣ ≥σ∞, ΩαΩ ∞√ ±∞εµσ≥σ ≈≥ε-δΦßε Γ√Γσ±≥Φ φα ²Ω≡αφ.
  4407.  
  4408. *(╫α±≥ⁿ 14) ╩αΩ τα∩Φ±√Γα≥ⁿ τΓ≤ΩΦ φα Java?
  4409.  
  4410. [*] Java Media Framework ß≤Σσ≥ Φ∞σ≥ⁿ ∩εδφ≤■ ∩εΣΣσ≡µΩ≤ ²≥επε, φε ∩εΩα ²≥ε φσ
  4411. ≥αΩ. JMF 1.0.1 ∩εΣΣσ≡µΦΓασ≥ δΦ°ⁿ ∩≡εΦπ≡√ΓαφΦσ τΓ≤Ωα.
  4412. JMF 1.0.1 ∩≡ΦΓ ταφ Ω JDK 1.2, Φ Σε±≥≤∩σφ ΩαΩ ε≥Σσδⁿφ√Θ α∩ΣσΘ≥ Σδ  JDK 1.1 Φ
  4413. Netscape Communicator 4 ± Java 1.1.
  4414. ─≡≤πΦσ ±αΘ≥√:
  4415.  
  4416.      ╠σµΣ≤ ≥σ∞, ±≤∙σ±≥Γ≤■≥ ≡ατ≡αßε≥ΩΦ Σδ  Win95/NT Σε±≥≤∩φ√σ φα
  4417.      http://www.scrawl.com/store/. ╬φΦ ∩εΣΣσ≡µΦΓα■≥ 8, 16-ßΦ≥, ±≥σ≡σε,
  4418.      ∞εφε, 11025, 22050, 44100 Hz τα∩Φ±ⁿ/∩≡εΦπ≡√ΓαφΦσ, ταπ≡≤τΩ≤/τα∩Φ±ⁿ
  4419.      ⌠αΘδεΓ .WAV. ┬√ ∞εµσ≥σ ≥αΩµσ ∩ε≡≥Φ≡εΓα≥ⁿ Φ⌡ Σδ  ┬α°σΘ ∩δα≥⌠ε≡∞√.
  4420.  
  4421. *(╫α±≥ⁿ 14) ╚∞σσ≥ δΦ Java Γ±≥≡εσφφ≤■ ∩εΣΣσ≡µΩ≤ ε≥εß≡αµσφΦ  HTML?
  4422.  
  4423. [*] JDK 1.1 ∩εΣΣσ≡µΦΓασ≥ εß≡αßε≥Ω≤ HTML Φ±∩εδⁿτ≤  φσ±Γ ταφφ√Θ ± φΦ∞ ∩αΩσ≥
  4424. JFC 1.1, ΦτΓσ±≥φ√Θ ≥αΩµσ ΩαΩ Swing. Swing ∩≡ΦΓ ταφ Ω JDK 1.2. ╬φ ∩εφΦ∞ασ≥
  4425. ∩≡ε±≥σΘ°Φσ ²δσ∞σφ≥√ Γ HTML (π≡α⌠ΦΩα, ≥αßδΦ÷√, ≥σΩ±≥), Ωε≥ε≡√⌡ Γ∩εδφσ
  4426. Σε±≥α≥ε≈φε Σδ  εß√≈φεΘ ≡αßε≥√(⌠αΘδ√ ΣεΩ≤∞σφ≥α÷ΦΦ, ²δ. ∩ε≈≥α, Φ Σ≡.)
  4427. ─≡≤πΦσ ±±√δΩΦ:
  4428.  
  4429.    * JavaBrowser http://www.ii.uib.no/~alexey/jb/index.html ╬≥Ω≡√≥√Θ ΩεΣ,
  4430.      ßσ±∩δα≥φε Σδ  Φ±∩εδⁿτεΓαφΦ  ∩εΣ GNU LGPL δΦ÷σφτΦσΘ, HTML 2.0 (Γσ≡±Φ 
  4431.      ±≥αφΣα≡≥α).
  4432.    * ICE Browser - Java Bean Component http://www.icesoft.no/ICEBrowser/
  4433.      ╤ΓεßεΣφε Γ ±εß≡αφφε∞ ΓΦΣσ Σδ  Φ±∩εδⁿτεΓαφΦ  Γ ßσ±∩δα≥φ√⌡ ∩≡ΦδεµσφΦ ⌡.
  4434.      ╩ε∞∞σ≡≈σ±Ωα  δΦ÷σφτΦ  Σε±≥≤∩φα ΓΩδ■≈α  Φ±⌡εΣφ√Θ ΩεΣ - δΦ÷σφτΦ  τα
  4435.      φσßεδⁿ°Φσ ΣσφⁿπΦ. ╠αδσφⁿΩΦΘ HTML ΩδΦσφ≥! Lightweight! HTML 3.2
  4436.    * HotJava HTML Component - Java Bean Component
  4437.      http://www.javasoft.com/products/hotjava/bean/index.html $195 τα
  4438.      δΦ≈φεσ Φ±∩εδⁿτεΓαφΦσ δΦ÷σφτΦΦ φα ∩≡επ≡α∞∞≤. HTML 3.2
  4439.    * HTML browser (ε≥Ω≡√≥√Θ ΩεΣ)
  4440.      http://barium.tn.tudelft.nl/people/gool/java/html/Html.html
  4441.    * Web Window Browser http://www.opencube.com/example_wwb.htm $139 - ßστ
  4442.      Φ±⌡εΣφεπε ΩεΣα.
  4443.    * jHelp ($20-650) http://w3.nai.net/~rvdi/jhelp/jhelp2/jhelp.html jHelp
  4444.      ²≥ε Ωε∞∩εφσφ≥ HTML ß≡α≤τσ≡α φα∩Φ±αφφ√Θ φα Java, HTML 2.0
  4445.  
  4446. *(╫α±≥ⁿ 14) ▀ ταπ≡≤τΦδ Ωα≡≥ΦφΩ≤ Φτ JPEG/GIF ⌠αΘδα Φ±∩εδⁿτ≤  ∞σ≥εΣ
  4447. Toolkit/Applet.createImage(URL/String), Φ (Γ√±ε≥α Φ °Φ≡Φφα -1) ²≥ε φσ
  4448. Γ√ΓεΣΦ≥±  φα ²Ω≡αφ. ╧ε≈σ∞≤?
  4449.  
  4450. [*] AWT ∩ε ≤∞εδ≈αφΦ■ Γ ²≥ε∞ ±δ≤≈ασ φΦ≈σπε φσ Σσδασ≥.
  4451. ╩επΣα Ωα≡≥ΦφΩα Γ∩σpΓ√σ Γ√ΓεΣΦ≥ⁿ±  ± Φ±∩εδⁿτεΓαφΦσ∞ Component.drawImage(),
  4452. ΦδΦ σσ ≡ατ∞σ≡ τα∩≡ε°σφ, Φτεß≡αµσφΦσ φα≈Φφασ≥ ταπ≡≤µα≥ⁿ±  Γ Σp≤πεΘ φΦ≥Φ
  4453. (Thread).
  4454. ┬ε Γpσ∞  ταπp≤τΩΦ ΦτεßpαµσφΦ , ImageObserver, ε∩pσΣσδσφφ√Θ Γ εßpα∙σφΦΦ Ω
  4455. drawImage()/getHeight(), ß≤Σσ≥ ∩σpΦεΣΦ≈σ±ΩΦ Φφ⌠εp∞ΦpεΓα≥ⁿ±  ε ±≥α≥≤±σ
  4456. ταπp≤τΩΦ ΦτεßpαµσφΦ , ∩≤≥σ∞ Γ√τεΓα imageUpdate() ∞σ≥εΣα.
  4457. ┬ ±δ≤≈ασ Γ√τεΓα Component.drawImage(), ∩ε ≤∞εδ≈αφΦ■ Component.imageUpdate()
  4458. Σεδµσφ ∩δαφΦpεΓα≥ⁿ *Σε∩εδφΦ≥σδⁿφ√Θ* Γ√τεΓ repaint(), ΩεπΣα ΦτεßpαµσφΦσ
  4459. ß≤Σσ≥ ∩εδφε±≥ⁿ■ ταπp≤µσφε. ▌≥ε ετφα≈ασ≥, φα∩pΦ∞σp, ≈≥ε ±δσΣ≤■∙ΦΘ ΩεΣ φσ
  4460. ß≤Σσ≥ pαßε≥α≥ⁿ:
  4461.  
  4462.     class MyComponent extends Component {
  4463.       ...
  4464.       public void paint(Graphics g) {
  4465.         ImageFilter cropper=new CropImageFilter(0,0,16,16);
  4466.         Image cropped_image=createImage(new
  4467.         FilteredImageSource(image.getSource(),cropper));
  4468.         g.drawImage(image,10,400,this);        // ²≥α ±≥pεΩα ≡αßε≥ασ≥
  4469.          // α ²≥α φσ ≡αßε≥ασ≥ -
  4470.         g.drawImage(cropped_image,400,15,this);
  4471.         }
  4472.       }
  4473.  
  4474.  
  4475. cropped_image φσ ß≤Σσ≥ πε≥εΓ Σδ  ≡Φ±εΓαφΦ , φε ΩεπΣα εφ ∩εδφε±≥ⁿ■
  4476. ±ετΣα±≥± , ∩pεΦτεΘΣσ≥ Γ√τεΓ repaint(), α ≥α∞ σ∙σ pατ cropped_image
  4477. ±ετΣασ≥±  (≤≤≤, ßα≥σφⁿΩα...) Φ ≥αΩ Σαδσσ.
  4478. (╬ßpα≥Φ≥σ ΓφΦ∞αφΦσ φα ≥ε, ≈≥ε ±ετΣαφΦσ εß·σΩ≥εΓ ∩εΣεßφε ≥ε∞≤, ΩαΩ Γ ∞σ≥εΣσ
  4479. paint(),  Γδ σ≥±  ε≈σφⁿ ∩δε⌡Φ∞ ±≥Φδσ∞. ╥αΩ ΩαΩ ²≥ε ß≤Σσ≥ ∩pεΦ±⌡εΣΦ≥ⁿ
  4480. ΣεΓεδⁿφε ≈α±≥ε, pαßε≥√ ∩ε ±ßεpΩσ ∞≤±εpα ≤ jvm ß≤Σσ≥ ∞φεπε.
  4481. ╫≥εß√ εßεΘ≥Φ ²≥≤ ∩≡εßδσ∞≤, ┬√ ∞εµσ≥σ I) ΣεßαΓΦ≥ⁿ Γ±σ ≥αΩΦσ Φτεß≡αµσφΦ  Γ
  4482. MediaTracker Φ Γ√τ√Γα≥ⁿ ∞σ≥εΣ waitForAll(). II) Γ√∩εδφΦ≥ⁿ ±ΓεΘ ±εß±≥Γσφφ√Θ
  4483. ImageObserver Φφ≥σ≡⌠σΘ± Φ ∩εΣεµΣα≥ⁿ ΩεπΣα ∞σ≥εΣ imageUpdate() ß≤Σσ≥ Γ√τΓαφ
  4484. ±ε τφα≈σφΦσ∞ ALLBITS/FRAMEBITS. I) δσπ≈σ, φε II) ≡σΩε∞σφΣ≤σ≥± , Φτ-τα
  4485. ∩ε ΓΦΓ°Φ⌡±  Σαφφ√⌡ ε ≥ε∞, ≈≥ε MediaTracker φσ ≡αßε≥ασ≥ Γ φσΩε≥ε≡√⌡ ±≡σΣα⌡.
  4486. ╤∞ε≥≡Φ≥σ ≥αΩµσ Γ ²≥ε∞ FAQ:
  4487.  
  4488.    * ╤∞ε≥≡Φ≥σ ≥αΩµσ Q13.12
  4489.    * ╧ε±∞ε≥≡Φ≥σ Q6.4 Σδ  ∩≡Φ∞σ≡εΓ ΩαΩ ∩σ≡σΦ±∩εδⁿτεΓα≥ⁿ εß·σΩ≥√.
  4490.  
  4491. *(╫α±≥ⁿ 14) ╩αΩ ∞φσ τα∩Φ±α≥ⁿ τΓ≤Ω Γ α∩∩δσ≥σ?
  4492.  
  4493. [*] ┼±δΦ ≤ ┬α± Win95/NT, ┬√ ∞εµσ≥σ Φ±∩εδⁿτεΓα≥ⁿ SoundBite - └≤ΣΦΦε ╟α∩Φ±ⁿ Γ
  4494. └∩∩δσ≥α⌡ ╤∞. http://www.scrawl.com/store/
  4495. ╬φ εßσ±∩σ≈ΦΓασ≥ ∩≡ε±≥εΘ Σε±≥≤∩ Ω α≤ΣΦε Σαφφ√∞ Γ ∞α±±ΦΓα⌡:
  4496. short[] left, right;
  4497.  
  4498. *(╫α±≥ⁿ 14) Java ∩εΣΣσ≡µΦΓασ≥ PNG? ─α. PNG - Portable Network Graphics -
  4499. εßσ±∩σ≈ΦΓασ≥ ßσ±∩α≥σφ≥φ≤■ τα∞σφ≤ Σδ  GIFεΓ Φ TIFFεΓ. ┼±δΦ ┬√ ±ε⌡≡αφ σ≥σ Γ
  4500. GIF, ≥ε φσ ταß≤Σⁿ≥σ ε∩δα≥Φ≥ⁿ αΓ≥ε≡±ΩΦΘ πεφε≡α≡ ⌠Φ≡∞σ Unisys - ±∞. Φ⌡
  4501. ±≥≡αφΦ÷≤ http://www.unisys.com/LeadStory/lzwfaq.html. ▌≥ε≥ ∩α≥σφ≥ εß ±φ σ≥
  4502. ∩ε≈σ∞≤ GIF√ - ²≥ε ∩δε⌡εΘ Γ√ßε≡ Σδ  ±ετΣαφΦ  Φφ≥σ≡φσ≥εΓ±ΩΦ⌡ Φτεß≡αµσφΦΘ.
  4503.  
  4504. PNG ⌠ε≡∞α≥ ε∩≡σΣσδσφ Γ RFC 1950, 1951, 2083, φσ εß≡σ∞σφσφφ√⌡ δΦ÷σφτΦ ∞Φ ΦδΦ
  4505. ∩α≥σφ≥α∞Φ. ╤∞. ≥αΩµσ ±∩σ÷Φ⌠ΦΩα÷Φ■ PNG-1.1 φα
  4506. ftp://swrinde.nde.swri.edu/pub/png/documents.
  4507.  
  4508. PNG ⌠ε≡∞α≥ ∩εΣΣσ≡µΦΓασ≥±  Java Advanced Imaging API, Ωε≥ε≡√Θ  Γδ σ≥± 
  4509. ≈α±≥ⁿ■ Java 1.2 media API.
  4510.  
  4511.                        ------------------------------
  4512.  
  4513. 15. ╨αßε≥α Γ ±σ≥Φ Φ ≡α±∩≡σΣσδσφφ√σ εß·σΩ≥√
  4514.  
  4515.                                   ╤≥α≥ⁿΦ ε RMI
  4516.  
  4517.   1. (╫α±≥ⁿ 15) ─εδµσφ δΦ   Γ∞σ±≥ε RMI Φ±∩εδⁿτεΓα≥ⁿ CORBA? ╚δΦ Φ±∩εδⁿτεΓα≥ⁿ
  4518.      DCOM? ╚δΦ ≈σπε-φΦß≤Σⁿ σ∙σ?
  4519.  
  4520.      [*] ┼±δΦ ┬α°Φ ≡α±∩≡σΣσδσφφ√σ ∩≡επ≡α∞∞√ ÷σδΦΩε∞ φα∩Φ±αφ√ φα Java, ≥ε
  4521.      RMI εßσ±∩σ≈ΦΓασ≥ ßεδσσ ∩≡ε±≥εΘ ∞σ⌡αφΦτ∞, Ωε≥ε≡√Θ ∩ετΓεδ σ≥ ∩σ≡σ±√δΩ≤
  4522.      Σαφφ√⌡, Φ±⌡εΣ ∙Φ⌡ ε≥ ≡σαδⁿφ√⌡ Java εß·σΩ≥εΓ, Φ αΓ≥ε∞α≥Φ≈σ±Ω≤■ "±ßε≡Ω≤
  4523.      ∞≤±ε≡α" ≤Σαδσφφ√⌡ εß·σΩ≥εΓ.
  4524.      ┼±δΦ ┬α∞ φ≤µφε ∩εΣΩδ■≈Φ≥ⁿ±  Ω ±Φ±≥σ∞σ φα C++ (ΦδΦ Σ≡≤πε∞  τ√Ωσ) ΦδΦ
  4525.      ┬α∞ φ≤µφ√ ±∩σ÷Φ⌠Φ≈σ±ΩΦσ CORBA ±δ≤µß√, ≥ε CORBA - ┬α° Γ√ßε≡.
  4526.      ┬ Φ■δσ 1997 πεΣα Sun αφεφ±Φ≡εΓαδα ≥ε≥ ⌠αΩ≥, ≈≥ε RMI φα≈αδα ßεδσσ ≥σ±φε
  4527.      ≡αßε≥α≥ⁿ ± CORBA. Sun ∩≡ε±≥ε ΣεßαΓΦδα Γ RMI ≥≡αφ±∩ε≡≥φ√Θ ≤≡εΓσφⁿ IIOP
  4528.      Σδ  ∩εΣΣσ≡µΩΦ ΓταΦ∞εΣσΘ±≥ΓΦ  ± CORBA. Java ∩≡επ≡α∞∞√ ∞επ≤≥
  4529.      Φ±∩εδⁿτεΓα≥ⁿ RMI Σδ  Σε±≥≤∩α Ω CORBA εß·σΩ≥α∞ ≈σ≡στ IIOP, - ∩≡ε≥εΩεδσ
  4530.      ε±φεΓαφφε∞ φα CORBA Φ ≡ατ≡αßε≥αφφε∞ OMG (Object Management Group). ▌≥ε
  4531.      ε≈σφⁿ ⌡ε≡ε°α  φεΓε±≥ⁿ Σδ  ≥σ⌡, Ω≥ε ±≥≡εΦ≥ πσ≥σ≡επσφφ√σ ±Φ±≥σ∞√
  4532.      ∞α±°≥αßα ∩≡σΣ∩≡Φ ≥Φ , ⌡ε≥  φ≤µφ√ φσΩε≥ε≡√σ ΣεßαΓδσφΦ  Ω IIOP Σδ 
  4533.      ∩εΣΣσ≡µΩΦ Γσ∙σΘ, Ωε≥ε≡√σ Φ±∩εδⁿτ≤σ≥ RMI.
  4534.      ─σ ≥σδΦ Φτ Microsoft ∩√≥αδΦ±ⁿ ∩≡εΣΓΦπα≥ⁿ DCOM τα Γδ   ε ≥ε∞, ≈≥ε RMI
  4535.      Φτ∞σφ σ≥±  ΦδΦ ΣεµΦΓασ≥ ∩ε±δσΣφΦσ ΣφΦ. ▌≥ε Γ Ωε≡φσ φσΓσ≡φε. RMI API
  4536.      ε±≥ασ≥±  φσΦτ∞σφφεΘ Γ ±ΓεσΘ ≥σΩ≤∙σΘ ⌠ε≡∞σ. ╚±∩εδⁿτεΓαφΦσ DCOM
  4537.      επ≡αφΦ≈ΦΓασ≥ ┬α± ≥σ∞, ≈≥ε ΩεΣ ≡αßε≥ασ≥ ≥εδⁿΩε φα ∩δα≥⌠ε≡∞σ Wintel, Φ
  4538.      ∩εδφε±≥ⁿ■ ε≥≡Φ÷ασ≥ ⌠Φδε±ε⌠Φ■ Java "write once, run anywhere"
  4539.      ("φα∩Φ±αφε εΣφαµΣ√, Φ±∩εδφ σ≥±  ΓστΣσ"). ┬√ Σεδµφσ ß≤Σσ≥σ
  4540.      ∩σ≡σΩε∞∩ΦδΦ≡εΓα≥ⁿ ┬α° DCOM ΩεΣ, ≈≥εß√ εφ ≡αßε≥αδ φα Σ≡≤πεΘ
  4541.      Microsoft'εΓ±ΩεΘ ∩δα≥⌠ε≡∞σ, ≥Φ∩α Compaq (ß√Γ°σπε DEC) Alpha. ┬√ Σεδµφ√
  4542.      ε±≥σ≡σπα≥ⁿ±  Φ±∩εδⁿτεΓαφΦ  φσ∩σ≡σφε±Φ∞επε, ταΓ ταφφεπε φα εΣφε∞
  4543.      ∩≡εΦτΓεΣΦ≥σδσ ΩεΣα. DCOM/DNA Φ∞σσ≥ επ≡αφΦ≈σφΦ  Σδ  Φ±∩εδⁿτεΓαφΦ  φα
  4544.      ∩≡σΣ∩≡Φ ≥ΦΦ.
  4545.      ─≡≤πΦσ ±αΘ≥√:
  4546.           http://www.javaworld.com/javaworld/jw-10-1997/jw-10-corbajava.html
  4547.           ²≥ε ⌡ε≡ε°σσ ΓΓσΣσφΦσ Γ CORBA Γ ∞Φ≡σ Java.
  4548.           http://www.objenv.com/cetus ±≡αΓφσφΦσ CORBA/RMI.
  4549.  
  4550.   2. (╫α±≥ⁿ 15) ╩αΩ ∞φσ τα±≥αΓΦ≥ⁿ ≡αßε≥α≥ⁿ RMI ∞σµΣ≤ ≡ατφ√∞Φ Σε∞σφα∞Φ?
  4551.  
  4552.      [*] ┬±σ ε≥Γσ≥√ φα Γε∩≡ε±√, ε≥φε± ∙Φσ±  Ω ∩≡εΩ±Φ ∩≡ΦΓσΣσφ√ φΦµσ. ┬√
  4553.      Σεδµφ√ ±εεß∙Φ≥ⁿ ∩≡επ≡α∞∞σ πΣσ Φ±Ωα≥ⁿ ±σ≡Γσ≡. ┬ ²≥ε∞ ±δ≤≈ασ ┬√ Σεδµφ√
  4554.      τα∩≤±Ωα≥ⁿ ΩδΦσφ≥α ± ε∩÷ΦσΘ:
  4555.      -Djava.rmi.server.hostname=hostname.domainname
  4556.  
  4557.   3. (╫α±≥ⁿ 15) ╠φσ Ωαµσ≥± , ≈≥ε RMI ε±≥αφαΓδΦΓασ≥ ±Γε■ ≡αßε≥≤ Γ JDK 1.1.
  4558.      ╧ε≈σ∞≤ ≥αΩεσ ∩≡εΦ±⌡εΣΦ≥?
  4559.  
  4560.      [*] ╧ε⌡εµσ ≈≥ε Φτ∞σφΦδΦ±ⁿ ∩≡αΓΦδα ≥επε, πΣσ ΩδΦσφ≥ Φ∙σ≥ stub
  4561.      Ωδα±±(Ωδα±±-ταπδ≤°Ω≤), Σσδα  φσεß⌡εΣΦ∞√∞ ±ß≡ε± ┬α°σπε class path φα
  4562.      ΩδΦσφ≥σ ∩ε±δσ ±≥α≡≥α RMI registry. ┬ ≈α±≥φε±≥Φ, ∩ε⌡εµσ φα ≥ε, ≈≥ε rmic
  4563.      φσ ß√δ εßφεΓδσφ Σδ  φεΓεπε ±επδα°σφΦ  "don't need $CLASSPATH for
  4564.      current dir" ("φσ φ≤µσφ $CLASSPATH Σδ  ≥σΩ≤∙σπε Ωα≥αδεπα"), Γ ≥ε Γ≡σ∞ 
  4565.      ΩαΩ Ωε∩∞∩Φδ ≥ε≡ ß√δ εßφεΓδσφ. ┬α∞ δ≤≈°σ  Γφε ±φ ≥ⁿ ≤±≥αφεΓΩΦ
  4566.      classpath.
  4567.      ─≡≤πΦσ ±αΘ≥√:
  4568.      ┼±≥ⁿ φσ±ΩεδⁿΩε ε≈σφⁿ ⌡ε≡ε°Φ⌡ Φ±≥ε≈φΦΩεΓ ε≥ Sun, Ωε≥ε≡√σ ε⌡Γα≥√Γα■≥
  4569.      ∞φεπε ∩≡ε±≥√⌡ Φ ±δεµφ√⌡ RMI ∩≡εßδσ∞.
  4570.         o ╩εφσ≈φε, ΣεΩ≤∞σφ≥α÷Φ :
  4571.           http://java.sun.com/products/jdk/1.1/docs/guide/rmi/index.html
  4572.         o FAQΦ ∩ε±Γ ∙σφφ√σ RMI Φ ±σ≡ΦαδΦτα÷ΦΦ εß·σΩ≥εΓ
  4573.           http://java.sun.com/products/jdk/rmi/faq.html
  4574.         o ╤∩Φ±εΩ ≡α±±√δΩΦ RMI-USERS@JAVASOFT.COM, α≡⌡ΦΓ Ωε≥ε≡επε φα⌡εΣΦ≥± 
  4575.           φα http://chatsubo.javasoft.com/email/rmi-users/ ╧ε±σ≥Φ≥σ α≡⌡ΦΓ!
  4576.  
  4577.   4. (╫α±≥ⁿ 15) ╧ε±δσ ε∩≡σΣσδσφφεπε ≈Φ±δα ±εσΣΦφσφΦΘ ΩδΦσφ≥εΓ RMI Ω ±σ≡Γσ≡≤
  4578.      (55 φα ∞εσΘ ±Φ±≥σ∞σ), ∩ε±δσΣ≤■∙Φσ ∩ε∩√≥ΩΦ RMI ±εσΣΦφσφΦ  φσ≤Σα≈φ√.
  4579.      ╧ε≈σ∞≤?
  4580.  
  4581.      [*] ┬√ Φ±∩εδⁿτεΓαδΦ δΦ∞Φ≥ ∩ε ≤∞εδ≈αφΦ■ Γ 64 Σσ±Ω≡Φ∩≥ε≡α ε≥Ω≡√≥√⌡
  4582.      ⌠αΘδεΓ. ╧ε∩√≥αΘ≥σ±ⁿ ≤ΓσδΦ≈Φ≥ⁿ δΦ∞Φ≥ Γ ┬α°σΘ ╬╤.
  4583.      ╤≤∙σ±≥Γ≤σ≥ ∩≡αΩ≥Φ≈σ±ΩΦΘ δΦ∞Φ≥ RMI ±εσΣΦφσφΦΘ, Ωε≥ε≡√Θ φαδαπασ≥± 
  4584.      ∞α±°≥αßΦ≡≤σ∞ε±≥ⁿ■ ΓΦΦ≡≥≤αδⁿφεΘ ∞α°Φφ√ Φ ∩≡εΦτΓεΣΦ≥σδⁿφε±≥ⁿ■
  4585.      ±σ≡ΦαδΦτα÷ΦΦ εß·σΩ≥εΓ. ▌≥ε Γ±σ Φ±∩≡αΓδσφε Γ JDK 1.2. └Ω≥≤αδⁿφεσ ≈Φ±δε
  4586.      αΩ≥ΦΓφ√⌡ ΩδΦσφ≥εΓ, Ωε≥ε≡εσ ┬√ ∞εµσ≥σ εß±δ≤µΦΓα≥ⁿ ß≤Σσ≥ ταΓΦ±σ≥ⁿ ε≥
  4587.      ±≤∞∞α≡φεΘ ταπ≡≤τΩΦ (workload mix) (≥.σ. ε≥ ≈Φ±δα ΩδΦσφ≥εΓ, ΩαΩ ≈α±≥ε
  4588.      εφΦ εß≡α∙α■≥±  Ω ±σ≡Γσ≡≤, Φ ±ΩεδⁿΩε ≡αßε≥√ Γ√∩εδφ σ≥±  ∩≡Φ εΣφε∞
  4589.      εß≡α∙σφΦΦ).
  4590.  
  4591.   5. (╫α±≥ⁿ 15) ▀ Φ±∩εδⁿτ≤■ RMI ∩εΣ Win95, Φ Γ√τεΓ Naming.lookup()
  4592.      Γ√∩εδφ σ≥±  ε≈σφⁿ Σεδπε. ╩αΩ ε≥ ²≥επε ΦτßαΓΦ≥ⁿ± ?
  4593.  
  4594.      [*] (╤∞. ≥αΩµσ ∩σ≡Γ√Θ ε≥Γσ≥ Γ φΦµσ±δσΣ≤■∙σΘ ±σΩ÷ΦΦ, Φ ε≥∞σ≥ⁿ≥σ, ≈≥ε
  4595.      ²≥α Σε≡αßε≥Ωα Γ Windows ≤ φσΩε≥ε≡√⌡ φΦΩεπΣα φσ ≡αßε≥ασ≥) ╧ε∩√≥αΘ≥σ±ⁿ
  4596.      ΣεßαΓΦ≥ⁿ τα∩Φ±ⁿ ε ∞α°Φφσ Γ ┬α° ⌠αΘδ "hosts". ╬ß√≈φε ²≥ε≥ ⌠αΘδ
  4597.      φατ√Γασ≥±  c:\windows\hosts (σ±δΦ εφ φσ ±≤∙σ±≥Γ≤σ≥, ≥ε Σεδµσφ ß√≥ⁿ
  4598.      ⌠αΘδ c:\windows\hosts.sam). ╘αΘδ hosts Φ∙σ≥±  ±≥σΩε∞ TCP/IP ∩σ≡σΣ
  4599.      εß≡α∙σφΦσ∞ Ω DNS, ≥αΩΦ∞ εß≡ατε∞ ΣεßαΓδσφΦσ τα∩Φ±Φ ∞εµσ≥ τφα≈Φ≥σδⁿφε
  4600.      ≤±Ωε≡Φ≥ⁿ ┬α°Φ ∩εΦ±ΩΦ (lookups). ╘αΘδ hosts Φ±∩εδⁿτ≤σ≥±  ≈≥εß√ ε≥≡ατΦ≥ⁿ
  4601.      ÷Φ⌠≡εΓ√σ IP αΣ≡σ±α φα ±Φ∞Γεδⁿφ√σ. ╫≥εß√ ─δ  ≥επε, ≈≥εß√ ≤Ωατα≥ⁿ Φ∞ 
  4602.      ⌡ε±≥α "localhost" ± αΣ≡σ±ε∞ 127.0.0.1 (IP loopback αΣ≡σ±) ΣεßαΓⁿ≥σ
  4603.      ±δσΣ≤■∙≤■ ±≥≡ε≈Ω≤ Γ ┬α° ⌠αΘδ hosts.
  4604.  
  4605.      127.0.0.1 localhost
  4606.  
  4607.                             ╨αßε≥α ± ±σ≥ⁿ■ Γ Windows
  4608.