Есть ли какие-либо огромные различия между целью-c и Java, или iPhone и Android?

Править: Мое плохое, я имел в виду цель-c, не c#. Некоторая причина я имел его в голове, это был c# используемый iPhone. Таким образом, ответы для c# были большими, спасибо, но theyre немного не важный, извините об этом.

Я взглянул, но не могу найти ничего, что отвечает на это, хотя некоторые сократили вопрос путем ответа на части его. Между небольшой группой мы были планированием выполнения некоторой работы над iPhone и Android, эти 2, отдельные по большей части, но выручение друг друга, и с некоторыми парнями, делающими графическое разделение работы между ними.

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

13
задан AaronM 27 July 2010 в 17:41
поделиться

8 ответов

Несмотря на опубликованные ответы, обратите внимание на этот вопрос:

Кросс-платформенное совместное использование кода iPhone / Android

2
ответ дан 1 December 2019 в 17:19
поделиться

Если вы сосредоточитесь на абстрагировании от таких вещей, как системное взаимодействие, и будете придерживаться общего подмножества языков, вы, вероятно, сможете создавать классы, которые практически не потребуют изменений для перехода с одного языка на другой.

C# имеет лучшую реализацию дженериков, чем Java, в том смысле, что дженерики C# сохраняют сильную типизацию во время выполнения.

В C# также есть LINQ, который, насколько я знаю, не имеет аналогов (пока) в Java. LINQ предоставляет возможность SQL-подобных запросов, встроенную в язык и полностью поддерживаемую .NET frameowrk, которая позволяет вам запрашивать коллекции объектов, и делает это в стиле функционального языка. LINQ может быть расширен поставщиками запросов для работы с другими форматами данных, такими как XML и SQL, если поставщик запросов предоставляет объектную модель, которая переводится в другой формат. LINQ также облегчает распараллеливание для многоядерной работы. Это огромное расширение возможностей языка".

3
ответ дан 1 December 2019 в 17:19
поделиться

Если вы думаете о разработке под Android, мой лучший совет - перейти на java. Нет никакой пользы от написания полного слоя абстракции (если вы можете) для преобразования из C # в Java. Что касается разработки iPhone, не сомневайтесь в использовании Objective-C для тех же целей.

0
ответ дан 1 December 2019 в 17:19
поделиться

Вы не можете разрабатывать для iPhone на том же языке, что и для Android. Для iPhone вы можете программировать только на Objective C, он разработан Apple. Вы не можете использовать его для Android, и единственный способ разработки для iPhone - это использовать этот язык (это прописано в пользовательском соглашении).

Что касается C# против Java, то здесь принцип совсем другой. Java - это один язык для каждой платформы, .Net - одна платформа для каждого языка. Они не совместимы. Вы можете использовать Java на Android, но я не уверен, что вы можете использовать C# (.Net) также.

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

0
ответ дан 1 December 2019 в 17:19
поделиться

Если вы действительно хотите заниматься кросс-телефонной разработкой, если это не требует больших вычислительных ресурсов, я, вероятно, выбрал бы PhoneGap .

PhoneGap - это среда разработки с открытым исходным кодом для создания кроссплатформенных мобильных приложений. Создавайте приложения на HTML и JavaScript и по-прежнему пользуйтесь преимуществами основных функций iPhone / iTouch, iPad, Google Android, Palm, Symbian и Blackberry SDK.

Насколько я могу судить, это практически единственный кроссплатформенный инструментарий, разрешенный в магазине приложений для iPhone.

Если вы твердо настроены на нативную разработку, я думаю, вы обнаружите, что, если вы не делаете игру и не ориентируетесь на c, портировать придется много работы. Фреймворки очень разные, и способы создания пользовательского интерфейса очень разные. Тем не менее, чтобы ответить на ваш прямой вопрос о objective-c и java, это не так уж и плохо. Однако он достаточно отличается, чтобы инструмент абстракции не был таким простым - в отличие от Java и C #. Objective-c не имеет сборки мусора (по крайней мере, на iPhone), например, и синтаксис сильно отличается. Objective-c типизирован более свободно, поскольку он выполняет вызовы методов (сообщения в objective-c). Тем не менее, они не сильно отличаются с точки зрения парадигм программирования. Оба они являются объектно-ориентированными императивными языками. У них обоих есть классы и методы, публичные и частные. Если бы вы захотели перенести код вручную, это не было бы концом света, я просто думаю, что вы могли бы потратить намного больше времени, пытаясь создать уровень абстракции.

1
ответ дан 1 December 2019 в 17:19
поделиться

Такие инструменты, как XMLVM , Codename One и iSpectrum , сообщают нам, что вы действительно можете кросс-компилировать Java код (из приложения Android или создание его с нуля) в код Objective-C, который работает на iPhone, без необходимости устанавливать какую-либо виртуальную машину на стороне Apple.

Предлагаю посмотреть Разработка приложений для iPhone с использованием Java

К сожалению, лицензия Apple соглашение для iPhone SDK запрещает перенос виртуального Java машина к айфону. В этом презентацию мы представляем открытый Источник Java-to-Objective-C кросс-компилятор , а также основанный на Java реализация библиотеки Какао. С помощью этих инструментов iPhone приложения могут быть написаны на чистом Ява. Используя версию Какао для Java, можно запустить Java-ориентированный Приложение для iPhone как Java настольное приложение / апплет, которое может быть кросс-скомпилирован для запуска на iPhone.В беседе будут обсуждаться проблемы Java-to-Objective-C кросс-компилятор, а также Версия Какао на основе Java. Подробности доступны по адресу http://www.xmlvm.org/

, а для более глубокого понимания недавний доклад о кросс-компиляции приложений Android для iPhone от февраля 2010 г. доступен здесь , который документировано на http://www.xmlvm.org/android/ :

Android - это платформа с открытым исходным кодом для мобильных устройств. Инициированный Google, Android привлек большое внимание. Приложения Android разрабатываются с использованием Java, хотя специальный компилятор преобразует файлы классов в проприетарную виртуальную машину на основе регистров, которая используется на устройствах Android для выполнения приложений. Android определяет собственный API для написания мобильных приложений. С помощью XMLVM можно кросс-компилировать приложения Android на основе Java в собственные приложения iPhone.

Приложение Android написано на Java и использует Android конкретный API. XMLVM предлагает библиотека совместимости, написанная на Java, которая предлагает тот же API, что и Android, но использует только API на основе Java для Cocoa Touch. В течение процесс кросс-компиляции, оба приложение и Android библиотеки совместимости кросс-скомпилирован из Java в Objective-C и связан с Какао Коснитесь библиотеки совместимости, чтобы получить родное приложение для iPhone.

Из разговора 2008 года о создании приложений Java для iPhone http://www.xmlvm.org/iphone/ :

iPhone от Apple произвел огромное интерес среди пользователей и разработчиков одинаково.Как и MacOS X, iPhone среда разработки основана на Objective-C как разработка язык и Какао для GUI библиотека. Лицензия на SDK для iPhone соглашение не позволяет разработка виртуальной машины. Используя XMLVM, мы обходим это проблема при кросс-компиляции Java в iPhone. Как приложение Java может быть скомпилирован в AJAX, XMLVM может использоваться для кросс-компиляции Java приложение к Objective-C. В кросс-компиляция также выполняется имитируя машину на основе стека в Цель-C.

4
ответ дан 1 December 2019 в 17:19
поделиться

Я бы не стал тратить время на попытки найти общность между iOS и Android.

Кроссплатформенность - это почти всегда пустая трата времени и ресурсов, если кроссплатформенность не является центральной для работы приложений. Это особенно верно для таких платформ, как iPhone и Android, которые имеют настраиваемую ОС и очень плотно работают с оборудованием.

Кросс-платформенные среды разработки добавляют, а не уменьшают сложность в долгосрочной перспективе. Да, это звучит красиво, но обычно вы легко получаете 90% того, что хотите, а затем вы попадаете в препятствие, которое разрушает все ваши сбережения, а затем начинает бросать вас в яму. Просто есть много компромиссов, и квадратные колышки застревают в круглых отверстиях.

Если ваше приложение теоретически не может работать с обычной веб-страницей, кроссплатформенность не для вас.

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

Вы должны потратить время на изучение API каждой платформы. Нет никаких ярлыков.

52
ответ дан 1 December 2019 в 17:19
поделиться

Эта тема часто наполнена догматами технологических джихадистов, поэтому я постараюсь избежать этого в своем ответе.

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

Я бы рассмотрел кроссплатформенную разработку, в которой ваша бизнес-логика :

  • нетривиальна;
  • должна быть стандартизирована для разных платформ; и
  • имеет четко определенные взаимодействия с внешним миром (например, сетевой стек или пользовательский интерфейс).
  • (бонус) уже написано.

Apple является здесь определяющим шагом, учитывая печально известные ограничения 3.3.1 на языки исходного кода. Вы можете писать код на Javascript в соответствии со связанными Webkit, C, C ++ и Objective C.

Если вы не хотите устанавливать дополнительные языки на дроид, вы можете использовать Java, которая компилируется до кода dalvik, Javascript в соответствии с немного другой сборкой webkit или чем-то из NDK. Тогда вы посмотрите на C / C ++. Вы можете кросс-компилировать Objective-C, но у меня не было такого опыта.

Четкое разделение бизнес-логики от пользовательского интерфейса и сети важно, так как вы захотите написать адаптеры для сетевого уровня или что-то еще для пользовательского интерфейса.

Я бы не стал писать кроссплатформенный код пользовательского интерфейса на C / C ++, и я бы написал что-то, использующее HTML / CSS / JS, или, что более вероятно, написал бы что-то полностью индивидуальное, чтобы воспользоваться преимуществами различных Метафоры пользовательского интерфейса на каждой платформе - например, аналога панели уведомлений на айфоне нет. Анимацию на iPhone реализовать на порядки проще, чем на Android.

Если вам не нужна массовая интеграция пользовательского интерфейса с ОС, тогда может быть достаточно веб-просмотра и некоторого HTML5. Титан - хороший вариант, и мои знакомые коллеги говорят мне, что он лучше (то есть компилирует, а не интерпретирует), чем PhoneGap. Опять не знаю.

Что касается сложности, Open GLES доступен на обеих платформах.

Также следует отметить, что SVG недоступен в текущей версии ОС Android.

3
ответ дан 1 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: