A resposta para a pergunta do título é JApplet. Sempre que for escolher entre componentes AWT x Swing, escolha Swing.
Quanto ao debug, é possível fazer se você estiver usando uma IDE (Eclipse, Netbeans… eles rodam o JApplet pelo AppletViewer e permitem um debug, inclusive passo-a-passo).
E quanto ao programa, é perfeitamente possível fazer em um JApplet. Só não se faz do mesmo jeito. Em Swing, usá-se o padrão Observer, que define Events e Listeners (isso em todo Swing, não só em JApplets). Veja um exemplo:
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JApplet;
public class NewJApplet extends JApplet {
private Point p;
@Override
public void init() {
p = new Point(100, 100);
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
p.x = e.getX();
p.y = e.getY();
repaint();
}
});
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawString("x:" + p.x + " y:" + p.y, p.x, p.y);
}
}