�����: ������� �����,
�������� ����������� ���. ������� ��������
��������
�������: 19.07.2002
� ����������� ���� ��������� ��� �� ������ � UDP � Multicast ������, � ���� ���� � ���������� ����� �� ���� ����������� Java �� ������ �� URL �������. � ���� ����������� ������� ���� �� ����� ������� ���� �� ������������ �� Java �� �������� � ������ ��� ������. �������� �� �� �� ��������� � ������� ���� �� ����� � ���������� �� Java ������.
�� ����� �������� ������ ���� ����� �������������� ����������, �� ������ Java ����� ���������� �� ��������� �� ������. �� ���� ����� ���� �������� ���� � ������ ������ ��������, ������ Java ������������ ���� �������� � ����� �� ���� � ������������ �� �� ����� ���� ������� ��-�����. ���������� �� ����� ���� ���������� 5-6 ������, �����, ������� ������� ������ �� � ����� �� �������������� � Java ����� ���� �� ���-����������� ��������� �� ���������� �� ������������ ��������� �������. ��������, ������� �� ���� �� ������ ��������� ���� � Java �����������, ��� ��� �� ������� ���� ��������� ������ � �������� ��������������, ����� �� ������ �� ����������.
����� �� ��������� ��� ������ �������, ������ �� �� ������� ����� � Java �����. ������� � ����������� �������� �� Java, ����� �� ������� ���� ����� � ���������� Web-�������� � �� ��������� �� Web-�������� �� ����� �� ������������� �� ���� ��������. �������� �� �������� � Web-���������� �� ����� ����� ������� �� ����������� �� ��������, �� �� ������� �� ���, �� �� �� ������ �������� �����������, � ��������, ����� ��������� ������������� ������, ����� ��������� �� � ���, �� ��������� �� ������������� ���������. �������� ���������� ����� ������ ��� ����� �� ���� Java �����������, �� � �������� �����������, ������������ ������ �� ����������� �� ���������. �� �� �� ������� ������������� �� �����������, �� �������� � ��������� �� ��������� ���� ��������, ����� �� ����� �� ���������� ������ �� ��������������� ������������ �� ��������, �� ����� �� ����������. �������� ������������� ����������� Java �������� ��� ��� �� .class ���� ��� ���������� �� ����������� Java �������, �������� � .jar ����. ����� ����� ������ Java �������� �� ���������� �� Java ��������� ������ (JVM) � ������ ����������, ����� ��������� ������ ���� �������� � ���� �� ��� ������������ ����������� ��������� ������. ��� ���������� �� HTML �������� � ������, ��������� ������� Java ����������� �� ������ � �������� �������� � ���.
� �������� ������ Java �������� ����������
����� java.applet.Applet �
����������� �������� �� �� ������������� � �� ������������ �� ������ �
��������� init() � paint(). � ������ paint() ������� ���������� �������� ��
������ �������� �� ��������� ����������� ������������ �������� �� Java ��
��������� �� �������� ������������� ��������� � AWT (Abstract Window Toolkit).
���� �������� �� ������� � ������ java.awt
� �� ����� ���������� ��-�����. �� ���������� ���� ������ ����� �����:
import java.applet.Applet;
import java.awt.Graphics;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello world!", 50, 25);
}
}
� ���� ������ ������������, ����� �����
�������, � � ������ �� �� ������������ �� ������ �� ������ ����� � ��������,
����� �� � ������ �� �������� �� ������� (50, 25) � ������ �� ������������.
����������� �� ������ HelloWorldApplet.java
� ������������� �� �� .class
���� �� � ���������� �� �� ���� ��� �� �� �������. �� ������� �� ����������
Java �������� �������� �� � ������������ �� ���� main() �����. �� �� ����� ��������� �� ����� ����� ������
�� �������� Web-��������, � ����� �� �� ������� ���� �����. ��� ���� ������ ���
����� ����:
<html><body>
��� <p align="center">This is the
applet:<br><br>
��� <applet code="HelloWorldApplet.class"
������� width="150" height="50">
��� </applet></p>
</body></html>
����������� HTML
���� <applet>, � �����
��������� ����� �� �����, ����� ������ �� ������� ���� �����, ����� � ���������
�� �������� �� Web-����������, ����� �� �� ����������.
��� ������� ���� HTML ��� ��� ����� index.html
� ������� ���� ���� � Internet Explorer, �� ������� �������� ������� ��
�������:

���� ����� �� �������� ������ �� ���� ���������� appletviewer, ����� � �������� ���
������������ ���������� �� JDK. � ��� ���� ����� ��
����������� ������, �� �� ������� �� ����������� �������, appletviewer
���� ������ ����� �� ������ � ������ � �������� ������ �� JDK. ���� ��������� appletviewer ������
��� �� HTML ����, ����� ������� �����. �������� �
�������� �� JDK � �������������� �������� ��
��-�������, � ���� ���� �������� � ������ ������� ������� ���� ��� �� ��������
������.
������ java.applet.Applet
� ����� ���� �� ������ ������ � � ��������� �� java.awt.Panel. ������������ ��� ������������ AWT ��������� � ���� �� �� �������� �� ��������� �� �������� AWT ���������� � ��� ���������� �� ������������� ���������.
����� �� ����, ��� ���� �� �� �������� ���� � �� �������� �������� ���
���������� �� AWT, ����� ���� � ��������� � ������
������. ������ java.applet.Applet
���� �������� �������������� �� �������� � ���������� �� ������������ �� ������
�� �������������� � �������� � ������� ����. �� ��������� �������� ����� ��
���� ����� � ����� �� ������ �� ������� �� ��������� �� HTML-����������
� ������ �� �������, � ����� �� ������� ��������� ��� �� ������� �� ����� ��������.
������������ ��������� ���� HTML ��������� � ������ <applet> ��������. �� ����� �� ���
������ � ������� ���� �����, ����� � ������, ���������� �� � Java
����������� �� ������ � ������� �� �� ���������. ������������ �� �����
�� ������ � ��������: ������� �� init()
������. ������� �� start()
������. ������ ������� ������, ��������� �� ������ ������ �������,
������������� �� ���� � �� ����������, ������ � ���������� �� �� ���������
������ ������� �������. ���������, �������� �� �� ������, ���� �������� �
�������, ��������� �� ������ � ��. �� ������� �� ������ handleEvent(), ����� ��������
������������ �� �� �� ��������� �� AWT ����������, ��
����� �� �������������. ��������� �� ������������ ��������� ������ �� �������
�������� ���� �� ������, �������� ��� ���������� �� ��������� ��� ��� ��������
�� ������ � ���� ��������. ������������ �� ���� ������� ����������� ���������
�� ������ paint(), ��� ������������ �� ����� ������� � ������
�� �� ���������. ��� ����������� �� ������������ �� ������, ���������
������� �������������� �������� stop()
� destroy().
������� init() ��
������� ���������� ���� ���� ������� � �����������, �.�. � �������� ���� �����
��� ����������� ������ �� ��������. � ���� ������� ���� �� ������� ����������
�� �������������� �� ���������, �� ������� ����� ������������� � ������
��������, ����� ������ �� �� ������� ����������, ����� ������� �� � ���������.
������� start() �� ���� ����
��������������� � ���� ������������ �� ������. �� ������� �� init(), ������� start() ���� �� �� ������ ������ ��
������. ������� stop() ��
�������, ������ ��������� ������� ����������, � ����� � ������� ������. ���� stop() ������ ����� �� ������ ������� �
��������� �� �����. ��� ������� ������� � ���������� � ������, �� ���� start(). ������
�� ��������� �� �������� �������� ���������� �� �������� start() � stop() �������� � ������ ������������ �� ������ �� �����
����������, � ��� ���������� �� �� �������. ������� destroy() �� ������� ���������� �����
������� �� �� ������� �� ��������.
AWT ������������ �����������-���������� ���������� �� �������, ����� ��������� ��������� �� �������� ������������� ��������� � Java � ���� �������� �����������-���������� framework �� ��������� �� ����������, ����� ��������� ������� � �������������� ������� � �����������. ���� framework �� ���������� ���������� ����� �� ������ � �������� ����������, ���� ������, �������� ������, ��������, ����� � �.�., � ���� � ��������� �� ��������� �� ��������� ���������� � �������� �� ���������������� ����� ����������� � ����������, ���� �������� �������� � �������, ���� �� ������������ � �.�. ������������ AWT � ������� ������, �� �� ���������� � �������� � ���������� ����� ������ ������������ �� ����, � ����� �����������. ������ ��� �� ������������ �� ������� �� �������� ���� ���� ������ �������� ��������� � AWT � �� ������ �� �� ������� ����, ����� �� � ���������� �� �� ����� ������. �������� �������� �� ������������ ���� �� �� ������ �� ����� �� ����� ��������� ������������ � Java� http://inetjava.sourceforge.net, � ���� � � �������������� �� JDK.
������������� ������� �� ����� � ������� sizeX
� sizeY ������� �� ������� (0,0), ����� ��������
�� ������ �� ��� ���� � �������� � ������� (sizeX-1, sizeY-1),
����� �������� �� ������ �� ����� ����. �������������� �� �������� ������ �����
���� ����� java.awt.Graphics,
����� �� ����� �� ������ �� paint()
������ �� ������. ����� Graphics
����� ��� ���� ��������� ����������� ������� � ����� AWT
�������� ��������� ��� ���� �������� Graphics
�����, ���� ����� ��������� �������������� ��. ������ Graphics �� ���� ������ �� ������� ��
��������� �������� ������, ���� �����, �������������, ������, ���������
�������������, ����� � �������� �������� � ����� �����. �������� �� ������te, � ����� �� ������� ���� ������ (drawLine(), drawRect(), fillRect(), clearRect(), drawOval(), fillOval(), drawArc(), fillArc(), drawPolygon(), fillPolygon() � �.�.) ����
�� �� ������ � ��������������. ����� ���������� �������
�� ����������� ������, AWT ��������� � ������������ ��
��������, �������� �� GIF ��� JPEG
����. �� ����� �� �������� ����� java.awt.Image
� ������ �� ����� Graphics drawImage(), ����� ��� ������� �������� �
�������� ������ ���������. ���-������� ����� �� ��������� �� �������� � Image ����� �� ���� �� ������ getImage() �� ����� Applet, ����� ������ URL ���� ���������. ��� ���� ������ ��� �����
�� ������� ��������:
URL imageURL = new URL(���"http://www.nakov.com/images/dot.jpg");
java.awt.Image img = this.getImage(imageURL);
�� �� ��������� ����� ������ ���������� �������� ����� �� ���������� ������� ���:
public void paint(Graphics g) {��� g.drawImage(img, 20, 10, this);
}
��� ������ �� ��������� ���������� � ��������� �������, ����� �� ���������� ������ ������ drawImage(), �� � ����� ���������:
g.drawImage(img, 0, 0, img.getWidth(this)/4,
img.getHeight(this)/4, this);
������������ ������� �������� � ���������, �� ������� drawImage() ��� ���� ���������, �� �����
� ������ ������� ������ �������� this. ���� ������ �� � �������� � �� �������� � ������������� �� AWT � ������, �� ����� �� ������ � ��������. ������� drawImage()
������ ���� �������� ��������� �����, ����� ��������� ���������� ImageObserver. ����������� �� �������� � AWT ������ � ����������, �.�. �������� �� ��������� �
�������� �� ����������. ���� � ������ ����������, ���� �� ��� �������, ��
����������� �� �������� �� �������� ������ �������� �����, � ���������� ���� ��
�� �������� �� ����� ����, ������ �� ����. �� ���� drawImage() �� ������� ���������� �� ����
�������� � ������ �� � ��������, � ������ ���� ���� ���� �� ���, ����� ���� �
�������� � ������� ����� ������������ �� ���������� �����. ������ ���������� ��
������ �������, �� ������� ������� imageUpdate()
�� ���������� ImageObserver,
����� ������ �� �������� ���������� �� �������� �����. ���������� ������������
�� ������ imageUpdate()
���������� ����������. ������ java.awt.Component,
����� � ���������� �� ����� java.applet.Applet
��������� ����������� ImageObserver
� � ������ �� imageUpdate()
���������� �������� �� ������, ����� � ��������� �� ����������, ����� �� �
�������� �������. ����������� ���� ������ �������������� �� ����� Applet, ������
������, ������ ��������� �������� �� �����, �� �������� �� ImageObserver ����� �����, �.�. ������ this. ��
���������� ���� �������� ������ �� �����, ����� �������� �������� � ���������
������ ��������. �� �� �������� �� ������ ��������� �� �����, � ����� ����
����� ��������� �� ����� � �� ��������� � ������� �� ������ ��� ����. ����
�������� ������� �� �������� � ��������:
import
java.awt.*;
import
java.applet.*;
import
java.net.URL;
public
class BallApplet extends Applet
implements
Runnable {
��� public
static final int SPEED = 20;
��� Image
ballImg;
��� int
x, y, px, py;
��� Thread
animateThread = null;
��� Image
bufImg;
��� Graphics
bufGr;
��� public
void init() {
������� try
{
����������� String
imgName =
��������������� getParameter("imgName");
����������� ballImg
= getImage(
��������������� getCodeBase(),
imgName);
������� }
catch (Exception ex) {
����������� ex.printStackTrace();
����������� System.exit(-1);
������� }
������� x
= 1; y = 1; px = 1; py = 1;
������� bufImg
= createImage(
����������� getSize().width,
getSize().height);
������� bufGr
= bufImg.getGraphics();
��� }
��� public
void paint(Graphics g) {
������� if
(animateThread != null) {
����������� //
Paint in the buffer
����������� bufGr.fillRect(0,
0,
��������������� getSize().width,
getSize().height);
����������� bufGr.drawImage(ballImg,
x, y, this);
����������� //
Move the buffer to the screen
����������� g.drawImage(bufImg,
0, 0, this);
������� }
��� }
��� public
void start() {
������� if
(animateThread == null) {
����������� animateThread
= new Thread(this);
����������� animateThread.start();
������� }
��� }
��� public
void stop() {
������� animateThread
= null;
��� }
��� public
void run() {
������� //
Wait for the image to load completely
������� MediaTracker
tracker =
����������� new
MediaTracker(this);
������� tracker.addImage(ballImg,0);
������� try
{
����������� tracker.waitForAll();
������� }
catch (Exception ex) {}
������� //
Calculate the animation area size
������� int
maxX = this.getSize().width -
����������� ballImg.getWidth(this);
������� int
maxY = this.getSize().height -
����������� ballImg.getHeight(this);
������� //
Animate until interrupt is requested
������� while
(animateThread != null) {
����������� if
((x > maxX) || (x < 0))
��������������� px
= -px;
����������� x
= x + px;
����������� if
((y > maxY) || (y < 0))
��������������� py
= -py;
����������� y
= y + py;
����������� try
{
��������������� Thread.sleep(SPEED);
����������� }
catch (Exception ex) {}
����������� //
Redraw the applet contents
����������� paint(getGraphics());
������� }
��� }
}
������
�� �������� �� ������ � ��������: ��� ������������� ������� ������� ����������
� ������� � ������� ���� ����� Image, ����� �� �������� �� �����. ���
���������� �� ������ �� ������� ���� �����, ����� �� ����� �� ����������.
������� ���� � �� ������� ������������ x
� y
�� ������� �������� �������� ������ �� ��������, �� ����� �������� ��� ���� �
����� � ���� ����� ������� �� ������������ �� ������� �� ���������� ������.
�������������� �� ������ ������ ��� ��������� �����. ���� ����� �� �������� ��
�� �� ������� ������������ � �� �� ������ �������� ������ ��������. ��� �����
������������ �� ������ ������� �� �������� � fillRect(), ���� ���� � ���� �� ��������� ������� �� �������� � �������
� ���� ���� �� ������ �� ����������
������������ �� ���� �����. ���� ������� �� ��������� �� ������������ ���
��������� �� �������� �� ������ ������ ���������� (double buffering). �� ������������ � �� ������� ����� ��
����� Image � bufImg �
�� ������ ���� ������� Graphics ����� � bufGr. ������ �� �� ������ �������� �����
������, �� ������ � ������ � ������� ����� �� ������ �� ��������� � ������. ���
��������� �� stop() ������ ������� ����� ������� ��
��������, � ��� start() � ������� � � ��������. ����� �� �����, ����� ������� ����������
�� ������ ���� ��������� �� ������ � �� ����� � ������ getParameter(). ����������� �� �������� ������ ��
�������� �� �������� ��������� ��� �� � ���������� �������������, ����� ��
������ ��� ���� ��������� �� �������� ���� ���������. �� ���������� �� ���
��������� ���, ����� �� ����� � ���� <applet> � ���� <param>. ��� ���� �������� HTML ���, ����� �������� ����� ����� � ������
�� ���������� ��� �� �������� imgName ���������� ball.jpg:
<html>
<head><title>Nakov
Ball Applet</title></head>
<body>
<applet
code="BallApplet.class" width="200"
�height="150">
��� <param
name="imgName" value="ball.jpg">
</applet>
</body>
</html>
� ������������������ �� ���� ������� �����
���������� imgName � ������� ���������� � ���� ��� ��
������������, �� ����� � ������� �������. URL, ������
��� ���� ���������� ���� �� �� ������ ���� ������ getCodeBase(). ����� � ����������
����� �� ��������� �� ������ �� ����� � �� ���� �������e� URL, � ���� �������e� URL ������ ������������, �� ����� �
������� �������. ���� ���� � ������� ������� �� ��������� �� ��������,
�� � ��������� �� �� ������� �� ��������� URL, � ����
���� ����� ������� ������� ��������-����� �� ������ �� ����������. ���
��������� �� start() ������
������� ������� ������� �� �������� � � ��������. ��� ���������� ������� �����
������� ���������� � ������� ballImg
�� �� ������ �������. �� ����� �� �������� ����� MediaTracker, ���� ����� ���� ��
�� �������� ����������� �� ��������� �� �� �������� ��������. �� �� ���������
�� �������� � �������� � AWT � ����������! ���� ����
���������� � ������� ��������, ����� �� ��� �������, �� ��� �� ������� �� �
������ ���������, ���������� �� � �������. ���� �������, ����� � ��������� ��
������ ���������� �� ����������� �� ������, � ����� ������� ���� �� �� �����,
���� �� �� �� ������ �� ������. ���� � ������������� ������ (0,
0) � (maxX, maxY). ������ �������� ������������ ���� �����, � ����� ��
���������� ������ ���������� �� ������� � ������� �� ���������� � ��������� �� paint(getGraphics()). ����� ����� ���
������ �� ���������� �� ������� ������� ����� SPEED � ��� ������� �� �� �� ����� ��������� ����� � �� ��
����� � ������������� ������� ������� �� �������� ��������. ���
������� �� ������ � ������ stop()
�� ������������ animateThread, �����
���� ��� ������� �� �������� �� ��������� null � ���� � ���� �� run() ������ �� ���� �����, �� ������ ��
�������� ������. ������ � ������, � ����� �� ����� �������, ���������� �� animateThread �� ����� ������������.
����� � ���������������� ����� �� ���������� �� �������� �� �����. ��� �
���������� �� ����� �����, ����� ���� Internet Explorer:

�� �� �������� ����� � ���������� ����������,
����� ������������ ������� (ball.jpg)
�� � ��-����� �� ��������� �� ������ � �� ���� �� ����� ���.
��� ������������ �� ������ � ��� ���������� �� � Internet Explorer ��� ���� Web-�������, ������ �� ����� ������� ����� ����. �������� �������� ��������� �������� �� �������� ������ �� Web-����������, �������� ��������, ������� � ��. �� ��������� �� ��-������ ������� ��� ��������� �� HTML ��������. ���������� �� �������� � �� ��������, ������ ����� ������ �� �� �������. ������ �� �� ����, �� ����������� �� ���� ������ �� ������ � ��������� �� ������ �Refresh� �� ��������� ������������ �� ������ �����. ��� Internet Explorer ������� ����� �� ����������� �� ���������� ������ �� ������ � ����������� �� Ctrl+F5 ��� Ctrl+�Refresh�, �� ��� ����� �������� ���������� ���������� �� �����. ���-������� � ��������� �� �������� � ���������� ������. ���� ���� ����� �� ��� �������, �� ���������� ������� � ���� �� � �������� �� ������, � �� ��� �������, �� �� ��� ��������� �� ��������������.
����� ����� ��������� �� ���������� � �� �������� ���������
����� ����� ������ �� JDK. �������� Internet
Explorer 4.0, 5.0 � 5.5 ��������� ���� JDK 1.1. �������� ������ �� Netscape
Navigator ����. JDK 1.3.1 �� �������� ����
���������� �� ��������� plig-in �� ����� �� Sun. ������ ������ ��������� ����� Microsoft
� Sun, Inetrnet Explorer 6.0 ���� �� ��������
���������� ������, � ���� ���� ������������ ������������ �� Java
plug-in. �� � ���� ����, �� Netscape 6.0 ���� ��
������� ���������� Java ������ � �� ������ �� plug-in. ������ ����������� �������� ��� ��������������
������ ����� ������ ������ �� ���������� JDK 1.1. �
�������� ������ ������ ������� �� �� ������ �� �������� �� ������� �� � �����.
�������� ������� � ������, ����� ���� �� ���������� ��� ������ �� ������ �� ���
� JDK 1.1, ���� �� ������������ �� ���� ������ �� ��
���������� ��������. ������ �� �� ������������, �� ������� �� ����� ������ �
���������� ������ �� JDK �� ��������, �� ���������� ���
������������ � ������������ ������ ������. �������� � java.awt.Component �� JDK
1.2 � ������� ����� getWidth(),
� � JDK 1.1 ��������� �� ���������� �� ��������� �����
� getSize().width. ��� ������������ �� ������� ����� �� ����� ����,
����������� ������ �� �������� ����������� ����������.
������������, ����� ��������� � ��������, ����� � ������, ���������� ���� System.out.println() ����� �� ����� � Java ��������� �� ��������. � �������� �������� �� � ��������
�� ������. � Internet Explorer Java ��������� �� ������� � ������ �View� ����
���� ���� �� ������� �� ������� (Internet Options | Advanced |
Microsoft VM | Java console enabled) � �� ���������� ���������.
���������� �� ������� � ����� ��� Java ��������� �
���������, ���� �� ������ ������������ ������ � ���� �� ������, ������ �����������
� ���������. ������� � �������, � ����� � ������� �� ���������� (�������� Jbuilder ��� IDEA) �������� �������,
� � �������� �� �����. ��������� �� ��� � ������� ��� �������� �� JDK � ������������ �����, ����� �� ����� ��
��������. ���������� appletviewer ��� ������� �� ����������
��������� �������� � ������ �����, ��������� ���� ������� �� �� ��� � � JDK, �������� �� 1.1 � ������ �� �������� ��������������.
����� �� ������� ���������� � ������� �� ��������, ������ �� ���������, �� �
������ ������ �� JDK ���������� ���������� ��
������������ AWT, ����� �� ������ Swing
� �� ������ � ������ javax.swing. ������������ �� Swing � ������ ��
�� ����������, ������ ����� ����� �������� ��������� Swing
����������.
(������ ����������� � ��������� ����)