среда, 12 ноября 2008 г.

Mobile Processing

Думала, мой следующий пост (вернее, следующая серия) будет опять про Андроид, ан нет :) Недавно попалась мне одна удивительная штука под названием Mobile Processing. Это инструмент, облегчающий процесс создания мобильных приложений. Обычно, если хочется написать мобильное приложение, надо учить Java, разбираться, как устроен мидлет, какие у него там события, каков жизненный цикл. И, если честно, не могу сказать, что копаться в этом очень приятно.

Другое дело Mobile Processing. Тут вообще необязательно что-либо знать про мидлеты. Есть собственный простой язык, похожий на Java, с помощью которого можно описать логику приложения. Есть IDE, которая выглядит таким образом:

Единственное, что надо настроить в IDE - указать путь к WTK.

После этого мы пишем код, в котором просто определяем функции типа setup(), draw() и т.п., сохраняем все это дело в файл %progname%.PDE потом нажимаем кнопку "Пыщь" - и среда генерит нам jar.

Поясню на примере. Вот программа, написанная за пару минут и позволяющая двигать кружочек по полю, заполненному желтым фоном:

int x, y;
int r = 5;

void setup()
{
 x = 100;
 y = 100;
}

void draw()
{
 background(255, 204, 0);
 ellipse(x, y, 2 * r, 2 * r);switch (keyCode){
  case UP: y--; break;
  case DOWN: y++; break;
  case LEFT: x--; break;
  case RIGHT: x++; break;
  default: break;}
}

void keyReleased()
{
 keyCode = 0;
}

Видно, что код достаточно простой и понятный. Кроме того, если такую программу честно писать на Java, времени уйдет гораздо больше.

Полученный jar-файл весил 46 Кб, но с помощью имеющегося оптимизатора-обфускатора ProGuard его удалось ужать до 7 Кб. Программа запросто запустилась на моей Nokia 2600c, а также на Nokia N73.

В общем, данная тулза привела меня в восторг своей простотой (особенно после монстров типа NetBeans или IDEA, которую все хвалят, но в которой мне так и не удалось создать Mobility-проект). Позиционируется она как средство быстрого создания прототипов приложений, но, честно говоря, возможности у нее не такие уж и слабые. Есть библиотеки для работы с Bluetooth, с камерой и другими возможностями телефона. И самое интересное - оно работает. Единственное, что меня удивляет, так это практически отсутствие упоминаний о данном продукте в рунете. Вроде, и проект не совсем мертвый (последний релиз в июле 2008). Интересно, почему бы это?

Но я в ней еще поковыряюсь, дабы узнать, что там плохо или хорошо. Пока что все обнаруженные минусы относятся к редактору: отсутствие отладчика и IntelliSense, неидеальный keymapping (я люблю, чтобы работали Ctrl+Ins и Shift+Ins, а там только Ctrl+C и Ctrl+V. Хотя, возможно, это настраивается в конфиге, который там далеко спрятан).

Ссылки по теме

7 комментариев:

Yadovit комментирует...

О, спасибо! Интересная вещица. Где нашла? :)

Алексей Ряжских комментирует...

Впечатляет. Люблю, когда кнопка "Пыщщ" делает всё.

darja комментирует...

To yadovit: В гугле нашла :) Собственно, нашла я сначала библиотеку MVideo, на каком-то испаноязычном сайте.

To musuk: Да, я тоже люблю :)

Анонимный комментирует...

Код кошерный - аж глаз радуется, бум пробовать. Благодарю за инфо.

Анонимный комментирует...

It is extremely interesting for me to read the blog. Thanx for it. I like such themes and anything that is connected to this matter. I would like to read a bit more soon.
Alex
Cell phone blocker

(BBk)Blade комментирует...

Спасибо. Буду пробовать. Но среду уже таки забросили, т.к. последняя версия там от 13.04.2008 (апрель, а не июль).

igotm комментирует...

у вас дико интересный блог, сражен просто наповал)))... поставлю на вас ссылку с www.nemehanika.ru

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

вот пример с исходниками, фееричной рисовалочки на нем...:
http://www.nemehanika.ru/cg/pde/i%20painter/