Я создаю приложение Java, которое будет выполнять некоторую обработку, а затем должно отобразить сообщение для обратной связи с пользователем.
Однако, это кажется невероятно медленным - возвращение занимает более двух секунд.
Я сократил источник до очевидного виновника, и вот код, используемый:
package SwingPlay;
import javax.swing.JFrame;
public class Dialog
{
public static void main( String[] args )
{
JFrame frame = new JFrame( "DialogDemo" );
}
}
Я выполняю это из командной строки с помощью:
java -classpath . SwingPlay.Dialog
Как видите, я ничего не делаю, но создаю JFrame, даже не отображая его.
Если это уместно, вот мой java -version
вывод:
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
И это (в настоящее время) работает с Win XP SP2.
<Ч />
Итак, первый вопрос: почему это так медленно?
Что более важно, я просто хочу, чтобы простое сообщение (GUI, а не cmdline) отображалось без задержки - может кто-нибудь предоставить какой-нибудь код для этого?
<Ч />
Обновление:
Может пригодиться немного фона:
Я создаю приложение, у которого будет много «головок» (то есть разные пользовательские интерфейсы, использующие одни и те же базовые классы для выполнения сложных частей).
В настоящее время у меня есть чистый заголовок командной строки, который работает нормально - отвечает сразу.
У меня также будет стандартное приложение с обычным графическим пользовательским интерфейсом, и я не предвижу проблем с этим битом.
В настоящее время я работаю над гибридом этих двух компонентов - он будет запущен из окна «Выполнить» (или аналогичного средства запуска), возможно, с аргументами, и ему нужно только эффективно ответить сообщением о состоянии, которое может быть отклоненным нажатием клавиши.
Последний вопрос, на котором сосредоточен вопрос.
Хотя я не против использования моей существующей версии командной строки со сценариями оболочки (хотя я и не думал, что это будет необходимо!), Существующие ответы, похоже, говорят о том, что для меня все работает не так быстро, как для другие - один пример занимает 1460 мс для меня, а 70 мс - существенная разница.