Компания
166,93
рейтинг
11 сентября 2015 в 10:39

Разработка → Intel INDE Multi-OS Engine

Не так давно, в начале августа, на конференции Android Developer Conference (Andevcon) 2015, проходившей в Бостоне, корпорация Intel анонсировала INDE Multi-OS Engine — фреймворк для разработки нативных кроссплатформенных приложений на Java.

image

Разработку приложений, которые работаю одновременно на iOS и Android, нельзя назвать ни быстрой, ни дешевой. До недавнего времени, если вы хотели выпустить приложение сразу для двух самых популярных мобильных платформ, перед вами вставал непростой выбор. С одной стороны, вы могли использовать кроссплатформенный инструмент, например Cordova, и в результате получить условно недорогое приложение с достаточно качественным, но в то же время весьма ограниченным UI/UX.

image

С другой стороны, у вас была возможность разрабатывать два отдельных нативных приложения:
image
Оба подхода имеют свои плюсы и минусы. Однако, даже для крупных компаний с серьезными ресурсами этот выбор оказывался непростым. Но ситуация меняется. Теперь разработчики могут попробовать Intel’s Multi-OS Engine (MOE), который специально предназначен для значительного сокращения времени разработки, необходимого для создания отдельных нативных Android и iOS приложений:
image
Как вы можете знать, Intel INDE — кроссплатформенный набор инструментов для создания нативных мобильных приложений. INDE состоит из целого ряда SDK, библиотек, компиляторов, отладчиков и утилит анализа производительности — всего того, что требуется для полного цикла разработки ПО. А Multi-OS Engine можно смело назвать настоящей “вишенкой” на “торте” INDE!

Почему быть нативным так важно?


Современный пользователь мобильных приложений очень искушен, а магазины для любой платформы заполнены огромным количеством аналогов. Как выделиться среди них? Я сам из двух похожих приложений скорее выберу то, которое выглядит и ощущается по-настоящему согласованным со всей системой. Даже несмотря на то, что разработка нативных приложений занимает больше времени, нативный “Look & Feel” — это именно то, на что обращают внимание конечные пользователи, а значит, экономить на этом просто нельзя. По ряду причин нативные приложения имеют в этой области заметное преимущество:
  • Прямой доступ к UI-компонентам конкретной платформы: стек навигации приложения, диалоги выбора даты и времени, карты и т.д. Без сомнения, можно пересоздать все эти компоненты самостоятельно, но наша повторная реализация никогда не будет чувствоваться такой же родной, как нативная. Такие самодельные компоненты также не получат никакого автоматического обновления вместе с изменениями в платформе.
  • Отсутствие накладных расходов, связанных с отрисовкой UI.
  • Нативная многопоточность. Фреймворки, основанные на веб-технологиях не позволяют распараллелить работу приложения так, как это возможно в нативном коде.


Почему именно Java?


Чтобы ответить на этот вопрос, достаточно обратиться к следующему графику:
GitHub languages
Рейтинг языков GitHub, основанный на объёме кода, хранящегося в его репозиториях, совершенно четко объясняет, почему в качестве языка кросс-платформенной разработки для React Native в Facebook выбрали Javascript, а Intel выбрал Java для Multi-OS Engine.

Технические детали


Multi-OS Engine поставляется в виде плагина для Android Studio. С помощью него вы можете создать новый MOE проект, либо добавить MOE модуль в уже существующий проект. Таким образом, вам совсем не обязательно знать Objective-C, чтобы писать нативные приложения под iOS. При этом разработка под Android не претерпевает никаких изменений. Но у вас появляется замечательная возможность переиспользовать весь платформенно-независимый код. MOE не предлагает 100% переиспользование кода, но при правильной архитектуре эта величина может достигать 60%.
image
Вот как Multi-OS Engine обеспечивает поддержку Java на iOS:
  • Автоматически генерирует байндинги по заголовочным файлам ObjectiveC и C
  • Использует специальные Java-аннотации
  • Связывает Java с нативным кодом с помощью библиотеки NatJ
  • Избавляет от необходимости JNI вызовов
  • Полностью покрывает iOS API

Всё это позволяет сразу же начать писать iOS-приложения на Java.
image

Процесс разработки iOS-приложений на Java


image
  1. Создайте Multi-OS Engine проект в Android Studio
  2. Если вы используете Mac, добавьте новую Run/Debug конфигурацию “Intel MOE iOS Application” для сборки на локальной машине. На Windows-хосте доступна конфигурация “Intel MOE Remote Build” для сборки “в облаке”.
  3. Вы можете создавать UI прямо в XCode либо использовать специальный MOE UI designer, встроенный Android Studio.
  4. Свяжите ваш UI с Java, используя аннтотации и библиотеку NatJ.
  5. Используйте автодополнение кода для легкой работы с iOS SDK.
  6. iOS-приложения могут быть запущены на симуляторе и устройстве прямо из Android Studio.
  7. Отлаживайте ваши приложения прямо в Android Studio.

Чтобы попробовать Multi-OS Engine, вы можете немного рассказать нам о себе через специальную форму. Это позволит нам сделать MOE ещё лучше. Но если вам не терпится, вы можете сразу перейти на страницу загрузки: Хочу MOE прямо сейчас! На этой же странице вы найдете подробное руководство пользователя.

P.S.
Команда, разрабатывающая Multi-OS Engine, почти полностью находится в России (Нижнем Новгороде и Москве). И если у вас есть вопросы, которые вы хотите задать лично, у вас есть отличная возможность — посетить конференцию Droidcon в Москве 26 сентября.
Автор: @iLya84a
Intel
рейтинг 166,93

Похожие публикации

Комментарии (9)

  • 0
    Глянул пример.
    Я правильно понял, что UI для iOS всё равно придётся писать самому, но только уже на Java + всякие хелперы типа аннотации?
    • +3
      Вы правильно поняли! Но кода будет не больше, чем при использовании Objective-C.
      Вот сравните код на ObjC:
      - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
          if ([segue.identifier isEqualToString:@"showDetail"]) {
              NSIndexPath *selectedIndexPath = [self.tableView 
                  indexPathForSelectedRow];
              // Set data
              ...
          }
      

      и Java:
      @Override
      public void prepareForSegueSender(UIStoryboardSegue segue, NSObject sender) {
          if (segue.getIdentifier().toString().equals("showDetail")) {
              NSIndexPath selectedIndexPath = getTableView().
                  indexPathForSelectedRow();
              // Set data
              ...
          }
      }
      

      • +3
        Ну смотрите как получается.
        Скажем для «раздельной» разработки нужно 1 Андроид разраб и 1 iOS.
        1) В вашем случае получается, что всё равно нужен 1 Андроид разраб + нужен разработчик со знанием сразу и Java(Android) и iOS SDK. Т.е. всё равно 2 человека надо.
        2) Будет ли меньше багов и упростится ли поддержка кода? Во-первых, вы сами пишете про платформенно-независимый код, что
        эта величина может достигать 60%
        Т.е. я предполагаю, что помимо двух отдельных UI будет ещё и зависимый код под платформу + общую часть также нужно будет архитектурно создавать сразу независимой от платформы(что в целом хорошо, но может быть сложнее).

        Вероятно, такая схема работы хорошо пойдёт, когда в приложении много сложной постоянной меняющейся логики, которая сдобрена небольшим кол-вом UI.
  • +2
    Подскажите пожалуйста, есть ли возможность подключить сторонний фреймворк к iOS части? Допустим тот же AFNetworking? Или придется сначала портировать его на java?
    • +1
      Такая возможность есть. Но пока мы не включаем в поставку генератор Java-байндингов для сторонних нативных библиотек. Это произойдет в одном из следующих релизов.
  • 0
    -
  • +2
    60%?

    Теперь для проекта надо 160% явиста и 40% айосника. Плюс полтора землекопа чтобы биндить java к objectC :)
    • +1
      Так ещё и поддерджки Linux, как я понял, нет.
      • +1
        Linux поддержки пока действительно нет, но может появиться. Всё зависит от интереса пользователей!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка