Статьи

Профилирование мобильных приложений JavaFX

ПРИМЕЧАНИЕ. Эта статья была впервые опубликована в 2009 году и представлена ​​для справочных целей. Пожалуйста, ознакомьтесь с остальными нашими статьями о JavaFX .

Сегодня великий день для каждого разработчика мобильных приложений JavaFX. Вы удивляетесь, почему? Потому что JavaME SDK 3.0 был выпущен. Судя по тому, что я слышал во время наших обеденных перерывов, это была долгая, тяжелая работа, но результат — фантастический инструмент. Поздравляю всю команду, и я с нетерпением жду, чтобы отпраздновать этот запуск с вами, ребята!

Некоторым сейчас может быть интересно, JavaME SDK — JavaFX Mobile, где связь? JavaME SDK наконец-то обеспечивает хорошо скрытую функциональность JavaFX Mobile: профилирование, что делает его наиболее важным инструментом для разработчиков JavaFX Mobile, на мой взгляд. (Хорошо, может быть, я немного предвзят, потому что моя повседневная работа — это производительность …)

Ах да, верно. JavaME SDK также является отличным инструментом для разработки приложений JavaME — по крайней мере, это то, что я слышал.

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

Включение профилировщика

Чтобы включить профилирование приложения JavaFX Mobile, необходимо изменить настройки виртуальной машины. Это удобно сделать, просто изменив свойства одного из предопределенных устройств (в качестве альтернативы вы можете явно указать новое устройство для профилирования.) Чтобы включить профилирование с устройством по умолчанию DefaultFxPhone1, откройте файл device.properties в ~ / javafx-sdk / 1.1 / work / 0, который находится в вашей домашней папке. Вам необходимо запустить эмулятор хотя бы один раз, чтобы папка и файл были созданы. Если вы посмотрите на контент, он будет выглядеть примерно так:

01
02
03
04
05
06
07
08
09
10
11
12
#
# Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
phone.number: 123456789
runtime.internal.com.sun.io.j2me.apdu.hostsandports = localhost:9025,localhost:9026
profiler.enabled: false
profiler.file: data.prof
netmon.enabled: false
runtime.internal.JAVA_HEAP_SIZE: 15728640
runtime.internal.MAIN_MEMORY_CHUNK_SIZE: 26214400
runtime.internal.microedition.locale: en-US

Содержимое файла device.properties

Для профилирования нас интересуют только свойства profiler.enabled и profiler.file. Включите профилирование, установив флаг profiler.enabled:

1
profiler.enabled: true

Свойство profiler.file определяет, где будут храниться данные профилирования. Если вы не измените значение по умолчанию, оно будет сохранено в файле data.prof в том же каталоге, что и device.properties. После изменения свойств необходимо перезапустить эмулятор и диспетчер устройств.

Запуск профилирования

Когда вы сейчас запускаете приложение в эмуляторе, оно будет профилировано. После завершения приложения результат будет сохранен в файле, настроенном в device.properties. Имейте в виду, что если вы запустите два приложения, то при завершении второго приложение данные профилирования первого приложения будут перезаписаны, поэтому обязательно скопируйте файл перед запуском второго приложения.

При профилировании необходимо учитывать две проблемы. Прежде всего, профилируемое приложение работает крайне медленно. На самом деле он работает так медленно, что любое взаимодействие с пользователем очень сложно, если не невозможно. Лучший вариант — сделать ваш тест полностью автоматизированным без участия пользователя. Медленное выполнение также влияет на анимацию, почти все кадры будут отброшены при профилировании. Вы можете изменить продолжительность анимации, если важно выполнить больше кадров.

Другая проблема, которую следует учитывать, заключается в том, что виртуальной машине требуется некоторое время для записи данных профилирования в файловую систему после завершения работы приложения. Если вы закроете окно эмулятора напрямую, виртуальная машина будет немедленно остановлена, а файл с данными профилирования обычно поврежден.

Одним из решений этой проблемы является завершение приложения. Вы можете вызвать FX.exit (), чтобы выйти из приложения JavaFX в любое время. Если вам нужно остановить приложение вручную, нажмите красную кнопку отмены на устройстве. Это поместит приложение JavaFX в фоновый режим и покажет AMS (систему управления приложениями). Оттуда вы можете завершить приложение, не останавливая виртуальную машину, выбрав работающее приложение и выбрав «Конец» в меню.

Просмотр данных профилирования

Это — то, где JavaME SDK наконец вступает в игру. Запустите SDK и выберите запись «Импортировать снимок Java ME SDK…» из меню «Инструменты», чтобы загрузить файл, созданный в сеансе профилирования. Это откроет представление, подобное окну профилировщика в NetBeans, и предоставит вам простое в использовании представление сгенерированных данных.

Ссылка: Профилирование мобильных приложений JavaFX от нашего партнера по JCG Майкла Хайнрихса в блоге Mike’s Blog .