Java-приложение работает медленнее из-за запуска в Интернете - PullRequest
1 голос
/ 22 ноября 2010

Я пытаюсь развернуть приложение Java с помощью Java Web Start, но я столкнулся с проблемой.При запуске приложения через мою среду IDE (Netbeans) оно работает молниеносно;все происходит в считанные секунды.Однако, если он запускается с Web Start, он мучительно медленный.

Есть идеи, почему?

Я сам все подписываю и использую полные разрешения в JNLP.

Ответы [ 2 ]

2 голосов
/ 22 ноября 2010

Приложения Java Web Start всегда будут запускаться медленнее, чем непосредственно через исполняемый файл java.Это связано с тем, что Java Web Start делает гораздо больше, чем стандартный java запуск:

  1. JWS обращается к сети для загрузки JNLP (и, возможно, JAR-файлов и других ресурсов)
  2. JWS проверяет свой локальный кэш JAR-файлов, чтобы узнать, может ли он пропустить загрузку JAR-файлов
  3. JWS потенциально может загружать JAR-файлы по HTTP, если кэш-память пуста или устарела
  4. JWS проверяет действительность криптографически надежных сигнатур каждой банки

Я думаю, что большая часть этого является неизбежной ценой за дополнительную возможность запуска вашего приложения через Интернетбраузер и обновите ваше приложение практически «бесплатно».


Другая возможность: работает ли ваше приложение с другой виртуальной машиной, когда вы запускаете через веб-запуск, и когда вы запускаете с NetBeans?Вы можете попробовать напечатать:

System.getProperty("java.home")

, чтобы узнать, какая виртуальная машина выполняет текущий выполняемый процесс.

Если это та же виртуальная машина, вы также можете попробовать diffing theСистемные свойства Java между двумя сценариями.Попробуйте распечатать все свойства системы:

System.getProperties().store(System.out, "");

Wireshark можно использовать для диагностики сетевых проблем Java Web Start.


Иногда Java Console и Java Web Start Logging могут быть полезны при диагностике определенных проблем JWS.Вы можете включить эти функции через Панель управления Java :

alt text

1 голос
/ 22 ноября 2010

Вы можете включить полную регистрацию в консоли Java и увидеть все, что Java Web Start выводит на печать отладочной информации. Затем вы можете увидеть, где происходят паузы, что может дать вам указание на проблему.

Мое первоначальное предположение: у вас проблемы с DNS, особенно если паузы очень близки к значению, кратному 30 секундам.

...