Applet Java

Un applet è una particolare applicazione Java, eseguita all’interno di pagine Web.
Per compilare un applet tramite riga di comando occorre dare lo stesso comando che si da per compilare una normalissima applicazione java:

javac nomeapplet.java

Questo comando, salvo errori di compilazione, genera un file di estensione .class, che sarà il file che dovremmo includere nella nostra pagina web utilizzando il tag HTML:

<APPLET CODE=”…/nomeapplet.class” WIDTH=”300″ HEIGHT=”200″>

L’attributo “code” indica il path (percorso) e il nome dell’applet, mentre “width” e “height” indicano larghezza e altezza,
in questo caso quindi abbiamo riservato all’applet di nome “nomeapplet.class” uno spazio di 300×200 all’interno della nostra pagina.

Per creare un applet occorre innanzitutto definire una classe che prende il nome del nostro applet,
essa deve necessariamente essere sottoclasse di Applet e di tipo public.

Mentre per le normali applicazioni in Java il corpo principale del programma è costituito dal metodo main(), che viene eseguito automaticamente
all’avvio, l’attivita degli applet è completamente guidata dagli eventi attraverso una serie di metodi ereditati dalla classe Applet (chiamati metodi principali).
Questi metodi sono:

– init()
Questo metodo gestisce l’inizializzazione, che avviene al caricamento in memoria dell’applet.
Esso può provvedere a effettuare alcune operazioni del tipo: inizializzare le variabili istanza, importare determinate risorse,
effettuare impostazioni che determinano uno stato iniziale, ecc…

– start()
Questo metodo viene richiamato subito dopo l’inizializzazione e provvede all’avvio dell’applet.
Un applet può essere avviato più volte (ad esempio in seguito a un arresto avvenuto a causa del collegamento ad un altra pagina web),
invece l’inizializzazione è eseguita una sola volta.

– stop()
Questo metodo determina l’arresto dell’applet ed è richiamato automaticamente quando la pagina Web in cui è caricato l’applet viene
abbandonata dall’utente. Esso è utile per interrompere l’esecuzioni di eventuali thread (attività in background) avviate dall’applet.

– destroy()
Questo metodo serve per pulire la memoria prima di abbandonare l’applet, anche se in genere non è necessario poichè il metodo stop()
esegue già tutte le operazioni necessarie a questo scopo.

– paint()
Questo metodo provvede a mostrare sullo schermo tutto quello che dev’essere visualizzato dall’applet, viene eseguito automaticamente all’avvio
dell’applet e tutte le volte che si verificano eventi particolari (come il ridimensionamento/spostamento della finestra del browser).
Esso può comunque essere richiamato in qualsiasi momento effettuando una chiamata a repaint() che non fa altro che ridisegnare lo schermo.
Inoltre, questo metodo accetta come parametro un oggetto della classe Graphics, che viene passato automaticamente dal browser.

La struttura di un applet è quindi di questo tipo:

import java.applet.*;
public class nomeapplet extens Applet
{
	...
	public void init()
	{
		...
	}
	public void start()
	{
		...
	}
	public void stop()
	{
		...
	}
	public void destroy()
	{
		...
	}
	public void paint(Graphics g)
	{
		...
	}
	...
}

Anche se non è obligatorio ridefinire i metodi principali degli applet, nel caso di applet semplici si possono utilizzare i metodi predefiniti forniti
dalla classe Applet (senza alcuna modifica).

Grazie a questo script in JS, possiamo aggiungere all’interno del nostro sito uno script che genera un messaggio (sotto forma di alert) visualizzabile soltanto dagli utenti di Internet Explorer per indurli a cambiare browser (per chi non lo sapesse Internet Explorer è un pessimo browser, non voglio aggiungere ulteriori commenti su questo ma basta fare una ricerca su google per trovare informazioni a riguardo…).

Il codice è il seguente:

<!--[if IE]>
<script language="JavaScript" type="text/javascript">
document.write(alert("Questo è il testo che verrà visualizzato nell'alert"));
</script>
<![endif]-->

Ad esempio all’interno di questo sito ho messo il seguente script:

<!--[if IE]>
<script language="JavaScript" type="text/javascript">document.write(alert("Salve visitatore, se leggi questo messaggio significa che stai navigando utilizzando Internet Explorer. Ti sconsigliamo caldamente di navigare utilizzando Internet Explorer poichè è lento e poco sicuro. Se non sai quale browser scegliere, puoi scaricare gratuitamente Mozilla Firefox, un ottimo browser leggero sicuro ed Open Source."));
</script>
<![endif]-->

Se volessimo realizzare un programma in C che permetta all’utente di scegliere se far partire dei sottoprogrammi (o modalità diverse del nostro programma) presentando un Menù di scelta, che consenta comunque (se desiderato) di ritornare ogni volta che viene eseguito un sottoprogramma di tornare al menù principale e di effettuare nuovamente la scelta, dovremmo realizzare un Menù Dinamico.

Vi riporto l’esempio di un Menù Dinamico che ho realizzato: questo programma consente la scelta di 5 funzioni (ma se ne possono benissimo aggiungerne altre!). Nel momento in cui l’utente sceglie la funzione che desidera, lo schermo viene pulito e la funzione scelta viene eseguita. Al termine di questa viene lanciata una pausa semplice (cioè il programma si ferma fino a quando l’utente non preme un tasto qualsiasi), dopo di chè lo schermo viene nuovamente pulito e appare all’utente la possibilità di ritornare al Menù Principale o di uscire dal programma. Se l’utente sceglie di si, lo schermo viene nuovamente pulito e il programma ritorna al Menù Principale. Questa operazione si può ripetere all’infinito.

La dichiarazione della libreria stdlib.h serve per le funzioni system() (cls e pause) anche se, se si dispone di un compilatore abbastanza aggiornato, la dichiarazione di questa libreria non è necessaria poichè quelle funzioni sono contenute in stdio.h.

#include <stdio.h>
#include <stdlib.h>

void menu();
/*Elenco dichiarazioni delle funzioni personalizzate*/
void funzione1();
void funzione2();
void funzione3();
void funzione4();
void funzione5();
/*Fine dichiarazione funzioni*/

int main()
{
	menu();
	return 0;
}

void menu()
{
	int scelta;
	char torna;
	do
	{
        system("cls");
		printf("Menu' principale nn");

		/*Inizio elenco delle funzioni disponibili in output*/
		printf(" [1] Funzione1 n");
		printf(" [2] Funzione2 n");
		printf(" [3] Funzione3 n");
		printf(" [4] Funzione4 n");
		printf(" [5] Funzione5 n");
		/*fine elenco funzioni*/

		printf("nEffettua la tua scelta: ");
		scanf("%d",&scelta);

		/*Inizio struttura di controllo per permettere la scelta
		della funzione desiderabile, è possibile inserire altre funzioni*/
		switch (scelta)
		{
			case 1:
				system("cls");
				funzione1();
				system("pause");
				system("cls");
				break;
			case 2:
				system("cls");
				funzione2();
				system("pause");
				system("cls");
				break;
			case 3:
				system("cls");
				funzione3();
				system("pause");
				system("cls");
				break;
			case 4:
				system("cls");
				funzione4();
				system("pause");
				system("cls");
				break;
			case 5:
				system("cls");
				funzione5();
				system("pause");
				system("cls");
			/*Prima di questo commento è possibile inserire altre funzioni*/
                system("cls");
				break;
			default:
				printf("Numero non valido n");
		}
		printf("Si desidera tornare al Menu' Principale?nn");
		printf("[y] Si, desidero tornare al Menu' Principale n");
		printf("[n] No, desidero uscire nn");
		printf("Effettua la tua scelta: ");
		scanf("%s",&torna);
	}
	while (torna!='n');
}

/*Inizio implementazione funzioni personalizzate,
È possibile modificarle o aggiungere altre funzioni*/

void funzione1()
{
     printf("Questa è la funzione 1, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione2()
{
     printf("Questa è la funzione 2, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione3()
{
     printf("Questa è la funzione 3, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione4()
{
     printf("Questa è la funzione 4, è possibile modificarla o aggiungere altre funzioni!nn");
}

void funzione5()
{
     printf("Questa è la funzione 5, è possibile modificarla o aggiungere altre funzioni!nn");
}

Per inserire un form in una pagina web bisogna utilizzare innanzitutto il seguente tag HTML per far si che le informazioni inserite dall’utente vengano memorizzate dentro variabili PHP:

<form action=”output.php” method=”post”>

L’attributo “action” indica il file contenente lo script in PHP a cui inviare i dati inseriti dall’utente, che verranno memorizzate ognuna in una variabile distinta.

Poi bisogna usare il tag per inserire il form vero e proprio:

Inserisci un dato: <input type=”text” name=”Dato1″>

L’attributo “name” serve a personalizzare il nome della variabile, in modo tale che tutti i dati vengano memorizzati in variabili ben distinte. In PHP il nome esatto di questa variabile sarà  “$_REQUEST[Dato1]“.

Se vogliamo provare il tutto, possiamo inserire nello script in php (in questo caso nelo file output.php) un istruzione che stampi a video il dato inserito dall’utente. In questo caso l’istruzione sarebbe:

print(“<p>É stato inserito: $_REQUEST[Dato1]</p>”);

Ecco un esempio di come potrebbe essere realizzato un programma in PHP che chiede all’utente il proprio nome e successivamente saluti l’utente, utilizzando un form.

In una pagina qualsiasi di formato .html inseriamo il seguente codice:

<html>
<head>
<title>Form</title>
</head>
<body>
<form action=”output.php” method=”post”>
<p>Ciao, come ti chiami? <input type=”text” name=”Nome”></p>
<br><br>
</body>
</html>

In un file apparte (nella stessa directory) che chiameremo output.php inseriamo lo script che stampa a video il nome che l’utente ha inserito:

<html>
<head>
<title>Output</title>
</head>
<body>
<?php
print(“<p>Ciao $_REQUEST[Nome]</p>”);
?>
</body>

Fatto ciò aprendo il file html che abbiamo creato e inserendo un nome, premendo invio il dato che inseriamo verrà passato allo script php e memorizzato nella variabile $_REQUEST[Nome] e verrà stampato su schermo.