- PVSM.RU - https://www.pvsm.ru -

Ваше приложение на JavaFX во Вконтакте

На JavaDay [1] в Питере меня задали вопрос: «Пригоден ли JavaFX для написания браузилок — небольших браузерных игр?» Мой ответ: «Да, конечно пригоден», — очевидно, нуждается в подтверждении. Этому и посвящена данная публикация.

В JavaFX 2.1 есть необходимые для такого рода приложений богатые возможности в области графики, анимации, поддержки медиа-контента. Для их использования не нужно изучать новый язык программирования, достаточно знания Java. API [2] сравнительно небольшой. Разобраться в основных концепциях помогут слайды с моей презентации [3]. Для всего остального есть Java community и множество доступных для языка Java библиотек.

Далее речь пойдет о развертывании приложения и добавлении его в социальную сеть ВКонтакте.

Модели развертывания JavaFX-приложений включают в себя, помимо обычного десктопного, еще два web-варианта:

  • jnlp-файл [4] — это на случай, когда приложению нет смысла работать в рамках браузера,
  • и апплет — тот самый вариант, когда приложение работает прямо на странице в браузере

Сеть ВКонтакте [5] легко позволяет использовать апплеты в качестве приложенй. Этим мы и воспользуемся.

Возьмем, для примера, приложение BrickBreaker, которое вместе с исходным кодом можно скачать с официального сайта oracle.com/javafx [6]. Открыв проект в NetBeans [7]-е и скомпилировав его, мы увидим следующее:

Структура файлов для проекта BrickBreaker

Содержимое папки dist:

  • BrickBreaker.jar — файл со скомпилированными классами приложения
  • BrickBreaker.jnlp — jnlp-файл
  • BrickBreaker.html — заготовка веб страницы со встроенным JavaFX-апплетом
  • папка web-files содержит необходимые для отображения html-страницы файлы и, в частности dtjava.js — javascript-файл, загружающий JavaFX апплет на страницу

Для добавления приложения в контакт нам потребуются все эти файлы (за исключением jnlp) разместить на каком-нибудь хостинге [8], например, на сайте Narod.ru [9]. После загрузки файлов на сервер имеет смысл проверить, что страница BrickBreaker.html доступна и запускает наше приложение прямо в браузере.

Далее идем в контакт на страницу Разработчикам [10] и нажимаем Создать приложение. Вводим название и выбираем тип IFrame/Flash приложение.

Заполненная форма приложения в контакте

После ввода кода подтверждения переходим во вкладку Настройки, выбираем тип приложения IFrame и указываем адрес IFrame — ссылку на BrickBreaker.html с вашего сайта. Сохраняем изменения.

Настройки контейнера

Приложение практически готово. Как показывает практика, оно уже будет работать и в Google Chrome 18, и в Internet Explorer 8. Однако, более осторожный Firefox 12 его заблокирует. Причина в том, что в файл dtjava.js закралась ошибка [11]: происходит обращение к top.execScript, что для кросс-доменных вложенных фреймов, вообще говоря, запрещено. Для исправления этой ситуации необходимо заменить все вхождения строки «top.execScript» на «window.execScript» в web-files/dtjava.js на вашем сервере.

Диагностика ошибки в Firebug

Остальное — мелочи: убрать лишний текст из html файла и привести в соответствие размера апплета. Теперь Ваше JavaFX приложение работает в контакте:

image

С помощью JavaFX 2.1 легко создавать приложения для социальной сети ВКонтакте. В следующей публикации я покажу, как можно взаимодействовать с ВКонтакте API для получения информации о пользователе и выполнении других операций.

Автор: mrkam


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/vkontakte/6975

Ссылки в тексте:

[1] JavaDay: http://www.oracle.com/technetwork/ru/javaday-spb-2012-10feb-1485738-ru.html

[2] API: http://docs.oracle.com/javafx/2/api/index.html

[3] презентации: http://www.slideshare.net/Alexander_K/javafx-21-java

[4] jnlp-файл: http://ru.wikipedia.org/wiki/Java_Web_Start

[5] ВКонтакте: http://vk.com

[6] oracle.com/javafx: http://www.oracle.com/technetwork/java/javafx/downloads/index.html

[7] NetBeans: http://netbeans.org/

[8] хостинге: http://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3

[9] Narod.ru: http://narod.yandex.ru/

[10] Разработчикам: http://vk.com/developers.php

[11] ошибка: http://javafx-jira.kenai.com/browse/RT-17885