Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 121

Автор Π Π΅ΠΉΠΌΠΎΠ½Π΄ Π­Ρ€ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½

14.4.6.2.Β Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ Python срСднСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°: fetchmailconf

Π’ Π³Π»Π°Π²Π΅ 11 ΠΏΠ°Ρ€Π° fetchmail/fetchmailconf Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· способов отдСлСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ интСрфСйса. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Python Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ fetchmailconf

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ fetchmailconf ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ инструмСнтарий Π’ΠΊ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ многопанСльного Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с графичСским интСрфСйсом (для GTK Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Python-привязки ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнтарии, Π½ΠΎ Tk-привязки ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python).

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ для высококвалифицированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ GUI-интСрфСйс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 60 Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², распрСдСлСнных ΠΏΠΎ Ρ‚Ρ€Π΅ΠΌ уровням ΠΏΠ°Π½Π΅Π»Π΅ΠΉ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ управлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠ· Ρ„Π»Π°ΠΆΠΊΠΎΠ², ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, тСкстовых ΠΏΠΎΠ»Π΅ΠΉ ΠΈ списков. НСсмотря Π½Π° эти слоТности, Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ мСньшС Π½Π΅Π΄Π΅Π»ΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ дня Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python ΠΈ Π’ΠΊ, для проСктирования ΠΈ кодирования ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ вСрсии.

Python прСвосходит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки Π² быстром создании ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² GUI-интСрфСйсов, Π° (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ fetchmailconf) ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ часто ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Perl ΠΈ Tel ΠΈΠΌΠ΅ΡŽΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны Π² Π΄Π°Π½Π½ΠΎΠΉ области (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ инструмСнтарий Π’ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» написан дляВс1), Π½ΠΎ ΠΎΠ½ΠΈ слоТнСС Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ слоТности ΠΊΠΎΠ΄Π° fetchmailconf (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 1400 строк). Emacs Lisp Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для GUI-программирования.

Π’Ρ‹Π±ΠΎΡ€ Java ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» Π±Ρ‹ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ создавая Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… прСимущСств для Π΄Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ высокой скорости выполнСния.

14.4.6.3. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Python: PIL

Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ (Python Imaging Library β€” PIL) ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ растровой Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство популярных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ PNG, JPEG, BMP, TIFF, PPM, XBM ΠΈ GIF. Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния. Π’ число ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… трансформаций Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Π΄Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ сдвиг. Π’Π°ΠΊΠΆΠ΅ поддСрТиваСтся пиксСльноС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, искривлСниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ прСобразования Ρ†Π²Π΅Ρ‚ΠΎΠ². Дистрибутив PIL Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Python-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ доступными Π΄Π°Π½Π½Ρ‹Π΅ срСдства ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ PIL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для трансформации ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π² качСствС ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ инструмСнтария, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСализуСтся программируСмая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

РСализация PIL ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ Python-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, состоящих ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Код Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ растровыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, написан Π½Π° Π‘ для обСспСчСния скорости. Π‘ΠΎΠ»Π΅Π΅ высокиС ΡƒΡ€ΠΎΠ²Π½ΠΈ ΠΈ программная Π»ΠΎΠ³ΠΈΠΊΠ°, написанныС Π½Π° Python, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ для чтСния, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ слоТно ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнтарий Π½Π° Emacs Lisp ΠΈΠ»ΠΈ shell, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ интСрфСйс Π‘-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Tel ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ срСдства Π‘-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° PIL Π±Ρ‹Π»Π° Π±Ρ‹ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ большим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π° Tel. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π² Perl (Perl XSO), Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΡƒΠ·ΠΊΠΎΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, слабо Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, слоТны ΠΈ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со срСдствами Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ машинно-зависимых ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Java (Native Method Interface), вСроятно, обСспСчиваСт возмоТности, сравнимыС с возмоТностями Python. Π‘Ρ‹Π»ΠΎ Π±Ρ‹, вСроятно, Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PIL Π½Π° Java.

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ PIL ΠΈ докумСнтация доступны Π½Π° Web-сайтС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° chttp://www.pythonware.com/products/pil/>.

14.4.7. Java

Π―Π·Ρ‹ΠΊ программирования Java Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠΎΠ΄ Π΄Π΅Π²ΠΈΠ·ΠΎΠΌ "написанноС ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π²Π΅Π·Π΄Π΅" ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ встроСнных ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (ΠΈΠ»ΠΈ Π°ΠΏΠ»Π΅Ρ‚ΠΎΠ²) Π½Π° Web-страницах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ Π±Ρ‹ ΠΈΠ· любого Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Благодаря сСрии Π³Ρ€ΡƒΠ±Ρ‹Ρ… тСхничСских ΠΈ стратСгичСских просчСтов правообладатСля, ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ Sun Microsystems, Π΄Π°Π½Π½Ρ‹ΠΉ язык ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π» Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ Π² достиТСнии ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. Однако Java Π΄ΠΎ сих ΠΏΠΎΡ€ достаточно силСн ΠΊΠ°ΠΊ Π² систСмном, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ Π‘ ΠΈ Π‘++. Π―Π·Ρ‹ΠΊ Java Π±Ρ‹Π» анонсирован Π² 1995 Π³ΠΎΠ΄Ρƒ.

Π―Π·Ρ‹ΠΊ Java Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²ΠΎ спроСктирован для использования Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств автоматичСского управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠΈΡ…, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ…, прСимущСств ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ОО-конструкции, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΠΏΡ€ΠΈ этом мСньшС ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΈ слоТности, Ρ‡Π΅ΠΌ Π‘++. Π’ Π΄Π°Π½Π½ΠΎΠΌ языкС Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ сохранСн Π‘-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ программистов. Java Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΊ динамичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΌΡƒ Π‘ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Java ΠΊΠ°ΠΊ встроСнного языка ΠΈΠ· Π‘. НС случайно, Ρ‡Ρ‚ΠΎ Sun Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ созданию Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Java, доступной Π² Web.

НСдостатком Java ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с Python) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части языка ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ слоТными, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹. Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ классов Java ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° явного опрСдСлСния Π±Π»ΠΎΠΊΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Ρ‡ΡƒΡ€Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² дСструкторов ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ рСсурсами, ΠΊΡ€ΠΎΠΌΠ΅ памяти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΠ°ΠΌΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ срСдств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сигналы, опрос ΠΈ Π²Ρ‹Π±ΠΎΡ€, Π½Π΅ доступна ΠΈΠ· Java Π² стандартной поставкС. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Java ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ I/O-срСдства, простоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ.

ΠΠ°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΈ слоТная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, подобная "Π°Π΄Ρƒ DLL" Π² Windows. Π’ Java отсутствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ для управлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ вСрсиями Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ возникновСнию ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ‚Π°ΠΊΠΈΡ… срСдах, ΠΊΠ°ΠΊ сСрвСры ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠΉ вСрсиСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) XML-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ) вСрсиСй. ЕдинствСнной Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся пСрСмСнная срСды CLASS PATH, источник хроничСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ внСдрСния.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Sun Π½Π΅Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ управляСт Java ΠΊΠ°ΠΊ с политичСской, Ρ‚Π°ΠΊ ΠΈ с тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ GUI-инструмСнтарий Java, AWT Π±Ρ‹Π» Π½Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ смСсью, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Π² ΠΊΠΎΡ€Π½Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ стандартизации ECMA/ISO Π΅Ρ‰Π΅ большС Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΡƒΠΆΠ΅ расстроСнных полоТСниями SCSL (Sun Community Source License β€” лицСнзия Π½Π° исходный ΠΊΠΎΠ΄ Π² сообщСствС Sun). ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ рСализациям Java 1.2 с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΈΡ… спСцификациям J2EE (Java 2 Enterprise Edition). Π­Ρ‚ΠΎ дискрСдитируСт исходныС Ρ†Π΅Π»ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ пСрСносимости Java.

К соТалСнию, Π°ΠΏΠ»Π΅Ρ‚Ρ‹ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹. ЀактичСски ΠΈΡ… ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΠ»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Microsoft Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Java 1.2 Π² Internet Explorer. Однако язык Java, вСроятно, нашСл Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½ΠΈΡˆΡƒ Π² экологии вычислСний β€” "сСрвлСты", Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвСров Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Java Ρ‚Π°ΠΊΠΆΠ΅ всС Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, Π½Π΅ связанных нСпосрСдствСнно с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Web-сСрвСрами. Π”Π°Π½Π½Ρ‹ΠΉ язык становится Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Microsoft ASP/COM, Ρ‚Π°ΠΊ ΠΈ для Perl CGI. НаконСц, Java ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСн ΠΈ всС большС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ язык для ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ, Π²Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ программирования (Ρ€ΠΎΠ»ΡŒ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚).

Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Java прСвосходит Π‘++ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мСньшС срСдств для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ) для всСх Π·Π°Π΄Π°Ρ‡, ΠΊΡ€ΠΎΠΌΠ΅ систСмного программирования ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊ скорости выполнСния. ΠžΠΏΡ‹Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Java-программисты ΠΌΠ΅Π½Π΅Π΅ склонны ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² Π»ΠΎΠ²ΡƒΡˆΠΊΡƒ излишнСй ОО-ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ, Ρ‡Π΅ΠΌ программисты Π‘++, хотя это остаСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.