В марте этого года вышла новая версия NetBeans 8.0. Одной из её особенностей стала возможность работы через интерфейс NetBeans с встроенными версиями Java SE и ME. Разработчиками IDE от Oracle в качестве тестовой платформы предлагается использовать Raspberry Pi с устанавливаемой удалённо Java SE Embedded. Прежде я уже публиковал два перевода из журнала MagPi о Java программировании на Raspberry Pi, но в основном они были восприняты негативно, так как читатели не увидели в них чего-то особенного, характерного именно для такой связки, как Java и Raspberry Pi. Надеюсь, что после знакомства с этим уже оригинальным руководством, мне удастся немного смягчить позицию читателей в вопросе особенности подхода к Java программированию на встроенных системах типа Raspberry Pi.
Подготавливаем Raspberry Pi
Настроек Raspberry Pi немного. Ваш Raspberry Pi должен быть доступен в сети через SSH, а для вас на нём для чтения и записи должна быть доступна рабочая директория.
Подготавливаем NetBeans
Перед тем, как устанавливать новую платформу Java в NetBeans, я рекомендую прослушать небольшой доклад Льва Прийма по теме Java SE Embedded 8.
Как видите, с точки зрения установки, основным отличием Java SE Embedded от обычной Java SE, является необходимость формирование отдельных профилей JRE для установки на устройства. В NetBeans 8.0 этот функционал доступен через Java Platform Manager.
Для этого в Tools выбираем Java Platforms и нажав Add Platform… в открывшемся списке указываем на Remote Standard Edition. Переходим на следующую панель настроек уже самого подключения к Raspberry Pi.
После заполнения полей с ip-адресом, именем пользователя и паролем для доступа к Raspberry Pi из вашей сети станет возможным создать JRE для данной встроенной платформы Java. Главное что нужно сделать:
Первое, указать путь на вашей машине там, где лежит пакет Oracle Java SE Embedded(его предварительно нужно скачать, выбрав пакет с маркировкой HardFP ABI, что означается аппаратная реализация модуля математического сопроцессора);
Второе, указать путь на Raspberry Pi куда собранный JRE устанавливать.
Дальше выставляем опции для нашей платформы и сохраняем её настройки для удаленной установки на Raspberry Pi. По-умолчанию это будет Compact1, но именно здесь можно выбрать профили о которых говорилось в ролики и согласно им будет производится установка встроенной виртуальной машины Java на Raspberry Pi. Если всё было сделано правильно, то будет произведена установка Java SE Embedded на удалённое устройство.
Проверяем работу
Ну, а для проверки работы, мы воспользуемся 3-ей частью статьи о Java из 25-ого номера журнала The MagPi, создав проект в NetBeans и запустив его удалённо на нашем Raspberry Pi.
Как видите программа написанная в оболочке на компьютере разработчика была выполнена удалённо на целевом устройстве, а вывод консоли по ssh возвращён обратно в оболочку. Достаточно удобно, по крайней мере для меня, нет необходимости использовать прослойку в виде программного эмулятора, как делают например вендоры банковского железа для Visual Studio.
За удобство надо платить
Есть один нюанс о котором следует помнить, Java SE Embedded включает в себя коммерческую лицензию, и если вы после разработки решите продавать свои приложения(или устройства с предустановленной версией данной виртуальной машины), то вам потребуется оплачивать лицензионные отчисления Oracle согласно прейскуранта.
Стоимость лицензии указана на одно ядро и расчёт осуществляется по следующей формуле:
Стоимость лицензии × Кол-во чипов × Кол-во ядер на чипе × Коэффициент типа процессора × 1,19 = Цена лицензии Java SE Embedded
Значение 1,19 — это дополнительная оплата 19% от стандартной цены за обновление и поддержку. Для примера, в нашем случае с Raspberry Pi итоговая стоимость лицензии Java SE Embedded на одно устройство будет:
300 × 1 × 1 × 0,002 × 1,19 = 0,714$
А на пример для ODROID-U3 цена уже будет другой:
300 × 1 × 4 × 0,0075 × 1,19 = 10,71$
То есть ровно в 10 раз больше, и соответственно доля лицензионных отчислений по отношению к стоимости самого устройства получается около 2% для Raspberry Pi Model B(при цене 35$) и около 16,5% уже для ODROID-U3(при цене 65$). По этому решив использовать в качестве платформы виртуальную машину от Oracle, нужно учитывать не только мощность устройства, но и стоимость программного обеспечения, запущенного на нём.
Автор: Svininykh