I have an applet which creates a DatagramSocket. Creating the socket takes about 10-13 seconds. When running the same code on my machine within eclipse it is not this slow. Why does it take so long?
Full code:
public class ChessApplet extends JApplet {
private UDPReceiver receiver;
private DatagramSocket socket;
private Thread thread;
private UDPSendImpl sender;
private ChatController chatController;
private MoveLossHandler moveLossHandler;
private ChessController chessController;
@Override
public void init() {
initGUI(getParameter("serverIp"));
}
@Override
public void destroy() {
socket.close();
}
private void initGUI(final String serverIp) {
if (SwingUtilities.isEventDispatchThread()) {
doInit();
} else {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
doInit();
}
});
} catch (Exception e) {
Util.log(e);
}
}
new Thread(new Runnable() {
public void run() {
try {
socket = new DatagramSocket();
sender = new UDPSendImpl(serverIp, socket);
chatController.setSender(sender);
moveLossHandler.setSender(sender);
receiver = new UDPReceiver(moveLossHandler, chessController, chatController, socket);
thread = new Thread(receiver);
thread.start();
sender.requestAllGames();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
moveLossHandler.setSender(sender);
chatController.setSender(sender);
chatController.setChatLoginButtonEnabled(true);
}
});
} catch (final Exception e) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(null, "Unable to start application: " + e.getMessage());
}
});
}
}
}).start();
}
private void doInit() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
try {
JPanel top = new JPanel(new BorderLayout());
top.setBorder(BorderFactory.createLineBorder(Color.BLACK));
ChatView chatView = new ChatView();
chatController = new ChatController(chatView);
JMultipleChessView chessView = new JMultipleChessView();
chessController = new ChessController(chessView);
moveLossHandler = new MoveLossHandler(chessController);
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chessView, chatView);
split.setDividerSize(4);
split.setBorder(BorderFactory.createEmptyBorder());
split.setDividerLocation(0.7d);
split.setResizeWeight(0.7d);
top.add(new HeaderPanel(), BorderLayout.NORTH);
top.add(split, BorderLayout.CENTER);
setSize(new Dimension(800, 600));
add(top);
} catch (Exception e) {
Util.log(e);
}
}
public static JFrame startGUI(String host) throws Exception {
JFrame frame = new JFrame("Test Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
ChessApplet comp = new ChessApplet();
comp.initGUI(host);
frame.getContentPane().add(comp);
frame.setVisible(true);
return frame;
}
public static void main(String[] args) throws Exception {
startGUI("tyken.net");
}
}