Os Applets são aplicações que utilizam recursos da máquina virtual java dentro de navegadores web com algumas limitações de segurança. Na verdade esta segurança é muito bem elaborada desenhando uma arquitetura robusta e inteligente, tanto, que até as aplicações de bancos que efetuam transações bancárias online oferecem serviços com qualidade, velocidade e alta segurança utilizando a linguagem java.

Os applets estão sobre um espécie de container de segurança, respeitando as regras que a máquina virtual java exige destas aplicações, como acesso a recursos de sockets de rede, leitura/gravação de arquivos em disco etc.

Quando entrei no mundo java na versão 1.2, só o que ouvia de outros programadores era que a linguagem não vingaria, que existia alternativas mais inteligentes e robustas. Porem o que vemos hoje é empresas aderindo a linguagem java para servidores e aplicações desktops, alegando a capacidade desta arquitetura suportar multiplataformas, uma gama de Frameworks e recursos diversos, agilidade no desenvolvimento, manutenção de código menos ardua e outros elogios que alevam o patamas desta linguagem de software.

Com as aplicações de internet requisitando novos recursos para uma internet mais ricas (RICS), java oferece os applets para implementar recursos que somente o HTML e o javascript não podem oferecer aos usuários cada vez mais exigentes.

A exibição de um applet em uma página HTML pode ser exibida de duas formas, uma pelas tags e “applet” e a outra pela tag “object”. Ainda existe um recurso que pode ser utilizado para inserir applets java com a linguagem javascript, podendo ser encontrado no site da Oracle (dtfx). Este recurso pode inserir applets java dinamicamente verificando a interoperabilidade entre navegadores web e a disponibilidade da máquina virtual java.

Vejamos um examplo, que utiliza o script “js” para inserir uma aplicação FX em uma página HTML:





RippleEffect

RippleEffect





Agora suponhamos que exista um arquivo chamado Samples1.class e queremos exibi-lo em nossa página de internet, então utilizamos da seguinte maneira:



ou



Para a criação de uma aplicação Applet, existem 5 métodos que são chamados automáticamente, são eles:


public void init();
public void start();
public void paint(Graphics g)
public void stop()
public void destroy()

vejamos cada um deles:

public void init();

O método “init()” é o primeiro a ser chamado não tendo qualquer valor como retorno. Este método é chamado apenas uma vez , no carregamento do Applet java, sendo ideal para inicialização de variaveis e recursos da aplicação que devem estar configurados antes mesmo do carregamento da interface visual com o usuário.

public void start();

Este método é disparado logo após o metodo “init()” sendo executado toda vez que o applet java recebe o foco ou é chamado, uma exemplo é quando você minimiza o browser e posteriormente maximiza-o dando novamente foco na página web que contém o applet. Este método é ideal para disparar ações que devem reconfigurar o applet toda vez que ele for chamado como animações etc.

public void paint(Graphics g);

O método “paint()” é disparado na exibição do applet na tela, ou seja quando a aplicação e apresentada visualmente no navegador web para o usuário. Também é executado quando o applet sofre alterações como redimencionamento exigindo que a aplicação seja redesenhada.
Este método dispara automaticamente outros dois métodos herdados da classe java.applet:

public void repaint() | public void update(Graphics g)

Uma observação é que o método “repaint()” não deve ser sobrescrito, pois possui dependências da máquina virtual java, portando deve-se ter muito cuidade para não ter problemas com sua aplicação ao efetuar tal operação.

Já o método update pode ser sobrescrito, você pode fazer isso a fim de cancelar a operação de “repaint()”.

public void stop();

O método “stop()” para a aplicação applet pausando sua execução.

public void destroy();

Este método é chamado pelo navegador web para informar ao applet em execução que o mesmo deve desalocar ou destruir os recursos alocados pois a aplicação irá ser encerrada.

Vejamos abaixo uma exemplo prático:


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/*
* Samples2.java
*
* Created on 25/02/2011, 21:11:33
*/

package javaapplication1;

import javax.swing.JOptionPane;

/**
*
* @author fernando
*/
public class Samples2 extends javax.swing.JApplet {

/** Initializes the applet Samples2 */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}

/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {

jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();

jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jTextField1.setText("jTextField1");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(158, 158, 158)
.addComponent(jButton1))
.addGroup(layout.createSequentialGroup()
.addGap(42, 42, 42)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 324, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(34, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(41, 41, 41)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(56, 56, 56)
.addComponent(jButton1)
.addContainerGap(145, Short.MAX_VALUE))
);
}//

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JOptionPane.showMessageDialog(this, "Minha Mensagem aqui !!!", "Informação", JOptionPane.INFORMATION_MESSAGE);
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
// End of variables declaration

}

Aqui o resultado do código acima compilado para código de bytes.