Бмелубодт Фбтбопч,
Чмбдйнйт Гйыечулйк




1. Ччедеойе

2. Йофетоеф, WWW й Йофтбоеф

3. Java, Joe, NEO

4. Java - същл й феиопмпзйс
4.1. Същл Java
4.1.1. Пв®елфобс нпдемш същлб Java
4.1.2. Ртйнйфйчоще фйрщ дбоощи
4.1.3. Рблефщ
4.1.4. Хртбчмсаэйе лпоуфтхлгйй
4.1.5. Йулмаюйфемшоще уйфхбгйй
4.1.6. Неибойън рпфплпч
4.2. Феиопмпзйс Java
4.2.1. Феиопмпзйюеулйк гйлм пвтбвпфлй Java-ртпзтбнн
4.2.2. Java-нбыйоб
4.2.3. Java й веъпрбуопуфш
4.2.4. Java WorkShop
4.3. Учсъш Java у плтхцеойен: плпоощк йоуфтхнеофбтйк
4.3.1. Пвэйе рпмпцеойс
4.3.2. Йъ юезп уфтпйфус зтбжйюеулйк йофетжеку (лпнрпоеофщ й лпофекоетщ)
4.3.3. Лбл птзбойъпчбфш йофетжеку
4.3.4. Упвщфйс
4.3.5. Нефпдщ лмбууб Component, учсъбооще у пвтбвпфлпк упвщфйк

5. Joe - феиопмпзйс учсъщчбойс Java-ртпзтбнн у пв®елфощнй  вйъ-
оеу-ртймпцеойснй

6. Ъблмаюеойе




Лпздб  зпчптсф й рйыхф п Java, убнпк рпрхмстопк жтбъпк счмсефус
"нйт упыем у хнб". Декуфчйфемшоп, й улптпуфш, й ибтблфет  тбур-
тпуфтбоеойс (фбл й ипюефус чурпнойфш мелуйлпо оедбчоезп ртпымп-
зп й улбъбфш п "рпведопн ыеуфчйй") ое йнеаф бобмпзпч. Ртй рпсч-
меойй бмшжб-четуйй ртпдхлфб чщуфтбйчбефус пюетедш об езп мйгео-
ъйтпчбойе (тйу. 1).

Тйу.  1. Пой ипфсф мйгеоъйтпчбфш феиопмпзйа Java (уойнпл удембо
об пуфтпче Счб).

Вефб-четуйс уфбопчйфус йоуфтхнеофпн  тебмйъбгйй  йожптнбгйпоощи
уйуфен  лтхрощи лпнрбойк. Блгйй лпнрбойк, йнеаэйи ртпюоще рпъй-
гйй ч Йофетоеф, тбуфхф, лбл об дтпццби. Чуе втпуймйуш  тебмйъп-
чщчбфш  WWW-обчйзбфптщ у рпддетцлпк Java й вптафус ъб ртбчп ре-
тедбфш йи ч веурмбфопе йурпмшъпчбойе лбл нпцоп  впмшыенх  юйумх
лмйеофпч. Йдеф утбцеойе ъб дпма вхдхэезп тщолб, лпофхтщ лпфптп-
зп  рплб фпмшлп обнеюбафус, утбцеойе у ртйнеоеойен утедуфч, лп-
фптще у фпюлй ътеойс "ъдтбчпзп вйъоеуб" йобюе лбл дйлйнй й объ-
чбфш оемшъс.

Ч  юен  ртйюйоб  чуепвэезп рпнеыбфемшуфчб й юфп ьфп ъб ртпдхлф,
плпмдпчбчыйк нйт? Рпрщфбенус упчуен лптпфлп чщулбъбфш оелпфптще
уппвтбцеойс рп ретчпнх чпртпух, рпуме юезп  ретекден  об  юйуфп
феиойюеулйе  темшущ  й  упутедпфпюйнус об прйубойй феиопмпзйй й
същлб Java й буупгййтпчбоощи ртпдхлфпч.

Ретупобмшоще  лпнршафетщ  удембмй   йожптнбгйпооще   феиопмпзйй
юбуфша  нбуупчпк  лхмшфхтщ. Ртй нйммйпоощи фйтбцби дбце едйоуф-
чеоощк "лпнршафетощк ийф" урпупвео ртйоеуфй пюеош впмшыйе деош-
зй. Бчфптщ нопзйи рпдпвощи ийфпч,  рпнйнп  впзбфуфчб,  рпмхюбаф
лпмпуубмшопе  чмйсойе об мадек, юфп рп ухэеуфчх счмсефус йуфпю-
ойлпн пзтпнопзп дпрпмойфемшопзп пвпзбэеойс. Й фен ое неоее, хце
дпчпмшоп дмйфемшобс йуфптйс тбъчйфйс  ретупобмшощи  лпнршафетпч
ое ъобмб ойюезп, рпдпвопзп жеопнеох Java. Юфп йънеоймпуш ч нйте
ч рпумедойе зпдщ, рпюенх ьфпф жеопнео уфбм чпънпцео?

Йънеоймус  Йофетоеф.  По уфбм дпуфхрео нйммйпобн мадек, дбмелйи
пф феиойюеулйи ртпвмен. Юйумп рпмшъпчбфемек Йофетоеф рп рптсдлх
чемйюйощ хце ое пфмйюбефус пф юйумб рпмшъпчбфемек  ретупобмшощи
лпнршафетпч  й ртпдпмцбеф чътщчппвтбъоп тбуфй. Пдопчтенеооп Йо-
фетоеф пвеуреюйм фблха улптпуфш тбуртпуфтбоеойс опчйопл  йожпт-
нбгйпоощи феиопмпзйк, лпфптха ое нпзмй й ойлпздб ое унпзхф дбфш
фтбдйгйпооще  лбобмщ  увщфб.  Чтенс уртеуупчбмпуш. Ч Йофетоефе,
прпъдбч вхлчбмшоп об деош, лпнршафетобс лпнрбойс, дбце лтхробс,
тйулхеф уетшеъоп пумбвйфш учпй рпъйгйй утбъх чп чуен нйте.



Йожптнбгйпооще ретезтхълй - ибтблфетобс юетфб  обыезп  чтенеой.
Упъдбощ нпэоще неибойънщ, пвеуреюйчбаэйе ртпйъчпдуфчп пзтпнопзп
лпмйюеуфчб  йожптнбгйй. Ухэеуфчеооп неошые удембоп дмс пвмезюе-
ойс ее рпмхюеойс й йурпмшъпчбойс.

Фйрйюопк счмсефус уйфхбгйс, лпздб йойгйбфйчб  ртйобдмецйф  рпу-
фбчэйлх, б ое рпфтевйфема йожптнбгйй. Рпуфбчэйл рп пртедемеооп-
нх  рпчпдх упъдбеф йожптнбгйа й обртбчмсеф ее чуен, лфп, рп езп
ноеойа, ч оек охцдбефус (тйу. 2).

Тйу. 2. Дпуфбчлб йожптнбгйй рп йойгйбфйче рпуфбчэйлб

Фбл тбвпфбаф утедуфчб нбуупчпк йожптнбгйй,  йъдбфемшуфчб,  тел-
мбноще бзеофуфчб. Фбл тбвпфбеф ьмелфтпообс рпюфб. Ч впмшыйоуфче
умхюбеч  рпфтевйфема ьфб йожптнбгйс, нпцеф вщфш, й охцоб, оп ое
ч дбоощк нпнеоф, ое уекюбу. Рпфтевйфемш  чщохцдео  бтийчйтпчбфш
рпмхюеооха  йожптнбгйа. Ртй ьфпн ч мхюыен умхюбе чемйлб четпсф-
опуфш, юфп л нпнеофх, лпздб йожптнбгйс декуфчйфемшоп рпобдпвйф-
ус, поб рпфетсеф блфхбмшопуфш. Пвщюоп це х  рпфтевйфемс  ртпуфп
облбрмйчбафус зптщ нхуптб, ч лпфптпн пфщулбфш оеюфп охцопе рпю-
фй оечпънпцоп.

Юфпвщ  йожптнбгйс  вщмб  блфхбмшопк дмс рпфтевйфемс, поб дпмцоб
дпуфбчмсфшус л оенх рп ъбртпух - ч фпюопуфй фпздб, лпздб ч  оек
чпъойлмб  оепвипдйнпуфш. Лтпне фпзп, рпуфбчэйл дпмцео упитбосфш
чпънпцопуфш хртбчмеойс йожптнбгйек, по дпмцео ое фпмшлп  упъдб-
чбфш ее, оп й чпчтенс пвопчмсфш й хойюфпцбфш.

Геофтбмйъпчбооще  лпнршафетоще  уйуфенщ,  дпнйойтпчбчыйе еэе 10
меф объбд, рпъчпмсмй рпмшъпчбфемсн утбчойфемшоп мезлп  обипдйфш
йожптнбгйа ч претбфйчопн тецйне, пдоблп пой ъбфтхдосмй хртбчме-
ойе йожптнбгйек, рпулпмшлх ее йуфпюойлй, лбл ртбчймп, тбъоптпд-
ощ й феттйфптйбмшоп тбъоеуеощ. Еэе пдйо чбцощк оедпуфбфпл геоф-
тбмйъпчбоощи уйуфен - йи умпцопуфш й дптпзпчйъоб (тйу. 3).

Тйу. 3. Чъбйнпдекуфчйе у геофтбмйъпчбоопк лпнршафетопк уйуфенпк

Рпдбчмсаэенх  впмшыйоуфчх  тпууйкулйи птзбойъбгйк пой ртпуфп ое
рп лбтнбох.

Уефй ретупобмшощи лпнршафетпч ухэеуфчеооп  деыечме  геофтбмйъп-
чбоощи уйуфен, пой пуфбчмсаф ъб рпуфбчэйлпн оепвипдйнха учпвпдх
хртбчмеойс  йожптнбгйек,  пдоблп рпфтевйфемсн ртйипдйфус йулбфш
оепвипдйнще дбооще об нопцеуфче  нбыйо,  утедй  впмшыпзп  юйумб
ртймпцеойк (тйу. 4).

Тйу. 4. Рпмхюеойе йожптнбгйй йъ уефй ретупобмшощи лпнршафетпч

Тсдпчпнх  рпмшъпчбфема  тбвпфбфш ч фблпк тбъоптпдопк ртйлмбдопк
утеде лтбкое оехдпвоп.

Урпупв тбътеыеойс хлбъбоощи ртпвмен, л лпфптпнх ртйвезбаф чедх-
эйе лпнрбойй, упуфпйф ч рпуфтпеойй йожптнбгйпоопк уфтхлфхтщ пт-
збойъбгйй рп пвтбъх й рпдпвйа Йофетоеф, у  Web-уетчйупн  ч  лб-
юеуфче лпогерфхбмшопк пуопчщ (тйу. 5).

Тйу. 5. Хойчетубмшощк лмйеоф Web-уетчйуб

Чпънпцопуфш  итбоеойс  дбоощи  тбъмйюощи фйрпч (фелуф, зтбжйлб,
бхдйп, чйдеп) ч упюефбойй у неибойънбнй учсъщчбойс  йожптнбгйй,
тбурпмпцеоопк ч тбъощи хъмби лпнршафетопк уефй, рпъчпмсаф тбуу-
тедпфбюйчбфш  йожптнбгйа ч уппфчефуфчйй у еуфеуфчеоощн рптсдлпн
ее упъдбойс й рпфтевмеойс, пухэеуфчмсфш  едйоппвтбъощк  дпуфхр,
пфртбчмссуш  пф  оевпмшыпзп юйумб йъчеуфощи "лптоек". Фен убнщн
рпуфбчэйл нпцеф ьжжелфйчоп зпфпчйфш й  лпофтпмйтпчбфш  йожптнб-
гйа, б рпфтевйфемш ч упуфпсойй веъ фтхдб обкфй оепвипдйнще дбо-
още йнеооп фпздб, лпздб пой уфбмй охцощ.

Утедуфчб  Web,  рпнйнп  учсъщчбойс  тбуртедемеоощи дбоощи, пух-
эеуфчмсаф еэе пдох пюеош чбцоха жхолгйа. Пой рпъчпмсаф тбуунбф-
тйчбфш йожптнбгйа у охцопк уфереоша дефбмйъбгйй, юфп ухэеуфчео-
оп хртпэбеф бобмйъ впмшыйи пв®енпч дбоощи. Нпцоп  вщуфтп  пфпв-
тбфш  убнпе  йофетеуопе,  б ъбфен йъхюйфш чщвтбоощк нбфетйбм чп
чуеи рпдтпвопуфси.

Фблйн пвтбъпн, Web-уетчетщ й Web-обчйзбфптщ нпзхф й дпмцощ  йу-
рпмшъпчбфшус ое фпмшлп ч "нйтпчпн нбуыфбве". Web - ьфп йожтбуф-
тхлфхтощк уетчйу, оепвипдйнщк лбцдпк птзбойъбгйй уп улпмшлп-ой-
вхдш ъбнефощнй йожптнбгйпоощнй рпфплбнй.

Ч  фп  це чтенс, Web-уетчйух ртйухэй й пртедемеооще оедпуфбфлй,
чщфелбаэйе йъ пфухфуфчйс упуфпсойк ч HTTP-ртпфплпме. Чп-ретчщи,
лмйеоф рп ухэеуфчх мйыео утедуфч хртбчмеойс чоеыойн ртедуфбчме-
ойен пв®елфпч об  ртпунбфтйчбенпк  WWW-уфтбойге  (едйоуфчеоопе,
юфп по нпцеф удембфш, ьфп унеойфш WWW-обчйзбфпт).

Чп-чфптщи,  Web-уфтбойгщ  уфбфйюощ. Ртй йурпмшъпчбойй ртпфплпмб
HTTP, об лмйеофулха уйуфенх ретедбафус фпмшлп рбууйчоще дбооще,
оп ое нефпдщ пв®елфпч. Йъ пвэйи уппвтбцеойк пюечйдоб пзтбойюео-
опуфш рпдпвопзп рпдипдб. Дбоощк оедпуфбфпл, тбъхнеефус,  учсъбо
у ретчщн. Пв®елф убн дпмцео ъобфш, лбл уевс рплбъщчбфш - фпюоее
зпчптс,  по дпмцео ьфп чщсуойфш, ртпбобмйъйтпчбч лмйеофулпе пл-
тхцеойе.

Ч-фтефшйи, Web-уетчйу пвмбдбеф чеушнб пзтбойюеоощнй йофетблфйч-
ощнй чпънпцопуфснй, лпфптще учпдсфус л ъбрпмоеойа рпмшъпчбфемен
юйуфп фелуфпчщи жптн у рпумедхаэек пфртбчлпк об  уетчет.  Фблбс
жптнб пвэеойс чрпмое хуфтбйчбмб рпмшъпчбфемек фетнйобмпч ЕУ ЬЧН
меф 15 объбд. Уекюбу ее счоп оедпуфбфпюоп.

Java-феиопмпзйс  рпъчпмсеф хуфтбойфш чуе пфнеюеооще оедпуфбфлй.
Лбл йнеооп - вхдеф суоп йъ рпумедхаэезп йъмпцеойс. Ч теъхмшфбфе
Web-уетчйу, й веъ фпзп йнечыйк пзтпноха  рпрхмстопуфш,  рпмхюйм
лбл  вщ опчщк йнрхмшу. Ьфпф ьлуртеуу рпоеуус чретед у хдчпеоопк
улптпуфша, хчмелбс ъб упвпк й Java.



Ч хълпн унщуме умпчб Java - ьфп пв®елфоп-птйеофйтпчбоощк  същл,
обрпнйобаэйк  C++,  оп впмее ртпуфпк дмс пучпеойс й йурпмшъпчб-
ойс. Ч впмее ыйтплпн унщуме Java - ьфп гембс  феиопмпзйс  ртпз-
тбннйтпчбойс,  йъобюбмшоп тбууюйфбообс об йофезтбгйа у Web-ует-
чйупн, фп еуфш об йурпмшъпчбойе ч уефечпк утеде, Рпулпмшлх Web-
обчйзбфптщ ухэеуфчхаф ртблфйюеулй дмс чуеи  бррбтбфоп-ртпзтбнн-
ощи рмбфжптн, Java-утедб дпмцоб вщфш лбл нпцоп впмее нпвймшопк,
ч йдебме рпмопуфша оеъбчйуйнпк пф рмбфжптнщ.

У  гемша теыеойс ретеюйумеоощи ртпвмен вщмй ртйосфщ, рпнйнп йо-
фезтбгйй у Web-обчйзбфптпн, дчб дтхзйи чбцоекыйи рпуфхмбфб.

- Вщмб  урегйжйгйтпчбоб  чйтфхбмшобс  Java-нбыйоб,  об  лпфптпк
дпмцощ чщрпмосфшус (йофетртефйтпчбфшус) Java-ртпзтбннщ. Пртеде-
меощ  бтийфелфхтб, ртедуфбчмеойе ьменеофпч дбоощи й уйуфенб лп-
нбод Java-нбыйощ. Йуипдоще  Java-фелуфщ  фтбоумйтхафус  ч  лпдщ
ьфпк нбыйощ. Фен убнщн, ртй рпсчмеойй опчпк бррбтбфоп-ртпзтбнн-
опк  рмбфжптнщ ч рптфйтпчбойй вхдеф охцдбфшус фпмшлп Java-нбый-
об; чуе ртпзтбннщ, обрйубооще об Java, рпкдхф веъ йънеоеойк.

- Пртедемеоп, юфп ртй тедблфйтпчбойй чоеыойи учсъек  Java-ртпз-
тбннщ  й  ртй тбвпфе Web-обчйзбфптб ртпътбюощн дмс рпмшъпчбфемс
пвтбъпн нпцеф  пухэеуфчмсфшус  рпйул  оепвипдйнщи  пв®елфпч  ое
фпмшлп об мплбмшопк нбыйое, оп й об дтхзйи лпнршафетби, дпуфхр-
ощи  рп  уефй  (ч юбуфопуфй, об WWW-уетчете). Обкдеооще пв®елфщ
ъбзтхцбафус, б йи нефпдщ чщрпмосафус ъбфен об нбыйое  рпмшъпчб-
фемс.

Оеупноеооп, нецдх дчхнс ужптнхмйтпчбоощнй рпмпцеойснй ухэеуфчх-
еф  феуобс учсъш. Ч лпнрймйтхенпк утеде фтхдоп дйуфбогйтпчбфшус
пф бррбтбфощи пупвеоопуфек лпнршафетб, лбл фтхдоп (ипфс й  нпц-
оп)  тебмйъпчбфш  ртпътбюоха  дйобнйюеулха  ъбзтхълх рп уефй. У
дтхзпк уфптпощ, ртйен пв®елфпч йъчое фтевхеф  рпчщыеоопк  пуфп-
тпцопуфй ртй тбвпфе у ойнй, б, ъобюйф, й уп чуенй Java-ртпзтбн-
нбнй. Ртйойнбфш оепвипдйнще нетщ веъпрбуопуфй ртпэе чуезп ч йо-
фетртефйтхенпк,  б ое лпнрймйтхенпк утеде. Чппвэе, нпвймшопуфш,
дйобнйън й веъпрбуопуфш - урхфойлй йофетртефбфптб, б ое  лпнрй-
мсфптб.

Ртйосфще  теыеойс удембмй Java-утедх йдебмшощн утедуфчпн тбътб-
впфлй лмйеофулйи лпнрпоеофпч Web-уйуфен. Пупвп пфнефйн ртпътбю-
оха дмс рпмшъпчбфемс дйобнйюеулха ъбзтхълх пв®елфпч рп уефй. Йъ
ьфпзп чщфелбеф фблпе чбцоекыее дпуфпйоуфчп, лбл  охмечбс  уфпй-
нпуфш  бднйойуфтйтпчбойс лмйеофулйи уйуфен, обрйубоощи об Java.
Дпуфбфпюоп пвопчйфш четуйа пв®елфб об уетчете, рпуме юезп  лмй-
еоф  бчфпнбфйюеулй  рпмхюйф йнеооп ее, б ое уфбтщк чбтйбоф. Веъ
ьфпзп тебмшобс тбвпфб у тбъчйфпк уефечпк йожтбуфтхлфхтпк  ртбл-
фйюеулй  оечпънпцоб. У дтхзпк уфптпощ, ртй обмйюйй дйобнйюеулпк
ъбзтхълй  декуфчйфемшоп  чпънпцоп  рпсчмеойе  хуфтпкуфч  лмбууб
Java-фетнйобмпч,  йъобюбмшоп упдетцбэйи фпмшлп WWW-обчйзбфпт, б
чуе пуфбмшопе (й ртпзтбннщ, й дбооще) рпмхюбаэйи рп уефй.

Ъдеуш хнеуфоп пфнефйфш ъбнеюбфемшоха фпюопуфш ч чщвпте пуопчощи
рпущмпл ртпелфб Java. Йъ нйойнхнб ртедрпмпцеойк чщфелбеф нблуй-
нхн опчщи чпънпцопуфек ртй упитбоеойй ртблфйюопуфй тебмйъбгйй.

Ч фп це чтенс, йофезтбгйс у WWW-обчйзбфптпн й  йофетртефйтхенбс
ртйтпдб  Java-утедщ уфбчсф чрпмое пртедемеооще тбнлй дмс тебмш-
опзп йурпмшъпчбойс Java-ртпзтбнн (ипфс, лпоеюоп це,  същл  Java
ое  неоее  хойчетубмео,  юен, улбцен, C++). Обртйнет, йъчеуфоп,
юфп йофетртефбгйс, рп утбчоеойа у ртснщн чщрпмоеойен,  ртйнетоп
об  рпмфптб  рптсдлб недмеооее. Фтхдоп улбъбфш, обулпмшлп нпзхф
хмхюыйфш рпмпцеойе лпнрймсгйс "об мефх" й йурпмшъпчбойе урегйб-
мйъйтпчбоощи Java-ртпгеууптпч, оп рплб  йурпмшъпчбойе  Java  об
уетчетопк уфптпое ртедуфбчмсефус ртпвменбфйюощн.

Дбмее,  ипфс  феиопмпзйс  Йофтбоеф, пуопчбообс об йурпмшъпчбойй
Web-уетчйуб ч лбюеуфче йожптнбгйпоопк пуопчщ птзбойъбгйй, счмс-
ефус пзтпнощн ыбзпн чретед, ухэеуфчхаф й  дтхзйе  уетчйущ,  лбл
хобумедпчбооще, фбл й упчтенеооще (обртйнет, темсгйпооще УХВД),
лпфптще  пвсъбфемшоп дпмцощ чипдйфш ч упуфбч лптрптбфйчопк уйу-
фенщ. Еумй чус учсъш нецдх лмйеофбнй  й  хрпнсохфщнй  уетчетбнй
вхдеф  пухэеуфчмсфшус  юетеъ уетчет WWW, рпумедойк уфбоеф хълйн
неуфпн, б теыеойс Йофтбоеф тйулхаф мйыйфшус  фблпзп  чбцоекыезп
дпуфпйоуфчб,  лбл  нбуыфбвйтхенпуфш.  Ъобюйф, оепвипдйнб ртснбс
учсъш нецдх лмйеофулйнй уйуфенбнй, обрйубоощнй об същле Java, й
ртпйъчпмшощнй уетчйубнй (тйу. 6).

Тйу. 6. Ртснбс учсъш нецдх Java-лмйеофбнй й лптрптбфйчощнй ует-
четбнй.

Лбл тебмйъпчбфш фблха учсъш?

Ч пвэен чйде пфчеф пюечйдео - охцощ  утедуфчб  дмс  рпмопгеоопк
йофезтбгйй  Java ч тбуртедемеооха пв®елфоха утедх. Об уетчетопк
уфптпое лпнрбойс Sun Microsystems йнееф уппфчефуфчхаэха  феиоп-
мпзйа  -  NEO  (NEtworked Objects, уефечще пв®елфщ). Феиопмпзйс
NEO хдпчмефчптсеф урегйжйлбгйсн CORBA  (Common  Object  Request
Broker  Architecture),  счмсаэйнус ртпнщымеоощн уфбодбтфпн. Ртй
тебмйъбгйй лптрптбфйчощи йожптнбгйпоощи уйуфен у йурпмшъпчбойен
NEO обйвпмее еуфеуфчеоощн ртедуфбчмсефус  йурпмшъпчбойе  фтеих-
тпчоечпк  бтийфелфхтщ  у  уетчетбнй ртймпцеойк, рпуфтпеоощнй об
пв®елфощи ртйогйрби, об чфптпн хтпчое й у вбъпчщнй й  хобумедп-
чбоощнй уетчетбнй об фтефшен хтпчое (тйу. 7).

Тйу.  7. Фтеихтпчоечбс бтийфелфхтб лптрптбфйчопк йожптнбгйпоопк
уйуфенщ.

Л упцемеойа, уфпмш пвэйк пфчеф ойлбл ое  рпнпзбеф  пухэеуфчмсфш
ртснха учсъш нецдх Java-лмйеофпн й NEO-уетчетпн. Лпоеюоп, нпцоп
чпурпмшъпчбфшус  уфбодбтфощнй утедуфчбнй ртпзтбннйтпчбойс ч уе-
фечпк утеде (б Java дпрхулбеф йурпмшъпчбойе вйвмйпфел, обрйубо-
ощи об C/C++, тбчоп лбл й чуфбчлх нбыйоощи лпдпч), оп еумй  ьфп
вщмп  вщ  едйоуфчеоопк чпънпцопуфша, Java тйулпчбмб пуфбфшус об
хтпчое "пцйчмсмпл" дмс MS-Windows. Ч лпоге нбтфб 1996 зпдб лпн-
рбойс SunSoft пв®счймб п рпсчмеойй  опчпзп  ртпдхлфб  у  йнеоен
Joe,  лбл  тбъ  й ртедобъобюеоопзп дмс ухэеуфчеоопзп пвмезюеойс
чуфтбйчбойс Java-лмйеофпч ч  йожптнбгйпооще  уйуфенщ  Йофтбоеф,
рпуфтпеооще  ч фтеихтпчоечпк бтийфелфхте у йурпмшъпчбойен утедщ
NEO (тйу. 8).

Тйу. 8. Тбуртедемеойе тпмек нецдх Java, Joe й NEO.

Фблйн пвтбъпн, умпцймбуш рпмобс й йъхнйфемшоп лтбуйчбс  лбтфйоб
птзбойъбгйй  упчтенеоощи  Йофтбоеф-уйуфен.  Ч  дбоопк уфбфше нщ
хдемйн пуопчопе чойнбойе феиопмпзйй Java.  Дбмее  вхдеф  лтбфлп
тбуунпфтеощ чпънпцопуфй, ртедпуфбчмсенще уйуфенпк Joe.






Ртй прйубойй същлб Java вхдеф ртедрпмбзбфшус, юфп юйфбфемш, ип-
фс вщ ч пвэйи юетфби, ъоблпн у същлпн C++.



Лпздб  зпчптсф пв пв®елфоп-птйеофйтпчбоопн същле ртпзтбннйтпчб-
ойс, ртедрпмбзбаф рпддетцлх фтеи неибойънпч:

- йолбрухмсгйс

- обумедпчбойе

- рпмйнптжйън.

Йолбрухмсгйс й обумедпчбойе ч същле Java тебмйъхафус у  рпнпэша
рпосфйс лмбууб.



Рпосфйе лмбууб ч същлби Java й C++ пюеош вмйълй. Лмбуу счмсефус
ыбвмпопн дмс упъдбойс пв®елфпч; по нпцеф упдетцбфш дбооще й не-
фпдщ.  Ртйчеден  ртйнет  лмбууб, прйущчбаэезп фпюлй ч дчхнетопн
ртпуфтбоуфче (ъдеуш й дбмее опнетб уфтпл йурпмшъхафус дмс  рпу-
медхаэйи рпсуоеойк й ое счмсафус юбуфша Java-ртпзтбнн).

1     class Point extends Object {
2       private double x;
3       private double y;

4       Point (double x, double y) {
5         this.x = x;
6         this.y = y;
7       }

8       Point () {
9         this (0.0, 0.0);
10      }

11      public void setX (double x) {
12        this.x = x;
13      }

14      public void setY (double y) {
15        this.y = y;
16      }
        . . .
17    }

Ч  същле  Java  оемшъс пфтщчбфш пртедемеойе нефпдб (жхолгйй) пф
прйубойс ъбзпмпчлб. Уйофблуйюеулбс лпоуфтхлгйс class  рпмопуфша
члмаюбеф  ч уевс чуа йожптнбгйа п лмбууе. Ч юбуфопуфй, тебмйъб-
гйй нефпдпч пвсъбощ упдетцбфшус чохфтй ьфпк лпоуфтхлгйй.

Дмс  пвпъобюеойс  обумедпчбойс  йурпмшъхефус   лмаюечпе   умпчп
extends (уфтплб 1). Лмбуу Object - ьфп лптеош детечб обумедпчб-
ойс.  Ч  Java  ое вщчбеф лмбуупч-"уйтпф": х чуеи лмбуупч, лтпне
Object, еуфш ртедыеуфчеоойл. Рпдтпвоее обумедпчбойе й ртедпрте-
демеооще лмбуущ вхдхф тбуунпфтеощ дбмее.

Тецйнщ дпуфхрб л ьменеофбн лмбууб (private, protected,  public)
фе  це,  юфп  й  ч C++, ъб пдойн чбцощн йулмаюеойен. Еумй тецйн
дпуфхрб прхэео,  ртедрпмбзбефус,  юфп  уппфчефуфчхаэйк  ьменеоф
дпуфхрео ч ртедемби рблефб (ун. дбмее).

Ч уфтпле 9 ртйчедео ртйнет счопзп чщъпчб пдопзп лпоуфтхлфптб йъ
дтхзпзп.

Ртпюйе  ртйчедеооще чщые уфтплй ое охцдбафус ч рпсуоеойси лтпне
пдопк - пфухфуфчхаэек. Ч същле  Java  ое  вщчбеф  деуфтхлфптпч.
Ртйюйоб ч фпн, юфп хртбчмеойе рбнсфша бчфпнбфйъйтпчбоп (ч жпоп-
чпн  тецйне  тбвпфбеф увптэйл нхуптб). Дмс чщучпвпцдеойс ртпюйи
теухтупч, буупгййтпчбоощи у пв®елфпн, умхцйф урегйбмшощк  нефпд
finalize.  Ьфпф нефпд чщъщчбефус увптэйлпн нхуптб ч нпнеоф хфй-
мйъбгйй рбнсфй, ъбойнбчыекус пв®елфпн.

Лмаюечпе умпчп this (ун., обртйнет, уфтплй 5 й 9)  йурпмшъхефус
дмс  уущмлй об убнпзп уевс. Бобмпзйюоха тпмш рп пфопыеойа л тп-
дйфемшулпнх лмбуух йзтбеф умпчп super:

1     class ThreePoint extends Point {
2       protected double z;

3       ThreePoint () {
4         super ();
5         z = 0.0;
6       }

7       ThreePoint (double x, double y, double z) {
8         super (x, y);
9         this.z = z;
10      }
11    }

Ч уфтплби 4 й 8 чщъщчбафус лпоуфтхлфптщ тпдйфемшулпзп лмбууб.

Ртйчедеооще ртйнетщ рплбъщчбаф, юфп ч същле Java,  лбл  й  C++,
нефпдщ  нпзхф вщфш ретезтхцеоощнй, фп еуфш рпд пдойн йнеоен нп-
зхф жйзхтйтпчбфш тбъоще нефпдщ у тбъощн обвптпн рбтбнефтпч.

Лбл й C++, у рпнэша лмаюечпзп  умпчб  static  нпцоп  пртедемйфш
дбооще  й  нефпдщ,  лпфптще  счмсафус  пвэйнй дмс чуеи пв®елфпч
лмбууб. (Пфнефйн рпрхфоп, юфп жхолгйк, ое ртйобдмецбэйи лблпнх-
мйвп лмбуух, ч същле Java ое вщчбеф.) Умедхаэйк ртйнет упдетцйф
жтбзнеофщ уфбодбтфопзп рблефб java.lang.

1 public final
2 class Character extends Object {

3     public static final int MAX_RADIX = 36;

4     static char downCase[];

5     static {
6         char down[] = new char[256];
7         for (int i = 0 ; i < 256 ; i++) {
8             down[i] = (char) i;
9       }
10        for (int lower = 'a' ; lower <= 'z' ; lower++) {
11            int upper = (lower + ('A' - 'a'));
12            down[upper] = (char)lower;
13      }

14        for (int lower = 0xE0; lower <= 0xFE; lower++) {
15            if (lower != 0xF7) { // multiply and divide
16                int upper = (lower + ('A' - 'a'));
17                down[upper] = (char)lower;
18            }
19        }
20      downCase = down;
21    }

22    public static boolean isLowerCase(char ch) {
23      return (upCase[ch] != ch);
24    }

25 }

Ртплпннеофйтхен ьфпф ртйнет у фпюлй ътеойс пфмйюйк Java пф C++.

Уфтплй у 5 рп 21 ртедуфбчмсаф упвпк  йойгйбмйъбгйа  уфбфйюеулйи
дбоощи  лмбууб, лпфптбс пухэеуфчмсефус ч нпнеоф ъбзтхълй лмбууб
ч Java-нбыйох. Рп ухфй ьфпф лпд йзтбеф тпмш лпоуфтхлфптб лмбууб
Character.

Ч уфтплби 1 й 3 чуфтеюбефус лмаюечпе умпчп final.  Ч  уфтпле  1
ьфп   умпчп   пвпъобюбеф   ъбртеф  об  обумедпчбойе  пф  лмбууб
Character. Ч уфтпле 3 езп унщум бобмпзйюео  прйубфема  const  ч
C++.

Еумй умпчп final йурпмшъпчбоп ч ъбзпмпчле нефпдб, фп дбоощк не-
фпд ое нпцеф вщфш ретепртедемео ч лмбууби-обумедойлби.

Лбл  й  ч  C++, ч същле Java лмбуущ нпзхф вщфш бвуфтблфощнй, фп
еуфш ое дп лпогб лполтефйъйтпчбоощнй. Ьфп пъобюбеф, юфп ч лмбу-
уе прйубощ нефпдщ, пртедемеойс лпфптщи пфухфуфчхаф. Фблйе нефп-
дщ (лбл й убн лмбуу)  дпмцощ  уобвцбфшус  прйубфемен  abstract.
Бвуфтблфоще  нефпдщ  дпмцощ  лполтефйъйтпчбфшус  ч  ртпйъчпдощи
лмбууби.

Ч същле Java йнеефус ртедпртедемеообс йетбтийс лмбуупч,  упдет-
цбэйиус ч рблефе java.lang. Об тйу. 9 ьфб йетбтийс ртедуфбчмеоб
зтбжйюеулй.

Тйу. 9. Йетбтийс ртедпртедемеоощи лмбуупч същлб Java.

Ч ьфпк йетбтийй оеулпмшлп пупвослпн уфпйф лмбуу Class. Ртпзтбн-
нйуф ое нпцеф упъдбфш пв®елф лмбууб Class (ртбчдб, ухэеуфчхаф й
дтхзйе  лмбуущ  у ьфйн учпкуфчпн). Уущмлй об пв®лф лмбууб Class
нпцоп рпмхюйфш у рпнпэша нефпдб getClass, пртедемеоопзп дмс пв-
®елфпч лмбууб Object.

Пв®елфщ лмбууб Class йурпмшъхафус дмс рпмхюеойс чп чтенс чщрпм-
оеойе йожптнбгйй п "лмбуупчщи" учпкуфчби  пв®елфб.  Л  пв®елфбн
лмбууб Class, рпнйнп ртпюйи, ртйнеойнщ умедхаэйе нефпдщ:

1    public native String getName();
2    public native Class getSuperclass();
3    public static native Class forName(String className)
         throws ClassNotFoundException;

Нефпд forName рпъчпмсеф рпмхюйфш уущмлх об лмбуу рп езп йнеой.
Прйубфемш  native  учйдефемшуфчхеф п фпн, юфп нефпд тебмйъхефус
утедуфчбнй, чоеыойнй рп пфопыеойа л Java-уйуфене (обртйнет, рй-
ыефус об същле C).



Нпдемш обумедпчбойс ч същле Java ухэеуфчеооп пфмйюбефус пф  нп-
демй  C++.  Чп-ретчщи,  ч Java оеф нопцеуфчеоопзп обумедпчбойс.
Чп-чфптщи, ч същле ртедхунпфтеощ утедуфчб дмс ъбртефб  дбмшоек-
ыезп  обумедпчбойс  (лмаюечпе  умпчп  final  ретед пртедемеойен
лмбууб). Ч-фтефшйи, ч същле Java ртйухфуфчхеф опчпе рп  пфопые-
ойа л C++ рпосфйе йофетжекуб.

Йофетжеку ртедуфбчмсеф упвпк обвпт прйубойк нефпдпч. Ртйнет:

public interface Verbose {
  public void drawOn (Graphics g);
  public void printOn (OutputStream os);
}

public class Star extends Polygon implements Verbose {
  public void drawOn (Graphics g) {
  // Лполтефобс тебмйъбгйс пфтйупчлй
  }
  public void printOn (OutputStream os) {
  // Лполтефобс тебмйъбгйс реюбфй
  }
}

public class Text extends StringBuffer implements Verbose {
  public void drawOn (Graphics g) {
  // Лполтефобс тебмйъбгйс пфтйупчлй
  }
  public void printOn (OutputStream os) {
  // Лполтефобс тебмйъбгйс реюбфй
  }
}

public class Blackboard extends Canvas {
  public void drawVerbose (Verbose d) {
    Graphics g = getGraphics ();
    d.drawOn (g);
  }
}

Йофетжеку Verbose упдетцйф дчб нефпдб. Ретчщк ртедобъобюео  дмс
тйупчбойс  ч  зтбжйюеулпн  лпофелуфе, чфптпк - дмс тбуреюбфлй ч
чщипдопк рпфпл.

Лмбуу   Star   ртедуфчмсеф   упвпк   рпдлмбуу   нопзпхзпмшойлпч
(Polygon).  Рпнйнп  ртпюезп,  нщ  ипфйн  тйупчбфш пв®елфщ ьфпзп
лмбууб об дпуле (Blackboard) й чщчпдйфш йи прйубойе ч жбкм.

Дмс пв®елфпч лмбууб Text нщ ипфйн йнефш  чпънпцопуфш  обюетфбфш
фелуф об дпуле й чщчпдйфш езп ч жбкм.

Лмбуу Blackboard - обумедойл лмбууб Canvas, урегйбмшоп ртедобъ-
обюеоопзп  дмс  тйупчбойс.  Лбл  нщ чйдйн, ьфпф лмбуу у рпнпэша
едйоуфчеоопзп нефпдб уртбчмсефус у тйупчбойен пв®елфпч, ое йне-
аэйи пвэезп ртедлб (лтпне лмбууб Object).

Фблйн пвтбъпн, у рпнпэша йофетжекупч нпцоп  лпнреоуйтпчбфш  пф-
ухфуфчйе  нопцеуфчеоопзп обумедпчбойс. Ч лпофелуфе обумедпчбойс
йофетжеку нпцоп тбуунбфтйчбфш лбл бвуфтблфощк лмбуу, ое  упдет-
цбэйк дбоощи.



Пв®елфщ упъдбафус у рпнпэша претбфптб new. Йойгйбмйъбгйс пв®ел-
фб  ртпйъчпдйфус  у  рпнпэша уппфчефуфчхаэезп лпоуфтхлфптб. Ьфй
претбгйй тбъдемйфш оемшъс - ъб new умедхеф лпоуфтхлфпт. Ртйнет.

Point myPoint = new Point ();

Дтхзйи урпупвпч упъдбойс пв®елфпч (лтпне  претбфптб  new)  същл
Java ое ртедпуфбчмсеф.

Пв®елф ухэеуфчхеф дп феи рпт, рплб об оезп еуфш уущмлй (фп еуфш
рплб  по  ртснп ймй лпучеооп дпуфхрео ипфс вщ йъ пдопк ретенео-
опк). Ч същле пфухфуфчхаф  счоще  утедуфчб  хдбмеойс  пв®елфпч.
Рпуме фпзп, лбл пв®елф уфбм оедпуфхрео, по плбъщчбефус лбодйдб-
фпн дмс хфймйъбгйй увптэйлпн нхуптб.

Пв®елф  нпцеф  уфбфш оедпуфхрощн, еумй итбойчыек езп ретенеоопк
ртйучпеоп опчпе ъобюеойе ймй еумй ьфб ретенеообс ретеуфбмб вщфш
дпуфхропк (ртпйъпыем чщипд йъ вмплб). Ртйнет.

  Point p = new Point (100.0, 100.0);
  . . .
  p = new Point (1.0, 1.0);
  // Об фпюлх у лпптдйобфбнй (100, 100) уущмпл впмшые оеф

  {
     String s = new String ("Local string");
     System.out.println (s);
  }
  // Об уфтплх "Local string" уущмпл впмшые оеф

Ч нпнеоф хфймйъбгйй пв®елфб увптэйлпн нхуптб вхдеф чщъчбо нефпд
finalize. Йъ-ъб фпзп, юфп увптэйл нхуптб тбвпфбеф ч жпопчпн те-
цйне, чщъпч finalize счмсефус буйоитпоощн.



Ч същле Java ухэеуфчхеф обвпт чуфтпеоощи фйрпч дбоощи,  лпфптще
ое счмсафус пв®елфбнй. Йи ое фбл нопзп.

Ртедуфбчмеойе  юйуем  ч същле Java жйлуйтпчбоп й, фен убнщн, ое
ъбчйуйф пф бррбтбфопк рмбфжптнщ.

- гемще юйумб:
- - byte - 8 вйф,
- - short - 16 вйф,
- - int -  32 вйфб,
- - long - 64 вйфб.
Чуе юйумб уп ъоблпн, урегйжйлбфпт unsigned ч същле пфухфуфчхеф.

- юйумб у рмбчбаэек фпюлпк:
- - float - 32 вйфб,
- - double - 64 вйфб.
Ртедуфбчмеойе дпмцоп уппфчефуфчпчбфш уфбодбтфх IEEE 754.

- char
Ъобюеойе фйрб char еуфш 16-тбътсдопе юйумп веъ ъоблб  (дйбрбъпо
0-65535).  Лпдйтпчлб уппфчефуфчхеф уфбодбтфх Unicode. Ч теъхмш-
фбфе у убнпзп обюбмб ъблмбдщчбефус ъдптпчбс пуопчб дмс  теыеойс
ртпвменщ мплбмйъбгйй Java-ртпзтбнн.

- boolean
Упдетцйф  ъобюеойс true й false, лпфптще ое нпзхф вщфш ртепвтб-
ъпчбощ ч дтхзпк фйр.

Ч същле Java, тбъхнеефус, ртйухфуфчхаф нбууйчщ. Ьфй нбууйчщ фй-
рйъйтпчбощ. Делмбтбгйс

Point myPoints[];

прйущчбеф ретенеооха myPoints лбл нбууйч пв®елфпч  фйрб  Point.
Ъбчеуфй нбууйч пртедемеоопзп тбънетб нпцоп у рпнпэша йоуфтхлгйй
чйдб

myPoints = new Point[10];

Ъобюеойс  ьменеофпч  нбууйчб  ртй  ьфпн хуфбобчмйчбафус тбчощнй
урегйбмшопк чемйюйое null.

Тбънет нбууйчб нпцеф вщфш рпмхюео чп чтенс чщрпмоеойс  ртпзтбн-
нщ:

howMany = myPoints.length;

Дтхзйи уфтхлфхтощи фйрпч (ое счмсаэйиус пв®елфбнй) ч същле Java
оеф, фп еуфш оеф уфтхлфхт, пв®едйоеойк й ф.р. Оеф ч Java й хлб-
ъбфемек.

Пфнефйн,  юфп  уфтплй  уйнчпмпч  счмсафус пв®елфбнй фйрб String
(фелуфпчще лпоуфбофщ)  ймй  StringBuffer  (йънеосенще  уфтплй).
Ртйнет,

String hello = "Hello world!";



Лмбуущ ч същле Java пв®едйосафус ч рблефщ. Чуе лмбуущ, чипдсэйе
ч  пдйо рблеф, счмсафус дтхцеуфчеоощнй рп пфопыеойа дтхз л дтх-
зх, фп еуфш йнеаф чъбйнощк дпуфхр л ретенеоощн й нефпдбн,  еумй
ртпфйчопе  ое пзпчптеоп счоп рпутедуфчпн урегйжйлбфптпч private
ймй protected.

Рблефщ тбъзтбойюйчбаф ртпуфтбоуфчб  йнео.  "Ртпуфп  змпвбмшощи"
йнео ч същле Java ое вщчбеф.

Рблеф пжптнмсефус у рпнпэша уйофблуйюеулпк лпоуфтхлгйй чйдб

package my_packages.pack1:

Йоуфтхлгйс  package  дпмцоб  уфпсфш  ретчпк  ч жбкме у йуипдощн
Java-фелуфпн. Поб декуфчхеф дп лпогб жбкмб.

Рблефщ нпзхф йнрптфйтпчбфшус дтхзйнй рблефбнй рпутедуфчпн йоуф-
тхлгйй import. Ртйнетщ,

import java.util;
import java.util.HashTable;
import java.util.*;

Ретчбс йоуфтхлгйс import рпъчпмсеф пвтбэбфшус л лмбуубн  рблефб
util умедхаэйн пвтбъпн:

util.Vector
util.HashTable
. . .

Чфптбс  йоуфтхлгйс йнрптфйтхеф мйыш лмбуу HashTable, рпъчпмсс ч
дбмшоекыен пвтбэбфшус л ьфпнх лмбуух рп  лптпфлпнх  йнеой,  веъ
ртежйлуб util.

Фтефшс  йоуфтхлгйс import рпъчпмсеф пвтбэбфшус рп лптпфлйн йне-
обн лп чуен лмбуубн рблефб util.



Хртбчмсаэйе лпоуфтхлгйй същлб Java чрпмое фтбдйгйпоощ, ъб  йул-
маюеойен  утедуфч  чщипдб  йъ чмпцеоощи вмплпч (ч юбуфопуфй, йъ
чмпцеоощи гйлмпч). Ртйнет.

test:
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
      if (i > 3) {
        break test;
      }
    }
  }

Дмс ретедбюй хртбчмеойс нпцоп ртйнеосфш лбл лпоуфтхлгйа  break,
фбл й continue (ретеипд л умедхаэек йфетбгйй гйлмб).

Йоуфтхлгйс goto ч същле Java пфухфуфчхеф.



Дмс пвтбвпфлй йулмаюйфемшощи уйфхбгйк, чпъойлбаэйи чп чтенс чщ-
рпмоеойс  ртпзтбннщ, ч същле Java йурпмшъхефус лпоуфтхлгйс try/
catch/finally. Вмпл try упдетцйф йоуфтхлгйй,  чщрпмоеойе  нпцеф
ртйчеуфй  л чпъойлопчеойа йулмаюйфемшощи уйфхбгйк. Умедхаэйе ъб
ойн пдйо ймй оеулпмшлп вмплпч catch ртедобъобюеощ дмс пвтбвпфлй
йулмаюйфемшощи уйфхбгйк. Облпоег, вмпл finally  упдетцйф  йоуф-
тхлгйй,  лпфптще  вхдхф  чщрпмоеощ  оеъбчйуйнп пф чпъойлопчеойс
йулмаюйфемшопк уйфхбгйй ч вмпле try. Ртй  чщипде  йъ  try-юбуфй
рпутедуфчпн  йоуфтхлгйк  ретедбюй  хртбчмеойс  (break, return й
ф.р.) вмпл finally фблце вхдеф чщрпмоео.

Дмс ретедбюй йожптнбгйй пв йулмаюйфемшопк уйфхбгйй йурпмшъхафус
пв®елфщ лмбуупч - обумедойлпч лмбууб Throwable. Обртйнет, лмбуу
ArrayIndexOutOfBoundsException пфчеюбеф ъб лпофтпмш чщипдб  йо-
делупч ъб зтбойгщ нбууйчпч, лмбуу OutOfMemoryException - ъб те-
блгйа  об йуюетрбойе учпвпдопк рбнсфй, лмбуу ClassCastException
- ъб     пыйвлй     ртй     ртепвтбъпчбойй     фйрпч,     лмбуу
InterruptedException  - ъб пвтбвпфлх ртетщчбойс фелхэезп рпфплб
й ф.д. Лпнрпоеофпк чуеи ьфйи лмбуупч счмсефус рпме фйрб String,
ч  лпфптпе  рпнеэбефус  фелуф  уппвэеойс   пв   пыйвле.   Нефпд
getMessage чпъчтбэбеф ьфпф фелуф.

Ч рпдпвощи пв®елфби нпцеф упдетцбфшус й дпрпмойфемшобс йожптнб-
гйс.  Обртйнет,  пв®елфщ лмбууб InterruptedIOException упдетцбф
рпме, ч лпфптпе ъбопуйфус юйумп вбкф, ретедбоощи дп чпъойлопче-
ойс йулмаюйфемшопк уйфхбгйй.

Умедхаэйк жтбзнеоф ртпзтбннщ тбуреюбфщчбеф уппвэеойс йъ нбууйчб
messages. Ртй ьфпн нщ ое рщфбенус чщсуойфш тбънет ьфпзп  нбууй-
чб,  б  ртпуфп  рпмбзбенус об неибойън пвтбвпфлй йулмаюйфемшощи
уйфхбгйк. (Лпоеюоп, нщ ое упчефхен  рйубфш  ртпзтбннщ  ч  фблпн
уфйме).

try {
  for (int i = 0; i < 100; i++) {
    System.out.println (messages[i]);
  }
}

catch (ArrayOutOfBoundException e) {
  System.out.println ("No more messages");
}
catch (Exception e) {
  System.out.println ("Unexpected exception");
  System.out.println (e.getMessage());
}

finally {
  System.out.println ("Work done");
}

Йулпвюйфемшоще уйфхбгйй нпзхф чпъвхцдбфшус ртпзтбнноп ртй рпнп-
эй йоуфтхлгйк чйдб

throw new MyException ("Something's wrong");

Урегйжйлбгйй същлб Java рпдтбъдемсаф йулмаюйфемшоще уйфхбгйй об
дче лбфезптйй. Л ретчпк лбфезптйй (лмбуу Error) пфопусфус уйфх-
бгйй, об лпфптще ртпзтбннб ое пвсъбоб тебзйтпчбфш (ьфп ъбчедпнп
удембеф Java-нбыйоб). Лп чфптпк лбфезптйй (лмбуу Exception) пф-
опусфус  уйфхбгйй, лпфптще ртпзтбннб дпмцоб пвтбвбфщчбфш пвсъб-
фемшоп. Еумй ртй чщрпмоеойй нефпдб нпцеф чпъойлбфш йулмаюйфемш-
обс уйфхбгйс чфптпзп фйрб, по дпмцео мйвп пвтбвбфщчбфш ее убн у
рпнпэша лпоуфтхлгйй try/catch/finally, мйвп ч  езп  пртедемеойй
дпмцоб жйзхтйтпчбфш лпоуфтхлгйс

throws Exception1, Exception2, ...

Ртйнет.

class Foo extends Object {
  . . .
  public void readFromFile (String fn) throws InvalidFormatException {
    FileInputStream fis;
    try {
      fis = new FileInputStream (fn);
      // Юйфбен дбооще йъ жбкмб.
      . . .
      // Еумй жбкм йнееф оертбчймшощк жптнбф,
      // чпцвхцдбен йулмаюйфемшоха уйфхбгйа:
      throw new InvalidFormatException ("Wrong format");
      . . .
    }
    catch (FileNotFoundException e) {
      // Ртедртйойнбен уппфчефуфчхаэйе декуфчйс
    }
    finaly {
      if (fis != null )
        fis.close(); // чуездб ъблтщчбен жбкм, еумй по вщм пфлтщф
    }
  }
  . . .
}

Ч ьфпн ртйнете ч нефпде readFromFile нпзхф чпъойлохфш дче йулм-
юйфемшоще  уйфхбгйй.  Ретчбс учсъбоб у фен, юфп охцощк жбкм ое-
дпуфхрео.   Ьфб   уйфхбгйс   пвтбвпфщчбефус    чохфтй    нефпдб
readFromFile.  Чфптбс  йулмаюйфемшобс уйфхбгйс нпцеф чпъолохфш,
еумй жбкм йнееф оертбчймшощк жптнбф.  Ьфб  уйфхбгйс  ретедбефус
дмс пвтбвпфлй обчети.



Неибойън  рпфплпч - пвсъбфемшобс юетфб упчтенеоощи претбгйпоощи
утед. Ъб уюеф рпфплпч пвеуреюйчбефус нбуыфбвйтхенпуфш ртпзтбнн-
ощи уйуфен, прфйнбмшопе йурпмшъпчбойе бррбтбфощи теухтупч,  чщ-
уплбс  улптпуфш  пфлмйлб  об ъбртпущ рпмшъпчбфемек. Рпьфпнх оеф
ойюезп хдйчйфемшопзп ч фпн, юфп ч същле Java  неибойън  рпфплпч
ртедуфбчмео у убнпзп обюбмб й ч рпмопн пв®ене.

Ч същле Java рпфплй ртедуфбчмеощ рпутедуфчпн лмбууб Thread, йо-
фетжекуб  Runnable, урегйжйлбфптб нефпдб synchronized й нефпдпч
лмбууб Object wait й notify.

4.1.6.1. Лмбуу Thread й йофетжеку Runnable

Рпфпл (thread) ртедуфбчмсеф упвпк пфдемшощк рпфпл хртбчмеойс  ч
ртедемби ртпгеууб. Фблйн пвтбъпн, х лбцдпзп рпфплб еуфш обюбмп,
рпумедпчбфемшопуфш декуфчйк, фелхэее упуфпсойе й лпоег.

Рпфпл  ъбрхулбефус  у  рпнпэша  чщъпчб  нефпдб  start()  лмбууб
Thread. Рпумедпчбфемшопуфш декуфчйк, чщрпмосенщи ч тбнлби рпфп-
лб, ъбдбефус ч нефпде run(). Рпдюетлоен, юфп  нефпд  run()  йу-
рпмшъхефус фпмшлп дмс ъбдбойс рпнмедпчбфемшопуфй декуфчйк; счоп
чщъщчбфш езп ое фпмшлп ое охцоп, оп й ртпуфп чтедоп.

Рпфпл  ъблбоюйчбефус  мйвп  ртй  ъбчетыеойй  чщрпмоеойс  нефпдб
run(), мйвп у  рпнпэша  счощи  чщъпчпч  нефпдпч  лмбууб  Thread
stop()  ймй  destroy().  Чпъпвопчйфш тбвпфх ъбчетыеоопзп рпфплб
оечпънпцоп.

Дмс чтенеоопк ртйпуфбопчлй тбвпфщ рпфплб у  рпумедхаэйн  чпъпв-
опчмеойен умхцбф нефпдщ suspend(), sleep() й yeild().

Пвщюоп рпфпл, ртйпуфбопчмеоощк у рпнпэша нефпдб suspend, чпъпв-
опчмсеф тбвпфх рпутедуфчпн нефпдб resume().

Чщъпч нефпдб sleep() ртйчпдйф л ртйпуфбопчле рпфплб об ъбдбоопе
юйумп нйммйуелход.

Чщъпч  нефпдб  yeild() пъобюбеф дпвтпчпмшоха хуфхрлх ртпгеууптб
дтхзпнх рпфплх; ретчпобюбмшощк рпфпл пуфбефус зпфпчщн л  чщрпм-
оеойа.

Java-рпфплй пвмбдбаф ртйптйфефбнй. Ч урегйжйлбгйси пзпчбтйчбеф-
ус, юфп Java-нбыйоб тебмйъхеф чщфеуосаэха нопзпрпфплпчпуфш. Ьфп
пъобюбеф, юфп рпфпл у впмшыйн ртйптйфефпн нпцеф ртетчбфш чщрпм-
оеойе  неоее ртйптйфефопзп рпфплб. Пдоблп, урегйжйлбгйй ое фте-
вхаф обмйюйс тбъдемеойс чтенеой. Ьфп ъобюйф, юфп  дмс  ретедбюй
хртбчмеойс рпфплх у фен це ртйптйфефпн, чппвэе зпчптс, фтевхаф-
ус счоще декуфчйс уп уфптпощ ретчпобюбмшопзп рпфплб - чщъпч не-
фпдпч suspend(), sleep() ймй yeild().

Об тйу. 10 ртедуфбчмеоб дйбзтбннб упуфпсойк рпфплпч.

Тйу. 10. Дйбзтбннб упуфпсойк рпфплпч.

Умедхаэйк ртйнет упдетцйф жтбзнеоф пдопзп йъ нопзпюйумеоощи чб-
тйбофпч  теыеойс ъбдбюй "ртпйъчпдйфемш/рпфтевйфемш". По ъбйнуф-
чпчбо йъ рйушнб, лпфптпе обрйубм Mark Tillotson ч зтхррх  уефе-
чщи опчпуфек comp.lang.java.

class my_producer extends Thread
{
  int items_to_do ;
  my_buffer the_buffer ;

  my_producer (my_buffer buf, int count)
    { super() ;
      the_buffer = buf ;
      items_to_do = count ;
    }

  public void run ()
    {
      while (items_to_do > 0)
        { System.out.println ("producer to_do = " + items_to_do) ;
          Integer item = new Integer (items_to_do*items_to_do) ;
          the_buffer.insert (item) ;
          items_to_do-- ;
        }
      System.out.println ("producer exiting") ;
    }
}

Дбоощк ртпйъчпдйфемш рпнеэбеф ч вхжет лчбдтбфщ гемщи юйуем.

Ч  ртйчедеоопн  ртпуфпн ртйнете лмбуу my_producer счмсефус обу-
медойлпн лмбууб Thread, юфп дембеф езп рпфплпн у рпумедпчбфемш-
опуфша декуфчйк, ъбдбоопк нефпдпн run(). Ч тебмшощи ртпзтбннби,
лбл ртбчймп, пв®елф дпмцео обумедпчбфш х лблпзп-мйвп  ртедыеуф-
чеоойлб  упдетцбфемшоще  учпкуфчб,  б чпънпцопуфш рбтбмеммшопзп
чщрпмоеойс енх ртедпуфбчмсефус йофетжекупн Runnable.  Ьфпф  йо-
фетжеку упдетцйф едйоуфчеоощк нефпд - run(). Ртйнет.

1  class SomethingToRun extends BaseRunner implements Runnable {
2    private Thread aThread;
3    public void run () {
       // чщрпмосенще декуфчйс
    . . .
4    }

5    SomethingToRun () {
6       aThread = new Thread (this);
7       aTread.start ();
8    }
9  }

Ч уфтпле 6 упъдбефус опчщк рпфпл. Бтзхнеофпн лпоуфтхлфптб счмс-
ефус пвелф лмбууб SomethingToRun, б, ъобюйф, рпумедпчбфемшопуфш
чщрпмосенщи  декуфчйк  рпфплб  вхдеф пртедемсфшус нефпдпн run()
ьфпзп лмбууб. Чщъпч нефпдб start() ч уфтпле 7  уфбчйф  рпфпл  ч
пюетедш зпфпчщи дмс чщрпмоеойс.



Лбл  й  чп  чуслпк  нопзпртпгеууопк ймй нопзпрпфплпчпк утеде, ч
Java ухэеуфчхеф ртпвменб уйоитпойъбгйй  дпуфхрб  л  тбъдемсенщн
теухтубн. Ртйнетпн фблпзп теухтуб счмсефус вхжет ч ъбдбюе "ртп-
йъчпдйфемш/рпфтевйфемш".

Дмс  прщфощи  ртпзтбннйуфпч  пфнефйн, юфп нпдемш уйоитпойъбгйй,
ртйосфбс ч същле Java, прйтбефус об лпогергйа нпойфптб, ртедмп-
цеооха ч 70-е зпдщ Втйол-Ибоуеопн.

Ч Java-ртпзтбннби нпцоп чщдемсфш лтйфйюеулйе йофетчбмщ, лпфптще
пвпъобюбафус лмаюечщн умпчпн synchronized. Еумй лтйфйюеулйн йо-
фетчбмпн счмсефус нефпд, урегйжйлбфпт synchronized рпнеэбефус ч
езп (нефпдб) ъбзпмпчпл. Дмс ртечтбэеойс ртпйъчпмшопк йоуфтхлгйй
(пвщюоп ьфп вмпл) ч лтйфйюеулйк йофетчбм умхцйф лпоуфтхлгйс

synchronized (чщтбцеойе) йоуфтхлгйс;

зде теъхмшфбфпн чщтбцеойс дпмцео вщфш пв®елф ймй нбууйч.

Чщрпмоеойе лтйфйюеулпзп йофетчбмб обюйобефус фпмшлп рпуме рпмх-
юеойс рпфплпн нпопрпмшопзп дпуфхрб л уппфчефуфчхаэенх  пв®елфх.
Дп обуфхрмеойс ьфпзп нпнеофб рпфпл вмплйтхефус.

Чщъпч wait() чохфтй лтйфйюеулпзп йофетчбмб ртйчпдйф л фпнх, юфп
фелхэйк  рпфпл хуфхрбеф нпопрпмшопе ртбчп об лтйфйюеулйк йофет-
чбм й ртйпуфбобчмйчбефус дп феи рпт, рплб йъ лблпзп-мйвп дтхзп-
зп рпфплб ое вхдеф удембо чщъпч notify() ймй notifyAll(). Иптп-
ыек йммауфтбгйек йурпмшъпчбойс  утедуфч  уйоитпойъбгйй  рпфплпч
счмсефус хрпнйобчыбсус чщые ртпзтбннб Нбтлб Фйммпфупоб.

class my_buffer
{
  Object [] vec = new Object [8] ;
  int ip = 0 ;
  int ep = 0 ;

  synchronized void insert (Object item)
    {
      do
        {
          if (ip-ep < 8)
            { vec [(ip++) & 7] = item ;
              if (ip-ep == 1) notify () ;  // Хчедпнйфш, еумй вхжет вщм рхуф
              return ;
            }
          try wait () ;  catch (InterruptedException e) ;
        } while (true) ;
    }

  synchronized Object extract ()
    {
      do
        {
          if (ip > ep)
            { Object result = vec [(ep++) & 7] ;
              if (ip-ep == 7) notify();  // Хчедпнйфш, еумй вхжет вщм рпмпо
              return result ;
            }
          try wait () ; catch (InterruptedException e) ;
        } while (true) ;
    }
}

class my_producer extends Thread
{
  int items_to_do ;
  my_buffer the_buffer ;

  my_producer (my_buffer buf, int count)
    { super() ;
      the_buffer = buf ;
      items_to_do = count ;
    }

  public void run ()
    {
      while (items_to_do > 0)
        { System.out.println ("producer to_do = " + items_to_do) ;
          Integer item = new Integer (items_to_do*items_to_do) ;
          the_buffer.insert (item) ;
          items_to_do-- ;
        }
      System.out.println ("Ртпйъчпдйфемш ъблбоюйчбеф тбвпфх") ;
    }
}

class my_consumer extends Thread
{
  int items_to_do ;
  my_buffer the_buffer ;

  my_consumer (my_buffer buf, int count)
    { super() ;
      the_buffer = buf ;
      items_to_do = count ;
    }

  public void run ()
    {
      while (items_to_do > 0)
        { System.out.println ("consumer to_do = " + items_to_do) ;
          Object item = the_buffer.extract () ;
          System.out.println ("consumer got " + item) ;
          items_to_do-- ;
        }
      System.out.println ("Рпфтевйфемш ъблбоюйчбеф тбвпфх") ;
      synchronized (this){
        notify () ; // Рпущмбен хчедпнмеойе п ъбчетыеойй тбвпфщ
                    // (ун. con.wait() ч main())
      }
    }
}

public class threaded3
{
  public static void main (String [] args) throws InterruptedException
    {
      my_buffer the_buffer = new my_buffer () ;
      my_producer prod = new my_producer (the_buffer, 40) ;
      my_consumer con  = new my_consumer (the_buffer, 40) ;

      Thread.currentThread().setPriority (5) ;
      prod.setPriority (4) ;  // Ртпйъчпдйфемш рпмхюбеф впмее чщуплйк ртйптйфеф
      con.setPriority  (3) ;  // рп утбчоеойа у рпфтевйфемен

      prod.start() ;
      con.start() ;
      synchronized (con)
        {
          con.wait() ;  // Цден хчедпнмеойс пф ртпйъчпдйфемс пв плпоюбойй
                        // езп тбвпфщ
        }
      System.out.println ("Ртпйъчпдйфемш й рпфтевйфемш ъблпоюймй тбвпфх") ;
    }
}

Ртйчедеообс ртпзтбннб обрйубоб ч пюеош иптпыен, рпосфопн уфйме.
Нщ  ртплпннеофйтхен  мйыш  пдйо  нпнеоф.  Ч  нефпдби insert() й
extract() лмбууб my_buffer чщъпч wait() упдетцйфус чохфтй  веу-
лпоеюопзп гйлмб. Демп ч фпн, юфп чщъпч notify() пфопуйфус л пв-
®елфх  ч  гемпн.  "Тбъвхцеоощк"  пв®елф дпмцео ртпбобмйъйтпчбфш
учпе упуфпсойе й теыйфш, юфп дембфш дбмшые. Фбл, еумй  "ъбуохм"
нефпд insert(), фп рпуме чпъпвопчмеойс тбвпфщ оепвипдйнп ртпче-
тйфш, юфп вхжет хце ое рпмпо й дпвбчмеойе опчпзп ьменеофб уфбмп
чпънпцощн. Еумй ьфп ое фбл, нефпд insert() ъбуоеф чопчш.





Ч ртйогйре, феиопмпзйюеулйк гйлм рпдзпфпчлй, фтбоумсгйй, тедбл-
фйтпчбойс  чоеыойи  учсъек,  феуфйтпчбойс, пфмбдлй й чщрпмоеойс
Java-ртпзтбнн фпф це, юфп й дмс дтхзйи йофетртефйтхенщи  същлпч
ртпзтбннйтпчбойс, оп у пдойн ухэеуфчеоощн пфмйюйен - ртй тедбл-
фйтпчбойй чоеыойи учсъек фтевхенще лпнрпоеофщ нпзхф дпуфбчмсфш-
ус рп уефй (тйу. xxx).

Тйу. xxx. Феиопмпзйюеулйк гйлм Java-ртпзтбннщ

Чбцоп  пфнефйфш,  пдоблп,  юфп Java-ртпзтбннщ нпзхф ртедуфбчбфш
лбл вщ ч дчхи йрпуфбуси - лбл убнпуфпсфемшопе ртймпцеойе й  лбл
брмеф,  фп  еуфш  упчплхропуфш  пв®елфпч, чщрпмосаэйиус ч утеде
WWW-обчйзбфптб.

У фпюлй ътеойс ртпзтбннйуфб, брмеф й  ртймпцеойе  пфмйюбафус  ч
ретчха пюетедш фпюлбнй чипдб й цйъоеоощн гйлмпн.

Ртймпцеойе ч лбюеуфче фпюлй чипдб йнееф нефпд

public static void main (String args[]);

ьфпф нефпд дпмцео вщфш пртедемео ч фпн public-лмбууе, лпфптщк упдетцйфус ч
жбкме, чщрпмосенпн чйтфхбмшопк Java-нбыйопк.
Ч рбтбнефт args ретедбефус нбууйч уфтпл - рбтбнефтпч лпнбодопк уфтплй.

Ртйнет: ртпзтбннб, реюбфбаэбс учпй бтзхнеофщ

public class myTop {
  public static void main (String args[]){
    int argc = args.length;

    for (int i = 0; i < argc; i++)
      System.out.println (argc[i]);
  }
}

Брмеф  чщрпмосефус  ч лпофелуфе обчйзбфптб й езп цйъоеоощк гйлм
пртедемсефус умедхаэйнй нефпдбнй лмбууб Applet:

public void init () чщъщчбефус обчйзбфптпн ртй ъбзтхълб брмефб;
public void start (); чщъщчбефус обчйзбфптпн ртй рплбъе уфтбойгщ;
public void stop (); чщъщчбефус обчйзбфптпн, лпздб фпф хипдйф у  Web-уфтбойгщ;
public void destroy (); ьфпф нефпд ртедобъобюео дмс пучпвпцдеос
          теухтупч; бобмпз деуфтхлфптб, оп ое чщъщчбефус бчфпнбфйюеулй; чуездб
          чщъщчбеф stop(); чуездб чщъщчбефус ртй чщипде йъ обчйзбфптб й ртй
          ретеъбзтхъле брмефб.

Ртпуфекыйк брмеф чщзмсдйф фбл:

1     import java.awt.Graphics;
2     import java.applet.Applet;

3     class SimpleApplet extends Applet {
4       public void paint (Graphics g) {
5         g.drawString ("Hello world!", 10, 10);
6       }
7     }

Нефпд public void paint (Graphics g) (уфтплй  4-6)  пртедемсеф,
лбл  брмеф  рететйупчщчбеф уевс ч фпф нпнеоф, лпздб плпоощк не-
оедцет рпущмбеф WWW-обчйзбфптх ъбртпу об рететйупчлх.

Члмаюеойе брмефб ч WWW-уфтбойгх ртпйъчпдйфус умедхаэйн пвтбъпн.
Ч същле HTML 2.0 ртедхунпфтеощ урегйбмшоще лпоуфтхлгйй 
й . Ретчбс йъ ойи ъбдбеф йнс ъбзтхцбенпзп лмбууб й  тбъ-
нетщ  пвмбуфй ч плое обчйзбфптб, чщдемсенпк брмефх. Лпоуфтхлгйс
 умхцйф дмс ретедбюй йожптнбгйй у WWW-уфтбойгщ ч фх уте-
дх, ч лпфптпк вхдеф чщрпмосфшус брмеф.

Ойце ртйчедео ртпуфпк ртйнет члммаюеойс брмефб ч WWW-уфтбойгх.




Еумй чщ чйдйфе ьфпф фелуф, фп чбы обчйзбфпт ое рпддетцйчбеф Java

Рпулпмшлх WWW-обчйзбфптщ йзоптйтхаф оейъчеуфоще лпоуфтхлгйй, ч обчйзбфпте, ое рпддетцйчбаэен Java, вхдеф чйдео фелуф -------------------------------------------------------------------------- Еумй чщ чйдйфе ьфпф фелуф, фп чбы обчйзбфпт ое рпддетцйчбеф Java -------------------------------------------------------------------------- Пртпуйфш ъобюеойс, ретедбчбенще у рпнпэша лпоуфтхлгйй , нпцоп умедхаэйн пвтбъпн: public void init () { String fontname = getParameter ("name"); String fontSizestring = getParameter ("size"); int theSize = Int.parseInt (fontSizeString); . . . }

    4.2.2. Java-нбыйоб

Java-лпнрймсфпт ретечпдйф фтбоумйтхеф йуипдоще фелуфщ Java- ртпзтбнн ч лпдщ Java-нбыйощ. Чппвэе зпчптс, Java-нбыйоб счмсеф- ус чйтфхбмшопк ч фпн унщуме, юфп поб ое ухэеуфчхеф ч чйде те- бмшощи нйлтпуиен й дтхзйи хуфтпкуфч, б ртедуфбчмсеф упвпк ртпз- тбннощк ьнхмсфпт, чщрпмосаэйкус об лблпк-мйвп фтбдйгйпоопк бр- рбтбфопк рмбфжптне. Четпсфоп, хце ч вмйцбкыее чтенс умедхеф пцйдбфш рпсчмеойс й чуе впмее ыйтплпзп тбуртпуфтбоеойс й ртснщи бррбтбфощи тебмйъбгйк Java-нбыйощ. Йдес същлпчщи ртпгеууптпч, тбъхнеефус, ое опчб. Йъчеуфощ рпрщф- лй чоедтйфш фбл объщчбенщк P-лпд ч лбюеуфче уфбодбтфб об те- ъхмшфбф тбвпфщ Рбулбмш-лпнрймсфптпч; ч учпе чтенс нопзп рйубмй п същле й нбыйое Жптф; вщмб чщрпмоеоб бррбтбфобс тебмйъбгйс те- жбм-нбыйощ, й урйупл ьфпф нпцоп ртпдпмцбфш й ртпдпмцбфш. Ч лпофелуфе ртпелфб Java урегйжйлбгйс чйтфхбмшопк нбыйощ счмс- ефус юбуфша лпнрмелуб нет, обртбчмеоощи об уфбодбтфйъбгйа Java- утедщ й об пвеуреюеойе ее оеъбчйуйнпуфй пф бррбтбфоп-ртпзтбнн- опк рмбфжптнщ. Лтпне фпзп, умедхеф хюйфщчбфш фх урегйжйюеулха утедх, ч лпфптпк дпмцощ зпфпчйфшус й тбвпфбфш Java-ртпзтбннщ. Еумй Web-уфтбойгб упдетцйф Java-брмефщ, ьфй брмефщ вхдхф рете- дбчбфшус рп уефй. Ъобюйф, чеушнб цембфемшоп, юфпвщ Java-лпд вщм лбл нпцоп впмее лпнрблфощн; ч ртпфйчопн умхюбе чтенс ъбзтхълй уфтбойгщ тйулхеф уфбфш тбъдтбцбаэе впмшыйн. Уппфчефуфчеооп, бт- ийфелфхтб й уйуфенб лпнбод Java-нбыйощ ртпелфйтпчбмйуш фблйн пвтбъпн, юфпвщ чусюеулй урпупвуфчпчбфш лпнрблфйжйлбгйй лпдб. У дтхзпк уфптпощ, жптнбф лпнбод Java-нбыйощ дпчпмшоп ртпуф (пвщю- оп лпнбодщ ое йнеаф претбодпч й ъбойнбаф пдйо вбкф), рпьфпнх чпънпцоб ее (нбыйощ) ьжжелфйчобс ьнхмсгйс. Рп ьфпк ртйюйое ртпзтбннщ, рпдзпфпчмеооще дмс чщрпмоеойс об Java-нбыйое, юбуфп объщчбаф вбкф-лпдбнй. Нщ прйыен бтийфелфхтх Java-нбыйощ дпчпмшоп лтбфлп. Рпумедхаэее йъмпцеойе прйтбефус об четуйа урегйжйлбгйк 1.0.

    4.2.2.1. Фйрщ дбоощи, рпддетцйчбенще Java-нбыйопк

Java-нбыйоб рпддетцйчбеф умедхаэйе уфбодбтфоще фйрщ дбоощи: - byte - пдопвбкфоще гемще гйумб ч дчпйюопн дпрпмойфемшопн лпде; - short - дчхивбкфоще гемще юйумб; - int - юефщтеивбкфоще гемще юйумб; - long - чпушнйвбкфоще гемще юйумб; - float - юефщтеивбкфоще чеэеуфчеооще юйумб ч жптнбфе IEEE-754; - double - чпушнйвбкфоще чеэеуфчеооще юйумб; - char - дчхивбкфоще веъъоблпчще уйнчпмщ ч лпдйтпчле Unicode. Рпулпмшлх Java-лпнрймсфпт ч упуфпсойй ртпчетйфш фйрщ дбоощи чп чтенс фтбоумсгйй, ртй чщрпмоеойй оеф охцдщ буупгййтпчбфш дпрпм- ойфемшоха йожптнбгйа уп ъобюеойснй уфбодбтфощи фйрпч. Чнеуфп ьфпзп зеоетйтхафус лпнбодщ, тбууюйфбооще об пвтбвпфлх дбоощи пртедемеоощи фйрпч. Обртйнет, дмс умпцеойс гемщи юйуем вхдеф узеоетйтпчбоб лпнбодб iadd, б дмс умпцеойс чеэеуфчеоощи юйуем дчпкопк фпюопуфй - лпнбодб dadd. Ъобюеойс фйрб boolean ртедуфбчмсафус пдопвбкфощнй гемщнй юйумб- нй й пвтбвбфщчбафус рпутедуфчпн уппфчефуфчхаэйи лпнбод. Йнеефус еэе дчб уфбодбтфощи фйрб дбоощи: - object - юефщтеивбкфобс уущмлб об пв®елф (нбууйчщ фтблфхафус лбл пв®елфщ); - returnAddress - юефщтеивбкфощк бдтеу чпъчтбфб йъ нефпдб. Урегйжйлбгйй Java-нбыйощ ое прйущчбаф чохфтеооек уфтхлфхтщ пв- ®елфпч. Ч тебмйъбгйй Sun Microsystems ъобюеойе фйрб object хлб- ъщчбеф об прйубфемш, итбосэйк дче уущмлй - об фбвмйгх нефпдпч й об дбооще пв®елфб. Чпънпцощ й дтхзйе ртедуфбчмеойс. Java-нбыйоб счмсефус 32-тбътсдопк. Впмее дмйооще ъобюеойс (long, double) ртедуфбчмсафус лбл рбтб юефщтеивбкфощи чемйюйо. Ое пзпчптйчбефус, ч лблпн рптсдле тбурпмбзбафус ьменеофщ рбтщ; впмее фпзп, четйжйлбфпт вбкф-лпдпч пвсъбо чщсчмсфш й пфчетзбфш ртпзтбннщ, рщфбаэйеус "чтхюоха" упуфбчмсфш дмйооще ъобюеойс.

    4.2.2.2. Тезйуфтщ

Ч Java-нбыйое дпмцощ рпддетцйчбфшус умедхаэйе тезйуфтщ: - pc - уюефюйл лпнбод; хлбъщчбеф об лпд претбгйй дмс лпнбодщ, лпфптбс вхдеф чщрпмосфшус умедхаэек. - vars - вбъпчщк тезйуфт дмс дпуфхрб л мплбмшощн ретенеоощн фе- лхэезп нефпдб. - optop - хлбъбфемш об четыйох уфелб претбодпч. Java-нбыйоб сч- мсефус уфелпчпк, рпьфпнх пуопчобс юбуфш лпнбод ветеф претбодщ йъ уфелб й фхдб це рпнеэбеф теъхмшфбф. - frame - хлбъбфемш об уфтхлфхтх, упдетцбэха плтхцеойе чтенеой чщрпмоеойс. Ч учпа пюетедш, плтхцеойе чтенеой чщрпмоеойс йурпмшъхефус дмс тебмйъбгйй фтеи гемек: дйобнйюеулпк ъбзтхълй, чпъчтбфб йъ нефп- дпч й пвтбвпфлй йулмаюйфемшощи уйфхбгйк. Дмс пвеуреюеойс дйобнйюеулпк ъбзтхълй, плтхцеойе чтенеой чщрпм- оеойс упдетцйф уущмлй об фбвмйгх уйчнпмпч фелхэезп нефпдб й фе- лхэезп лмбууб. Ретед обюбмпн чщрпмоеойс нефпдб чщрпмосефус те- дблфйтпчбойе езп чоеыойи учсъек (обуфтпклб уущмпл об чоеыойе нефпдщ й чоеыойе дбооще). Рпдпвобс рпъдосс обуфтпклб уущмпл де- мбеф узеоетйтпчбоощк лпд хуфпкюйчщн рп пфопыеойа л йънеоеойсн чп чоеыойи лмбууби. Дмс пвеуреюеойс оптнбмшопзп чпъчтбфб йъ нефпдпч чщрпмосефус чпууфбопчмеойе тезйуфтпчпзп плтхцеойс чщъщчбаэезп нефпдб. Дмс пвтбвпфлй йулмаюйфемшощи уйфхбгйк Java-нбыйоб чщрпмосеф ртпипд рп уфелх чщъпчб нефпдпч й пфщулйчбеф убнха чохфтеооаа лпоуфтхлгйа catch, пвтбвбфщчбаэха умхюйчыееус упвщфйе. Ч ртйогйре плтхцеойе чтенеой чщрпмоеойс нпцеф упдетцбфш дпрпм- ойфемшоха йожптнбгйа, оепвипдйнха, обртйнет, дмс пфмбдлй, оп ч урегйжйлбгйси Java-нбыйощ ьфп пуфбчмеоп об хунпфтеойе бчфптпч тебмйъбгйй.

    4.2.2.3. Увпт нхуптб

Дмс упъдбойс пв®елфпч чп чтенс чщрпмоеойс чщдемсефус пвмбуфш дйобнйюеулпк рбнсфй. Същл Java тбууюйфбо об фп, юфп ьфх пвмбуфш пвумхцйчбеф увптэйл нхуптб, рпулпмшлх ч същле оеф утедуфч дмс пучпвпцдеойс рбнсфй. Лбл йнеооп тбвпфбеф увптэйл нхуптб, прте- демсефус тебмйъбгйек Java-нбыйощ.

    4.2.2.4. Уйуфенб лпнбод Java-нбыйощ

Лпнбодб Java-нбыйощ упуфпйф йъ пдопвбкфопзп лпдб претбгйй, ъб лпфптщн умедхаф претбодщ (еумй фблпчще йнеафус). Нпцоп чщдемйфш умедхаэйе зтхррщ лпнбод: - лпнбодщ ъбзтхълй лпоуфбоф й ретенеоощи ч уфел претбодпч. Дмс лбцдпзп фйрб дбоощи йнеафус учпй лпнбодщ ъбзтхълй. Обртйнет, лпнбодб у лпдпн претбгйй dload й претбодпн, ъбдбаэйн унеэеойе, ъбзтхцбеф ч уфел йъ мплбмшопк ретенеоопк чеэеуфчеоопе юйумп дчпкопк фпюопуфй, б лпнбодб aload дембеф фп це дмс уущмлй об пв®елф. - лпнбодщ ъбрпнйобойс дбоощи йъ уфелб ч мплбмшощи ретенеоощи. - лпнбодщ хртбчмеойс нбууйчбнй. Обртйнет, лпнбодб newarray у претбодпн, ъбдбаэйн фйр ьменеофпч, йъчмелбеф йъ уфелб фтевхенщк тбънет нбууйчб, упъдбеф езп й рпнеэбеф ч уфел уущмлх об нбууйч. Пфнефйн, юфп дмс упъдбойс нбууйчпч у ьменеофбнй-пв®елфбнй умх- цйф дтхзбс лпнбодб, anewarray. Ъб уюеф рпдпвопк урегйбмйъбгйй дпуфйзбефус ьжжелфйчопуфш йофетртефбгйй Java-ртпзтбнн. - лпнбодщ тбвпфщ уп уфелпн. Л ьфпк зтхрре пфопусфус лпнбодщ, лпфптще хдбмсаф, дхвмйтхаф, неосаф неуфбнй четиойе ьменеофщ уфелб претбодпч, б фблце чщрпмосаф дтхзйе, впмее умпцоще нбой- рхмсгйй уп уфелпн. - бтйжнефйюеулйе лпнбодщ. Претбодщ йъчмелбафус йъ уфелб; фхдб це рпнеэбефус теъхмшфбф. - мпзйюеулйе лпнбодщ (удчйз, й, ймй, йулмаюбаэее ймй). - лпнбодщ ртепвтбъпчбойс л дтхзпнх фйрх. - лпнбодщ ретедбюй хртбчмеойс. Обртйнет, ч лпнбоде jsr (ретеипд об рпдртпзтбннх) претбодпн умхцйф пфопуйфемшощк бдтеу ретеипдб; бдтеу лпнбодщ, умедхаэек ъб jsr, рпнеэбефус об четыйох уфелб претбодпч. Йнеафус лпнбодщ дмс тебмйъбгйй ретелмаюбфемек. - лпнбодщ чпъчтбфб йъ жхолгйй. Дмс чпъчтбфб теъхмшфбфпч тбъощи фйрпч йурпмшъхафус лпнбодщ у тбъощнй лпдбнй претбгйй. Лтпне фп- зп, йнеефус лпнбодб breakpoint, лпфптбс пуфбобчмйчбеф оптнбмш- ощк ипд чщрпмоеойс й ретедбеф хртбчмеойе пвтбвпфюйлх ьфпзп уп- вщфйс. - лпнбодщ нбойрхмйтпчбойс у рпмснй пв®елфпч (хуфбопчйфш/ртпюй- фбфш пвщюопе/уфбфйюеулпе рпме). - лпнбодщ чщъпчб нефпдпч. Йи юефщте. Лпнбодб invokevirtual чщ- ъщчбеф (чйтфхбмшощк) нефпд об пуопче бобмйъб йожптнбгйй чтенеой чщрпмоеойс. Лпнбодб invokenonvirtual пухэеуфчмсеф чщъпч об пу- опче йожптнбгйй чтенеой лпнрймсгйй - обртйнет, чщъпч нефпдб тп- дйфемшулпзп лмбууб. Лпнбодб invokestatic чщъщчбеф уфбфйюеулйк нефпд лмбууб. Облпоег, лпнбодб invokeinterface чщъщчбеф нефпд, ртедуфбчмеоощк йофетжекупн. Чщрпмоеойе чуеи ретеюйумеоощи лп- нбод учсъбоп ое фпмшлп у ретедбюек хртбчмеойс, оп й у бобмйъпн тбъопзп тпдб фбвмйг. - лпнбодб чпъвхцдеойс йулмаюйфемшопк уйфхбгйй - athrow. - ртпюйе пв®елфоще претбгйй (упъдбфш пв®елф, ртпчетйфш фйр пв- ®елфб). - лпнбодщ уйитпойъбгйй (чпкфй ч лтйфйюеулйк йофетчбм, чщкфй йъ оезп). Нщ чйдйн, юфп ое ухэеуфчхеф уенбофйюеулпзп тбътщчб нецдх същлпн Java й Java-нбыйопк. Лбл хце пфнеюбмпуш, ьфп чбцоп дмс лпнрблф- опуфй улпнрймйтпчбоощи Java-ртпзтбнн й дмс пвеуреюеойс чщуплпк улптпуфй фтбоумсгйй.

    4.2.3. Java й веъпрбуопуфш

Лпогергйс ъбзтхълй пв®елфпч рп уефй ртпътбюощн дмс рпмшъпчбфемс пвтбъпн уфпмш це ртйчмелбфемшоб, улпмш й прбуоб. Еумй ое ртедр- тйойнбфш ойлблйи нет й ое облмбдщчбфш ойлблйи пзтбойюеойк об чпънпцопуфй Java-брмефпч, чипд об мавха Web-уфтбойгх нпцеф ртй- чеуфй л оертедулбъхенщн рпумедуфчйсн. Л уюбуфша, тбътбвпфюйлй същлб Java у убнпзп обюбмб хдемсмй убнпе ртйуфбмшопе чойнбойе чпртпубн йожптнбгййпоопк веъпрбуопуфй. Йъ същлб хдбмеощ нопзйе рпфеогйбмшоп прбуоще чпънпцопуфй, фблйе лбл претбфпт goto ймй фйр дбоощи "хлбъбфемш". Йофетртефйтхенщк ибтблфет чщрпмоеойс рпъчпмсеф ое дпрхуфйфш чщипдб ъб зтбойгщ нбууйчб, пвтбэеойс рп рхуфпк уущмле й ф.р. Ч учпе чтенс ъб рп- дпвоха пуфптпцопуфш чщуфхрбм бчфпт същлб Рбулбмш Ойлмбху Чйтф, пфнеюбчыйк, юфп ртй фтбдйгйпоопн рпдипде ртпзтбннйуф обрпнйобеф нптслб, лпфптщк опуйф урбубфемшощк лтхз фпмшлп об ухые. Нщ, пдоблп, ое вхден рпдтпвоп пуфбобчмйчбфшус об "пвщюопк" ве- ъпрбуопуфй й хдемйн пуопчопе чойнбойе чщрпмоеойа рпфеогйбмшоп чтбцдевощи брмефпч. Унецощк чпртпу - ртпчетлб рпдмйоопуфй брме- фпч, уобвцеоощи ьмелфтпоопк рпдрйуша, чйдйнп, вхдеф теыео ч рпумедхаэйи четуйси Java-уйуфен. Ртецде чуезп, брмефбн, ъбзтхцеоощн рп уефй, ъбртеэеощ юфеойс й ъбрйуш жбкмпч йъ мплбмшопк жбкмпчпк уйуфенщ, б фблце чщрпмоеойе уефечщи упедйоеойк уп чуенй ипуфбнй, лтпне фпзп, у лпфптпзп вщм рпмхюео брмеф. Лтпне фпзп, фблйн брмефбн ое тбътеыбефус ъбрху- лбфш ртпзтбннщ об лмйеофулпк уйуфене (зпчптс същлпн ПУ UNIX, дмс ойи оедпуфхрощ уйуфеноще чщъпчщ fork й exec), йн ъбртеэеоп ъбзтхцбфш опчще вйвмйпфелй й чщъщчбфш ртпзтбннщ, чоеыойе рп пф- опыеойа л Java-нбыйое. Об убнпн деме, ретеюйумеооще пзтбойюеойс ое счмсафус юбуфша урегйжйлбгйй Java-уйуфенщ й нпзхф чщрпмосфшус у впмшыек ймй неошыек бллхтбфопуфша. Фбл, ч Netscape Navigator 2.0 юфеойе й ъбрйуш мплбмшощи жбкмпч декуфчйфемшоп рпмопуфша ъбртеэеощ. Ч фп це чтенс, утедб тбътбвпфлй JDK 1.0 лпнрбойй Sun Microsystems дпрхулбеф ъбдбойе урйулб лбфбмпзпч, у лпфптщнй брмефщ нпзхф тб- впфбфш. Впмее фпюоп, чое тбътеыеоопзп урйулб лбфбмпзпч брмеф ое нпцеф: - ртпчетсфш ухэеуфчпчбойе жбкмпч; - юйфбфш/рйубфш/ретейнеопчщчбфш жбкмщ; - упъдбчбфш лбфбмпзй; - ртпчетсфш бфтйвхфщ жбкмб - фйр, чтенс рпумедоек нпдйжйлбгйй, тбънет. Юфпвщ ч JDK удембфш лбфбмпз дпуфхрощн дмс брмефб, умедхеф рп- неуфйфш ч жбкм ~/.hotjava/properties уфтплй чйдб acl.read=/home/welcome acl.write=/tmp Ретед обюбмпн тбвпфщ брмефпч пой ртпчетсафус четйжйлбфптпн вбк- ф-лпдпч. Четйжйлбфпт хвецдбефус, юфп ъбзтхцеоощк брмеф уппф- чефуфчхеф урегйжйлбгйсн, ъбдбоощн ртй лпнрймсгйй чщъщчбаэек ртпзтбннщ, юфп ое обтхыео жптнбф улпнрймйтпчбоопзп жбкмб, юфп оеф ретерпмоеойс ймй йуюетрбойс уфелб, оеф оелпттелфощи ртепв- тбъпчбойк фйрпч, оертбчймшощи декуфчйк у тезйуфтбнй й ф.р. Чуе ьфй ртпчетлй четйжйлбфпт пухэеуфчмсеф об пуопче бобмйъб рпфплпч дбоощи. Пупвеооп фэбфемшоп ртпчетсафус лпоуфтхлгйй finally пв- тбвпфюйлпч йулмаюйфемшощи уйфхбгйк. Умедхеф пфнефйфш, юфп четощк чщвпт вбмбоуб нецдх чпънпцопуфснй ъбзтхцбенщи брмефпч й веъпрбуопуфша лмйеофулпк уйуфенщ счмсефус пюеош фполйн чпртпупн. Тсд лпнрбойк, обртйнет, Argus System Group, ртедмбзбаф тебмйъпчбфш об лмйеофулпк уйуфене хуймеооще нетщ веъпрбуопуфй, юфпвщ хуреыоп пфтбцбфш хзтпъщ уп уфптпощ чтбцдевощи брмефпч веъ пзтбойюеойс учпвпдщ декуфчйк дмс "вмбзп- обдецощи" ртпзтбнн. Л упцбмеойа, ртедмбзбенще теыеойс ъбчйусф пф претбгйпоопк рмбфжптнщ, юфп ртпфйчптеюйф фтевпчбойа бвупмаф- опк ретеопуйнпуфй Java-ртпзтбнн. Нпцоп ртедрпмпцйфш, юфп йожпт- нбгйпообс веъпрбуопуфш еэе дпмзпе чтенс вхдеф пуфбчбфшус пдойн йъ убнщи умпцощн й урптощи чпртпупч, лбубаэйиус ртпелфб Java.

    4.2.4. Java WorkShop

Ч лпоге нбтфб 1996 зпдб лпнрбойс Sun Microsystems пв®счймб п чщрхуле четуйй 1.0 утедщ тбътбвпфлй Java WorkShop. Х ьфпк утедщ еуфш дчб ъбнеюбфемшощи учпкуфчб: поб рпмопуфша обрйубоб об същ- ле Java й йнееф йофетжеку, чщдетцбоощк ч Web-уфйме. Об тйу. y1 рплбъбо чйд ьлтбоб ртй тбвпфе ч Java WorkShop. Тйу. y1. Фбл чщзмсдйф ьлтбо ртй тбвпфе ч Java WorkShop. Умедхеф пфнефйфш, юфп зйретфелуфпчщк йофетжеку счмсефус, рпцб- мхк, обйвпмее еуфеуфчеоощн дмс йоуфтхнеофбмшощи утед. Впмее фп- зп, оесчоп по дбчоп йурпмшъхефус, обртйнет, ртй ретеипде чп члмаюбенщк жбкм ймй ч неуфп пыйвлй. Ртйогйрйбмшоп чбцоп, юфп феретш зйретфелуф уфбм счопк лпогерфхбмшопк пуопчпк. Java WorkShop упдетцйф рпмощк обвпт йоуфтхнеофпч, оепвипдйнщи дмс ртпелфйтпчбойс, тбътбвпфлй, феуфйтпчбойс, пфмбдлй й упртп- чпцдеойс ртпзтбнн. Ч езп упуфбч чипдсф: - Неоедцет ртпелфпч - йоуфтхнеоф птзбойъбгйй йожптнбгйй, упу- фбчмсаэек ртпелф, б фблце утедуфчп урегйжйлбгйй плтхцеойс дмс ртпелфб. - Рпуфтпйфемш - йоуфтхнеоф рпуфтпеойс теъхмшфйтхаэйи ртпзтбнн ртпелфб. Рпуфтпйфемш чедбеф ретелпнрймсгйек жбкмпч рпуме чоеуе- ойс йънеоеойк, чщдбюек зйретфелуфпчпзп урйулб уппвэеойк пв пыйвлби й ф.р. - Рхвмйлбфпт - йоуфтхнеоф рпддетцлй лпммелфйчопк тбвпфщ обд ртпелфбнй. Рпъчпмсеф птзбойъпчбфш итбоймйэе ртпелфпч, ртедпу- фбчмсфш Web-уфтбойгщ ртпелфпч дмс йурпмшъпчбойс дтхзйнй ртпз- тбннйуфбнй, пухэеуфчмсфш дпуфхр л ртпелфбн лпммез, ъбдбчбфш ртбчб дпуфхрб л ртпелфбн. - Ртпунпфтэйл брмефпч - утедуфчп лпофтпмйтхенпзп чщрпмоеойс Java-ртпзтбнн. - Ртпунпфтэйл йуипдощи фелуфпч - йоуфтхнеоф йъхюеойс ртпзтбнн у хюефпн йи пв®елфопк уфтхлфхтщ. - Тедблфпт йуипдощи фелуфпч. Тедблфпт йофезтйтпчбо у дтхзйнй лпнрпоеофбнй Java WorkShop, б фблце у рпрхмстощнй уйуфенбнй хр- тбчмеойс четуйснй. - Пфмбдюйл. Рпнйнп фтбдйгйпоощи чпънпцопуфек, пфмбдюйл Java WorkShop рпъчпмсеф лпофтпмйтпчбфш упуфпсойе оеулпмшлйи рпфплпч чщрпмоеойс, юфп оепвипдйнп дмс тбъчйфщи Java-ртпзтбнн. Об тйу y2 ртедуфбчмео пвтбъ ьлтбоб ртй тбвпфе ч пфмбдюйле. Тйу. y2. Фбл чщзмсдйф ьлтбо ртй тбвпфе у пфмбдюйлпн Java WorkShop. - Уртбчпюобс рпдуйуфенб. Java WorkShop нпцеф тбвпфбфш лбл об рмбфжптне SPARC/Solaris й Intel/Solaris, фбл й рпд Microsoft Windows 95/NT. Лблйи-фп пуп- вщи фтевпчбойк л бррбтбфхте Java WorkShop ое ртед®счмсеф. Дпу- фбфпюоп 45 Нв дйулпчпзп ртпуфтбоуфчб, 32 (дмс Solaris) ймй 16 (дмс Windows) Нв претбфйчопк рбнсфй. Ъбнеюбфемшоп, лбл ч ртбчймшоп уртпелфйтпчбоопк уйуфене тбъмйю- още лпнрпоеофщ ое ртпуфп йдебмшоп рпдипдсф дтхз л дтхзх оп й хуймйчбаф нпэш дтхз дтхзб.

    * 4.3. Учсъш Java у плтхцеойен: плпоощк йоуфтхнеофбтйк

    4.3.1. Пвэйе рпмпцеойс

Пдоп йъ чбцощи дпуфпйоуфч Java упуфпйф ч фпн, юфп ьфп ое фпмшлп същл, оп й уфбодбтфйъпчбообс пв®елфоп-птйеофйтпчбообс утедб чщ- рпмоеойс. Мавпрщфоп ртпумедйфш, лбл ч тбнлби Java теыбафус фтб- дйгйпооще ртпзтбннйуфулйе ртпвменщ. Нщ пуфбопчйнус об плпоопн зтбжйюеулпн йофетжекуе. Чнеуфе у тбъмйюощнй ртйсфощнй (змбчощн пвтбъпн дмс рпмшъпчбфе- мс) учпкуфчбнй, плпоощк йофетжеку ртйчопуйф й дпчпмшоп оертйсф- още (дмс тбътбвпфюйлб) ртпвменщ. Пдоб йъ ойи - ьфп ретеопуй- нпуфш ртймпцеойк нецдх тбъощнй рмбфжптнбнй. Ретеопуйнпуфш счмс- ефус ртпвменпк й веъ зтбжйюеулпзп йофетжекуб, пдоблп обмйюйе фблпчпзп дембеф ее нопзплтбфоп умпцоее. Демп ч фпн, юфп лбцдбс плпообс утедб - ьфп умпцощк нйт, уп учп- йнй ъблпобнй, обвптпн уфтпйфемшощи вмплпч й ртйенпч ртпзтбннй- тпчбойс. Motif ое рпипц об MS-Windows й плпооха уйуфенх Macintosh. Рп-тбъопнх ртедуфбчмсафус ртйнйфйчоще ьменеофщ йо- фетжекуб, рп-тбъопнх пвтбвбфщчбафус чоеыойе упвщфйс, рп-тбъопнх ртпйуцпдйф тйупчбойе об ьлтбое й ф.д. Чнеуфе у фен, рп учпек ухфй плпообс утедб - ртпуфп йдебмшопе рпме десфемшопуфй дмс пв®елфопзп ртпзтбннйтпчбойс. Дбце юемпче- лх, оейулхыеоопнх ч пв®елфоп-птйеофйтпчбоощи нефпдби ртпелфйтп- чбойс, суоп, юфп фблйе чеэй, лбл лопрлй, фелуфпчще рпмс, неоа, чрпмое ъбумхцйчбаф объчбойс пв®елфпч, лбл вщ ьфп умпчп ой рпой- нбмпуш. Йобюе зпчптс, чрпмое рпосфоп, юфп фблпе "лопрлб чппв- эе", "урйупл чппвэе" й ф.д. Чуе ьфп дбеф пуопчбойс обдесфшус, юфп у рпнпэша пв®елфоп-птйео- фйтпчбоопзп рпдипдб нпцоп рпмхюйфш рп-обуфпсэенх чщуплпхтпчое- чха й ретеопуйнха плпооха утедх, пуопчбооха об бвуфтблфощи фй- рби дбоощи. Дбообс пупвеоопуфш плпоощи утед ртпсчймбуш, ч юбуфопуфй, ч рп- счмеойй дпчпмшоп впмшыпзп лпмйюеуфчб тбъмйюощи лмбуупчщи вйвмй- пфел, "пветфщчбаэйи" птйзйобмшоще плпооще уйуфенщ. Ч лбюеуфче ртйнетпч нпцоп ртйчеуфй MFC, OWL, Zink й нопзйе дтхзйе. Чпф й утедй уфбодбтфощи Java-вйвмйпфел ртйухфуфчхеф AWT ймй Abstract Windowing Toolkit - бвуфтблфощк плпоощк йоуфтхнеофб- тйк. AWT счмсефус уйуфенпк лмбуупч дмс рпддетцлй ртпзтбннйтпчбойс ч плпоопк утеде. Езп "бвуфтблфопуфш" ртпсчмсефус ч фпн, юфп чуе, ъбчйусэее пф лполтефопк рмбфжптнщ, иптпып мплбмйъпчбоп й уртс- фбоп. Ч AWT тебмйъпчбощ фблйе ртпуфще й рпосфоще чеэй, лбл лопрлй, неоа, рпмс ччпдб; ртпуфще й рпосфоще утедуфчб птзбойъб- гйй йофетжекуб - лпофекоетщ, рбоемй, неоедцетщ зепнефтйй. Ьфп иптпып чйдоп об тйу. x1. Тйу. x1. Пуопчоще ьменеофщ йетбтийй лмбуупч AWT. Чуе ъбчйуйнпуфй пф рмбфжптнщ упдетцбфус ч чефчй, пвпъобюеоопк лбл Peer. Дбмее нщ тбуунпфтйн оелпфптще пупвеоопуфй AWT, ое ртефеодхс об рпмопфх йъмпцеойс. Обыб гемш - дбфш пвэее рртедуфбчмеойе п феи- опмпзйй ртпзтбннйтпчбойс зтбжйюеулпзп плпоопзп йофетжекуб ч утеде Java.

    4.3.2. Йъ юезп уфтпйфус зтбжйюеулйк йофетжеку (лпнрпоеофщ й

лпофекоетщ) Еумй рпунпфтефш об мавпе плпоопе ртймпцеойе, фп мезлп хчйдефш, юфп йофетжекуобс юбуфш упуфпйф йъ пв®елфпч, пв®едйоеоощи ч зтхррщ. Ч AWT пв®елфщ объщчбафус лпнрпоеофбнй (об убнпн деме пой чуе счмсафус обумедойлбнй лмбууб Component), б зтхррщ пв- ®елфпч тебмйъпчбощ у рпнпэша фбл объщчбенщи лпофекоетпч. Пфне- фйн, юфп мавпк лпофекоет - ьфп фпце лпнрпоеофб, рпьфпнх зтхррщ пв®елфпч нпзхф вщфш чмпцеощ дтхз ч дтхзб. Лбл пвщюоп, неоа уфп- сф пупвослпн. Йетбтийс лпнрпоеоф рплбъбоб об тйу. x2. (Бчфптпн ьфпзп й дчхи умедхаэйи тйухолпч счмсефус Charles L. Perkins, clp@home.HarvardSq.com.) Тйу. x2. Йетбтийс лпнрпоеоф AWT Об тйу. x3 рпсуосафус пвпъобюеойс, йурпмшъпчбооще об тйу. x2. Л юйумх ртйнйфйчощи лпнрпоеоф пфопусфус: - Button - Checkbox - Label - List - ScrollBar - TextArea - TextField Пуопчоще лпофекоетщ: - Dialog - FileDialog - Frame - Panel - Window Чъбйнпдекуфчйе йофетжекуощи лпнрпоеоф у рпмшъпчбфемен тебмйъп- чбоп у рпнпэша бррбтбфб упвщфйк, п лпфптпн вхдеф тбуулбъбоп ой- це.

    4.3.3. Лбл птзбойъпчбфш йофетжеку

Нщ хце пфнеюбмй, юфп йофетжеку упуфпйф йъ лпнрпоеоф, рпнеэеоощи ч лпофекоетщ. Пдоблп, пуфбефус пфлтщфщн чпртпу п фпн, лбл тбъ- неэбфш лпнрпоеофщ дтхз пфопуйфемшоп дтхзб чохфтй лпофекоетб. Обйчощк рпдипд (ртйосфщк, фен ое неоее, чп нопзйи уйуфенби) ъблмаюбефус ч ъбдбойй пфопуйфемшощи лпптдйобф лпнрпоеоф ч лпо- фекоете. Чбтйбгйй ьфпзп рпдипдб упуфпсф, лбл ртбчймп, ч чпънпц- опуфй ъбдбчбфш тбъмйюоще едйойгщ дмйощ (рйлуемщ, фщусюоще дак- нб, "дйбмпзпчще едйойгщ"). Оедпуфбфлпн рпдпвопк нпдемй тбънеэе- ойс лпнрпоеоф счмсефус фп, юфп ртй ретечпде ртймпцеойс об дтх- зха рмбфжптнх й дбце об дтхзпк лпнршафет, чоеыойк чйд ртймпце- ойс неосефус рмпип ртедулбъхенп. AWT уфбтбефус теыйфш дбооха ртпвменх умедхаэйн пвтбъпн. Еумй оемшъс йъвецбфш йънеоеойк чоеыоезп чйдб ртймпцеойк ртй ъбрхуле йи об тбъощи рмбфжптнби, обдп рпуфбтбфшус ипфс вщ удембфш ьфй йънеоеойс ртедулбъхенщнй й ч оелпфптпн унщуме еуфеуфчеоощнй. Дмс ртпчедеойс ьфпк ртпзтбннщ ч цйъош йурпмшъхафус пв®елфщ рпд пвэйн объчбойен Layout (тбурпмпцеойе). Layout хртбчмсеф фен, лбл лпнрпоеофщ вхдхф тбурпмбзбфшус чохфтй лпофекоетб, умедхс пртедемеоощн ртйогйрбн ймй тегерфбн. Чуезп ч AWT йнеефус 5 ртедпртедемеоощи тбурпмпцеойк: - BorderLayout - CardLayout - FlowLayout - GridLayout - GridBagLayout Йи неуфпрпмпцеойе ч йетбтийй лмбуупч рплбъбоп об тйу. x4. Тйу. x4. Тбурпмпцеойс й йетбтийс лмбуупч AWT. Тбурпмпцеойс счмсафус ртснщнй обумедойлбнй лмбууб Object й чуе тебмйъхаф ртпфплпм LayoutManager. Пв®елф фйрб LayoutManager упдетцйфус ч лмбууе Container. Ч лмбууе Container пртедемеощ 3 нефпдб add, ртедобъобюеооще дмс дпвбчмеойс опчщи лпнрпоеоф ч лпофекоет. Лхдб йнеооп вхдеф дп- вбчмеоб лпнрпоеофб у рпнпэша нефпдб add, ъбчйуйф пф лполтефопзп фйрб LayoutManager дбоопзп лпофекоетб. Дмс ъбдбойс LayoutManager еуфш нефпд setLayout. Тбуунпфтйн лтбфлп, лбл тбвпфбаф ртйчедеооще чщые уиенщ тбънеэе- ойс.

    4.3.3.1. BorderLayout

BorderLayout демйф ртснпхзпмшощк лпофбкоет об 5 ртснпхзпмшощи пвмбуфек: уечет, аз, ъбрбд, чпуфпл й геофт: [Image] Лпнрпоеофб дпвбчмсефус ч уппфчефуфчхаэха пвмбуфш у рпнпэша не- фпдб add (string, component); Ртйнет. setLayout (new BorderLayout()); buttonN = new Button ("one"); add ("North", buttonN); // ... дпвбчмеойе пуфбмшощи лопрпл

    4.3.3.2. CardLayout

[Image] Лпофекоет упуфпйф йъ оеулпмшлйи рмпулпуфек. Ч лбцдщк нпнеоф об- четих фпмшлп пдоб рмпулпуфш. Фблйн пвтбъпн, CardLayout ртеду- фбчмсеф упвпк лбл вщ вмплопф уп нопзйнй уфтбойгбнй. Cфтбойгщ рпнеюбафус у рпнпэша уфтпл. Нефпд дпвбчмеойс лпнрпоеоф л лпофекоетх: add (string, component); зде string - йнс "уфтбойгщ", б component - дпвбчмсенбс лпнрп- оеофб. Лбл ртбчймп, ьфй лпнрпоеофщ убнй вхдхф лпофекоетбнй (уфтбойгб вмплопфб чтсдмй вхдеф упуфпсфш йъ пдопк впмшыпк лопр- лй): setLayout (new CardLayout ()); add ("one", create (new FlowLayout ())); add ("two", create (new BorderLayout ())); add ("three", create (new GridLayout (2, 2))); add ("four", create (new BorderLayout (10, 10))); add ("five", create (new FlowLayout (FlowLayout.LEFT, 10, 10))); add ("six", create (new GridLayout (2, 2, 10, 10)));

    4.3.3.3. FlowLayout

FlowLayout тебмйъхеф нпдемш рпуфтпюопзп ъбрпмоеойс лпофекоетб. Рпуме ъбрпмоеойс пдопк уфтплй обюйобефус умедхаэбс. Ртй йънеое- ойй тбънетпч лпофекоетб ртпйуипдйф рететбуртедемеойе лпнрпоеоф рп уфтплбн. [Image] setLayout (new FlowLayout ()); add (new Button ("OK")); add (new Button ("Cancel")); add (new Button ("Resume")); Опчще лпнрпоеофщ дпвбчмсафус ч лпофекоет у рпнпэша нефпдб add (component). Тсдщ лпнрпоеоф нпзхф вщфш чщтбчоеощ чртбчп, чмечп, ймй геофтй- тпчбощ.

    4.3.3.4. GridLayout

Лпофекоет тбъвйчбефус об лмефлй. Дмс ьфпзп ъбдбефус юйумп уфтпл й уфпмвгпч. Ртй дпвбчмеойй опчщи лпнрпоеоф, лмефлй ъбрпмосафус рп уфтплбн. Чпънпцопуфш дембфш ртпрхулй пфухфуфчхеф. Опчще лпнрпоеофщ дпвбчмсафус ч лпофекоет у рпнпэша нефпдб add (component) [Image] Ртйнет. setLayout (new GridLayout (2, 3)); // 2 уфтплй, 3 уфпмвгб add (new Button ("1")); add (new Button ("2")); add (new Button ("3")); add (new Button ("I")); add (new Button ("II"));

    4.3.3.5. GridBagLayout

GridBagLayout рпъчпмсеф тбъдемйфш лпофекоет об оетбчоще ртснпх- зпмшоще пвмбуфй. Ьфп дпуфйзбефус у рпнпэша пв®едйоеойс упуедойи лмефпл ч лмефлй впмшыезп тбънетб. Лтпне фпзп, GridBagLayout рпъчпмсеф ъбрпмосфш теыефлх у ртпрхулбнй. Лполтефощк бмзптйфн ъбрпмоеойс пртедемсефус пв®елфпн лмбууб GridBagConstraints. Ч пв®елфби ьфпзп лмбууб йнеефус впмее 10 рбтбнефтпч, пртедемса- эйи тбънеэеойе умедхаэек лпнрпоеофщ. Ртпзтбннб, йурпмшъхаэбс GridBagConstraints, нпцеф чщзмсдефш умедхаэйн пвтбъпн: GridBagLayout gridbag = new GridBagLayout (); GridBagConstraints c = new GridBagConstraints (); setLayout (gridbag); // Хуфбобчмйчбен ибтблфетйуфйлй c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; . . . Button button1 = new Button ("1"); gridbag.setConstraints (button1, c); add (button1); . . . // ъдеуш нпцоп йънеойфш оелпфптще хуфбопчлй // пв®елфе лмбууб GridBagConstraints, // обртйнет // c.fill = GridBagConstraints.NONE; Button buttonX= new Button ("X"); gridbag.setConstraints (buttonX, c); add (buttonX);

    4.3.4. Упвщфйс

Ч AWT, лбл й ч дтхзйи плпоощи утедби, упвщфйс лбл ртпзтбнноще пв®елфщ уппфчефуфчхаф чоеыойн упвщфйсн. Фйрйюощк ртйнет - обцб- фйе об лопрлх, ч теъхмшфбфе юезп ч AWT ртпйуипдйф упвщфйе ACTION_EVENT. Фблйн пвтбъпн, йофетблфйчобс юбуфш ртпзтбнн ч AWT уппфчефуфчхеф нпдемй ртпзтбннщ, хртбчмсенпк упвщфйснй. Дтхзйнй умпчбнй, ртй- мпцеойс ймй брмефщ дпмцощ пфумецйчбфш упвщфйс й пвтбвбфщчбфш йи. Тбуунпфтйн рпдтпвоее, лбл ьфп ртпйуипдйф ч AWT. Лбцдщк плпоощк йофетжеку нпцоп тбуунбфтйчбфш лбл обвпт (чпънпцоп, чмпцеоощи дтхз ч дтхзб) лпнрпоеоф. Лпздб ртпйуипдйф упвщфйе, учсъбоопе у лблйн-фп ьменеофпн йофетжекуб (обртйнет, лопрлпк), фп чщъщчбеф- ус нефпд handleEvent. Рп хнпмюбойа ьфпф нефпд ойюезп ое дембеф, б ртпуфп ретедбеф упвщфйе обчети, фп еуфш фпнх пв®елфх, ч лпфп- тпн упдетцйфус йойгйбфпт упвщфйс (обртйнет, пв®енмаэенх плох). Фблйн пвтбъпн, еумй упвщфйе ойлфп ое ретеичбфщчбеф, поп дпуфй- збеф жтекнб (еумй ьфп ртймпцеойе) ймй брмефб. Ьфпф вбъпчбк неибойън пвтбвпфлй упвщфйк ртй обйчопн ртйнеоеойй обчсъщчбеф ртпзтбннйуфх пдох йъ дчхи нпдемек пвтбвпфлй упвщфйк. - Чп-ретчщи, нпцоп рпъчпмйфш чуен упвщфйсн чурмщчбфш дп убнпзп четиб й хце об хтпчое жтекнб рйубфш нефпд, лпфптщк ъбойнбефус тбъвптпн й пвтбвпфлпк упвщфйк. - Чп-чфптщи, нпцоп упъдбфш нопцеуфчп урегйбмйъйтпчбоощи лмбу- упч, ч лбцдпн йъ лпфптщи ретепртедемео нефпд handleEvent. Пвб ьфйи лтбкойи рпдипдб оевеъхртеюощ. Ретчщк урпупвуфчхеф об- рйубойа нпопмйфощи ртпзтбнн, чфптпк ртйчпдйф л пюеош впмшыпнх юйумх лмбуупч. Ч тебмшопк цйъой йурпмшъхефус лпнртпнйууобс йдепмпзйс - handleEvent ретепртедемсефус дмс упуфбчощи пв®елфпч, пв®едйоса- эйи оеулпмшлп ьменеофпч йофетжекуб й пфчеюбаэйи ъб суоп пртеде- меооха юбуфш тбвпфщ ртймпцеойс (обртйнет, тбъопзп тпдб дйбмп- зй). Лтпне фпзп, чпънпцощ й дтхзйе нпдемй пвтбвпфлй упвщфйк, обртбч- меооще об мхюыее пфдемеойо мпзйлй ртпзтбннщ пф ее йофетжекуб. Ч лбюеуфче пдопзп йъ ртйнетпч тебмйъбгйй бмшфетобфйчопк нпдемй нпцоп хлбъбфш рблеф "The Command Class for AWT objects", лпфп- тщк обрйубм Jan Newmarch, jan@ise.canberra.edu.au.

    4.3.5. Нефпдщ лмбууб Component, учсъбооще у пвтбвпфлпк упвщфйк

Ойце ретеюйумеощ нефпдщ лмбууб Component, учсъбооще у пвтбвпф- лпк упвщфйк. - postEvent(). Ьфпф нефпд, лбл ртбчймп, чщъщчбефус бчфпнбфйюеу- лй ртй обуфхрмеойй уппфчефуфчхаэезп упвщфйс. - Пвтбвбфщчбафус упвщфйс ртй рпнпэй нефпдб handleEvent(). Рп хнпмюбойа ьфпф нефпд, ч ъбчйуйнпуфй пф фйрб упвщфйс, чщъщчбеф пдйо йъ урегйбмйъйтпчбоощи пвтбвпфюйлпч упвщфйк, фблйи лбл - - action() - - keyUp() - - mouseDown() - - gotFocus() й ф.д. Нефпд handleEvent() нпцеф вщфш ретепртедемео. Ч ьфпн умхюбе, лбл ртбчймп, чус пвтбвпфлб уппфчефуфчхаэезп упвщфйс вхдеф ртп- йуипдйфш йнеооп ч ьфпн нефпде, пдоблп, еумй handleEvent() чпъч- тбэбеф false, фп чщъщчбефус handleEvent() дмс лпофекоетб, уп- детцбэезп дбооха лпнрпоеофх. Упвщфйс ч AWT ртедуфбчмсафус у рпнпэша пв®елфпч лмбууб Event, ч лпфптпн пртедемеощ умедхаэйе ретенеооще: public Object target; // йойгйбфпт упвщфйс public long when; // чтенс, лпздб упвщфйе ртпйъпымп public int id; // фйр упвщфйс(KEY_PRESS, MOUSE_DOWN...) public int x; // лпптдйобфщ public int y; // лхтуптб public int key; // лпд лмбчйый public int modifiers;// лпд нпдйжйлбфптб (control, shift ...) public Object arg; // чурпнпзбфемшоще дбооще public Event evt; // рпме дмс упедйоеойс упвщфйк ч урйулй Ртйчеден фйрйюощк ртйнет пвтбвпфлй упвщфйк, лпздб чуе пой пвтб- вбфщчбафус об четиоен хтпчое (ч дбоопн умхюбе об хтпчое брме- фб). class MyApplet extends Applet { . . . public boolean action( Event evt, Object arg) { . . . if ((ev.target instanceof Button) && arg.equals ("OK")) { // Чщрпмойфш уппфчефуфчхаэйе декуфчйс . . . return true; } else { // Дтхзйе умхюбй . . . } . . . return false; } . . . } Ч ьфпн ртйнете, еумй йойгйбфпт упвщфйс йнееф фйр Button у йне- оен "OK", фп чщрпмосафус уппфчефуфчхаэйе декуфчйс й чпъчтбэбеф- ус ъобюеойе true, фп еуфш упвщфйе дбмшые ое ретедбефус. Дтхзпк урпупв пвтбвпфбфш упвщфйе ъблмаюбефус ч упъдбойй урегйб- мйъйтпчбоопк лпнрпоеофщ. Ртйнет. class OKButton extends Button { . . . public boolean action (Event e, Object arg) { // Чщрпмойфш уппфчефуфчхаэйе декуфчйс . . . return true; } } Нщ чйдйн, обулпмшлп змхвплп ртпдхнбоб ч ртпелфе Java учсъш у претбгйпоощн плтхцеойен. Хдбмпуш дпуфйюш хдбюопзп упюефбойс вп- збфуфчб чпънпцопуфек у ретеопуйнпуфша.

    5. Joe - феиопмпзйс учсъщчбойс Java-ртпзтбнн

у пв®елфощнй вйъоеу-ртймпцеойснй Чщые, ч тбъдеме "Java, Joe й NEO", нщ рйубмй п фпн, юфп опчщк ртпдхлф лпнрбойй SunSoft - Joe - ртйъчбо пухэеуфчмсфш учсъш нецдх лмйеофулйнй лпнрпоеофбнй, обрйубоощнй об същле Java, й пв®елфощнй уетчетбнй ртймпцеойк, упъдбоощнй ч утеде NEO. Ртй ьфпн Joe ветеф об уевс чуе (ймй рпюфй чуе) феиойюеулйе ртпвме- нщ, учсъбооще у тбвпфпк ч тбуртедемеоопк пв®елфопк утеде, пвеу- реюйчбс ч фп це чтенс дмс Java-ртпзтбнн рпмопгеоопе чъбйнпдек- уфчйе у ртпйъчпмшощнй пв®елфощнй уетчйубнй. Ч ртедщдхэйи чщрхулби Jet Info вщмб прхвмйлпчбоб ыхфмйчбс "Ьчп- магйс ртпзтбннйуфб". Нщ дпвбчйн л оек еэе дчб тбъдемб. Ретчщк йъ ртйчпдйнщи ойце ртйнетпч обрйубо об същле Java й нпцей йу- рпмшъпчбфшус ч упуфбче пвщюощи, мплбмшоп тбвпфбаэйи брмефпч. 1 import java.awt.Font; 2 import java.awt.Color; 3 public class JAVAhello extends java.applet.Applet { 4 Font f = new Font ("TimesRoman", Font.BOLD, 36); 5 public void init () { 6 resize (150, 25); 7 } 8 public void paint (Graphics g) { 9 g.setFont (f); 10 g.setColor (Color.blue); 11 g.drawString ("Hello, World!", 50, 25); 12 } 13 } Феретш нпдйжйгйтхен ртпзтбннх дмс Joe, юфпвщ пвеуреюйфш чпънпц- опуфш тбвпфщ ч утеде лмйеоф/уетчет. 1 import sunw.services.*; 2 import java.awt.Graphics; 3 import java.awt.Font; 4 import java.awt.Color; 5 public class JOEhello extends sunw.services.JOEApplet { 6 sunw.corba.ObjectRef obj; 7 Hello.HelloWorldRef hiThere; 8 Font f = new Font("TimesRoman", Font.BOLD, 36); 9 public void init () { 10 super.init (); 11 resize (150, 25); 12 obj = find ("HelloWorldServer"); 13 hiThere = Hello.HelloWorldStub.narrow (obj); 14 } 15 public void paint (Graphics g) { 16 g.setFont (f); 17 g.setColor (Color.red); // Рпмхюйн уфтплх йъ хдбмеоопзп пв®елфб, тебмйъпчбоопзп об C++, // й чщчеден ее. 18 g.drawString (hiThere.sayHello (), 50, 25); 19 } 20 } Рпсуойн унщум опчщи уфтпл, рпсчйчыйиус чп чфптпн чбтйбофе ртпз- тбннщ. Ч уфтпле 1 йнрптфйтхефус прйубойе ртедпуфбчмсенщи пв®елфощи уетчйупч. Ч уфтпле 5 пв®счмсефус, юфп лмбуу Hello вхдеф обумедойлпн JOEApplet. Ч уфтпле 6 делмбтйтхефус пвпвэеообс (ое фйрйъйтпчбообс) уущмлб об NEO-пв®елф. Поб вхдеф йурпмшъпчбоб дмс упитбоеойс теъхмшфбфб рпйулб пв®елфб рп йнеой. Ч уфтпле 7 прйубоб фйрйъйтпчбообс уущмлб об NEO-пв®елф, лпфптбс вхдеф йурпмшъпчбфшус дмс нбойрхмйтпчбойс хдбмеоощн пв®елфпн (ч юбуфопуфй, дмс чщъпчб нефпдпч) утедуфчбнй същлб Java. Ч уфтпле 12 нщ рпмхюбен пф умхцвщ йнео NEO уущмлх об охцощк обн уетчетощк пв®елф. Ч уфтпле 13 чщрпмосефус претбгйс ртйчедеойс пвпвэеоопк уущмлй л фйрйъйтпчбоопнх чйдх. Облпоег, ч уфтпле 18 чщрпмосефус чщъпч нефпдб хдбмеоопзп пв®ел- фб, обрйубоопзп, чппвэе зпчптс, ое об същле Java (обртйнет, об C++). Чртпюен, чйд ьфпзп претбфптб ое ъбчйуйф ой пф хдбмеоопу- фй, ой пф същлб тебмйъбгйй пв®елфб. Ртпгеуу тбътбвпфлй ртпзтбнн ч утеде Joe дпчпмшоп ртпуф. По упу- фпйф йъ умедхаэйи ьфбрпч: - Фтбоумсгйс йофетжекуб л NEO-пв®елфбн, обрйубоопзп об същле IDL (Interface Definition Language), ч лмбуу об същл Java. Ьфпф ьфбр рпддетцбо чипдсэйн ч упуфбч Joe лпнрймсфптпн IDL - Java. Теъхмшфбф фтбоумсгйй упдетцйф ухттпзбфоще нефпдщ, лпфптще чп чъбйнпдекуфчйй у втплетпн пв®елфпч пвеуреюйчбаф чъбйнпдекуфчйе у хдбмеоощнй пв®елфбнй, ое пфмйюбаэееус пф мплбмшопзп умхюбс. Ч учпа пюетедш, втплет пв®елфпч, чипдсэйк ч упуфбч Joe, ртпътбю- ощн дмс лмйеофулпк уфптпощ пвтбъпн ъбзтхцбефус ч WWW-обчйзбфпт чнеуфе у Java-брмефбнй. - Обрйубойе лмйеофулпзп лпдб об същле Java у йурпмшъпчбойен узеоетйтпчбоопзп йофетжекуб й утедуфч Joe дмс чъбйнпдекуфчйс у хдбмеоощнй пв®елфбнй. Дбмшые Java-ртпзтбннб лпнрймйтхефус й чщрпмосефус пвщюощн пвтб- ъпн. Рпдюетлоен, юфп прйубообс пв®елфобс утедб пвеуреюйчбеф рпмоп- геоопе, дчхуфптпооее чъбйнпдекуфчйе нецдх лмйеофпн й уетчетпн. Ч юбуфопуфй, хдбмеооще уетчетоще пв®елфщ нпзхф чщъщчбфш нефпдщ ч пв®елфби-лмйеофби. Дмс пвеуреюеойс ьфпк чпънпцопуфй ч упуфбче Joe йнеефус фтбоумсфпт Java-лмбуупч ч IDL-йофетжекущ.

    6. Ъблмаюеойе

Йофтбоеф й Java - чпф дчб лмаюечщи умпчб, уйнчпмйъйтхаэйи упч- тенеоощк ьфбр тбъчйфйс йожптнбгйпоощи феиопмпзйк. Йофтбоеф рпъ- чпмсеф ретеунпфтефш рпдипд л рпмшъпчбойа йожптнбгйпоощнй теухт- убнй, юфп ч пзтпнопк уфереой хчемйюйчбеф ртпйъчпдйфемшопуфш фтхдб пфдемшощи тбвпфойлпч й лпнрбойк ч гемпн. Лтпне фпзп, феи- опмпзйс Йофтбоеф рпъчпмсеф дпвйфшус оечйдбоопк тбоее нбуыфбвй- тхенпуфй - пф мплбмшопк уефй дп Йофетоеф. Java уойнбеф пзтбойюеойс Web-уетчйуб, дембс рпумедойк йофетбл- фйчощн й пв®елфоп-птйеофйтпчбоощн. Java ччпдйф опчщк - бвупмаф- ощк - уфбодбтф об ретеопуйнпуфш ртпзтбннопзп пвеуреюеойс. Ртй- неюбфемшоп, юфп веуртегедеофоще рп учпек нпэй чпънпцопуфй ччп- дсфус ртй рпмопн упитбоеойй йожптнбгйпоопк веъпрбуопуфй. Ч упюефбойй у ртпдхлфбнй Sun Microsystems - Joe й NEO - Java пвеуреюйчбеф тбуртпуфтбоеойе лпогергйй Йофтбоеф об ртпйъчпмшоще уетчйущ, юфп пфлтщчбеф тебмшоха чпънпцопуфш упъдбойс лптрптб- фйчощи йожптнбгйпоощи уйуфен опчпзп рплпмеойс. ------------------ Бтфхт чбо Ипжж рпмхюйм пвтбъпчбойе ч Зпммбодйй, ъбфен тбвпфбм ч чедхэйи ечтпрекулйи лпнршафетощи лпнрбойси. Ч феюеойе фтеи меф, обюйобс у 1993 зпдб, тбвпфбм ч Sun Microsystems. Бтфхт чбо Ипжж ртйойнбм хюбуфйе ч тбътбвпфле същлб Java, ч ртпелфйтпчбойй ртпзтбннопзп йофетжекуб дмс ртймпцеойк об Java, йн обрйубо рет- чщк Java-лпнрймсфпт об същле Java. Ч 1996 зпдх по й езп лпммезй Уьнй Ыбкп й Лйн Рпмеъе пвтбъпчбмй оеъбчйуйнха лпнрбойа у обнетеойен тбътбвбфщчбфш ртпзтбннопе пвеуреюеойе об Java. Бтфхт чбо Ипжж ртйойнбеф блфйчопе хюбуфйе ч рпрхмстйъбгйй Java, по хюбуфчхеф ч обйвпмее йъчеуфощи лпожетеогйси й счмсефус бчфп- тпн тсдб уфбфек й зпфпчсэекус л йъдбойа чеуопк 1996 зпдб лойзй "Hooked on Java". Чпртпу. Internet, Web й Java ртедуфбчмсаф упвпк удчйз рбтбдйзнщ ч йожптнбгйпоощи феиопмпзйси. Пвэеуфчеообс теблгйс об ьфпф удчйз ое йнееф ртегеодеофб ч лпнршафетопк йодхуфтйй - чедхэйе лпнрбойй пв®счймй п рпддетцле Java, об ьфх фенх ч лпнршафетопк й демпчпк ртеууе вщмп прхвмйлпчбоп оечетпсфопе лпмйюеуфчп уфб- фек, уфпйнпуфш блгйк феи лпнрбойк, лпфптще учсъбощ у ьфйнй феи- опмпзйснй, теълп рпдулпюймб, феиойюеулйе тхлпчпдйфемй вболпч й лтхрощи лптрптбгйк рпддетцйчбаф ртйнеоеойе Java ч рймпфощи ртп- елфби. Ч фп це чтенс чуе ухэеуфчхаэйе уезпдос ртймпцеойс ьфйи феиопмп- зйк пзтбойюеощ ч пуопчопн оевпмшыйнй ъбдбюбнй, фблйнй лбл нбт- лефйоз ч Internet, тбуртпуфтбоеойе йожптнбгйй, Java-йзтщ й ф.д. Й дбце ртедрпмбзбенще ч вхдхэен ртймпцеойс ое пфмйюбафус тбдй- лбмшопк опчйъопк. Юфп це пупвеоопзп ч ьфйи феиопмпзйси, юен нпцоп об убнпн деме пв®суойфш фе теблгйа й йофетеу, лпфптще нщ нпцен обвмадбфш уе- зпдос? Пфчеф. Упчтеыеооп пюечйдоп, юфп Java й Internet ртедуфбчмсаф упвпк гемщк нйт опчщи чпънпцопуфек дмс лпнршафетопк йодхуфтйй, пдоблп ухэеуфчхаэйе уезпдос ртймпцеойс рплб пуфбаус ртпуфщнй, рпфпнх юфп еэе оеф уппфчефуфчхаэезп прщфб ч теыеойй оелпфптщи чохфтеоойи ртпвмен. Фен ое неоее, тщопл пюеош вщуфтп удчйзбефус ч обртбчмеойй ьфпзп опчпзп нйтб, ецедоечоп пв®счмсафус опчще ртпдхлфщ й феиопмпзйй. Йнеооп ьфп й учйдефемшуфчхеф п фпн, юфп Java й Internet ртедуфбчмсаф упвпк пзтпнощк удчйз рбтбдйзнщ, упъдбаэйк опчще чпънпцопуфй. Ьфп упвщфйе утбчойнп рп нбуыфбвх у рпсчмеойе ретпуобмшощи лпнршафетпч, оп уезпдос поп ъбичбфймп чуеи зптбъдп вщуфтее. Ч юен це урегйжйлб Java й Internet? С дхнба, юфп пой ч упуфпс- ойй пвеуреюйфш лпнршафетопк йодхуфтйй й рпмшъпчбфемсн йнеооп фп, юезп фе чуездб пцйдбмй: ртпуфпк дпуфхр л оепзтбойюеоощн пв- ®енбн йожптнбгйй й ртймпцеойк. Чпртпу. Лбл мавбс феиопмпзйс, Java йнееф упаъойлпч й пррпоео- фпч. Лфп, рп Чбыенх ноеойа, ртедуфбчмсеф обйвпмшыха прбуопуфш дмс вхдхэезп Java (ртпдхлф, лпнрбойс ймй лфп-фп мйюоп)? Лблпчщ нпзхф вщфш пфчефоще лполхтйтхаэйе обюйобойс пррпоефпч Java? Пфчеф. Обйвпмшыбс прбуопуфш упуфпйф ч фпн, юфп ч вмйцбкыйе зпдщ нщ дпмцощ ртйкфй л опчпк утеде, гемйлпн обрйубоопк об Java, оп у вйвмйпфелбнй пф тбъощи рпуфбчэйлпч. Ьфп ъобюйф, юфп нщ рпмх- юйн мйыш опчщк, хмхюыеоощк същл тебмйъбгйй й ойюезп впмее. Ъб- дбюб це упуфпйф ч фпн, юфпвщ упъдбфш пвэертйосфха утедх, ое ъб- чйусэха пф рмбфжптнщ. Ч фп це чтенс, вщмп вщ змхрп у нпек уфптпощ, вхдхюй уфтпоойлпн Java, демйфшус у нпйнй пррпоеофбнй йдеснй п фпн, лбл уфтпйфш бфблх об Java, ое фбл мй? Чпртпу. Лблйн вхдеф чмйсойе удчйзб лпнршафетопк рбтбдйзнщ, ртедуфбчмеоопк Internet, Web й Java, об пуопчощи декуфчхаэйи мйг фелхэек ртбдйзнщ (IBM, Sun, HP, DEC, Compaq, Oracle й дтх- зйи)? Пфчеф. Ч упчтенеоощи хумпчйси рплхрлб лпнршафетб ртйчпдйф л рп- цйъоеоопк оепвипдйнпуфй дмс чмбдемшгб рплхрбфш ртпзтбннопе пвеуреюеойе х пдопзп рпуфбчэйлб. Ьфп ое нпцеф дмйфшус веулпоею- оп. Еумй чуе лпнршафетщ унпзхф чщрпмосфш мавпе ртпзтбнопе пвеу- реюеойе об Java, фп ъбнпл, ч чйде ртйчсъбоопуфй л пртедемеоопк рмбфжптне, вхдеф уосф й фблйе нпопрпмйуфщ, лбл Microsoft, вхдхф чщохцдеощ утбцбфшус об тбчощи у впмее немлйнй жйтнбнй. Фблйн пвтбъпн вхдеф чщтпчоеоп йзтпчпе рпме й чпъойлоеф утедб у впмш- ыйнй чпънпцопуфснй дмс лполхтеогйй, б теъхмшфбфпн, ч лпоеюопн йфпзе, вхдхф ртпдхлфщ мхюыезп лбюеуфчб, ч впмшыек уфереой птй- еофйтпчбооще об рпфтевйфемс. Чпртпу. Тпууйс, обтсдх у Лйфбен й Йодйек, - пдоб йъ уфтбо, ип- тпып йъчеуфощи чщуплйн ртпжеууйобмшощн хтпчоен ртпзтбннйуфпч. Л упцбмбеойа, тпууйкулйе ртпзтбннйуфщ прпъдбмй л ретчпк чпмое "збтбцощи лпнршафетпч" ч обюбме 80-и зпдпч. Ъбфен обуфхрймб рп- мпуб дпнйойтпчбойс об тщоле впмшыйи лпнрбойк, рпрбуфш об тщопл й дпвйфшус лблйи-фп хуреипч уфбмп ртблфйюеулй оечпънпцоп. Ыйтп- лп тбуртпуфтбоеоп ноеойе п фпн, юфп у ртйипдпн Java чпъойлоеф опчбс чпмоб "збтбцопзп ртпзтбннйтпчбойс", й ч оек унпзхф ртйсфш хюбуфйе й тпууйкулйе ртпзтбннйуфщ. Лблпе, рп чбыенх ноеойа, обртбчмеойе ч ртпзтбннощи ртпдхлфби й ртймпцеойси об Java обй- впмее ретурелфйчоп дмс "збтбцощи ртпзтбннйуфпч"? Пфчеф. Йнеооп уезпдос уртпу об Java-ртпзтбннйуфпч юхдпчйэео. Змпвбмшопуфш Internet дбеф мавпнх ртпзтбннйуфх чпънпцопуфш рте- феодпчбфш об хюбуфйе ч мавпн ртпелфе, ч мавпк юбуфй учефб об тбчощи. Юфп обн тебмшоп охцоп, фбл ьфп чуенйтоще птзбойъбгйй тбътбвпфюйлпч, лпфптще рпнпзбмй вщ пфдемшощн ртпзтбннйуфбн хюбуфпчбфш ч тбъоппвтбъощи ртпелфби. Чпртпу. Лблйе опчще феиопмпзйй ртйчоеуеф у упвпк Java? Пфчеф. Рпсчмеойе опчпзп същлб дбеф чпънпцопуфш, ртйпвтефс опчщк прщф, уртпелфйтпчбфш ъбопчп ухэеуфчхаэйе ртйлмбдоще ртпзтбнноще йофетжекущ, обртйнет, дмс 3D-ртпзтбннйтпчбойс. Йурпмшъхс Java, нпцоп рпуфтпйфш пв®елфоп-птйеофйтпчбооще й нопзпрпфплпчще 3D- вйвмйпфелй, лпфптще об дтхзйи същби тебмйъпчбфш умпцоп. Ухэеуф- чхаэйе вйвмйпфелй упуфпсф йъ упфео чщъпчпч жхолгйк й рпьфпнх йнй умпцоп хртбчмсфш. Еумй ретерйубфш йи об Java, фп 3D-ртпз- тбннйтпчбойе уфбоеф обнопзп дпуфхроее дмс тсдпчщи ртпзтбннйу- фпч. Чпртпу. Уезпдос пв Internet, Web й Java рйыхф нопзйе, й лпнрша- фетоще ртпжеууйпобмщ, й цхтобмйуфщ. Чщ - пдйо йъ пуопчощи хюбуфойлпч ртпелфб Java й пвмбдбефе хойлбмшопк чпънпцопуфша хчйдефш чпъойлбаэйе ртй ьфпн ртпвменщ. Еуфш мй оеюфп ухэеуфчео- опе, юфп дтхзйе мадй хрхулбаф ймй оедпрпойнбаф ч ьфйи феиопмп- зйси, ч йи чмйсойй об лпнршафетоха йодхуфтйа й об обых цйъош чппвэе? Пфчеф. Рпцбмк змбчопе, юезп ое ичбфбеф, фбл ьфп чпуфптцеоопуфй рп пфопыеойа л Java. Рпсчмеойе опчпзп хойчетубмшоп същлб дмс Internet - зйзбофулйк ртптщч чретед. Пфлтщчбаэйеус чпънпцопуфй нпцоп утбчойфш фпмшлп у рпсчмеойен ретупобмшощи лпнршафетпч. Йнеооп рпьфпнх нщ теыймй хкфй йъ Sun дмс фпзп, юфпвщ упъдбфш упвуфчеооха жйтнх й рйубфш ртпзтбннопк пвеуреюеойс об Java. Чпртпу. Netscape й Microsoft вптафус ъб мйдетуфчп об тщоле Web- обчйзбфптпч. Netscape чмбдееф 70% ьфпзп тщолб, б Microsoft - змбчощк йзтпл об тщоле ртпзтбннопзп пвеуреюеойс дмс ретупобмш- ощи лпнршафетпч. Упчетыеооп пюечйдоп, юфп ч ьфпк вйфче дмс фтефшек лпнрбойй неуфб ое пуфбефус. Ч фп це чтенс Sun тбътбвб- фщчбеф HotJava - учпк упвуфчеоощк Web-обчйзбфпт. Нпцеф вщфш, ухэеуфчхеф юфп-фп фблпе, юезп ой Netscape, ой Microsoft ое чй- дсф уезпдос ймй ч вхдхэен, юфп пвеуреюйф Sun рпведх? Пфчеф. Лбл вщчыйк тхлпчпдйфемш ртпелфб HotJava, с юхчуфчха, юфп х HotJava еуфш иптпыйе ыбоущ уфбфш ъобюйфемшопк уймпк ч Internet. Й Netscape Navigator, й Internet Explorer уфбопчсфус пюеош умпцощнй, пой впмее ое уппфчеуфчхаф ртпуфщн ъбртпубн утедойи рпмшъпчбфемек. У обчйзбфптпн HotJava Sun чпъчтбэбеф уй- фхбгйа об ъенма, ртедмбзбс ртпдхлф, рпмопуфша обрйубоощк об Java. Йнеооп вмбзпдбтс ртпуфпфе й чпънпцопуфй дмс тбуыйтеойс, пуопчбоощи об йурпмшъпчбойй Java, по ртйпвтефеф ъобюйфемшоще ртейнхэеуфчб рп утбчоеойа у лполхтеофбнй. Чпртпу. Юфп уфбоеф умедхаэек ДЕУФЧЙФЕМШОП ЧЕМЙЛПК ЧЕЭША ч йо- жптнбгйпоощи феиопмпзйси рпуме Internet, Web й Java? Пфчеф. Рплб Internet - ьфп хуфтпкуфчп дмс тбуртпуфтбоеойс йо- жптнбгйй. Умедхаэбс течпмагйс ртпйъпкдеф фпздб, лпздб ч Internet чпкдхф феиопмпзйй дмс лпннхолбгйк ч тебмшопн чтенеой, фблйе лбл фемежпойс, чйдеп й чйтфхбмшобс тебмшопуфш. Тбъчйфйе йдеф пюеош вщуфтп й цдбфш ртйдефус ое фбл хц дпмзп! Чпртпу. Чбы мавйнщк уптф лпже? Пфчеф. Хц лпоеюоп ое OLE!

Last-modified: Tue, 21 May 1996 18:44:14 GMT