Pagini Web, trezite la viață

LiveConnect îmbină posibilitățile oferite de JavaScript,
cu cele oferite de Java.

Publicarea informațiilor pe Internet este o soluție care permite țintirea unui public foarte larg cu o investiție relativ mică. O pagină Web bine realizată atrage foarte mulți vizitatori, dar cum să-i convingem pe aceștia de a se întoarce să mai viziteze acea pagină și altădată? O soluție este să permitem utilizatorului de Web (cel care vizitează pagina) să poată interacționa cu pagina pe care o vizualizează. Pentru a permite această interacțiune, se folosesc formulare HTML, JavaScript, sau Java. Fiecare dintre aceste soluții are propriile avantaje și dezavantaje. Pentru a combina posibilitățile oferite de aceste metode, firma Netscape a introdus tehnologia LiveConnect.

Cu LiveConnect, Netscape permite utilizatorilor un control amănunțit asupra componentelor complexe (apleturi Java, plug-in-uri), înglobate într-o pagină Web, folosind limbajul JavaScript.

Ce este LiveConnect

LiveConnect este o tehnologie introdusă de Netscape, începând cu browserul Netscape Navigator 3.0. Această tehnologie permite colaborarea între plug-in-uri, apleturi Java și JavaScript, așa cum se vede în figura alăturată. De observat că un plug-in nu poate comunica direct cu JavaScript ci prin intermediul unui aplet. Cu ajutorul acestei tehnologii, putem folosi JavaScript pentru a accesa variabilele, metodele, clasele dintr-un aplet, pentru accesarea din Java a metodelor și variabilelor JavaScript, pentru a controla cu JavaScript rularea unui aplet sau a unui plug-in.

Comunicarea JavaScript – Java

Prin LiveConnect, ne este permis ca din JavaScript să putem accesa variabilele și metodele unui aplet Java care este înglobat în pagină, astfel putând influența rularea apletului. Pentru a putea interacționa cu metodele sau câmpurile apletului, trebuie să specificăm un nume pentru aplet, sub care acesta va fi accesat în interiorul documentului. Acest lucru se face în interiorul tagului APPLET:

<APPLET NAME= "myApplet_name" CODE="my Applet.class"  	  
 	  WIDTH=100 HEIGHT= 50>

după care din JavaScript putem apela metodele apletului

<SCRIPT LANGUAGE= "JavaScript">
 	  document.myApplet.repaint();
 	  </SCRIPT>

cu această secvență de cod, putem forța executarea metodei repaint() a unui aplet. Un exemplu simplu este realizarea unui aplet care afișează valoarea unui contor, iar valoarea să poată fi modificată folosind butoane JavaScript:

 import java.applet.*;
 	  import java.awt.*;
 	  public class count extends Applet
 	  {
 	  public int i;
 	  public void init()
 	  {
 	  i=0;
 	  }
 	  public void paint(Graphics g)
 	  {
 	  g.drawString("Contorul este " 
 	  + i, 10,30);
 	  }
 	  public void increment()
 	  {
 	  i++;
 	  repaint();
 	  }
 	  public void decrement()
 	  {
 	  i--;
 	  repaint();
 	  }
 	  }

iar documentul HTML este de forma:

 <html>
  <body>
   <applet name="aplet" code="count.class" 
   width=150, height=50></applet>
   <form>
 	  <input type="button" value="++" 
 	  onmouse down=
 	  "document.aplet.i+
docu ment.aplet.repaint();"> <input type="button" value="--" onmouse down= "document.aplet.decrement();"> <input type="button" value="reset" onmousedown= "document.aplet.init(); document.aplet.repaint();"> </form> </body>
</html>

În acest exemplu, apletul count.class este înglobat în pagina HTML, sub numele „aplet“. Pentru incrementarea contorului, se accesează direct variabila i, pentru decrementare se apelează metoda decrement() a apletului.

LiveConnect permite accesarea de către un aplet a variabilelor, funcțiilor JavaScript din pagină. Pentru a interacționa cu JavaScript, un aplet va folosi clasele care sunt furnizate de Netscape în fișierul java_40. Principalele pachete din acest fișier sunt:
• java
• sun
• netscape.applet
• netscape.net
• netscape.plugin
• netscape.javascript

Aceste pachete vin să extindă cele oferite de JDK sau să le completeze pe cele cu același nume din JDK (java, sun).

Astfel, un programator poate folosi metoda init() a unui aplet pentru a stabili o legătură între aplet și JavaScript:

 public init() {
 	  win=JSObject.getWindow(this);
 	  …
 	  }

apoi, poate folosi metoda mouseEnter pentru a afișa un mesaj:

 public boolean mouseEnter(Event e, int x, int y){
 	  win.eval("alert(\"Hello 
 	  world\");");
 	  return true;
 	  }

Astfel, java detectează intrarea mouse-ului pe suprafața apletului și apelează metoda mouseEnter. De remarcat că, pentru a permite unui aplet, sau plug-in să acceseze variabilele și funcțiile JavaScript din pagină, trebuie să apară cuvântul cheie MYSCRIPT în interiorul tagului <APPLET> sau <EMBED>.

Comunicarea JavaScript – Plug-in

Plug-in-urile sunt mici resurse de cod, nu programe, care rulează în interiorul procesului navigatorului și extind capacitățile navigatoarelor. Acestea sunt făcute pentru a interpreta un anumit tip de informație (fișiere .avi, .aiff etc) în interiorul browserului, la un cost de dezvoltare și păstrare (spațiul de pe disc) minim.

JavaScript poate comunica cu aceste plug-in-uri prin intermediul claselor java, livrate împreună cu pluginul, așa cum se vede în figura „Interacțiunea dintre JavaScript și Plug-in-uri“.

Pentru a îngloba un anumit obiect într-o pagină Web se folosește tagul <EMBED>. Dacă dorim înglobarea unui fișier .avi vom folosi următoarea linie:

<EMBED NAME="myEmbed" SRC=cale\fisier.avi 
 	  WIDTH=100 HEIGHT=100>

La citirea acestei linii, navigatorul va încărca pluginul corespunzător acestui tip de date (.avi), care va interpreta fișierul .avi.

Pentru a interacționa cu plug-in-ul, trebuie să aveți clasele AviObserver.class și AviPlayer.class livrate împreună cu Netscape, împachetate în fișierul npavi.zip. Folosind metodele acestor clase, JavaScript poate interacționa cu plug-in-ul.

Astfel, putem scrie următoarea secvență de cod într-un fișier HTML:

<FORM>
 	  <INPUT TYPE="button" VALUE="START "
onClick="document.myEmbed.start()"> <INPUT TYPE="button" VALUE="STOP"
onClick="document.myEmbed.stop()"> </FORM>

Cu această secvență, am introdus două butoane cu valorile START și STOP, care dacă sunt apăsate cu mouse-ul vor determina pornirea (START), respectiv oprirea (STOP) animației.

Referințe
Andrew Wooldridge and Mike Morgan: Using JavaScript, Que Corporation 1997
http://hpv17.infosys.tuwien.ac.at/javascript/
http://www.neca.com/~vmis/lconnect.htm
http://home.netscape.com/comprod/products/navigator/
version_3.0/building_blocks/liveconnect/index.html

http://www.tesre.bo.cnr.it/Manuals/PluginSDK30b5


BYTE România - noiembrie 1997


(C) Copyright Computer Press Agora