Java GUI чрезвычайно медленный

Я пишу приложение на Java, и мой графический интерфейс Ubuntu 11.10 работает очень медленно. Требуется несколько секунд, чтобы ответить на какое-то действие. Он работает безупречно как в Max OS X, так и в Windows 7, на самом деле он отлично работает на новом Ubuntu 11.10 (32- и 64-битном) VirtualBox, работающем на Win7.

Я уже пробовал три разные версии Java, и это не помогло. В чем может быть проблема?

Текущая версия Java:

java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
3
задан 25 February 2012 в 23:44

2 ответа

По твоему описанию, я бы сказал, что это проблема с видео драйвером. Поиск проблем, связанных с производительностью вашей видеокарты в Ubuntu. Внутри виртуальной машины ubuntu использует драйвер, специфичный для виртуальной машины, который не имеет ничего общего с аппаратным обеспечением

.
0
ответ дан 25 February 2012 в 23:44

Возможно, вы захотите попробовать установить версию 1.7 (oracle's, а не openjdk) и убедиться, что это активная версия, используя альтернативы обновления и java -version.

Обратите внимание, однако, что Java не является быстрой технологией. Ваши приложения компилируются в промежуточный байт-код, который должен интерпретироваться довольно тяжелым приложением, называемым JVM. Хотя я не помню, чтобы когда-либо происходило многократное отставание интерфейса, я знаю, что GUI, написанный на Java, имеет тенденцию быть медленным.

Я никогда не замечал никакой разницы между windows 7 и ubuntu / opensuse (каждый из которых 64-битный), но это может быть связано с версией: я всегда получаю последнюю официальную версию Java SDK (то есть от Oracle).

-

Хотя это может быть не тот ответ, который вы хотели бы услышать, если вам явно не нужна java (что, возможно, понадобится вам, если вы нацелены на мобильные устройства) и / или если производительность важна для вашего приложения, вы можете поискать альтернативу, скомпилированную с нуля. C ++ с Qt будет отличной альтернативой, если вы знакомы с C ++. Он сохраняет ваше приложение кроссплатформенным, не влияя на общую производительность.

Mono / C # поставляется с опцией предварительной компиляции байт-кода, поэтому у вас в основном есть собственный исполняемый файл с включенной моно-средой выполнения (тяжелый при запуске, но быстрее, чем Java во время выполнения).

0
ответ дан 25 February 2012 в 23:44

Другие вопросы по тегам:

Похожие вопросы: