ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ часы Π½Π° Java

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Вся полувСковая история программирования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈ ΠΈΡΡ‚ория всСй Π½Π°ΡƒΠΊΠΈ — это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ²Π»Π°Π΄Π°Ρ‚ΡŒ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΈΡ€Π°. Π—Π°Π΄Π°Ρ‡ΠΈ, Π²ΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ программистами, становятся всС Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ, информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, растСт ΠΊΠ°ΠΊ снСТный ΠΊΠΎΠΌ. Π•Ρ‰Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρ‹ ΠΈ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Ρ‹, Π° ΡΠ΅ΠΉΡ‡Π°Ρ ΡƒΠΆΠ΅ говорят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°Ρ…… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ часы Π½Π° Java (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ агСнтство ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ государствСнноС ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования

«Π§ΡƒΠ²Π°ΡˆΡΠΊΠΈΠΉ ГосударствСнный УнивСрситСт ΠΈΠΌΠ΅Π½ΠΈ И.Н.Ульянова»

Алатырский Ρ„ΠΈΠ»ΠΈΠ°Π» ΠšΠ°Ρ„Π΅Π΄Ρ€Π° Π’Ρ‹ΡΡˆΠ΅ΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°

По ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρƒ: «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java»

На Ρ‚Π΅ΠΌΡƒ: «ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ часы Π½Π° Java»

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π“Π»Π°Π²Π° 1 ΠžΡΠ½ΠΎΠ²Ρ‹ Java

1.1 Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1.2 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JDK

Π“Π»Π°Π²Π° 2 ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java

2.1 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π“Π»Π°Π²Π° 3 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ построСния графичСского интСрфСйса

3.1 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π“Π»Π°Π²Π° 4 АпплСты

4.1 АпплСты

4.2 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π³Π°

4.3 БвСдСния ΠΎΠ± ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

4.4 Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π²ΡƒΠΊ

  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π‘Π½Π°Ρ‡Π°Π»Π° Java (ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ дСнь роТдСния Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java — 23 ΠΌΠ°Ρ 1995 Π³.) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»Π°ΡΡŒ для программирования Π±Ρ‹Ρ‚ΠΎΠ²Ρ‹Ρ… элСктронных устройств, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹. ΠŸΠΎΡ‚ΠΎΠΌ Java стала ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для программирования Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² — появились Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹. Π—Π°Ρ‚Π΅ΠΌ оказалось, Ρ‡Ρ‚ΠΎ Π½Π° Java ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ прилоТСния. Π˜Ρ… Π³Ρ€Π°Ρ„ичСскиС элСмСнты стали ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² — появились JavaBeans, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Java вошла Π² ΠΌΠΈΡ€ распрСдСлСнных систСм ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, тСсно связавшись с Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ CORBA. ΠžΡΡ‚Π°Π»ΡΡ ΠΎΠ΄ΠΈΠ½ шаг Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ сСрвСров — этот шаг Π±Ρ‹Π» сдСлан — появились сСрвлСты ΠΈ EJB (Enterprise JavaBeans). Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… — появились Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ JDBC (Java DataBase Connection). ВзаимодСйствиС оказалось ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ, Java Π² ΡΠ²ΠΎΠ΅ ядро, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Oracle, Linux, MacOS X, AIX. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ…Π²Π°Ρ‡Π΅Π½ΠΎ? НазовитС, ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΡƒΡΠ»Ρ‹ΡˆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Java ΡƒΠΆΠ΅ вовсю примСняСтся ΠΈ Ρ‚Π°ΠΌ. Из-Π·Π° этой размытости самого понятия Π΅Π³ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Ρ€Π°Π·ΠΌΡ‹Ρ‚Ρ‹ΠΌ словом — тСхнология.

Π’Π°ΠΊΠΎΠ΅ быстроС ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java Π½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡŽΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданный язык программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊ ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся — язык Java. Π­Ρ‚ΠΎΡ‚ язык создан Π½Π° Π±Π°Π·Π΅ языков Smalltalk, Pascal, C++ ΠΈ Π΄Ρ€., Π²ΠΎΠ±Ρ€Π°Π² ΠΈΡ… Π»ΡƒΡ‡ΡˆΠΈΠ΅, ΠΏΠΎ ΠΌΠ½Π΅Π½ΠΈΡŽ создатСлСй, Ρ‡Π΅Ρ€Ρ‚Ρ‹ ΠΈ ΠΎΡ‚бросив Ρ…ΡƒΠ΄ΡˆΠΈΠ΅. На ΡΡ‚ΠΎΡ‚ счСт Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ мнСния, Π½ΠΎ Π±Π΅ΡΡΠΏΠΎΡ€Π½ΠΎ, Ρ‡Ρ‚ΠΎ язык получился ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для изучСния, написанныС Π½Π° Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΈ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ: ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· час послС Π½Π°Ρ‡Π°Π»Π° изучСния языка. Π―Π·Ρ‹ΠΊ Java становится языком обучСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ язык Pascal Π±Ρ‹Π» языком обучСния структурному ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π“Π»Π°Π²Π° 1 ΠžΡΠ½ΠΎΠ²Ρ‹ Java

1.1 Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Как Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡΠ·Ρ‹ΠΊΠΎΠ² высокого уровня, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ относится ΠΈ ΡΠ·Ρ‹ΠΊ Java, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ исходный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ («ΠΈΡΡ…ΠΎΠ΄Π½ΠΈΠΊ» ΠΈΠ»ΠΈ «ΡΡ‹Ρ€Π΅Ρ†» Π½Π° ΠΆΠ°Ρ€Π³ΠΎΠ½Π΅, ΠΎΡ‚ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ «source»), Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сразу ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°. Π•Π΅ ΡΠ½Π°Ρ‡Π°Π»Π° Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚. Π΅. пСрСвСсти Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Но ΠΈ ΠΎΠ½, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сразу ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π°Π΄ΠΎ Π΅Ρ‰Π΅ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°Ρ‚ΡŒ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ пСрСкрСстныС ссылки ΠΌΠ΅ΠΆΠ΄Ρƒ сСкциями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ модуля, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ — ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, написанный Π½Π° Java, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этих ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π½ΠΎ Π·Π΄Π΅ΡΡŒ проявляСтся главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° компилируСтся сразу Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½ΠΎ Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСссора, Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java (JVM, Java Virtual Machine). Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ вмСстС с ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Для спСциалистов скаТСм, Ρ‡Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ стСковая, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚рСбуСтся слоТная адрСсация ячССк памяти ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство рСгистров. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ JVM ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 1 Π±Π°ΠΉΡ‚, ΠΎΡ‚Ρ‡Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ JVM Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π±Π°ΠΉΡ‚^ΠΊΠΎΠ΄Π°ΠΌΠΈ (bytecodes), хотя ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄Π»ΠΈΠ½ΠΎΠΉ 2 ΠΈ 3 Π±Π°ΠΉΡ‚Π°. Богласно статистичСским исслСдованиям срСдняя Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ составляСт 1,8 Π±Π°ΠΉΡ‚Π°. ПолноС описаниС ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π²ΡΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ JVM содСрТится Π² спСцификации Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java (VMS, Virtual Machine Specification). Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π² Ρ‚очности ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΡΡ‚ΠΎΠΉ спСцификациСй.

Другая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Java — всС стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ Π½Π΅ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡΡ‚Π°ΠΏΠ΅ выполнСния, Π° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹. Как говорят спСциалисты, происходит динамичСская ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° (dynamic binding). Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ сильно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ объСм ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜Ρ‚Π°ΠΊ, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Java, пСрСводится компилятором Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹. Π­Ρ‚Π° компиляция Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСссора ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· сразу ΠΆΠ΅ послС написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π²ΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΉ памяти ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ. Π­Ρ‚ΠΎ особСнно ΡƒΠ΄ΠΎΠ±Π½ΠΎ благодаря Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π° Π»ΡŽΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌ систСму, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ JVM. ΠŸΡ€ΠΈ этом Π½Π΅ Π²Π°ΠΆΠ΅Π½ Π½ΠΈ Ρ‚ΠΈΠΏ процСссора, Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π’Π°ΠΊ рСализуСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Java «Write once, run anywhere» — «ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹, выполняСтся Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ» .

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния Π² Ρ‚Π΅Ρ… ситуациях, ΠΊΠΎΠ³Π΄Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ, ΡΠ΅Ρ‚ΡŒ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ любой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ситуациях трСбуСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ Π±Ρ‹ΡΡ‚Ρ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ постоянно ΠΈΠ΄Π΅Ρ‚ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΡΡ‚ΠΎΡ€ΠΎΠ½Ρƒ увСличСния скорости ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ JIT-компиляторы (Just-In-Time), Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… процСссора ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ эти участки ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ†ΠΈΠΊΠ»Π°Ρ…. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ вычислСний. Π€ΠΈΡ€ΠΌΠ° SUN Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρ†Π΅Π»ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Hot-Spot ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π΅ Π² ΡΠ²ΠΎΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Java. Но, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ спСциализированный процСссор.

Π€ΠΈΡ€ΠΌΠ° SUN Microsystems выпустила микропроцСссоры PicoJava, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ JVM, ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚ся Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ Π»ΠΈΠ½Π΅ΠΉΠΊΡƒ всС Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹Ρ… Java-процСссоров. Π•ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΈ Java-процСссоры Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΡ€ΠΌ. Π­Ρ‚ΠΈ процСссоры нСпосрСдствСнно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹. Но ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Java Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссорах трСбуСтся Π΅Ρ‰Π΅ интСрпрСтация ΠΊΠΎΠΌΠ°Π½Π΄ JVM Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСссора, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½ΡƒΠΆΠ½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° процСссоров, ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° слСдуСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€.

Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½Π° практичСски для всСх ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. На Π½ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Java, Π° Π΄Π»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ имССтся нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ JVM Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΈΡ€ΠΌ. ВсС большС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ JVM Π² ΡΠ²ΠΎΠ΅ ядро. Π‘ΠΎΠ·Π΄Π°Π½Π° ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ опСрационная систСма JavaOS, примСняСмая Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹Ρ… устройствах. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² встроСна Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java для выполнСния Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ².

Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ JVM для выполнСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΡƒΡŽΡ‰ΠΈΡ…ΡΡ с Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°ΠΌΠΈ. Π­Ρ‚ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ оформляСтся Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов Java, состоящСй ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². КаТдая функция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записана Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°ΠΌΠΈ, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ прямо Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ этого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΈΠ·Π±Π΅Π³Π½ΡƒΠ² Ρ‚Π΅ΠΌ самым ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ " Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ" ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ (native methods). ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ «Ρ€ΠΎΠ΄Π½Ρ‹Ρ…» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ускоряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π€ΠΈΡ€ΠΌΠ° SUN Microsystems — ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java — бСсплатно распространяСт Π½Π°Π±ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… инструмСнтов для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΡ‚ΠΈΠΌ языком программирования: компиляции, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΈ Π±ΠΎΠ³Π°Ρ‚ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ классов, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ JDK (Java Development Kit). Π•ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΈΡ€ΠΌ. НапримСр, большой ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ JDK Ρ„ΠΈΡ€ΠΌΡ‹ IBM.

1.2 Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JDK

часы java графичСский интСрфСйс Π°ΠΏΠΏΠ»Π΅Ρ‚ Набор ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² JDK содСрТит:

Β· компилятор javac ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Ρ‹; ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ java, содСрТащий Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ JVM;

Β· ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ jre (Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ… вСрсиях отсутствуСт);

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ просмотра Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² appietviewer, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€;

Β· ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ jdt>;

Β· дизассСмблСр javap;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΆΠ°Ρ‚ия jar;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сбора Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ javadoc;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ javah Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² языка Π‘;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ javakey добавлСния элСктронной подписи;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ native2ascii, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚СкстовыС;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ rmic ΠΈ rmiregistry для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ;

Β· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ seriaiver, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Π½ΠΎΠΌΠ΅Ρ€ вСрсии класса;

Β· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ «Ρ€ΠΎΠ΄Π½Ρ‹Ρ…» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²;

Β· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ классов Java API (Application Programming Interface).

Π’ 1996 Π³. Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° пСрвая вСрсия JDK 1.0, которая ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π΄ΠΎ Π²Π΅Ρ€ΡΠΈΠΈ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1.0.2. Π’ ΡΡ‚ΠΎΠΉ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов Java API содСрТала 8 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’Π΅ΡΡŒ Π½Π°Π±ΠΎΡ€ JDK 1.0.2 поставлялся Π² ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 5 ΠœΠ±Π°ΠΉΡ‚, Π° ΠΏΠΎΡΠ»Π΅ распаковки Π·Π°Π½ΠΈΠΌΠ°Π» ΠΎΠΊΠΎΠ»ΠΎ 8 ΠœΠ±Π°ΠΉΡ‚ Π½Π° Π΄ΠΈΡΠΊΠ΅.

Π’ 1997 Π³. ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡŒ вСрсия JDK 1.1, послСдняя Π΅Π΅ ΠΌΠΎΠ΄ΠΈΡ„икация, 1.1.8, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² 1998 Π³. Π’ этой вСрсии Π±Ρ‹Π»ΠΎ 23 ΠΏΠ°ΠΊΠ΅Ρ‚Π° классов, Π·Π°Π½ΠΈΠΌΠ°Π»Π° ΠΎΠ½Π° 8,5 ΠœΠ±Π°ΠΉΡ‚ Π² ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠœΠ±Π°ΠΉΡ‚ Π½Π° Π΄ΠΈΡΠΊΠ΅.

Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… вСрсиях JDK всС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java API Π±Ρ‹Π»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» classes. zip ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ нСпосрСдствСнно ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π°, Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ.

Π—Π°Ρ‚Π΅ΠΌ Π½Π°Π±ΠΎΡ€ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств JDK Π±Ρ‹Π» сильно ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½.

ВСрсия JDK 1.2 Π²Ρ‹ΡˆΠ»Π° Π² Π΄Π΅ΠΊΠ°Π±Ρ€Π΅ 1998 Π³. ΠΈ содСрТала ΡƒΠΆΠ΅ 57 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² классов. Π’ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ это Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ 20 ΠœΠ±Π°ΠΉΡ‚ ΠΈ Π΅Ρ‰Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 17 ΠœΠ±Π°ΠΉΡ‚ с ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. Полная вСрсия располагаСтся Π½Π° 130 ΠœΠ±Π°ΠΉΡ‚Π°Ρ… дискового пространства, ΠΈΠ· Π½ΠΈΡ… ΠΎΠΊΠΎΠ»ΠΎ 80 ΠœΠ±Π°ΠΉΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ докумСнтация.

Начиная с ΡΡ‚ΠΎΠΉ вСрсии, всС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java собствСнного производства компания SUN стала Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Java 2 Platform, Standard Edition, сокращСнно J2SE, a JDK ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»Π° Π² Java 2 SDK, Standard Edition (Software Development Kit), сокращСнно J2SDK, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ выпускаСтся Π΅Ρ‰Π΅ Java 2 SDK Enterprise Edition ΠΈ Java 2 SDK Micro Edition. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, сама компания SUN часто ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ ΡΡ‚Π°Ρ€Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Π° Π² Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΎΡΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Java 2. ΠšΡ€ΠΎΠΌΠ΅ 57 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² классов, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π° Π»ΡŽΠ±ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Core API, Π² Java 2 SDK vl.2 входят Π΅Ρ‰Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ классов, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Standard Extension API. Π’ Π²Π΅Ρ€ΡΠΈΠΈ Java 2 SDK SE, vl.3, Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠ΅ΠΉ Π² 2000 Π³., ΡƒΠΆΠ΅ 76 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² классов, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Core API.

Π’ Π½Π°ΡΡ‚оящСС врСмя вСрсия JDK 1.0.2 ΡƒΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся. ВСрсия JDK 1.1.5 с Π³Ρ€Π°Ρ„ичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ AWT встроСна Π² ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Internet Explorer 5.0 ΠΈ Netscape Communicator 4.7, поэтому ΠΎΠ½Π° примСняСтся для создания Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ². ВСхнология Java 2 ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π°Ρ… ΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрных систСмах.

ΠšΡ€ΠΎΠΌΠ΅ JDK, компания SUN ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ распространяСт Π΅Ρ‰Π΅ ΠΈ Π½Π°Π±ΠΎΡ€ JRE (Java Runtime Environment).

Π“Π»Π°Π²Π° 2 ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Java

Вся полувСковая история программирования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈ ΠΈΡΡ‚ория всСй Π½Π°ΡƒΠΊΠΈ — это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ²Π»Π°Π΄Π°Ρ‚ΡŒ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΈΡ€Π°. Π—Π°Π΄Π°Ρ‡ΠΈ, Π²ΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ программистами, становятся всС Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ, информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, растСт ΠΊΠ°ΠΊ снСТный ΠΊΠΎΠΌ. Π•Ρ‰Π΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ измСрСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π»ΠΈ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρ‹ ΠΈ ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Ρ‹, Π° ΡΠ΅ΠΉΡ‡Π°Ρ ΡƒΠΆΠ΅ говорят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°Ρ… ΠΈ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π°Ρ…. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ программисты ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅, Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ языки. Π—Π° ΠΏΠΎΠ»Π²Π΅ΠΊΠ° появилось нСсколько сотСн языков, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΡΡ‚ΠΈΠ»Π΅ΠΉ. НСкоторыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΡΡ‚ΠΈΠ»ΠΈ становятся общСпринятыми ΠΈ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ программирования.

2.1 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ развиваСтся ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ Π»Π΅Ρ‚. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ нСсколько школ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΏΠΎ-своСму ΠΈΠ·Π»Π°Π³Π°Π΅Ρ‚ эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹. Но Π΅ΡΡ‚ΡŒ нСсколько общСпринятых понятий. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ ΠΈΡ….

1. Абстракция-ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ производится Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов (classes). Класс ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, слСпком, Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΎΠΌ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Класс содСрТит описаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Они Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ полями класса (class fields). ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ класса (class methods). Π’Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы (nested classes) ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ интСрфСйсы. Поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ классы ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ класса (class members). Π Π°Π·Π½Ρ‹Π΅ ΡˆΠΊΠΎΠ»Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, ΠΏΡ€ΠΈΠ½ΡΡ‚ΡƒΡŽ Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java.

2. Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для ΠΈΡ… ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ОсобСнно Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π° Π² Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΠΈ. ВсС Π·Π½Π°ΠΊΠΎΠΌΡ‹ с ΡΠ΅ΠΌΠ΅ΠΉΡΡ‚Π²Π°ΠΌΠΈ, Ρ€ΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π²ΠΈΠ΄Π°ΠΌΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ описаниС своих Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ… (pets): кошСк (cats), собак (dogs), ΠΊΠΎΡ€ΠΎΠ² (cows) ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

3. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ-Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ — ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π§Π»Π΅Π½Ρ‹ класса, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ·Π²Π½Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ инкапсулированы.

4. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ KISSΠ‘Π°ΠΌΡ‹ΠΉ основной, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΈ ΡΠ°ΠΌΡ‹ΠΉ Π²Π΅Π»ΠΈΠΊΠΈΠΉ : ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ программирования — ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ KISS — Π½Π΅ Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ся Π² Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠΉ : ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π΅: «Keep It Simple, Stupid!»

Π“Π»Π°Π²Π° 3 ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ построСния графичСского интСрфСйса

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… графичСских систСм: MS Windows, X Window System, Macintosh. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… свои ΠΏΡ€Π°Π²ΠΈΠ»Π° построСния ΠΎΠΊΠΎΠ½ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: мСню, ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π°, ΠΊΠ½ΠΎΠΏΠΎΠΊ, списков, полос ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ. Π­Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° слоТны ΠΈ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹. ГрафичСскиС API содСрТат сотни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Для облСгчСния создания ΠΎΠΊΠΎΠ½ ΠΈ ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² написаны Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ классов: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс Ρ‚Π°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ описываСт сразу Ρ†Π΅Π»Ρ‹ΠΉ графичСский ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, управляСмый ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ этого ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

Π’ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java Π΄Π΅Π»ΠΎ ослоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния Java Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΈΠ»ΠΈ хотя Π±Ρ‹ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… графичСских срСдах. НуТна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов, нСзависимая ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ графичСской систСмы. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии JDK Π·Π°Π΄Π°Ρ‡Ρƒ Ρ€Π΅Ρ‰ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ интСрфСйсы, содСрТащиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ичСскими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠšΠ»Π°ΡΡΡ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AWT Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ эти интСрфСйсы для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для размСщСния ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ графичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², измСнСния ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов Java, основанных Π½Π° peer-интСрфСйсах, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ AWT (Abstract Window Toolkit). ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, созданного Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Java ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° peer-интСрфСйсС, Π½Π° ΡΠΊΡ€Π°Π½ создаСтся ΠΏΠ°Ρ€Π½Ρ‹ΠΉ Π΅ΠΌΡƒ (peer-to-peer) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ графичСской подсистСмы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ ΠΎΡ‚обраТаСтся Π½Π° ΡΠΊΡ€Π°Π½Π΅. Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ тСсно Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ графичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ AWT Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ графичСской срСдС ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΉ для этой срСды: Π² MS Windows, Motif, OpenLook, OpenWindows, Π²Π΅Π·Π΄Π΅ ΠΎΠΊΠ½Π°, созданныС Π² AWT, выглядят ΠΊΠ°ΠΊ «Ρ€ΠΎΠ΄Π½Ρ‹Π΅» ΠΎΠΊΠ½Π°.

ИмСнно ΠΈΠ·-Π·Π° Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ peer-интСрфСйсов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… «Ρ€ΠΎΠ΄Π½Ρ‹Ρ…» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², написанных, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++, приходится для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ свой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ JDK.

Π’ Π²Π΅Ρ€ΡΠΈΠΈ JDK 1.1 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° AWT Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°. Π’ Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ написанных Π½Π° Java ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‰ΠΈΡ… ΠΎΡ‚ peer-интСрфСйсов. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ стали Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ " Π»Π΅Π³ΠΊΠΈΠΌΠΈ" (lightweight) Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· peer-интСрфСйсы, Π½Π°Π·Π²Π°Π½Π½Ρ‹Ρ… " тяТСлыми" (heavy).

" Π›Π΅Π³ΠΊΠΈΠ΅" ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Π΅Π·Π΄Π΅ выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ создании Π²ΠΈΠ΄ (look and feel). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ послС Π΅Π³ΠΎ запуска ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄: Motif, Metal, Windows 95 ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот Π²ΠΈΠ΄ Π² Π»ΡŽΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π­Ρ‚Π° интСрСсная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ «Π»Π΅Π³ΠΊΠΈΡ…» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ PL&F (Pluggable Look and Feel) ΠΈΠ»ΠΈ «plaf.

Π‘Ρ‹Π»Π° создана ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° «Π»Π΅Π³ΠΊΠΈΡ…» компонСнтоэ Java, названная Swing. Π’ Π½Π΅ΠΉ Π±Ρ‹Π»ΠΈ пСрСписаны всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AWT, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Swing ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС классы ΠΈΠ· Π½Π΅Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ классы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AWT.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов Swing ΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ»Π°ΡΡŒ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ JDK 1.1. Π’ ΡΠΎΡΡ‚Π°Π² Java 2 SDK ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΊΠ°ΠΊ основная графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° классов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ идСю «100% Pure Java», наряду с AWT.

Π’ Java 2 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° AWT Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… срСдств рисования, Π²Ρ‹Π²ΠΎΠ΄Π° тСкстов ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Java 2D, ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкста ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ DnD (Drag and Drop).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Java 2 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Input Method Framework ΠΈ ΡΡ€Π΅Π΄ΡΡ‚Π²Π° связи с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ устройствами Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ свСтовоС ΠΏΠ΅Ρ€ΠΎ ΠΈΠ»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° Бройля, Π½Π°Π·Π²Π°Π½Π½Ρ‹Π΅ Accessibility.

ВсС эти срСдства Java 2: AWT, Swing, Java 2D, DnD, Input Method Framework ΠΈ Accessibility составили Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ графичСских срСдств Java, Π½Π°Π·Π²Π°Π½Π½ΡƒΡŽ JFC (Java Foundation Classes).

ОписаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΡ‚ΠΈΡ… срСдств составит Ρ†Π΅Π»ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ, поэтому ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ прСдставлСниСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основных срСдств Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AWT.

3.1 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

ОсновноС понятиС графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π“Π˜ΠŸ) — ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (component) графичСской систСмы. Π’ Ρ€ΡƒΡΡΠΊΠΎΠΌ языкС это слово ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ просто ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, элСмСнт Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Π½ΠΎ Π² Π³Ρ€Π°Ρ„ичСском интСрфСйсС это понятиС Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π΅Π΅. Оно ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π³Ρ€Π°Ρ„ичСском интСрфСйсС нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов. НапримСр, это ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, ΠΊΠ½ΠΎΠΏΠΊΠ°, строка мСню, полоса ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Ρ€Π°Π΄ΠΈΠΎΠΊΠ½ΠΎΠΏΠΊΠ°. Π‘Π°ΠΌΠΎ ΠΎΠΊΠ½ΠΎ прилоТСния — Ρ‚ΠΎΠΆΠ΅ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, панСль, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚ΠΎΠΆΠ΅ являСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

Π’Ρ‹ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅ΡΡŒ, ΡƒΠ·Π½Π°Π², Ρ‡Ρ‚ΠΎ Π² AWT ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ считаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Component ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ всякого класса, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅Π³ΠΎ класс component. Π’ ΠΊΠ»Π°ΡΡΠ΅ component собраны ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎΡ‚ класс — Ρ†Π΅Π½Ρ‚Ρ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ AWT.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠΊΡ€Π°Π½ помСщаСтся Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (container). ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ «Π·Π½Π°Π΅Ρ‚», ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° ΡΠΊΡ€Π°Π½Π΅. РазумССтся, Π² ΡΠ·Ρ‹ΠΊΠ΅ Java ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Container ΠΈΠ»ΠΈ всякого Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. ΠŸΡ€ΡΠΌΠΎΠΉ наслСдник этого класса — класс jcomponent — Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… классов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swing.

Π‘ΠΎΠ·Π΄Π°Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Component ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ созданному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса container ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² add ().

Класс Container сам являСтся Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΎΠ½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ класс Component. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ наряду с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находятся ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, достигая Ρ‚Π΅ΠΌ самым большой гибкости располоТСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

ОсновноС ΠΎΠΊΠ½ΠΎ прилоТСния, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ графичСской систСмы. Оно Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡΠΊΡ€Π°Π½Ρƒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Π΅ΠΉΡΡ‚;

вия ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π’ ΠΎΠΊΠ½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ стандартныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Β· Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (title bar), с Π»Π΅Π²ΠΎΠΉ стороны ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ контСкстного мСню, Π° Ρ ΠΏΡ€Π°Π²ΠΎΠΉ — ΠΊΠ½ΠΎΠΏΠΊΠΈ сворачивания ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ закрытия прилоТСния.

Β· ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ строка мСню (menu bar) с Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ мСню.

Β· Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ (scrollbars).

Β· Окно Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΎ Ρ€Π°ΠΌΠΊΠΎΠΉ (border), Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π½Π° Π΄Π΅ΠΉΡΡ‚вия ΠΌΡ‹ΡˆΠΈ.

Окно с ΡΡ‚ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π² Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅ описано Π² ΠΊΠ»Π°ΡΡΠ΅ Frame. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, достаточно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой класс Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ класса Frame, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π»ΠΈΡΡ‚ΠΈΠ½Π³Π΅ 8.1. ВсСго восСмь строк тСкста ΠΈ ΠΎΠΊΠ½ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

Π“Π»Π°Π²Π° 4 АпплСты

4.1 АпплСты

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, язык Java позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹ (applets). Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π² ΡΡ€Π΅Π΄Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. АпплСты Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ся Π² ΠΎΠΊΠ½Π΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня — ΠΈΠΌ ΡΠ»ΡƒΠΆΠΈΡ‚ ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Они Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ся JVM — ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам запускаСт JVM для выполнСния Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Π­Ρ‚ΠΈ особСнности ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния языка Java, Π°ΠΏΠΏΠ»Π΅Ρ‚ — это всякоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ класса Applet, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ класс panel. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π°ΠΏΠΏΠ»Π΅Ρ‚ — это панСль ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ размСщСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ Panel, слуТит FiowLayout. Класс Applet находится Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java. applet, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΡ€ΠΎΠΌΠ΅ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ интСрфСйса, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Надо Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²ΡΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ эти интСрфСйсы ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ JVM Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚ Π°ΠΏΠΏΠ»Π΅Ρ‚, ΠΎΡ‚ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main (), Π΅Π³ΠΎ Π½Π΅Ρ‚ Π² Π°ΠΏΠΏΠ»Π΅Ρ‚Π°Ρ….

Π’ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°Ρ… Ρ€Π΅Π΄ΠΊΠΎ встрСчаСтся конструктор. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ создаСтся Π΅Π³ΠΎ контСкст. Π’ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния конструктора контСкст Π΅Ρ‰Π΅ Π½Π΅ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½, поэтому Π½Π΅ Π²ΡΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния удаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ дСйствия, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ выполняСмыС Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ mamo, Π² Π°ΠΏΠΏΠ»Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ inito класса Applet. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ автоматачСски запускаСтся ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ систСмой Java Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° сразу ΠΆΠ΅ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½ Π²Ρ‹Π³Π»ΡΠ΄ΠΈΡ‚ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ класса Applet:

public void init (){}

НСгусто! ΠœΠ΅Ρ‚ΠΎΠ΄ init () Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π°ΠΏΠΏΠ»Π΅Ρ‚Π΅ — подкласрС класса Applet. ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ дСйствия — Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, освобоТдСниС рСсурсов — Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ нСобходимости Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ destroy ΠΎ, Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ автоматичСски ΠΏΡ€ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Π’ ΠΊΠ»Π°ΡΡΠ΅ Applet Π΅ΡΡ‚ΡŒ пустая рСализация этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ΠšΡ€ΠΎΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² init () ΠΈ destroy () Π² ΠΊΠ»Π°ΡΡΠ΅ Applet ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π΅Ρ‰Π΅ Π΄Π²Π° пустых ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ автоматичСски. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ start () ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ появлСнии Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ stop(), ΠΊΠΎΠ³Π΄Π° Π°ΠΏΠΏΠ»Π΅Ρ‚ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ с ΡΠΊΡ€Π°Π½Π°. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ stop () ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ дСйствия, ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ start () — Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π΅. Надо сразу ΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π²ΡΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ ΡΡ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.

4.2 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π³Π° <applet>

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅Π³Π° .

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

Β· code — URL-адрСс Ρ„Π°ΠΉΠ»Π° с ΠΊΠ»Π°ΡΡΠΎΠΌ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°;

Β· width ΠΈ height — ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ Π²Ρ‹ΡΠΎΡ‚Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ….

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

Β· codebase — URL-адрСс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располоТСн Ρ„Π°ΠΉΠ» класса Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ отсутствуСт, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π³Π΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ HTML-Ρ„Π°ΠΉΠ»;

Β· archive — Ρ„Π°ΠΉΠ»Ρ‹ всСх классов, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π°ΠΏΠΏΠ»Π΅Ρ‚, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠΌ ZIP ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠΌ JAR Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π΄Π°Π΅Ρ‚ URL-адрСса этих Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ;

Β· align — Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° Π² ΠΎΠΊΠ½Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: ABSBOTTOM, ABSMIDDLE, BASELINE, BOTTOM, CENTER, LEFT, MIDDLE, RIGHT, TEXTTOP, TOP;

Β· hspace ΠΈ vspace — Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ поля, ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΎΠΊΠ½Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ…;

Β· download — Π·Π°Π΄Π°Π΅Ρ‚ порядок Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠΌ. ИмСна ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ;

Β· name — имя Π°ΠΏΠΏΠ»Π΅Ρ‚Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½ΡƒΠΆΠ΅Π½, Ссли Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ нСсколько Π°ΠΏ-ΠΏΠ»Π΅Ρ‚ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями code ΠΈ codebase ;

Β· style — информация ΠΎ ΡΡ‚ΠΈΠ»Π΅ CSS (Cascading Style Sheet); title — тСкст, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния Π°ΠΏΠΏΠ»Π΅Ρ‚Π°;

Β· alt — тСкст, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ вмСсто Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, Ссли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ;

Β· mayscript — Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния. Π­Ρ‚ΠΎ слово ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°ΠΏΠΏΠ»Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‚Сксту JavaScript.

ΠœΠ΅Ρ‚ΠΎΠ΄ getCodeBase () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ URL-адрСс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» класса Π°ΠΏΠΏΠ»Π΅Ρ‚Π°.

4.3 БвСдСния ΠΎΠ± ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°

ΠœΠ΅Ρ‚ΠΎΠ΄ getoocumentBase () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ URL-адрСс ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠΈΡ‚ HTML-Ρ„Π°ΠΉΠ», Π²Ρ‹Π·Π²Π°Π²ΡˆΠΈΠΉ Π°ΠΏΠΏΠ»Π΅Ρ‚.

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс Appletcontext, находящийся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java.applet. АпплСт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° ΡΡ‚ΠΎΡ‚ интСрфСйс ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getAppletContext ().

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² getApplet (String name) ΠΈ getApplets () интСрфСйса Appletcontext ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ name Π°ΠΏΠΏΠ»Π΅Ρ‚ ΠΈΠ»ΠΈ Π½Π° Π²ΡΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€.

ΠœΠ΅Ρ‚ΠΎΠ΄ showDocument (URL address) Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ HTML-Ρ„Π°ΠΉΠ» с Π°Π΄Ρ€Π΅ΡΠ° address.

ΠœΠ΅Ρ‚ΠΎΠ΄ showDocument (URL address, String target) Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ target. Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

Β· _seif — Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Ρ€Π΅ΠΉΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°ΠΏΠΏΠ»Π΅Ρ‚;

Β· _parent — Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°;

Β· _top — Ρ„Ρ€Π΅ΠΉΠΌ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΎΠΊΠ½Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π°;

Β· _biank — Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня;

Β· name — Ρ„Ρ€Π΅ΠΉΠΌ ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ с ΠΈΠΌΠ΅Π½Π΅ΠΌ name, Ссли ΠΎΠ½ΠΎ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ создано.

4.4 Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π²ΡƒΠΊ

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Java — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса image, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив пиксСлов. Π•Π³ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° ΡΠΊΡ€Π°Π½Π΅ логичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ drawimageo класса Graphics. ΠœΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅, Π° ΠΏΠΎΠΊΠ° Π½Π°ΠΌ понадобятся Π΄Π²Π° логичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

drawlmage (Image img, int x, int y, ImageObserver obs)

drawImage (Image img, int x, int y, int width, int height,

ImageObserver obs)

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡŒ окончания Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния img. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ся, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ drawlmage (). ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ false, ΠΏΠΎΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ся.

АргумСнты (Ρ…, Ρƒ) Π·Π°Π΄Π°ΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° изобраТСния img; width ΠΈ height — ΡˆΠΈΡ€ΠΈΠ½Ρƒ высоту изобраТСния Π½Π° ΡΠΊΡ€Π°Π½Π΅; obs — ссылку Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ImageObserver, слСдящий Π·Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния. ΠŸΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π΄Π°Π΅Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния, ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса image, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ getWidth (), getHeight{) класса Image.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ImageObserver, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ классом Component, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ Applet, описываСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ логичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ imageUpdate (), Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ изобраТСния. ИмСнно этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

АпплСты Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ практичСским ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Java. Π—Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π³ΠΎΠ΄Π° сущСствования Java Π±Ρ‹Π»ΠΈ написаны тысячи ΠΎΡ‡Π΅Π½ΡŒ интСрСсных ΠΈ ΠΊΡ€Π°ΡΠΈΠ²Ρ‹Ρ… Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ², ΠΎΠΆΠΈΠ²ΠΈΠ²ΡˆΠΈΡ… WWW. Масса Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² разбросана ΠΏΠΎ Internet, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² собраны Π² JDK Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ demoapplets.

Π’ JDK вошСл Ρ†Π΅Π»Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ java. applet, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΈΡ€ΠΌΠ° SUN ΡΠΎΠ±ΠΈΡ€Π°Π»Π°ΡΡŒ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ классы, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹.

Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ скорости ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ качСства ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… сСтСй Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² сильно ΡƒΠΏΠ°Π»ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ вся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅ΠΆΠ΄Π΅ выполняСмая Π°ΠΏΠΏΠ»Π΅Ρ‚Π°ΠΌΠΈ, пСрСносится Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ этой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, становится «Ρ‚ΠΎΠ½ΠΊΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ» .

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, появилось ΠΌΠ½ΠΎΠ³ΠΎ спСциализированных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² Ρ‚ΠΎΠΌ числС написанных Π½Π° Java, Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Internet. Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ сСйчас Ρƒ Π²ΡΠ΅Ρ… ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π€ΠΈΡ€ΠΌΠ° SUN большС Π½Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ java.applet. Π’ Π½Π΅ΠΌ Ρ‚Π°ΠΊ ΠΈ ΠΎΡΡ‚ался ΠΎΠ΄ΠΈΠ½ класс ΠΈ Ρ‚Ρ€ΠΈ интСрфСйса. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Swing вошСл класс JApplet, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ класс Applet. Π’ Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ систСму мСню. Он ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС классы Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Swing. Но Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Swing Π² ΡΠ²ΠΎΠ΅ΠΌ составС, поэтому приходится Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ классы Swing с ΡΠ΅Ρ€Π²Π΅Ρ€Π° ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² jar-Π°Ρ€Ρ…ΠΈΠ² вмСстС с ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°.

1. Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ JBuilder

2. Borland® JBuilder™ Developer’s Guide

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

// рСализация класса CircleClock

package clock;

/*

* CircleClock. java

*

* Created on ΠΌΠ°ΠΉ 2009 Π³.

*/

import java.awt.*;

import java.awt.image.*;

import java.awt.geom.*;

import java.util.Calendar;

/**

*

* @author Π‘ΠΎΡ‡ΠΊΠ°Ρ€Π΅Π²Π° ΠœΠ°Ρ€ΠΈΡ

*/

public class CircleClock extends java.applet.Applet implements Runnable {

/**

*

*/

private static final long serialVersionUID = 1L;

private Needle hNeedle, mNeedle, sNeedle;

private ClockDial dial;

private int w, h;

private BufferedImage bi;

private Graphics2D big;

private boolean stop = false;

private Thread timer = null;

private Color dialColor = Color. YELLOW;

private Color hairLineColor = Color. GREEN;

private Color hoursColor = Color. BLACK;

private Color minutesColor = Color. BLUE;

private Color secondsColor = Color. RED;

/** Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Π° */

public void init () {

try {

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния.

Dimension dim = getSize ();

w = dim. width;

h = dim. height;

//устанавливаСм Ρ†Π²Π΅Ρ‚Π° стрСлок ΠΈ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°

setColors ();

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ стрСлки

int radius = 0;

if (w < h)

radius = w/2;

else

radius = h/2;

mNeedle = new Needle (radius, radius/5); //минутная стрСлка

hNeedle = new Needle (2d/3d*radius, radius/4); //часовая стрСлка

sNeedle = new Needle (radius, radius/10); //сСкундная стрСлка

//создаСм Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚

dial = new ClockDial (radius*2, dialColor, hairLineColor);

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Graphics2D.

//Π ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π΅ΠΌ, Π° ΡΠΊΡ€Π°Π½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΡƒΠΆΠ΅

//Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ рисунок (Ρ‚.Π½. двойная буфСрСзация).

bi = (BufferedImage)createImage (w, h);

big = bi. createGraphics ();

big.setRenderingHint (RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ пСриодичСски Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ update.

timer = new Thread (this);

timer.start ();

}

catch (Exception error) {

System.out.println (error.getMessage ());

}

}

/** Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСт пСрСрисовку ΠΎΠΊΠ½Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π° */

public void update (Graphics g) {

try {

//ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Graphics2D

Graphics2D g2 = (Graphics2D)g;

grawClock ();

//РисуСм Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅

g2.drawImage (bi, 0, 0, this);

big.setTransform (new AffineTransform ());

}

catch (Exception error) {

System.out.println (error.getMessage ());

}

}

private void grawClock () {

//Π£Π·Π½Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя

Calendar curTime = Calendar. getInstance ();

curTime.setTimeInMillis (System.currentTimeMillis ());

double hour = curTime. get (Calendar.HOUR_OF_DAY);

double min = curTime. get (Calendar.MINUTE);

double sec = curTime. get (Calendar.SECOND);

//ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ рисунок

big.setBackground (Color.WHITE);

big.clearRect (0, 0, w, h);

//РисуСм Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚

Point luCorner = new Point (0, 0);

if (w > h)

{

luCorner.x = (w — h)/2;

luCorner.y = 0;

}

else

{

luCorner.x = 0;

luCorner.y = (h — w)/2;

}

big.drawImage (dial.getClockDial (), null, luCorner. x, luCorner. y);

//РисуСм стрСлки

big.setColor (hoursColor);

AffineTransform hat = new AffineTransform ();

hat.translate (w/2 — hNeedle. getRotationCenter ().x,

h/2 — hNeedle. getRotationCenter ().y);

/*РассчитываСм ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° часовой стСлки. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ час Π½Π°

12-Ρ‚ΠΈ часовом Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π΅ соотвСтствуСт 30-Ρ‚ΠΈ градусам, Π° 1

ΠΌΠΈΠ½ΡƒΡ‚Π° — 0.5 градуса. Π—Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹. */

if (hour >= 12)

hour -= 12;

double theta = (-90 + (30*hour + 0.5*min))*Math.PI/180;

hat.rotate (theta, hNeedle. getRotationCenter ().x,

hNeedle.getRotationCenter ().y);

big.setTransform (hat);

big.fill (hNeedle.getNeedle ());

big.setColor (minutesColor);

AffineTransform mat = new AffineTransform ();

mat.translate (w/2 — mNeedle. getRotationCenter ().x,

h/2 — mNeedle. getRotationCenter ().y);

/*РассчитываСм ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΌΠΈΠ½ΡƒΡ‚Π½ΠΎΠΉ стСлки. КаТдая ΠΌΠΈΠ½ΡƒΡ‚Π° Π½Π°

12-Ρ‚ΠΈ часовом Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π΅ соотвСтствуСт 6-Ρ‚ΠΈ градусам, Π° 1

сСкунда — 0.1 градуса. Π—Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹. */

theta = (-90 + (6*min + 0.1*sec))*Math.PI/180;

mat.rotate (theta, mNeedle. getRotationCenter ().x,

mNeedle.getRotationCenter ().y);

big.setTransform (mat);

big.fill (mNeedle.getNeedle ());

big.setColor (secondsColor);

AffineTransform sat = new AffineTransform ();

sat.translate (w/2 — sNeedle. getRotationCenter ().x,

h/2 — sNeedle. getRotationCenter ().y);

/*РассчитываСм ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° сСундной стСлки. КаТдая сСкунда Π½Π°

12-Ρ‚ΠΈ часовом Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π΅ соотвСтствуСт 6-Ρ‚ΠΈ градусам.

Π—Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹. */

theta = (-90 + (6*sec))*Math.PI/180;

sat.rotate (theta, sNeedle. getRotationCenter ().x,

sNeedle.getRotationCenter ().y);

big.setTransform (sat);

big.fill (sNeedle.getNeedle ());

}

//Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°ΠΏΠΏΠ»Π΅Ρ‚Π°, ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚

//Ρ†Π²Π΅Ρ‚Π° стрСлок ΠΈ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°.

private void setColors () {

try {

/* Π’ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ, для задания Ρ†Π²Π΅Ρ‚Π° Π½ΡƒΠΆΠ½ΠΎ число Ρ‚ΠΈΠΏΠ° int, Ρ‚. Π΅. 4 Π±Π°ΠΉΡ‚Π°, Π½ΠΎ int — это число со Π·Π½Π°ΠΊΠΎΠΌ (ΠΎΡ‚ «-231» Π΄ΠΎ «2:31 — 1»), Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ число с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΎΡ‚ «0» Π΄ΠΎ «232», Ρ‚. Π΅. Ρ‚Π΅ ΠΆΠ΅ 4 Π±Π°ΠΉΡ‚Π°, Π½ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Для этого ΠΌΡ‹ ΡΠ½Π°Ρ‡Π°Π»Π° создаСм число Ρ‚ΠΈΠΏΠ° Long, Π° Π·Π°Ρ‚Π΅ΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° intValue () ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚ΠΈΠΏ int.

*/

Long dc = new Long (Long.parseLong (getParameter («dialColor»), 16));

Long hlc = new Long (Long.parseLong (getParameter («hairLineColor»), 16));

Long hnc = new Long (Long.parseLong (getParameter («hoursNeedleColor»), 16));

Long mnc = new Long (Long.parseLong (getParameter («minutesNeedleColor»), 16));

Long snc = new Long (Long.parseLong (getParameter («secondsNeedleColor»), 16));

dialColor = new Color (dc.intValue (), true);

hairLineColor = new Color (hlc.intValue (), true);

hoursColor = new Color (hnc.intValue (), true);

minutesColor = new Color (mnc.intValue (), true);

secondsColor = new Color (snc.intValue (), true);

}

catch (Exception error) {

System.out.println (error.getMessage ());

}

}

//Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (timer).

//Он Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСрисовку ΠΎΠΊΠ½Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

public void run () {

while (!stop) {

try {

repaint ();

Thread.currentThread ().sleep (1000);

}

catch (Exception err) {}

}

}

//Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСтся Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» страницу

//с Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠΌ. Он ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ (timer) ΠΈ, соотвСтствСнно,

//пСрСрисовку ΠΎΠΊΠ½Π° Π°ΠΏΠΏΠ»Π΅Ρ‚Π°.

public void stop () {

super.stop ();

stop = true;

}

//Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСтся ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρƒ

//с Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠΌ. Он Π·Π°ΠΏΡƒΡΠΊΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Ρ€Π°Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ (timer).

public void start () {

super.start ();

stop = false;

if (timer == null) {

timer = new Thread (this);

timer.start ();

}

}

//Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСтся ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ страницы с Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠΌ.

public void destroy () {

super.destroy ();

stop = true;

//Π–Π΄Π΅ΠΌ ΠΏΠΎΠΊΠ° ΠΏΠ°Ρ€Ρ€Π°Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ (timer) Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Thread.currentThread ().yield ();

}

public String[][] getParameterInfo () {

String[][] retValue = {

{" dialColor", «hex», «alfa, red, green, blue (4 bytes, from 00 to FF)» },

{" hairLineColor", «hex», «alfa, red, green, blue (4 bytes, from 00 to FF)» },

{" hoursNeedleColor", «hex», «alfa, red, green, blue (4 bytes, from 00 to FF)» },

{" minutesNeedleColor", «hex», «alfa, red, green, blue (4 bytes, from 00 to FF)» },

{" secondsNeedleColor", «hex», «alfa, red, green, blue (4 bytes, from 00 to FF)» }

};

return retValue;

}

public String getAppletInfo () {

String retValue;

retValue = «Circle Clock» ;

return retValue;

}

}

// рСализация класса ClockDial

package clock;

/*

* ClockDial. java

*

* Created on ΠΌΠ°ΠΉ 2009 Π³.

*/

import java.awt.*;

import java.awt.geom.*;

import java.awt.image.*;

/**

*

* @author Π‘ΠΎΡ‡ΠΊΠ°Ρ€Π΅Π²Π° ΠœΠ°Ρ€ΠΈΡ

*/

public class ClockDial {

private double diam;

private BufferedImage dial;

private Color dialColor;

private Color hairLineColor;

/** Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляры ClockDial. ΠŸΡ€ΠΈ создании

* Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°.

*

* @param diam Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°.

*

* @param dialColor Ρ†Π²Π΅Ρ‚ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°.

*

* @param hairLineColor Ρ†Π²Π΅Ρ‚ Ρ‡Π΅Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π° Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π΅.

*

* @exception IncorrectParametersException — Ссли Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€ мСньшС

* ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

*/

public ClockDial (double diam, Color dialColor, Color hairLineColor)

throws IncorrectParametersException {

//провСряСм Π΄ΠΈΠ°ΠΌΠ΅Ρ‚Ρ€

if (diam <= 0)

throw new IncorrectParametersException ();

this.diam = diam;

this.dialColor = dialColor;

this.hairLineColor = hairLineColor;

//создаСм рисунок

dial = new BufferedImage ((int)diam, (int)diam,

BufferedImage.TYPE_INT_ARGB);

//создаСм Ρ‡Π΅Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π΅

Rectangle2D.Double r = new Rectangle2D. Double (-diam/40, -diam/60, diam/20, diam/30);

AffineTransform at = new AffineTransform ();

//смСщаСм Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² Ρ†Π΅Π½Ρ‚Ρ€ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°

at.translate (diam/2, diam/2);

//сохраняСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

AffineTransform prev = (AffineTransform)at.clone ();

//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ графичСский контСкст

Graphics2D g2 = dial. createGraphics ();

//Π·Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ всС Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ

g2.setBackground (dialColor);

g2.clearRect (0, 0, (int)diam, (int)diam);

//устанавливаСм Ρ†Π²Π΅Ρ‚ Ρ‡Π΅Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ

g2.setColor (hairLineColor);

//рисуСм 12 ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²

for (int i = 0; i < 12; i++)

{

//смСщаСм Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊ ΠΊΡ€Π°ΡŽ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π° (Ρ‚ΡƒΠ΄Π°,

//Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ располоТСн ΡˆΡ‚Ρ€ΠΈΡ…)

at.translate (-(diam/2 — r. width), 0);

//ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΡˆΡ‚Ρ€ΠΈΡ… ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°

at.rotate (Math.toRadians (30*i), diam/2 — r. width, 0);

//устанавливаСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

g2.setTransform (at);

//рисуСм ΡˆΡ‚Ρ€ΠΈΡ…

g2.fill®;

//восстанавливаСм Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

at.setTransform (prev);

}

}

/**

* Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°.

*

* @return BufferedImage рисунок, содСрТащий ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Π΅Ρ€Π±Π»Π°Ρ‚Π°

*/

public BufferedImage getClockDial () {

return dial;

}

}

// рСализация класса IncorrectParametersException

package clock;

/*

* IncorrectParameters. java

*

* Created on ΠΌΠ°ΠΉ 2009 Π³.

* */

/**

*

* @author Π‘ΠΎΡ‡ΠΊΠ°Ρ€Π΅Π²Π° ΠœΠ°Ρ€ΠΈΡ

*/

public class IncorrectParametersException extends java.lang.Exception {

/**

*

*/

private static final long serialVersionUID = 1L;

/**

* Creates a new instance of IncorrectParameterswithout detail message.

*/

public IncorrectParametersException () {

this («IncorrectParameters»);

}

/**

* Constructs an instance of IncorrectParameterswith the specified detail message.

* @param msg the detail message.

*/

public IncorrectParametersException (String msg) {

super (msg);

}

}

// рСализация класса Needle

package clock;

/*

* Needle. java

*

* Created on ΠΌΠ°ΠΉ 2009 Π³.

*/

import java.awt.*;

import java.awt.geom.*;

/**

* Π­Ρ‚ΠΎΡ‚ класс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания стрСлки часов

*

* @author Π‘ΠΎΡ‡ΠΊΠ°Ρ€Π΅Π²Π° ΠœΠ°Ρ€ΠΈΡ

*/

public class Needle {

private GeneralPath shape;

private double length, width;

/** Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляры класса Needle.

* ΠŸΡ€ΠΈ создании Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ стрСлки.

* Π”Π»ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ большС ΡˆΠΈΡ€ΠΈΠ½Ρ‹.

*

* @param length Π΄Π»ΠΈΠ½Π° стрСлки

* @param width Π΄Π»ΠΈΠ½Π° стрСлки

*

* @exception IncorrectParametersException — Ссли Π΄Π»ΠΈΠ½Π° мСньшС ΠΈΠ»ΠΈ

* Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ, Ссли ΡˆΠΈΡ€ΠΈΠ½Π° мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ, Ссли Π΄Π»ΠΈΠ½Π°

* мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° ΡˆΠΈΡ€ΠΈΠ½Π΅.

*/

public Needle (double length, double width)

throws IncorrectParametersException

/**

* Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ стрСлку Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Shape.

* @return Shape — Ρ„ΠΈΠ³ΡƒΡ€Π°, содСрТащая ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ стрСлки

*/

public Shape getNeedle () {

return shape;

}

/**

* Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π½Ρ‚Ρ€ вращСния стрСлки (Ρ‚ΠΎΡ‡ΠΊΡƒ, Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ

* стрСлка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ)

* @return Point2D. Double — Ρ‚ΠΎΡ‡ΠΊΠ°, содСрТащая ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° вращСния

* стрСлки

*/

public Point2D. Double getRotationCenter () {

Point2D.Double rc = new Point2D. Double ();

rc.x = rc. y = width/2;

return rc;

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ