« Ýðóäèöèÿ » Ðîññèéñêàÿ ýëåêòðîííàÿ áèáëèîòåêà

�рхитектура и интерфей�ы Java

Java: àðõèòåêòóðà è èíòåðôåéñû

Ìíîãèì íàâåðíÿêà óæå èçâåñòíî, ÷òî ÿçûê Java áûë ðàçðàáîòàí ôèðìîé Sun, êàê ïëàòôîðìåííî-íåçàâèñèìûé, ïåðåíîñèìûé, îáúåêòíî-îðèåíòèðîâàííûé ÿçûê äëÿ Internet è Intranet. ß íå âèæó îñîáîãî ñìûñëà ïåðå÷èñëÿòü ïðåèìóùåñòâà ÿçûêà, åãî îòëè÷èÿ îò C++ - ýòî óæå îïèñàíî â äåñÿòêàõ êíèã è ñîòíÿõ ïóáëèêàöèé, êàê çà ðóáåæîì, òàê è â íàøåé ñòðàíå. Çäåñü ìû îñòàíîâèìñÿ íà òîì, ÷òî ïðåäñòàâëÿåò ñîáîé ïëàòôîðìà Java ñåãîäíÿ, èç êàêèõ êîìïîíåíòîâ îíà ñîñòîèò è êàêèå ñðåäñòâà, äîñòóïíû äëÿ ðàçðàáîò÷èêîâ. Òàêèì îáðàçîì, ïî çàâåðøåíèè äàííîãî öèêëà âû äîëæíû áóäåòå ïîëó÷èòü äîñòàòî÷íî ÷åòêîå ïðåäñòàâëåíèå î òîì, ÷òî ïðåäëàãàåò ôèðìà Sun, êàêèìè ñðåäñòâàìè ðàçðàáîòêè ìîæíî ïîëüçîâàòüñÿ, êàêèå ñóùåñòâóþò êîìïîíåíòû è ñðåäñòâà äëÿ èõ ñîçäàíèÿ è êàê ñ ïîìîùüþ Java ìîæíî ñîçäàâàòü êîðïîðàòèâíûå ðåøåíèÿ.

Òåõíîëîãèÿ Java

Òåõíîëîãèÿ Java îáåñïå÷èâàåò ðàçðàáîò÷èêîâ îñíîâîé äëÿ ñîçäàíèÿ ðåøåíèé, ïðè ðàçðàáîòêå êîòîðûõ íå íóæíî çàäóìûâàòüñÿ îá îïåðàöèîííîé ñèñòåìå è àïïàðàòíîé ïëàòôîðìå, íà êîòîðûõ ýòè ðåøåíèÿ áóäóò ôóíêöèîíèðîâàòü. ×àñòî èñïîëüçóåìîå âûðàæåíèå "Íàïèñàíî îäíàæäû – ðàáîòàåò âåçäå" ëó÷øèì îáðàçîì õàðàêòåðèçóåò îñíîâíîå íàçíà÷åíèå ýòîé òåõíîëîãèè. Íåçàâèñèìîñòü îò ïëàòôîðìû äîñòèãàåòñÿ çà ñ÷åò òîãî, ÷òî óíèêàëüíûå õàðàêòåðèñòèêè êàæäîé èç ïîääåðæèâàåìûõ Java 2 ïëàòôîðì, ðåàëèçîâàíû â âèäå îáîëî÷êè, íàçûâàåìîé Java Runtime Environment (JRE). Âî âðåìÿ ñîçäàíèÿ ïðèëîæåíèÿ ðàçðàáîò÷èê ïèøåò êîä íà ÿçûêå Java òàê, êàê åñëè áû â ìèðå áûëà áû âñåãî îäíà ïðîãðàììíî/àïïàðàòíàÿ ïëàòôîðìà. Êîìïèëÿòîð ÿçûêà Java ïðåîáðàçóåò êîä â ïîñëåäîâàòåëüíîñòü áàéò-êîäîâ, êîòîðàÿ áóäåò âûïîëíÿòüñÿ íà îäíîé èç ïëàòôîðì â ðàìêàõ JRE.

Java Runtime Environment ñîäåðæèò ñïåöèàëüíûå ñðåäñòâà ïðîâåðêè êîäà, îáåñïå÷èâàþùèå íàäåæíîñòü è çàùèùåííîñòü ïðîãðàìì, çàãðóç÷èê êëàññîâ, êîòîðûé äèíàìè÷åñêè çàãðóæàåò êëàññû â ïðîöåññå âûïîëíåíèÿ è âèðòóàëüíóþ ìàøèíó Java (Java VM), êîòîðàÿ âûïîëíÿåò ïîñëåäîâàòåëüíîñòü áàéò-êîäîâ, âçàèìîäåéñòâóþ ñ êîíêðåòíîé îïåðàöèîííîé ñèñòåìîé. Òàêîé ïîäõîäò îñâîáîæäàåò ðàçðàáîò÷èêà îò íåîáõîäèìîñòè îáðàùàòü âíèìàíèÿ íà ñïåöèôèêó êàêîé-òî êîíêðåòíîé îïåðàöèîííîé ñèñòåìû è ïîçâîëÿåò âíåäðÿòü Java-ïðèëîæåíèÿ íà áîëåå ÷åì îäíîé ïëàòôîðìå. Êîìïîíåíòû JavaRuntime Environment ïîêàçàíû íà ñëåäóþùåé äèàãðàììå.


Òî, ÷òî ÿçûê Java çà êîðîòêîå âðåìÿ ñòàë îäíèì èç ñàìûõ ïîïóëÿðíûõ êîììåð÷åñêèõ îáúåêòíî-îðèåíòèðîâàííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ, ïîìîãàåò ðàñïðîñòðàíåíèþ òåõíîëîãèè Java è ïîäòâåðæäàåòñÿ òåì, ÷òî â íàñòîÿùåå âðåìÿ ýòîò ÿçûê èñïîëüçóåò îêîëî 1 ìëí. ðàçðàáîò÷èêîâ (80% èç íèõ ñîçäàåò êðîññ-ïëàòôîðìåííûå ïðèëîæåíèÿ), ïðîäóêòû äëÿ Java âûïóñêàþò ñîòíè ôèðì, à ÷èñëî êîïèé JDK, çàãðóæåííûõ ñ ñàéòà ôèðìû Sun, ïðåâûñèëî 2.5 ìëí.

Ïëàòôîðìà Java 2

Ïëàòôîðìà Java 2 (Java Development Kit 1.2), îáúÿâëåííàÿ ôèðìîé Sun â äåêàáðå 1998 ãîäà, ïðåäñòàâëÿåò ñîáîé ôèçè÷åñêóþ ðåàëèçàöèþ òåõíîëîãèè Java. Ñîáñòâåííî ãîâîðÿ, îíà çàêëþ÷åíà â íåáîëüøîì ïî îáúåìó ôàéëå è ñîñòîèò èç ñëåäóþùèõ îñíîâíûõ êîìïîíåíòîâ:

Ñðåäñòâà ðàçðàáîòêè íà Java – ðåäàêòîð, êîìïèëÿòîð, îòëàä÷èê è ñðåäñòâî äëÿ äîêóìåíòàöèè Java API

Áîãàòûé íàáîð Java-áèáëèîòåê è áàçîâûõ êëàññîâ (foundation classes), êîòîðûå èñïîëüçóþòñÿ äëÿ ñîçäàíèÿ ãðàôè÷åñêèõ èíòåðôåéñîâ, äîñòóïà ê áàçàì äàííûõ, ðåàëèçàöèè ñåòåâûõ ôóíêöèé, ðàçðàáîòêè ïðèëîæåíèé, ðàáîòàþùèõ ñ íåñêîëüêèìè ÿçûêàìè è ò.ï.

Java 2 Runtime Environment – ñðåäñòâî äëÿ äèíàìè÷åñêîé çàãðóçêè Java-êëàññîâ, èõ ïðîâåðêè è âûïîëíåíèÿ Java-áàéò-êîäà.

Àðõèòåêòóðà ïëàòôîðìû Java 2 ïîêàçàíà íà ñëåäóþùåé äèàãðàììå.


Èçíà÷àëüíî, Sun âûïóñòèëà Java 2 Runtime Environment äëÿ ñëåäóþùèõ ïëàòôîðì: Solaris, Windows NT Server 4.0 è Windows 95/98.  áëèæàéøèå ìåñÿöû ïîñòàâùèêè äðóãèõ ïëàòôîðì âûïóñòÿò ñîîòâåòñòâóþùèå JRE. Òàêèì îáðàçîì, Java 2 áóäåò ðåàëèçîâàíà íà ñëåäóþùèõ ïëàòôîðìàõ:

AIX

Digital UNIX

HP-UX

IRIX

Linux

Mac OS

NetWare

OpenServer

OpenVMS

OS/2

OS/390

RISC-OS

Solaris

Windows 95

Windows 98

Windows NT

Windows NT-Alpha (DEC)

UnixWare

Java 2 â äåòàëÿõ

Äàâàéòå ðàññìîòðèì ñîñòàâ Java 2 áîëåå ïîäðîáíî. ß âûäåëèë òðè îñíîâíûõ êîìïîíåíòà - ñðåäñòâà ðàçðàáîòêè íà Java, íàáîð Java-áèáëèîòåê è áàçîâûõ êëàññîâ è Java 2 Runtime Environment.

Ñðåäñòâà ðàçðàáîòêè íà Java

 ñîñòàâ JDK 1.2 âõîäèò áîëüøîå ÷èñëî óòèëèò, êîòîðûå ìîæíî ïîäðàçäåëèòü íà íåñêîëüêî êàòåãîðèé:

Áàçîâûå óòèëèòû

RMI-óòèëèòû

Ñðåäñòâà äëÿ ëîêàëèçàöèè ïðèëîæåíèé

Ñðåäñòâà äëÿ çàùèòû ïðèëîæåíèé

IDL-óòèëèòû

Áàçîâûå óòèëèòû

Óòèëèòû, îòíîñÿùèåñÿ ê ýòîé êàòåãîðèè, ñëóæàò îñíîâîé Java Development Kit. Îíè èñïîëüçóþòñÿ äëÿ êîìïèëÿöèè è îòëàäêè ñîçäàâàåìûõ Java-ïðèëîæåíèé. Ê áàçîâûì óòèëèòàì îòíîñÿòñÿ:

javac

Êîìïèëÿòîð ÿçûêà Java

java

Çàãðóç÷èê Java-ïðèëîæåíèé. Èñïîëüçóåòñÿ è â ñòàäèè ðàçðàáîòêè, è â ñòàäèè âíåäðåíèÿ ïðèëîæåíèé

javadoc

Ãåíåðàòîð äîêóìåíòàöèè äëÿ API

appletviewer

Óòèëèòà äëÿ çàïóñêà è îòëàäêè ïðèëîæåíèé áåç èñïîëüçîâàíèÿ web-áðàóçåðà

jar

Óòèëèòà äëÿ óïðàâëåíèÿ Java Archive (JAR)-ôàéëàìè

jdb

Îòëàä÷èê Java-ïðèëîæåíèé.

javah

Ãåíåðàòîð çàãîëîâî÷íûõ ôàéëîâ è çàãîëóøåê äëÿ ÿçûêà C 

javap

Äèçàññåìáëåð Java-êëàññîâ

extcheck

Óòèëèòà äëÿ îáíàðóæåíèÿ êîíôëèêîâ ìåæäó JAR-ôàéëàìè

RMI-óòèëèòû

Óòèëèòû, îòíîñÿùèåñÿ ê ýòîé êàòåãîðèè, èñïîëüçóþòñÿ äëÿ ñîçäàíèÿ ïðèëîæåíèé, âçàèìîäåéñòâóþùèõ ìåæäó ñîáîé ïî Internet èëè äðóãèì òèïàì ñåòåé. Ê òàêèì óòèëèòàì îòíîñÿòñÿ:

rmic

Óòèëèòà äëÿ ãåíåðàöèè çàãëóøåê è ñêåëåòîâ äëÿ óäàëåííûõ îáúåêòîâ

rmiregistry

Óòèëèòà äëÿ ðåãèñòðàöèè óäàëåííûõ îáúåêòîâ

rmid

Ñðåäñòâî ñèñòåìíîé àêòèâàöèè RMI

serialver

Âîçâðàùàåò serialVersionUID.äëÿ äàííîãî êëàññà

Ñðåäñòâà äëÿ ëîêàëèçàöèè ïðèëîæåíèé

Ê ñðåäñòâàì äëÿ ëîêàëèçàöèè ïðèëîæåíèé îòíîñèòñÿ óòèëèòà native2ascii, âûïîëíÿþùàÿ ïðåîáðàçîâàíèå òåêñòà â Unicode Latin-1.

Ñðåäñòâà äëÿ çàùèòû ïðèëîæåíèé

Óòèëèòû, îòíîñÿùèåñÿ ê ýòîé êàòåãîðèè, èñïîëüçóþòñÿ äëÿ çàäàíèÿ óðîâíåé çàùèòû è ñîçäàíèÿ ïðèëîæåíèé, êîòîðûé ðàáîòàþò íà óäàëåííûõ óçëàõ. Ê òàêèì óòèëèòàì îòíîñÿòñÿ:

keytool

Ñðåäñòâî äëÿ óïðàâëåíèÿ ñåðòèôèêàòàìè

jarsigner

Óòèëèòà äëÿ ãåíåðàöèè è ïðîâåðêè öèôðîâûõ ïîäïèñåé â JAR-ôàéëàõ

policytool

Ãðàôè÷åñêîå ñðåäñòâî äëÿ óïðàâëåíèÿ ôàéëàìè äîñòóïà

IDL-óòèëèòû

Óòèëèòû, îòíîñÿùèåñÿ ê ýòîé êàòåãîðèè, èñïîëüçóþòñÿ ïðè ñîçäàíèè ïðèëîæåíèé, èñïîëüçóþùèõ CORBA äëÿ äîñòóïà ê áàçàì äàííûõ. Ê òàêèì óòèëèòàì îòíîñÿòñÿ:

tnameserv

Îáåñïå÷èâàåò äîñòóï ê ñåðâèñàì èìåí (naming service)

Idltojava

Ñîçäàåò java-ôàéëû äëÿ èíòåðôåéñîâ OMG IDL è ïîçâîëÿåò ïðèëîæåíèÿì, íàïèñàííûì íà ÿçûêå Java, èñïîëüçîâàòü ôóíêöèîíàëüíîñòü CORBA 

Íàáîð Java-áèáëèîòåê è áàçîâûõ êëàññîâ

ßäðîì Java 2 ÿâëÿåòñÿ áèáëèîòåêà êëàññîâ Java Foundation Classes (JFC) âåðñèè 1.1, ïðåäíàçíà÷åííàÿ äëÿ ñîçäàíèÿ ãðàôè÷åñêèõ èíòåðôåéñîâ Java-ïðèëîæåíèé.  åå ñîñòàâ âõîäÿò ñîáñòâåííî áèáëèîòåêà JFC âåðñèè 1.1 (êîòîðàÿ áûëà äîñòóïíà äëÿ JDK 1.1 ñ ôåâðàëÿ ïðîøëîãî ãîäà) è ñëåäóþùèå èíòåðôåéñû:

Abstract Windowing Toolkit (AWT)

Swing

Java 2D

Drag and Drop

Accessibility

Àðõèòåêòóðà Java Foundation Classes ïîêàçàíà íà ñëåäóþùåé äèàãðàììå.


Abstract Windowing Toolkit ïîçâîëÿåò ñîçäàâàòü ïðîãðàììû ñ ãðàôè÷åñêèìè èíòåðôåéñàìè, íåçàâèñÿùèìè îò êîíêðåòíîé ïëàòôîðìû. Áîëåå òîãî, ïðîãðàììíûé èíòåðôåéñ AWT íàìíîãî ïðîùå è ïîíÿòíåå ïðîãðàììíûõ èíòåðôåéñîâ Windows, Motif èëè OS/2.  JDK 1.2 áûëî äîáàâëåíî ìíîãî íîâûõ êëàññîâ è èíòåðôåéñîâ, âêëþ÷àÿ ïîääåðæêó ôóíêöèé ðèñîâàíèÿ, âûâîäà íà ïðèíòåð, îáðàáîòêè èçîáðàæåíèé è ïîääåðæêè Drag and Drop è Java 2D.

 Ìíîãèå èç ýòèõ íîâûõ êîìïîíåíòîâ ìîæíî íàéòè â ãàëåðåå ïî àäðåñó: http://java.sun.com/products/jfc/swingdoc-current/comp_gal.html. Òàêæå, ìîæíî ïîñìîòðåòü ïðîãðàììó SwingSet, ÷òîáû óâèäåòü êîìïîíåíòû Swing â äåéñòâèè.

Êîìïîíåíòû Swing ÿâëÿþòñÿ 100% Java-êîìïîíåíòàìè. Ýòî îçíà÷àåò, ÷òî îíè íå çàâèñÿò îò êîíêðåòíûõ ðåàëèçàöèé èíòåðôåéñíûõ ýëåìåíòîâ íà òîé èëè èíîé ïëàòôîðìå. Ýòî òàêæå îçíà÷àåò, ÷òî ýòè êîìïîíåíòû äîñòóïíû íà âñåõ ïëàòôîðìàõ, ãäå åñòü ïîääåðæêà Java 2. Êîìïîíåíòû Swing ðåàëèçîâàíû êàê ðàñøèðåíèå AWT, íî íå èñïîëüçóþò êîìïîíåíòîâ AWT. Íà ñàìîì äåëå, ìíîãèå òðàäèöèîííûå êîìïîíåíòû AWT – êíîïêè, ñïèñêè, äèàëîãîâûå ïàíåëè, áûëè ïåðåäåëàíû â êîìïîíåíòû Swing Áëàãîäàðÿ ýòîìó, êîìïîíåíòû AWT ñòàëè áîëåå äîñòóïíûìè íà ðàçëè÷íûõ ïëàòôîðìàõ è òåïåðü ïðåäîñòàâëÿþò äîïîëíèòåëüíûå âîçìîæíîñòè, îòñóòñòâóþùèå â íåêîòîðûõ ãðàôè÷åñêèõ ñðåäàõ. Íà ñëåäóþùåé äèàãðàììå ïîêàçàíî âçàèìîäåéñòâèå Swing è AWT.


Îäíî èç íàèáîëåå èíòåðåñíûõ ñâîéñòâ áèáëèîòåêè Swing – ýòî âîçìîæíîñòü èçìåíåíèÿ âíåøíåãî âèäà êîìïîíåíòîâ è èíòåðôåéñîâ - Pluggable Look and Feel (PL&F). Àðõèòåêòóðà PL&F ïîçâîëÿåò íàñòðàèâàòü âíåøíèé âèä è ïîâåäåíèå êàê îäíîãî êîìïîíåíòà, òàê è ãðóïïû êîìïîíåíòîâ. Òàêæå â ñîñòàâ Swing âõîäèò ðÿä ïðåäîïðåäåëåííûõ íàñòðîåê - Metal L&F, Motif L&F, Windows L&F. Ñóùåñòâóþò íàñòðîéêè ïî óìîë÷àíèþ äëÿ Macintosh è äðóãèõ ïëàòôîðì.

Êàê ÿ îòìåòèë âûøå, êîìïîíåíòû Swing èãðàþò âàæíóþ ðîëü ïðè ñîçäàíèè ãðàôè÷åñêèõ èíòåðôåéñîâ ïðîãðàìì.  ñëåäóþùåé òàáëèöå ïðèâåäåíû êðàòêèå îïèñàíèÿ ýòèõ êîìïîíåíòîâ.

Êîìïîíåíò

Îïèñàíèå

Box

Êîíòåéíåð îáùåãî íàçíà÷åíèÿ äëÿ îðãàíèçàöèè âëîæåííûõ êîìïîíåíòîâ èñïîëüçóÿ ìîäåëü BoxLayout.

Japplet

Ïîäêëàññ êëàññà Applet ñîäåðæàùèé JRootPane äëÿ òîãî, ÷òîáû äîáàâèòü ê ïðèëîæåíèþ ðàçëè÷íûå èíòåðôåéñíûå ýëåìåíòû òèïà ìåíþ

Jbutton

Êíîïêà, êîòîðàÿ ìîæåò ñîäåðæàòü ëèáî òåêñò, ëèáî ãðàôè÷åñêîå èçîáðàæåíèå, ëèáî è òî è äðóãîå

JcheckBox

Êíîïêà ñ íåçàâèñèìîé ôèêñàöèåé

JcheckBoxMenuItem

Êíîïêà ñ íåçàâèñèìîé ôèêñàöèåé äëÿ èñïîëüçîâàíèÿ â ìåíþ

JcolorChooser

Êîìïîíåíò äëÿ âûáîðà öâåòà â îäíîé èç öâåòîâûõ ñõåì. Èñïîëüçóåòñÿ ñîâìåñòíî ñ javax.swing.colorchooser 

JcomboBox

Êîìáèíèðîâàíûé ñïèñîê – ñòðîêà ââîäà è âûïàäàþùèé ñïèñîê. Ïîëüçîâàòåëü ìîæåò ââîäèòü òåêñò èëè âûáèðàòü ýëåìåíò èç ñïèñêà.

Jcomponent

Êîðíåâîé ýëåìåíò èåðàðõèè áèáëèîòåêè êîìïîíåíòîâ Swing. Äîáàâëÿåò ñïåöèôè÷åñêèå ñâîéñòâà òèïà ïîäñêàçîê è ïîääåðæêè äâîéíîé áóôåðèçàöèè

JdesktopPane

Êîíòåéíåð äëÿ êîìïîíåíòîâ JInternalFrame èìèòèðóþùèé ðàáîòó desktop â îäíîì îêíå. Ïîääåðæèâàåò ìíîãîîêîííûé èíòåðôåéñ (MDI) 

Jdialog

Êîíòåéíåð äëÿ îòîáðàæåíèÿ äèàëîãîâûõ ïàíåëåé

JeditorPane

Òåêñòîâûé ðåäàêòîð ñ áîãàòûìè âîçìîæíîñòÿèì, óïðàâëåíèå ñâîéñòâàìè êîòîðîãî âîçìîæíî ÷åðåç îáúåêò EditorKit. Ïî óìîë÷àíèþ ìîæåò îòîáðàòü è ðåäàêòèðîâàòü òåêñò â ôîðìàòå HTML è RTF

JfileChooser

Êîìïîíåíò äëÿ âûáîðà ôàéëà èëè êàòàëîãà. Ïîääåðæèâàåòñÿ ôèëüòðàöèÿ è âîçìîæíîñòü ïðåäâàðèòåëüíîãî ïðîñìîòðà ñîäåðæèìîãî ôàéëà. Èñïîëüçóåòñÿ ñîâìåñòíî ñ javax.swing.filechooser

Jframe

Êîíòåéíåð äëÿ îêîí âåðõíåãî óðîâíÿ

JinternalFrame

Êîíòåéíåð äëÿ âëîæåííûõ îêîí. Ñõîæ ñ JFrame è îòîáðàæàåò çàãîëîâîê îêíà.  òî æå âðåìÿ íå ÿâëÿåòñÿ íåçàâèñèìûì îêíîì è îòîáðàæàåòñÿ âíóòðè ðîäèòåëüñêîãî êîíòåéíåðà. ×àñòî èñïîëüçóåòñÿ âìåñòå ñ JDesktopPane.

Jlabel

Êîìïîíåíò äëÿ îòîáðàæåíèÿ òåêñòà, ãðàôè÷åñêîãî èçîáðàæåíèÿ èëè òîãî è äðóãîãî

JlayeredPane

Êîíòåéíåð, ïîçâîëÿþùèé äî÷åðíèì îáúåêòàì ïåðåêðûâàòü äðóã äðóãà. Óïðàâëÿåò ïîðÿäêîì íàëîæåíèÿ äî÷åðíèõ îáúåêòîâ äâóã íà äðóãà

Jlist

Êîìïîíåíò äëÿ îòîáðàæåíèÿ ñïèñêà ñ âîçìîæíîñòüþ âûáîðà. Ýëåìåíòàìè ñïèñêà ìîãóò áûòü ñòðîêè, ãðàôè÷åñêèå èçîáðàæåíèÿ èëè äðóãèå îáúåêòû

Jmenu

Âûïàäàþùåå ìåíþ â JMenuBar èëè ïîäìåíþ âíóòðè äðóãîãî ìåíþ

JmenuBar

Êîìïîíåíò, îòîáðàæàþùèé íàáîð âûïàäàþùèõ ìåíþ.

JmenuItem

Îäèí ýëåìåíò ìåíþ

JoptionPane

Êîìïîíåíò, èñïîëüçóþùèéñÿ äëÿ îòîáðàæåíèÿ ïðîñòûõ äèàëîãîâûõ ïàíåëåé âíóòðè êîíòåéíåðà JDialog. Çàäàåò íàáîð ñòàòè÷åñêèõ ìåòîäîâ äëÿ ñòàíäàðòíûõ äèàëîãîâûõ ïàíåëåé

Jpanel

Êîíòåéíåð äëÿ ãðóïïèðîâêè êîìïîíåíòîâ â ñîîòâåòñòâóþùåì LayoutManager.

JpasswordField

Ïîëå ââîäà äàííûõ, â êîòîðîì ââîäèìûé òåêñò íå îòîáðàæàåòñÿ

JpopupMenu

Îêíî, â êîòîðîì îòîáðàæàåòñÿ âñïëûâàþùåå ìåíþ. Èñïîëüçóåòñÿ JMenu èëè äëÿ ñîçäàíèÿ îòäåëüíûõ âñïëûâàþùèõ ìåíþ

JprogressBar

Êîìïîíåíò, êîòîðûé ïîêàçûâàåò ïðîöåññ âûïîëíåíèÿ äëèòåëüíîé îïåðàöèè

JradioButton

Êíîïêà ñ çàâèñèìîé ôèêñàöèåé

JradioButtonMenuItem

Êíîïêà ñ çàâèñèìîé ôèêñàöèåé äëÿ èñïîëüçîâàíèÿ â ìåíþ

JrootPane

Êîìïëåêñíûé êîíòåéíåð, èñïîëüçóåìûé JApplet, JDialog, JFrame è JInternalFrame. 

JScrollBar

Ãîðèçîíòàëüíàÿ èëè âåðòèêàëüíàÿ ïîëîñà ïðîêðóòêè

JScrollPane

Êîíòåéíåð, ïîçâîëÿþùèé äî÷åðíèì êîìïîíåíòàì ïðîêðó÷èâàòüñÿ âåðòèêàëüíî èëè ãîðèçîíòàëüíî. Îáåñïå÷èâàåò ïîääåðæêó ôèêñèðîâàííûõ îáëàñòåé. 

Jseparator

Êîìïîíåíò äëÿ îòðèñîâêè ãîðèçîíòàëüíûõ è âåðòèêàëüíûõ ðàçäåëèòåëåé. 

Jslider

Êîìïîíåíò äëÿ íàãëÿäíîãî ââîäà öèôðîâûõ çíà÷åíèé

JSplitPane

Êîíòåéíåð, â êîòîðîì îòîáðàæàþòñÿ äâà äî÷åðíèõ îáúåêòà, ðàçìåð êîòîðûõ ìîæíî èçìåíÿòü

JtabbedPane

Êîíòåéíåð, ðåàëèçóþùèé ïàíåëü ñ çàêëàäêàìè

Jtable

Êîìïîíåíò äëÿ îòîáðàæåíèÿ òàáëèö ñ âîçìîæíîñòüþ ðåäàêòèðîâàíèÿ èõ ñîäåðæèìîãî. Ìîæåò îòîáðàæàòü êàê ñòðî÷íûå äàííûå, òàê è ëþáîé äðóãîé òèï äàííûõ. Îáû÷íî èñïîëüçóåòñÿ ñîâìåñòíî ñ javax.swing.table

JtextArea

Êîìïîíåíò äëÿ îòîáðàæåíèÿ è ðåäàêòèðîâàíèÿ ìíîãîñòðî÷íîãî òåêñòà. Îñíîâàí íà êîìïîíåíòå JTextComponent.

JtextComponent

Êîìïîíåíò äëÿ ðåàëèçàöèè êîìïîíåíòîâ äëÿ îòîáðàæåíèÿ è ðåäàêòèðîâàíèÿ òåêñòà. ßâëÿåòñÿ ÷àñòüþ javax.swing.text

JtextField

Êîìïîíåíò äëÿ îòîáðàæåíèÿ, ââîäà è ðåäàêòèðîâàíèÿ îäíîé ñòðîêè òåêñòà. Îñíîâàí íà êîìïîíåíòå JTextComponent.

JtextPane

Ïîäêëàññ JEditorPane äëÿ îòîáðàæåíèÿ è ðåäàêòèðîâàíèÿ îòôîðìàòèðîâàííîãî òåêñòà, êîòîðûé íå ÿâëÿåòñÿ òåêñòîì â ôîðìàòå HTML èëè RTF

JtoggleButton

Ðîäèòåëüñêèé êîìïîíåíò äëÿ JCheckBox è JRadioButton.

JtoolBar

Êîìïîíåíò äëÿ îòîáðàæåíèÿ ïàíåëè èíñòðóìåíòîâ

JtoolTip

Îêíî äëÿ îòîáðàæåíèÿ ïîäñêàçîê èëè äðóãîé ïîÿñíèòåëüíîé èíôîìàöèè

Jtree

Êîìïîíåíò äëÿ îòîáðàæåíèÿ äðåâðâèäíîé ñòðóêòóðû äàííûõ. Ïîìèìî ñòðî÷íûõ äàííûõ ìîæåò îòîáðàæàòü ëþáûå äðóãèå. Èñïîëüçóåòñÿ ñîâìåñòíî ñ javax.swing.tree

Jviewport

Êîíòåéíåð äëÿ îòîáðàæåíèÿ êàêîé-ëèþáî ÷àñòè äî÷åðíåãî îáúåêòà. Îáû÷íî èñïîëüçóåòñÿ ñîâìåñòíî ñ JScrollPane.

Jwindow

Îêíî, íî áåç çàãîëîâêà, ïîëîñ ïðîêðóòêè è äðóãèõ ýëåìåíòîâ. 

Ñ ïîìîùüþ Java 2D ìîæíî ðàçðàáàòûâàòü ãðàôè÷åñêèå ïðèëîæåíèÿ. Ýòîò ïðîãðàììíûé èíòåðôåéñ îáåñïå÷èâàåò ïîääåðæêó äâóìåðíîé ãðàôèêè, îáðàáîòêó ãðàôè÷åñêèõ èçîáðàæåíèé, ðåíäåðèíã, óïðàâëåíèå öâåòàìè è ðàáîòó ñ óñòðîéñòâàìè ïå÷àòè. Èíòåðôåéñ Java 2D ñîñòîèò èç ìîäåëè, êîòîðàÿ ïîääåðæèâàåò îòðèñîâêó ëèíèé, ãðàôè÷åñêèõ èçîáðàæåíèé, ïðåîáðàçîâàíèÿ öâåòîâ, ñîñòàâëåíèå ãðàôèêè. Ìîäåëü ÿâëÿåòñÿ àïïàðàòíî-íåçàâèñèìîé. Èíòåðôåéñ Java 2D ðåàëèçîâàí â ïàêåòàõ java.awt è java.awt.8314_.

Drag and Drop

 Java 2 ââåäåíà ïîääåðæêà îïåðàöèé Drag and Drop, ñ ïîìîùüþ êîòîðûõ ìîæíî ïåðåòàñêèâàòü ðàçëè÷íûå îáúåêòû. Èíòåðôåéñ Drag and Drop â JDK 1.2 îáåñïå÷èâàåò ïëàòôîðìåííî-íåçàâèñèìóþ ïîääåðæêó ýòèõ îïåðàöèé äëÿ Java-ïðèëîæåíèé, ïðè÷åì ìîæíî îñóùåñòâëÿòü ïåðåòàñêèâàíèå îáúåêòîâ êàê ìåæäó Java-ïðîãðàììàìèÞ òàê è ìåæäó Java-ïðîãðàììàìè è ïðîãðàììàìè, "ðîäíûìè" äëÿ êîíêðåòíîé ïëàòôîðìû. Èíòåðôåéñ Drag and Drop ðåàëèçîâàí â ïàêåòå java.awt.dnd è ïîääåðæèâàåòñÿ êëàññàìè è èíòåðôåéñàìè äðóãèõ ïàêåòîâ JFC.

Accessibility

Äëÿ ïîëüçîâàòåëåé ñ ðàçëè÷íûìè ôèçè÷åñêèìè íåäîñòàòêàìè â JDK 1.2 ââåäåí ðÿä èíòåðôåéñîâ, îáëåã÷àþùèõ ñîçäàíèå ñîòîâåòñòâóþùèõ ïðîãðàììíûõ ñðåäñòâ. Èíòåðôåéñ Accessibility â JDK 1.2 ðåàëèçîâàí â ïàêåòå java.awt.accessibility.

Àïïëåòû

Ïðè îáçîðå ïëàòôîðìû Java íåëüçÿ íå óïîìÿíóòü àïïëåòû – ìèíè-ïðèëîæåíèÿ, çàãðóæàåìûå èç ñåòè è âûïîëíÿåìûå â Web-áðàóçåðå. Òàê êàê àïëåòû çàãðóæàþòñÿ èç ñåòè, îíè îáû÷íî ñîäåðæàò "íåïðîâåðåííûé" êîä, ÷òî íàêëàäûâàåò îïðäåëåííûå òðåáîâàíèÿ ê ïðîâåðêå èõ íàäåæíîñòè. Àïïëåòû ñûãðàëè áîëüøóþ ðîëü â ïîïóëÿðèçàöèè ïëàòôîðìû Java è ïðàêòè÷åñêè íå èçìåíèëèñü ñî âðåìåí Java 1.0.  Java 2 ïîÿâèëñÿ Swing-êëàññ JApplet è íîâàÿ, áîëåå ãèáêàÿ ìîäåëü çàùèòû.

Áàçîâûé êëàññ Applet è Swing-êëàññ JApplet ÿâëÿþòñÿ GUI-êîíòåéíåðàìè, êîòîðûå ìîãóò ñîäåðæàòü äðóãèå GUI-êîìïîíåíòû è êîíòåéíåðû. Íî íå ýòè ñâîéñòâà îïðåäåëÿþò îñíîâíûå õàðàêòåðèñòèêè àïïëåòîâ. Íàèáîëåå âàæíûìè çäåñü ÿâëÿþòñÿ âîçìîæíîñòü ðàáîòû â ñåòè, äèíàìè÷åñêàÿ çàãðóçêà è âûïîëíåíèå è ðàçâèòûå ñðåäñòâà çàùèòû.

JavaBeans

Êîìïîíåíòû JavaBeans. âïåðâûå ïîÿâèëèñü â Java 1.1.  Java 2 ðåàëèçîâàíû íåêîòîðûå ðàñøèðåíèÿ êîìïîíåíòíîé ìîäåëè JavaBeans. Êîìïîíåíò JavaBeans – ýòî Java-îáúåêò, èíòåðôåéñ êîòîðîãî ïîääåðæèâàåò íåêîòîðûå ñîãëàøåíèÿ. Òàê, êîìïîíåíòàìè ìîæíî óïðàâëÿòü èç ñðåäñòâ ðàçðàáîòêè, èç ñêðèïòîâûõ ÿçûêîâ è ò.ï.  íåêîòîðûõ ñëó÷àÿõ öåëûå ïðèëîæåíèÿ ìîãóò áûòü äèíàìè÷åñêè ñîáðàíû èç ãðóïïû íåçàâèñèìûõ, íî âçàèìîäåéñòâóþùèõ äðóã ñ äðóãîì êîìïîíåíòîâ. Êîìïîíåíòû JavaBeans ÷àñòî, íî íåîáÿçàòåëüíî, ÿâëÿþòñÿ GUI-êîìïîíåíòàìè. Âñå GUI-êîìïîíåíòû ïëàòôîðìû Java ñëåäóþò ñîãëàøåíèÿì êîìïîíåíòîâ JavaBeans è ìîãóò èñïîëüçîâàòüñÿ â êîíòåêñòå JavaBeans. Òàêèìè êîìïîíåíòàìè ìîãóò áûòü è ïðîñòàÿ êíîïêà, è ñëîæíûé ïîëíîôóíêöèîíàëüíûé òåêñòîâûé ïðîöåññîð.

 Java 2 ïîÿâèëîñü ïîíÿòèå êîíòåêñòà êîìïîíåíòà, - êîíòåéíåðà, êîòîðûé ìîæåò ñîäåðæàòü â ñåáå êîìïîíåíòû è äðóãèå êîíòåéíåðû. Òàêîé êîíòåéíåð ìîæåò îáåñïå÷èâàòü íàáîð ñåðâèñîâ, íàïðèìåð, âîçìîæíîñòü ðàáîòû ñ óñòðîéñòâîì ïå÷àòè, äëÿ âñåõ âëîæåííûõ êîìïîíåíòîâ. Ôàêòè÷åñêè, êîíòåêñò êîíòåéíåðà ÿâëÿåòñÿ ðàñøèðåíèåì ìîäåëè àïïëåòîâ – â ïëàòôîðìå Java 2 ðåàëèçîâàíà ïîääåðæêà ñîçäàíèÿ îáúåêòîâ, êîòîðûå ìîãóò âûñòóïàòü è êàê êîìïîíåíòû, è êàê àïïëåòû.

Java Media Framework

Java Media Framework (JMF) – ýòî ñòàíäàðòíîå ðàñøèðåíèå ïëàòôîðìû Java 2. JMF çàäàåò áèáëèîòåêó êëàññîâ äëÿ ðàáîòû ñî çâóêîì è âèäåî.  äîïîëíåíèå ê âîçìîæíîñòÿì âîñïðîèçâåäåíèÿ àóäèîäàííûõ è îòîáðàæåíèÿ âèäåîäàííûõ, çàêîäèðîâàííûõ â ðàçëè÷íûõ ôîðìàòàõ, JMF âêëþ÷àåò ñðåäñòâà äëÿ îáðàáîòêè, êîíòðîëÿ è ñèíõðîíèçàöèè ïîòîêîâ ìóëüòèìåäèéíûõ äàííûõ. Java Media Framework ìîæåò ðàáîòàòü êàê ñ ôàéëàìè, õðàíèìûìè íà ëîêàëüíûõ äèñêàõ, òàê è óïàêîâàííûìè ïîòîêîâûìè äàííûìè, ïåðåäàâàåìûìè â ðåàëüíîì âðåìåíè ïî ñåòè.

Java Media Framework ðåàëèçîâàíî ïîëíîñòüþ íà ÿçûêå Java è ìîæåò ðàáîòàòü íà ëþáîé ïëàòôîðìå, ïîääåðæèâàþùåé ÿçûê Java.  äîïîëíåíèå ê ýòîìó, ñóùåñòâóþò ïëàòôîðìåííî-çàâèñèìûå ðàñøèðåíèÿ â êîäå äëÿ òîé èëè èíîé ïëàòôîðìû, ñ ïîìîùüþ êîòîðûõ ìîæíî ñóùåñòâåííî ïîâûñèòü ïðîèçâîäèòåëüíîñòü ñîçäàâàåìûõ ïðèëîæåíèé è îáåñïå÷èòü ïîääåðæêó ñïåöèôè÷íûõ äëÿ äàííîé ïëàòôîðìû ôîðìàòîâ äàííûõ.

 ñëåäóþùèõ âåðñèÿõ JMF áóäóò ðåàëèçîâàíû ñðåäñòâà çàïèñè ìóëüòèìåäèéíûõ äàííûõ è ïîääåðæêè êîíôåðåíöèé.

Ïîääåðæêà çâóêà

 ïåðâûõ äâóõ âåðñèÿõ Java (1.0 è 1.1) áûëè ëèøü ðóäèìåíòàðíûå ôóíêöèè äëÿ ïîääåðæêè çâóêà – ìîæíî áûëî âîñïðîèçâîäèòü òîëüêî çâóê, çàêîäèðîâàííûé â ôîðìàòå AU ôèðìû Sun. Ñîîòâåòñòâóþùèå èíòåðôåéñû áûëè äîñòóïíû òîëüêî äëÿ àïïëåòîâ. Ïëàòôîðìà Java 2 ñîäåðæèò íîâîå ÿäðî äëÿ âîñïðîèçâåäåíèÿ çâóêîâûõ ôàéëîâ â íàèáîëåå ïîïóëÿðíûõ ôîðìàòàõ, à ïðîãðàììíûå èíòåðôåéñû ìîãóò èñïîëüçîâàòüñÿ â ëþáîì Java-êîäå, íå òîëüêî â àïïëåòàõ, êàê ýòî áûëî ðàíüøå.

Äëÿ ïîääåðæêè çâóêà â ñîñòàâ Java 2 âêëþ÷åí èíòåðôåéñ Java Sound, îáåñïå÷èâàþùèé ïîëíûé êîíòðîëü íàä àóäèîäàííûìè.

Ðàçðàáîòêà êîðïîðàòèâíûõ ïðèëîæåíèé

Áîëüøèíñòâî íîâèíîê â ïëàòôîðìå Java 2 – ýòî íîâèíêè â ãðàôè÷åñêèõ èíòåðôåéñàõ è ïîääåðæêå ãðàôè÷åñêèõ ôóíêöèé. Íî íàèáîëåå âàæíûìè, ñî ñòðàòåãè÷åñêîé òî÷êè çðåíèÿ, íåñîìíåííî, ÿâëÿþòñÿ ïðîãðàììíûå èíòåðôåéñû Java Enterprise. Ýòè èíòåðôåéñû ïîçâîëÿþò èñïîëüçîâàòü Java äëÿ ñîçäàíèÿ êîðïîðàòèâíûõ ïðèëîæåíèé, êîòîðûå îáëàäàþò ñðåäñòâàìè ìàñøòàáèðîâàíèÿ, ìîãóò ðàáîòàòü â ñåòåâûõ ñðåäàõ è îáëàäàþò ïîääåðæêîé ðàáîòû ñ óæå ñóùåñòâóþùèìè ïðèëîæåíèÿìè.

Íåêîòîðûå èç ýòèõ èíòåðôåéñîâ ñóùåñòâîâàëè â Java 1.1, ÷àñòü èç íèõ ÿâëÿþòñÿ íîâûìè äëÿ Java 2. Ðÿä èíòåðôåéñîâ ÿâëÿåòñÿ áàçîâûì äëÿ ïëàòôîðìû Java 2, îñòàëüíûå – ýòî äîïîëíåíèÿ è ðàñøèðåíèÿ. Òåì íå ìåíåå èìåííî ïëàòôîðìà Java 2.ÿâëÿåòñÿ ïåðâîé, ãäå ïîëíîñòüþ ðåàëèçîâàíû èíòåðôåéñû Java Enterprise, è êîòîðàÿ ñëóæèò â êà÷åñòâå îñíîâû äëÿ ñîçäàíèÿ êîðïîðàòèâíûõ ïðèëîæåíèé.

Íèæå ìû êðàòêî ðàññìîòðèì îñíîâíûå èíòåðôåéñû Java Enterprise (áîëåå ïîäðîáíî ìû ïîãîâîðèì îá ýòèõ èíòåðôåéñàõ â îäíîé èç ñëåäóþùèõ ñòàòåé äàííîãî öèêëà). Ê íèì îòíîñÿòñÿ:

Äîñòóï ê áàçàì äàííûõ

Èíòåðôåéñ Java Database Connectivity (JDBC) ïîçâîëÿåò Java-ïðîãðàììàì ïîñûëàòü SQL-çàïðîñû è îáíîâëÿòü äàííûå íà ñåðâåðàõ áàç äàííûõ, à òàêæå îáðàáàòûâàòü ïîëó÷åííûå ñ ñåðâåðà ðåçóëüòàòû. JDBC òàêæå ïîçâîëÿåò ïîëó÷àòü ìåòàèíôîðìàöèþ î áàçå äàííûõ è åå òàáëèöàõ ñ ñåðâåðà áàç äàííûõ. Àðõèòåêòóðà JDBC îñíîâûâàåòñÿ íà êëàññå Driver, êîòîðûé "ñêðûâàåò" âñå äåòàëè îáùåíèÿ ñ êîíêðåòíûì ñåðâåðîì áàç äàííûõ. Êàæäûé êîíêðåòíûé ñåðâåð òðåáóåò íàëè÷èÿ ñîîòâåòñòâóþùåãî êëàññà Driver, ñ êîòîðûì âçàèìîäåéñòâóþò Java-ïðîãðàììû. Áîëüøèíñòâî ïðîèçâîäèòåëåé áàç äàííûõ ïîñòàâëÿþò JDBC-äðàéâåðû ñî ñâîèìè ïðîäóêòàìè. Ïîìèìî ýòîãî, ñóùåñòâóþò ñïåöèàëüíûå äðàéâåðû äëÿ âçàèìîäåéñòâèÿ ñ áàçàìè ÷åðåç ñîîòâåòñòâóþùèå ODBC-äðàéâåðû. Íà ñëåäóþùåé äèàãðàììå ïîêàçàíû äâà âîçìîæíûõ âàðèàíòà ñîçäàíèÿ JDBC-ïðèëîæåíèé - ñ èñïîëüçîâàíèåì òîëüêî JDBC-äðàéâåðîâ è ñ èñïîëüçîâàíèåì JDBC/ODBC-äðàéâåðîâ.


Èíòåðôåéñ JDBC ðåàëèçîâàí â ïàêåòå java.sql, êîòîðûé âïåðâûå ïîÿâèëñÿ â Java 1.1.  ïëàòôîðìå Java 2 ïîÿâèëñÿ ðÿä íîâûõ êëàññîâ, ðåàëèçóþùèõ äîïîëíèòåëüíóþ ôóíêöèîíàëüíîñòü. Òàêæå â Java 2 âêëþ÷åí ïàêåò javax.sql, ïîçâîëÿþùèé, íàïðèìåð, ðàññìàòðèâàòü ðåçóëüòàòû çàïðîñà ê áàçàì äàííûõ êàê JavaBeans, âûïîëíÿòü ïóëèíã ñâÿçåé ñ áàçàìè è ïîëó÷àòü èíôîðìàöèþ î ñâÿçÿõ ñ áàçàìè ÷åðåç ñåðâèñû èìåí.

Èíòåðôåéñ JDBC ÿâëÿåòñÿ ïðîñòûì è õîðîøî ïðîäóìàííûì. Ïðîãðàììèñòû, çíàêîìûå ñ SQL è îñíîâàìè ïðîãðàììíîãî âçàèìîäåéñòâèÿ ñ áàçàìè äàííûõ, ñìîãóò ëåãêî âîñïîëüçîâàòüñÿ ôóíêöèÿìè JDBC â Java-ïðîãðàììàõ.

Ïîääåðæêà ðàñïðåäåëåííûõ îáúåêòîâ

Ðàñïðåäåëåííûå îáúåêòû îáåñïå÷èâàþò ìîùíóþ ìîäåëü äëÿ ñîçäàíèÿ îáúåêòíî-îðèåíòèðîâàííûõ ñåòåâûõ ïðèëîæåíèé, èíòåðåñ ê êîòîðûì â ïîñëåäíèå ãîäû íåóêëîííî ðàñòåò.  äàííîé ìîäåëè êëèåíòñêàÿ ÷àñòü äîëæíà èìåòü âîçìîæíîñòü âûçûâàòü ìåòîäû îáúåêòîâ, ðàñïîëîæåííûõ íà óäàëåííûõ ñåðâåðàõ òàê, êàê åñëè áû ýòè îáúåêòû ðàñïîëàãàëèñü ëîêàëüíî. Äàííàÿ ìîäåëü ìîæåò áûòü ðåàëèçîâàíà íåñêîëüêèìè ñïîñîáàìè. Îäíèì èç íèõ ÿâëÿåòñÿ Java Remote Method Invocation (RMI). Ñîîòâåòñòâóþùèå ïðîãðàìíûå èíòåðôåéñû ðåàëèçîâàíû â ïàêåòå java.rmi, êîòîðûé âïåðâûå ïîÿâèëñÿ â Java 1.1 è áûë ðàñøèðåí â Java 2.

Ðàñïðåäåëåííûå îáúåêòû è CORBA

Java Remote Method Invocation – ýòî ðåøåíèå äëÿ ñîçäàíèÿ ðàñïðåäåëåííûõ ñèñòåì, êîòîðîå ðàáîòàåò äëÿ êëèåíòñêèõ è ñåðâåðíûõ ïðèëîæåíèé, íàïèñàííûõ íà ÿçûêå Java. Íî îíî íå ïîäõîäèò äëÿ ãåòåðîãåííûõ ñðåä, ãäå êëèåíòû è ñåðâåðû íàïèñàíû íà ðàçëè÷íûõ ÿçûêàõ. Äëÿ òàêèõ ñðåä â ïëàòôîðìå Java 2 ðåàëèçîâàíà ïîääåðæêà CORBA.

CORBA (Common Object Request Broker Architecture) – ýòî ñòàíäàðò, ñîçäàííûé Object Management Group (OMG). Äàííûé ñòàíäàðò ðåàëèçîâàí êàê áàçîâàÿ ñîñòàâëÿþùàÿ ïëàòôîðìû Java 2 â ïàêåòå org.omg.CORBA è äðóãèõ ïîäïàêåòàõ. Ðåàëèçàöèÿ âêëþ÷àåò Object Request Broker (ORB), êîòîðûé Java-ïðèëîæåíèÿ ìîãóò èñïîëüçîâàòü äëÿ îáùåíèÿ ñ äðóãèìè áðîêåðàìè è äðóãèìè CORBA-îáúåêòàìè.

Èíòåðôåéñû ê óäàëåííûì CORBA-îáúåêòàì ÿâëÿþòñÿ íåçàâèñèìûìè îò ÿçûêà è ïëàòôîðìû è îïèñûâàþòñÿ íà ÿçûêå îïèñàíèÿ èíòåðôåéñîâ - Interface Description Language (IDL). Â ñîñòàâ Java Development Kit âõîäèò êîìïèëÿòîð IDL, êîòîðûé ïðåîáðàçóåò èíòåðôåéñû, îïèñàííûå íà ÿçûêå Interface Description Language â ñïåöèàëüíûå Java-êëàññû, íåîáõîäèìûå äëÿ ðåàëèçàöèè IDL-èíòåðôåéñîâ íà Java èëè äëÿ ñâÿçè ñ óäàëåííûìè ðåàëèçàöèÿìè èíòåðôåéñîâ èç Java-êîäà.

Ñåðâèñû èìåí è êàòàëîãîâ

Èíòåðôåéñû Java Naming and Directory Interface (JNDI) ïðåäñòàâëÿþò ñîáîé íåçàâèñèìûå îò ïðîòîêîëîâ èíòåðôåéñû ê ñåòåâûì ñåðâèñàì èìåí è êàòàëîãîâ. Ýòè èíòåðôåéñû ðåàëèçîâàíû â ïàêåòå javax.jndi, êîòîðûé ÿâëÿåòñÿ ñòàíäàðòíûì ðàñøèðåíèåì ïëàòôîðìû Java 2.

Èíòåðôåéñû JNDI íå ÿâëÿþòñÿ ñïåöèôè÷íûìè äëÿ êàêèõ-òî ïðîòîêîëîâ ïîääåðæêè ñåðâèñîâ èìåí è êàòàëîãîâ. Âìåñòî ýòîãî îíè ïðåäñòàâëÿþò ñîáîé áàçîâûå èíòåðôåéñû, ñïîñîáíûå ðàáîòàòòü ñ ëþáûìè ñåðâåðàìè. Äëÿ ïîääåðæêè êàêîãî-òî êîíêðåòíîãî ïðîòîêîëà òðåáóåòñÿ íàëè÷èå ñïåöèàëüíîãî ïðîâàéäåðà. Äëÿ áîëüøèíñòâà ïðîâàéäåðîâ òàêèõ ñåðâèñîâ - LDAP, DNS èëè NIS ðåàëèçîâàíû ñîîòâåòñòâóþùèå ïðîãðàììíûå ñðåäñòâà.

Ýëåêòðîííàÿ ïî÷òà

Èíòåðôåéñ JavaMail ïðåäñòàâëÿåò ñîáîé íåçàâèñÿùèé îò ïðîòîêîëîâ èíòåðôåéñ ê ñåðâèñàì ýëåêòðîííîé ïî÷òû. Îí ïîääåðæèâàåò âîçìîæíîñòü îòñûëêè è ïîëó÷åíèÿ ýëåêòðîííîé ïî÷òû, à òàêæå òàêèå ôóíêöèè, êàê ïîèñê. Èíòåðôåéñ JavaMail ðåàëèçîâàí â ïàêåòå javax.mail è ïîäïàêåòàõ è ÿâëÿåòñÿ ñòàíäàðòíûì ðàñøèðåíèåì ïëàòôîðìû Java 2.

Êàê è JNDI, JavaMail íå ñâÿçàí ñ êàêèì-òî êîíêðåòíûì ïðîòîêîëîì äëÿ ïîëó÷åíèÿ è îòñûëêè ýëåêòðîííîé ïî÷òû. JavaMail – ýòî íàáîð áàçîâûõ ôóíêöèé, ñïîñîáíûõ ðàáîòàòü ñ ëþáûì ïðîòîêîëîì. Ðåàëèçàöèÿ êîíêðåòíîãî ïðîòîêîëà – SMTP, IMAP èëè POP3 – òðåáóåò íàëè÷èÿ ñîîòâåòñòâóþùåãî ïðîâàéäåðà, êîòîðûé âõîäèò â êîìïëåêò ïîñòàâêè.

Enterprise JavaBeans

Enterprise JavaBeans – ýòî ñåðâåðíûé àíàëîã JavaBeans. Enterprise JavaBeans (EJB) ïðåäñòàâëÿåò ñîáîé êîìïîíåíòíóþ ìîäåëü äëÿ ðåàëèçàöèè áèçíåñ ëîãèêè è áèçíåñ äàííûõ. Ïðîãðàììíàÿ ìîäåëü ñ "òîíêèì" êëèåíòîì ïðåäïîëàãàåò âûíîñ áèçíåñ-ëîãèêè ñ êëèåíòñêîé ÷àñòè íà ñåðâåð èëè ïðîìåæóòî÷íûé óðîâåíü (middle tier) è ïîçâîëÿåò ñîçäàâàòü áîëåå ãèáêèå êîðïîðàòèâíûå ïðèëîæåíèÿ. Íî ïðè ýòîì, ðåàëèçàöèÿ áèçíåñ ëîãèêè ñâÿçàíà ñ íåîáõîäèìîñòüþ ïîääåðæêè êîäà, êîòîðûé áû îáðàáàòûâàë òðàíçàêöèè, âçàèìîäåéñòâîâàë áû ñ ñåòüþ è îáåñïå÷èâàë áû ñðåäñòâà çàùèòû èíôîðìàöèè.

Ìîäåëü EJB îòäåëÿåò áèçíåñ-ëîãèêó îò íèçêîóðîâíåâûõ ôóíêöèé, ïîçâîëÿÿ ðàçðàáîò÷èêàì íå çàáîòèòüñÿ î òîì, êàê â òîì èëè èíîì ñëó÷àå áóäóò ðåàëèçîâàíû ñòàíäàðòíûå ôóíêöèè, íàïðèìåð, äëÿ ïåðåäà÷è äàííûõ èëè îáðàáîòêè òðàíçàêöèé.

Ïàêåòû javax.ejb è javax.ejb.deployment ÿâëÿþòñÿ ñòàíäàðòíûìè ðàñøèðåíèÿìè ïëàòôîðìû Java 2 è ñîäåðæàò êëàññû, íåîáõîäèìûå äëÿ ñîçäàíèÿ è âíåäðåíèÿ EJB. Àðõèòåêòóðà EJB òàêæå âçàèìîäåéñòâóåò ñ èíòåðôåéñàìè JNDI è äðóãèì ñòàíäàðòíûì ðàñøèðåíèåì - Java Transaction Services ( JTS).

Ñåðâëåòû

Ñåðâëåò – ýòî Java-êîä, âûïîëíÿåìûé íà ñåðâåðå, è îáåñïå÷èâàþùèé êàêèå-òî ñåðâèñû äëÿ êëèåíòà. Íàçâàíèå "ñåðâëåò" ñõîæå ñ íàçâàíèåì "àïïëåò" – ñåðâëåò ÿâëÿåòñÿ ñåðâåðíûì àïïëåòîì. Èíòåðôåéñ Java Servlet ïðåäîñòàâëÿåò áàçîâûé ìåõàíèçì äëÿ ðàñøèðåíèÿ ôóíêöèîíàëüíîñòè ëþáîãî ñåðâëåòà, èñïîëüçóþùåãî çàïðîñû è îòâåòû íà áàçå ëþáîãî ïðîòîêîëà.

 íàñòîÿùåå âðåìÿ ñåðâëåòû èñïîëüçóþòñÿ, â îñíîâíîì íà Web-ñåðâåðàõ. Òàêèì îáðàçîì ñåðâëåòû ìîæíî íàçâàòü Java-àíàëîãîì CGI-ïðîãðàìì. Ñåðâëåòû âïîëíå êîíêóðåíòíî-ñïðîñîáíû ñ òàêèìè òåõíîëîãèÿìè, êàê Active Server Pages ôèðìû Microsoft èëè Cold Fusion ôèðìû Allaire. Ïðåèìóùåñòâîì èñïîëüçîâàíèÿ ñåðâëåòîâ ÿâëÿåòñÿ òî, ÷òî îíè ÿâëÿþòñÿ íåçàâèñèìûìè îò ïëàòôîðìû è ñîõðàíÿþòñÿ â ïàìÿòè ïîñëå çàãðóçêè (â îòëè÷èå îò CGI-ïðîãðàìì). Ïîìèìî ýòîãî ñåðâëåòû èìåþò ïîëíûé äîñòóï ê ïëàòôîðìå Java è ìîãóò âûïîëíÿòü òàêèå ôóíêöèè, êàê ñâÿçü ñ áàçàìè äàííûõ.

Ñåðâëåòû ÿâëÿþòñÿ ñòàíäàðòíûì ðàñøèðåíèåì ïëàòôîðìû Java 2 è ðåàëèçîâàíû â ïàêåòàõ javax.servlet è javax.servlet.http. Ïàêåò javax.servlet çàäàåò êëàññû äëÿ îáðàáîòêè êëèåíòñêèõ çàïðîñîâ è ñåðâåðíûõ îòâåòîâ. Ïàêåò javax.servlet.http îáåñïå÷èâàåò ïîääåðæêó ïðîòîêîëà HTTP, âêëþ÷àÿ îáðàáîòêó çàïðîñîâ îò íåñêîëüêèõ êëèåíòîâ â ðàìêàõ îäíîé êëèåíòñêîé ñåññèè.

Ýòî åùå íå âñå

Êàê ìû óâèäåëè âûøå, ïëàòôîðìà Java 2 ïðåäîñòàâëÿåò â ðàñïîðÿæåíèå ðàçðàáîò÷èêîâ áîëüøîé íàáîð ðàçíîîáðàçíûõ ïðîãðàììíûõ èíòåðôåéñîâ, ñ ïîìîùüþ êîòîðûõ âîçìîæíî ðåàëèçîâàòü ïðàêòè÷åñêè ëþáûå ïðèëîæåíèÿ. Ïîìèìî ýòîãî, ôèðìà Sun ðàáîòàåò íàä ðàçëè÷íûìè ðàñøèðåíèÿìè è äîïîëíåíèÿìè ê ïëàòôîðìå Java 2, êîòîðûå ñî âðåìåíåì ìîãóò ñòàòü ñòàíäàðòíûìè ðàñøèðåíèÿìè ýòîé ïëàòôîðìû.  ñëåäóþùåé òàáëèöå ïåðå÷èñëåíû íàèáîëåå âàæíûå ðàñøèðåíèÿ, ðàáîòà íàä êîòîðûìè åùå âåäåòñÿ.

Èíòåðôåéñ

Îïèñàíèå

Advanced Imaging API

Îáåñïå÷èâàåò âûñîêîïðîèçâîäèòåëüíûå ñðåäñòâà äëÿ îáðàáîòêè èçîáðàæåíèé, âêëþ÷àÿ ïîääåðæêó ðàáîòû ñ èçîáðàæåíèÿìè áîëüøîãî ðàçìåðà, ôðàãìåíòàðíî õðàíèìûìè íà äèñêàõ 

Java Speech

Îáåñïå÷èâàåò ïîääåðæêó ñèíòåçà ðå÷è è ðàñïîçíàâàíèå ãîëîñà. 

Java Telephony

Ïðåäñòàâëÿåò ñîáîé èíòåðôåéñ äëÿ ñîçäàíèÿ êîìïüþòåðíûõ ïðèëîæåíèé äëÿ ðàáîòû ñ òåëåôîíèåé. 

Project X

Êîäîâîå íàçâàíèå ðàñøèðåíèé äëÿ ïîääåðæêè ÿçûêà XML 

Java Communications API

Ïîçâîëÿåò Java-ïðèëîæåíèÿì èñïîëüçîâàòü ïîñëåäîâàòåëüíûå è ïàðàëëåëüíûå ïîðòû êîìïüþòåðà 

Jini

Íàáîð ïàêåòîâ äëÿ îáåñïå÷åíèÿ ñåòåâûõ ôóíêöèé "plug-and-play" äëÿ êîìïüþòåðîâ, ïåðèôåðèéíûõ óñòðîéñòâ è ðàçëè÷íûõ ýëåêòðîííûõ ïðèñïîñîáëåíèé 

Java Message Service

Ïðåäñòàâëÿåò ñîáîé èíòåðôåéñ äëÿ àñèíõðîííîãî îáìåíà ñîîáùåíèÿìè. 

Java Transaction Service/Java

Transaction API

Ýòè ïðîãðàììíûå èíòåðôåéñû çàäàþò ñðåäñòâà óïðàâëåíèÿ òðàíçàêöèÿìè è èõ îáðàáîòêè. Ðåàëèçóþò ñòàíäàðòû X/Open XA è OMG OTS äëÿ óïðàâëåíèÿ òðàíçàêöèÿìè 

Java Electronic Commerce Framework

Ïðåäñòàâëÿåò ñîáîé íàáîð êëàññîâ äëÿ ñîçäàíèÿ ïðèëîæåíèé ýëåêòðîííîé êîììåðöèè, èñïîëüçóÿ ìåòàôîðó "áóìàæíèêà" íà êëèåíòñêîì êîìïüþòåðå 

Java Management API

Çàäàåò íàáîð èíòåðôåéñîâ äëÿ öåíòðàëèçîâàííîãî óïðàâëåíèÿ äèíàìè÷åñêèìè ðàñïðåäåëåííûìè Java-ïðèëîæåíèÿìè è ñðåäàìè

Ïðèëîæåíèå

Èíòåðôåéñû Java 2 API

Ïàêåò

Îïèñàíèå

java.applet

Ñîäåðæèò êëàññû, íåîáõîäèìûå äëÿ ñîçäàíèÿ àïïëåòîâ è êëàññû, êîòîðûìè ïîëüçóþòñÿ àïïëåòû äëÿ âçàèìîäåéñòâèÿ ñ êîíòåêñòîì

java.awt

Ñîäåðæèò âñå êëàññû äëÿ ñîçäàíèÿ ïîëüçîâàòåëüñêèõ èíòåðôåéñîâ, îòðèñîâêè ãðàôèêè è èçîáðæåíèé

java.awt.color

Ñîäåðæèò êëàññû äëÿ óâåòîâûõ ñõåì

java.awt.

datatransfer

Ïðåäîñòàâëÿåò èíòåðôåéñû è êëàññû äëÿ ïåðåäà÷è äàííûõ ìåæäó ïðèëîæåíèÿìè èëè âíóòðè îäíîãî ïðèëîæåíèÿ

java.awt.dnd

Îáåñïå÷èâàåò èíòåðôåéñû è êëàññû äëÿ ïîääåðæêè îïåðàöèé Drag-and-Drop 

java.awt.event

Ñîäåðæèò èíòåðôåéñû è êëàññû äëÿ îáðàáîòêè ðàçëè÷íûõ ñîáûòèé, âîçíèêàþùèõ â AWT-êîìïîíåíòàõ

java.awt.font

Ñîäåðæèò êëàññû è øðèôòû äëÿ ðàáîòû ñî øðèôòàìè

java.awt.geom

Ïðåäîñòàâëÿåò êëàñû Java 2D äëÿ âûïîëíåíèÿ îïåðàöèé íàä îáúåêòàìè, ðåàëèçóþùèìè 2-ìåðíóþ ãåîìåòðèþ

java.awt.im

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ ðåàëèçàöèè ââîäà (input method framework)

java.awt.8314_

Ðåàëèçóåò êëàññû äëÿ ñîçäàíèÿ è ìîäèôèêàöèè ãðàôè÷åñêèõ èçîáðàæåíèé

java.awt.8314_.

renderable

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ îáðàáîòêè ãðàôè÷åñêèõ èçîáðàæåíèé

java.awt.print

Ïðåäîñòàâëÿåò êëàññû è èíòåðôåéñû äëÿ ïîääåðæêè ðàáîòû ñ ïðèíòåðîì

java.beans

Ñîäåðæèò êëàññû, îòíîñÿùèåñÿ ê ðàçðàáîòêå Java Beans

java.beans.

beancontext

Ðåàëèçóåò êëàññû è èíòåðôåéñû äëÿ ðåàëèçàöèè êîíòåêñòà Java Beans

java.io

Ñîäåðæèò ñðåäñòâà äëÿ ðàáîòû ñ ââîäîì è âûâîäîì ÷åðåç ïîòîêè äàííûõ, ñåðèàëèçàöèþ è ôàéëîâóþ ñèñòåìó

java.lang

Îáåñïå÷èâàåò êëàññû, ðåàëèçóþùèå îñíîâó ÿçûêà Java

java.lang.ref

Ñîäåðæèò ññûëî÷íûå êëàññû, ïîääåðæèâàþùèå ñâÿçü ñî ñáîðùèêîì "ìóñîðà"

java.lang.

reflect

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ ïîëó÷åíèÿ èíôîðìàöèè î êëàññàõ è îáúåêòàõ

java.math

Îáåñïå÷èâàåò êëàññû äëÿ âûïîëíåíèÿ àðèôìåòè÷åñêèõ äåéñòâèé

java.net

Ñîäåðæèò êëàññû äëÿ âûïîëíåíèÿ ñåòåâûõ ôóíêöèé

java.rmi

Ïðåäñòàâëÿåò ñîáîé RMI-ìåòîäû

java.rmi.

activation

Îáåñïå÷èâàåò ïîääåðæêó RMI Object Activation.

java.rmi.dgc

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ ðàñïðåäåëåííîé ñáîðêè "ìóñîðà" íà îñíîâå RMI - Distributed Garbage-Collection (DGC).

java.rmi.

registry

Ñîäåðæèò êëàññ è äâà èíòåðôåéñà äëÿ ðåãèñòðàöèè RMI

java.rmi.server

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ ïîääåðæêè ñåðâåðíûõ RMI.

java.security

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ çàùèòû (security framework)

java.security.

acl

Ðåàëèçóåò êëàññû è èíòåðôåéñû, êîòîðûå â Java 2 ðåàëèçîâàíû â ïàêåòå java.security

java.security.

cert

Îáåñïå÷èâàåò êëàññû è èíòåðôåéñû äëÿ îáðàáîòêè ñåðòèôèêàòîâ

java.security.

interfaces

Ñîäåðæèò èíòåðôåéñû äëÿ ãåíåðàöèè RSA-êëþ÷åé è DSA-êëþ÷åé â ñîîòâåòñòâèè ñî ñòàíäàðòàìè

java.security.

spec

Îáåñïå÷èâàåò èíòåðôåéñû äëÿ ðàçëè÷íûõ ñïåöèôèêàöèé çàùèòû

java.sql

Èíòåðôåéñ ê JDBC

java.text

Ïðåäîñòàâëÿåò êëàññû è èíòåðôåéñû äëÿ îáðàáîòêè òåêñòà, äàò, ÷èñåë è ñîîáùåíèé, íåçàâèñèìî îò ÿçûêà

java.util

Ñîäåðæèò èíòåðôåéñû äëÿ ðàáîòû ñ êîëëåêöèÿìè (collections framework), ñîáûòèéíóþ ìîäåëü, ôóíêöèè äëÿ äàòû è âðåìåíè, ôóíêöèè ëîêàëèçàöèè è ðàçëè÷íûå äîïîëíèòåëüíûå êëàññû

java.util.jar

Îáåñïå÷èâàåò êëàññû äëÿ ÷òåíèÿ è çàïèñè ôàéëîâ â ôîðìàòå JAR (Java ARchive), êîòîðûé îñíîâûâàåòñÿ íà ñòàíäàðòå ZIP ñ íåîáÿçàòåëüíûìè äîïîëíåíèÿìè

java.util.zip

Ñîäåðæèò êëàññû äëÿ ÷òåíèÿ è çàïèñè ôàéëîâ â ôîðìàòå ZIP è GZIP

javax.

accessibility

Ðåàëèçóåò ôóíêöèè Accessibility 

javax.swing

Ïðåäîñòàâëÿåò íàáîð ëåãêîâåñíûõ êîìïîíåíòîâ äëÿ ðåàëèçàöèè ïîëüçîâàòåëüñêèõ èíòåðôåéñîâ

javax.swing.

border

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ îòðèñîâêè ñïåöèàëüíûõ ðàìîê âîêðóã êîìïîíåíòîâ Swing.

javax.swing.

colorchooser

Ñîäåðæèò êëàññû è èíòåðôåéñû, èñïîëüçóåìûå êîìïîíåíòîì JColorChooser

javax.swing.

event

Èñïîëüçóåòñÿ äëÿ ïîääåðæêè ñîáûòèé â êîìïîíåíòàõ Swing

javax.swing.

filechooser

Ñîäåðæèò êëàññû è èíòåðôåéñû, èñïîëüçóåìûå êîìïîíåíòîì JFileChooser

javax.swing.

plaf

Ñîäåðæèò îäèí èíòåðôåéñ è íåñêîëüêî àáñòðàêòíûõ êëàññîâ, èñïîëüçóåìûõ Swing äëÿ ðåàëèçàöèè ïåðåêëþ÷àåìûõ íàñòðîåê (pluggable look-and-feel)

javax.swing.

plaf.basic

Ñîäåðæèò èíòåðôåéñíûå îáúåêòû äëÿ áàçîâîé íàñòðîéêè (Basic look-and-feel)

javax.swing.

plaf.metal

Ñîäåðæèò èíòåðôåéñíûå îáúåêòû äëÿ íàñòðîéêè ``metal''

javax.swing.

plaf.multi

Ïîçâîëÿåò îáúåäèíÿòü ðàçëè÷íûå èíòåðôåéñíûå íàñòðîéêè

javax.swing.

table

Ñîäåðæèò êëàññû è èíòåðôåéñû, èñïîëüçóåìûå java.awt.swing.JTable

javax.swing.

text

Îáåñïå÷èâàåò êëàññû è èíòåðôåéñû äëÿ ðåäàêòèðóåìûõ è íåðåäàêòèðóåìûõ òåêñòîâûõ êîìïîíåíòîâ

javax.swing.

text.html

Ñîäåðæèò êëàññ HTMLEditorKit è ïîäêëàññû äëÿ ñîçäàíèÿ HTML-ðåäàêòîðîâ

javax.swing.text.html.parser

Ñîäåðæèò ïàðñåð ÿçûêà HTML

javax.swing.text.rtf

Ñîäåðæèò êëàññ RTFEditorKit äëÿ ñîçäàíèÿ RTF-ðåäàêòîðîâ

javax.swing.tree

Ñîäåðæèò êëàññû è èíòåðôåéñû äëÿ java.awt.swing.JTree

javax.swing.undo

Îáåñïå÷èâàåò ïîääåðæêó îòìåíû/ïîâòîðà îïåðàöèé â ïðèëîæåíèÿõ.

org.omg.CORBA

Ðåàëèçóåò èíòåðôåéñû OMG CORBA íà ÿçûêå Java, âêëþ÷àÿ êëàññ ORB, êîòîðûé ìîæåò èñïîëüçîâàòüñÿ êàê ïîëíîôóíêöèîíàëüíûé áðîêåð - Object Request Broker (ORB).

org.omg.CORBA.

DynAnyPackage

Ïîääåðæèâàåò èñêëþ÷èòåëüíûå ñèòóàöèè, èñïîëüçóåìûå èíòåðôåéñîì DynAny (InvalidValue, Invalid, InvalidSeq, è TypeMismatch).

org.omg.CORBA.

ORBPackage

Ïîääåðæèâàåò èñêëþ÷åíèå InvalidName äëÿ ìåòîäà ORB.resolve_initial_references è èñêëþ÷åíèå InconsistentTypeCode,.

org.omg.CORBA.

portable

Îáåñïå÷èâàåò óðîâåíü ïåðåíîñèìîñòè – íàáîð èíòåðôåéñîâ ORB, êîòîðûå äåëàþò âîçìîæíûì âûïîëíåíèå êîäà äëÿ îäíîãî áðîêåðà ïîä óïðàâëåíèåì äðóãîãî

org.omg.CORBA.

TypeCodePackage

Ïîääåðæèâàåò èñêëþ÷åíèÿ BadKind è Bounds

org.omg.

CosNaming

Ðåàëèçóåò ñåðâèñû èìåí äëÿ Java IDL.

org.omg.CosNamongContextPackage

Ïîääåðæèâàåò èñêëþ÷åíèÿ äëÿ ïàêåòà org.omg.CosNaming (AlreadyBound, CannotProceed, InvalidName, NotEmpty è NotFound) è êëàññû Helper è Holder äëÿ ýòèõ èñêëþ÷åíèé


Íåïðàâèëüíàÿ êîäèðîâêà â òåêñòå?
 ðàáîòå íå äîñòàåò êàêèõ ëèáî êàðòèíîê?
Äîêóìåíò îòôîðìàòèðîâàí íåêîððåêòíî?

Âû ìîæåòå ñêà÷àòü ïðàâèëüíî îòôîðìàòèðîâàííóþ ðàáîòó
Ñêà÷àòü ðåôåðàò