Подтвердить что ты не робот

Насколько переходный процесс программирования приложений Java для iPhone?

Я высококвалифицированный Java-разработчик, изучающий развитие iPhone. Mac только в стороне от аспектов, насколько скачок будет изучать стек мобильных приложений? Конечно, я понимаю, что он ближе к C в том, как нужно подходить к нему, и с этим приходит управление памятью и так далее.

Мои запросы также будут включать

  • Насколько хорошо поддерживается OOP/OOAD?
  • Есть ли какой-либо API (ы), которые позволяют тестировать устройства?

Я бы рекомендовал тем, кто отвечает на цитирование внешних сайтов и ссылок, чтобы помочь детализировать

4b9b3361

Ответ 1

Язык разработки Objective-C, который является чистым C с очень тонкой оберткой объекта поверх. Их синтаксис выглядит довольно странно, но с ним легко справиться, если вы знаете C, как только вы перейдете через вызовы сообщений - у меня есть сплошной фон C и только начал собирать Objective-C месяц или два назад но я нахожу это действительно приятным - больше, чем С++.

Трудность, которую вы будете иметь, если у вас есть только кодированная Java, - это указатели и управление памятью. Управление памятью не является концептуально трудным, поскольку просто (!) Возникает вопрос отслеживания того, что вы выделяете и выпускаете, плюс XCode, похоже, содержит хорошие инструменты для обнаружения утечек (хотя я еще не использовал их в гневе) - и поскольку программы для iPhone относительно малы, это не похоже на кодирование большой системной программы, где это может быть чрезвычайно сложно. Основная концептуальная трудность, с которой вы, вероятно, будете иметь дело, - это просто получить голову вокруг указателей, поскольку они широко используются (как и в каждой строке кода), и вам нужно полностью их полностью проверить. Одна из проблем, связанных с повторением Joel в подкасте, - это трудность, с которой некоторые кодеры получают использование указателей, поэтому я бы рекомендовал вам внимательно изучить и, возможно, взять хорошую книгу - возможно, оригинальную K & R.

Кто-то может мне поправить, но, хотя API Cocoa выглядит превосходным, кажется, мало доступных библиотек вне рамки (в отличие от С++ или Java). Например, мне пришлось добавлять собственные классы очереди и стека, хотя NSMutableArray делает это очень просто.

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

Ответ 2

Несколько месяцев назад я был веб-программистом на Java, который не касался C с колледжа. Теперь у меня есть одно приложение для iPhone, завершенное (для моей дневной работы, застряло в бюрократии там, так что это еще не в магазине приложений), и мое второе приложение подходит к завершению.

Чтобы ответить на ваш вопрос, самые большие препятствия - это понимание соглашений (шаблон делегирования, категории и т.д.), понимание возможностей управления памятью и работа с XCode (хорошая среда IDE, но определенно отстающая от Eclipse и IntelliJ).

Я также считаю, что документация на веб-сайте Apple Developer Center хорошо написана, и хороший разработчик может быстро встать и работать.

Чтобы более точно ответить на ваш вопрос, я еще не пробовал Unit Testing, но я думаю, что OOP отлично - объекты моего домена в моих приложениях для iPhone столь же надежны и мощны, как и те, которые я написал на Java.

Ответ 3

Я вышел из колледжа в качестве разработчика Java. Моя первая (настоящая) работа была Mac Development. Переход от языка, который я знаю (моей отправной точкой был Java), к чему-то вроде Objective-C был довольно прост, по коду. Чтобы максимально увеличить время разработки приложений для iPhone/Mac, вы должны использовать XCode и Interface Builder. После того, как вы подключитесь к событиям и выходам графического интерфейса (объекты, с которыми ваш пользовательский интерфейс хочет установить связь), вы будете настроены для нормальной разработки приложений iPhone.

Вот шаги, которые я прошел через обучение Objective-C (язык программирования для разработки iPhone) с моим фоном Java:

  • Изучите основные объектно-ориентированные концепции ОС. Subclassing (Наследование), протоколы (интерфейсы Java), свойства объекта (свойства Bean), методы (вы должны явно указывать метки метки параметра, в отличие от C/С++/Java, где вы угадываете порядок параметров).

  • Понимайте разницу между Objective-C, Cocoa, Aqua и C. Затем узнайте, как использовать фреймворки. Рамки почти такие же, как Java-пакеты.

  • Ознакомьтесь с использованием этих классов Foundation: NSString, NSArray, NSDictionary, NSSet, NSURL, NSAutoreleasePool.

  • Узнайте больше о Interface Builder. Раньше я думал, что способ программирования Visual Basic ограничивает программиста. Я был неправ. Лучше сначала "визуализировать" приложение, прежде чем вы узнаете, как все в нем происходит. Обратите внимание на ключевые слова IBAction (аналогично созданию EventListener), Outlets (у вас есть только несколько объектов, "выставленных" для ваших элементов пользовательского интерфейса), Views (UIView в случае iPhone, все, что "видимо" в приложении может быть считаются "представлением" ) и контроллерами (есть готовые контроллеры, которые можно использовать для заполнения табличных представлений, флип-карт и т.д.).

  • Узнайте, как развернуть приложение через портал разработчиков iPhone. Вы не можете отправить iPhone-приложение на любое устройство, если у вас нет этого "права". Да, я знаю, что это отстой, но вам все равно придется пройти этот процесс, если вы хотите продать свои приложения.

Кстати, вы можете использовать следующее для модульного тестирования кода iPhone: Тестирование iPhone в блоге

Надеюсь, что это поможет.:)

Ответ 4

Objective-C - это объектно-ориентированный язык, поэтому, что касается OOP, почти все, что вы можете сделать в Java, вы можете делать с Obj-C.

У меня нет опыта с ним, но здесь хотя бы один ресурс на OCUnit, эквивалент objective-c для JUnit: http://developer.apple.com/tools/unittest.html

Самая большая проблема, с которой я сталкиваюсь с переходом, - это, безусловно, аспект управления памятью. Изучение синтаксиса и API-интерфейсов довольно прямолинейно, но жизнь жесткая без GC!

EDIT: О да, вторая по значимости проблема - XCode, IDE, используемая для разработки Mac/iPhone. Поддержка рефакторинга минимальна, и я нахожу, что мне больно перемещаться между файлами. Ожидайте, что это тоже замедлит вас.

Ответ 5

Для модульного тестирования есть несколько опций, OCUnit был связан выше. Существует также google-toolbox-for-mac.

ООП в objective-c хорош, довольно чист. Вы также столкнетесь с функциями старой школы C.

Используемый API называется Cocoa -Touch и построен на Cocoa, который был создан из NextStep, поэтому существует большая история дизайна и уточнений.

Никакая сборка мусора на iPhone. Золотое правило: " Если вы выделяете, то вы отпускаете". На SO есть много вопросов относительно управления памятью, поэтому я не буду вдаваться в подробности здесь.

Основным препятствием является различие в дизайне и архитектуре. Приложения для iPhone и приложения Java создаются с использованием разных соглашений. Итак, потребляйте столько objective-c/cocoa/cocoa-touch, как вы можете найти/стоять.

Проведите некоторое время, работая с Interface Builder, это может усугубить ситуацию, но это обычно означает, что вы не понимаете, что это такое. Если у вас есть четкое представление о том, как работает IB, и что он может сделать для вас, вы действительно оцените его.

Cocoadev.com - это удобный ресурс для сбора примеров дизайна и кода.

Cocoadevcentral.com имеет отличную коллекцию статей, включая разработку рабочего стола cocoa. Его узнать objective-c - одно из лучших, которое вы найдете.

Получите учетную запись Apple Developer Connection, если у вас ее еще нет. Вам не нужно платить за это, но вы получите документацию и инструменты.

ADC iPhone

Справочная библиотека iPhone API Документы, руководства, пример кода, официальный материал Apple.

Ответ 6

Ну, Java была основана на Objective C и Smalltalk, которые являются объектно-ориентированными языками. Большие проблемы будут синтаксисом (который не является полностью C на основе С++ и Java), указателями и ручным управлением памятью.

Это основано на некоторых очень старых объективных знаниях C, но я знаю, что когда я переключился с Objective C на Java (около 2000), это было довольно просто, поскольку базовые понятия были довольно близкими.

На основе Objective C

Управление памятью

Ответ 7

Я бы не сказал, что я эксперт на любом языке, но я компетентен в нескольких. Большая часть кода, который я написал в последнее время, представляет собой "корпоративный" тип.

Предполагая, что вам удобно изучать новый API и язык, самая большая разница, которую я обнаружил, заключается в том, насколько iPhone ограничен с точки зрения производительности процессора и доступной памяти. Я очень привык к тому, чтобы откусить немного памяти за лучшую производительность - почти бессознательно - или немного расточительно, потому что у меня есть восемь ядер в моем распоряжении. Это действительно плохая идея на iPhone!

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

Технические аспекты все очень отсортированы. Сторона unit test менее продвинута, чем на стороне Java. С другой стороны, я нахожу, что я могу быть намного более продуктивным и менее подверженным ошибкам в Objective C, чем Java, и, вероятно, это связано с тем, что объектная модель совершенно другая (вы склонны делегировать, а не наследовать).

Ответ 8

Стоит отметить, что вы можете использовать объекты С++ и С++ в коде Objective-C, который часто называют Objective-C ++. Это может быть ценным подходом к разделению модели данных и другого независимого от платформы кода (написанного на стандартном С++) из вашего кода пользовательского интерфейса (написанного в Objective-C с использованием рамки Cocoa).

Ответ 9

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

Синтаксис: я нашел этот учебник, среди прочего, очень ясный и лаконичный. На мой взгляд, я концептуально сопоставил Objective-C и инфраструктуру Java, которые вы можете сделать по большей части (то есть сообщение в основном является методом, протокол - интерфейсом и т.д.). Как только вы преодолеете первоначальный шок, вы обнаружите, что разработка Objective-C для приложений пользовательского интерфейса может быть довольно интуитивной и приятной.

Структура: я не программирую UI так много, поэтому я обнаружил, что мне нужно лучше понять парадигму MVC.

Вы также можете найти интересные функции языка, такие как categories, которые вы хотели бы иметь на Java. Я также обнаружил отсутствие некоторых других конструкций, таких как отсутствие статических элементов.