�������� ������������ � Java � ���� 4

�����: ������� �����,

�������� ����������� ���. ������� ��������

Web-site: http://www.nakov.com

�������� �������: 19.07.2002

 

� ����������� ���� ��������� ��� �� ������ � UDP � Multicast ������, � ���� ���� � ���������� ����� �� ���� ����������� Java �� ������ �� URL �������. � ���� ����������� ������� ���� �� ����� ������� ���� �� ������������ �� Java �� �������� � ������ ��� ������. �������� �� �� �� ��������� � ������� ���� �� ����� � ���������� �� 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 � �� ������ �� �� ������� ����, ����� �� � ���������� �� �� ����� ������. �������� �������� �� ������������ ���� �� �� ������ �� ����� �� ����� ��������� ������������ � Javahttp://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 ����������.

(������ ����������� � ��������� ����)