Ragazzi ho questo codice:

codice:

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JTabbedPane;


import org.jfree.data.time.Millisecond;


public class MeteoClientApplet extends JApplet {
	/**Indirizzo IP del server collegato alla centraline meteo*/
	public InetAddress servAddress; 
	/**Porta TCP del server*/
	public int port;
	/**Porta TCP predefinita*/
	private static final int PORT=8885;
	/**Messaggio avvio sessione in real time*/
	private static final String mexreal="---REALTIME---";
	private static final String mexhistory="---HISTORY---";
	private static final String mexclose="---STOP---";
	/**Socket di scambio dati tra client e server*/
	Socket link;
	/**Percorso di salvataggio del file currdat.lst, lato client*/
	private static final String currdatpath="C:/Percorso/File1";
	private static final String historypath="C:/Percorso/File2";
	private static final String historycsv="C:/Percorso/File3";

	/**Stream di comunicazione da associare al socket tra client e server*/
	private  ObjectInputStream in;
	ObjectOutputStream out;
	private AppletGUI clientgui;
	private Boolean session;
	/**Pacchetto informazioni ricevute in real time dal file currdat.lst*/
	private CurrdatPacket currdat;

	
/*	public MeteoClientApplet(InetAddress servAddress, int port){
		this.servAddress=servAddress;
		this.port=port;
	}*/
	
	@SuppressWarnings("deprecation")
	public void init(){
		
		
		link=null;
		try{
			InetAddress servAddress = InetAddress.getByName("localhost");
    		        port=PORT;
			link=new Socket(servAddress, port);
			session=true;
			//Creazione degli stream sul socket di comunicazione
			setOut(new ObjectOutputStream(link.getOutputStream()));
			in=new ObjectInputStream(link.getInputStream());
			
			currdat=null;
				try{
				for(int i=0; i<1; i++){	
					getOut().writeObject(mexhistory);
					getOut().flush();
					getOut().reset();
					
					
					//lettura del file currdat.lst dallo stram di input
					//utilizza metodo readObject di ObjectInputStream per ricevere il file
					//dal server facendo un cast di tipo da Object a byte[]
					byte[] byteArray = (byte[])in.readObject();
					//crea oggetto FileOutputStream per ricevere dati
					FileOutputStream mediaStream;

					mediaStream = new FileOutputStream(historypath);
					
					//utilizza metodo write di FileOutputStream per riempire il file
					//con array di byte
					mediaStream.write(byteArray);
					mediaStream.close();
					System.out.println("history.dat ricevuto");
					
				}
				Runtime rt=Runtime.getRuntime();
				Process proc=rt.exec("C:/Percorso/eseguibile/file.exe");
				try {
					proc.waitFor();
				} catch (InterruptedException e1) {
					System.out.println("Interruzione nell'esecuzione di readHH.exe");
				}		
				
		MaxMin maxmin=new MaxMin();
		

                 /*client gui è un TabbedPane Con dei grafici e componenti di jfreechart*/

                  //INIZIO PARTE INCRIMINATA

		clientgui=new AppletGUI(link, out, maxmin, historycsv);
		this.setContentPane(clientgui);
		this.setSize(new Dimension(1102, 700));
		this.setVisible(true);
		
		while(session){
						
			//Invio messaggio per ricevere dati in real time
			getOut().writeObject(mexreal);
			getOut().flush();
			getOut().reset();
			
			String response=(String)in.readObject();
			if(response.equals("---OFFLINE---")){
				session=false;
			}else{
			System.out.println(response);
			//Ricezione del pacchetto informativo
			currdat=(CurrdatPacket)in.readObject();
			System.out.println("Pacchetto ricevuto --- "+ new Millisecond());
			
			//Metodi Lettura ed inserimento dei dati contenuti nel pacchetto informativo
			//Nell'interfaccia grafica
			
		...	}
			
			
			
			//Data ricezione pacchetto in real time
			Date now=new Date();
			
			
			//Scrittura informazioni in real time su file history.dat
			try {
	            FileWriter fileout = new FileWriter(historycsv, true);
	            BufferedWriter filebuf = new BufferedWriter(fileout);
	            PrintWriter printout = new PrintWriter(filebuf);
	            
	            StringBuffer buffer=new StringBuffer();
	            buffer.append("realtime;");
	            buffer.append(now.getDate()+"/"+(now.getMonth()+1)+"/"+(now.getYear()+1900)+
	            		" "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+";");
	           //Scrittura vari dati....

	            String historyrow=buffer.toString();
	         
	            
	            printout.println(historyrow);
	            printout.close();
	    } catch (Exception e) {
	            System.out.println("ERRORE: "+e);
	    }
	    
	
//Può questo sleep che dà fastidio????


		try {
			Thread.sleep(60000);
		} catch (InterruptedException e) {
			System.out.println("Interruzione");
		}
			}
		}
		}catch(IOException ioe){
			System.out.println("Host non raggiungibile. Il server è offline");
		} catch (ClassNotFoundException nfe) {
			System.out.println("Formato del messaggio non riconosciuto");
			}
									
	//	out.writeObject("---STOP---");
		link.close();
		
		}catch(IOException ioe){
			System.out.println("Problema con l'associazione degli stream al Socket");
			} 
		
		
	}	
		  
	public void setClientgui(AppletGUI clientgui) {
		this.clientgui = clientgui;
	}

	public AppletGUI getClientgui() {
		return clientgui;
	}

	public void setOut(ObjectOutputStream out) {
		this.out = out;
	}

	public ObjectOutputStream getOut() {
		return out;
	}
}
Il problema è questo. Si tratta di un applet firmata, che legge e scrive normalmente da file.
Viene usata in collegamento con un applicazione server. Succede che, nel momento in cui la visualizzo sull'applet viewer, tutto va a meraviglia: La logica funziona e la grafica viene visualizzata. Quando viene caricata sul browser, con relativo file html, la logica del programma va avanti correttamente, ma mi compare solamente il logo di caricamento di java, che gira, senza riuscire mai a farmi apparire l'interfaccia grafica. Le scritture su file e i vari scambi dati vanno a meraviglia, ma il caricamento dell'interfaccia grafica va all'infinito (?). Sono stato dieci minuti, per vedere se riuscivo a visualizzare qualcosa...ma niente. Il comando Thread.sleep(), può esserne la causa? Se sì, come ovviare?
Consigli vari?

Caricando solo l'interfaccia grafica, senza logica di scambio client- server, si riesce a visualizzare il tutto...quindi, non credo sia un problema di pesantezza dei componenti.