В моем классе информатики я выполнил все мои проекты; Поэтому мой учитель подумал, что было бы неплохо разработать приложения для IPhone. Единственные проблемы в том, что класс преподается в Java, а приложения IPhone написаны в Objective-C. Мне было интересно, если кто-то разработал приложения на Java, с XMLVM. Этот компилятор (предположительно) преобразует java-байтовый код в Objective-C (без необходимости использования яблочного компьютера или знаний Objective-C). Правильно ли это? http://www.xmlvm.org/overview/ Вот пример кода Java-кода, используемого на IPhone: http://www.xmlvm.org/iphone/#
Brendan 12 янв. 2010, в 19:27
Поделиться
На сайте вроде все сказано. Но помните, вы на самом деле не пишете Java, вы пишете XML! xmlvm.org/iphone
Matt Ball 12 янв. 2010, в 17:35
Brad Larson♦ 12 янв. 2010, в 19:53
jeet.chanchawat 25 июль 2014, в 21:13
Показать ещё 1 комментарий
Поделиться:
19 ответов
Лучший ответ
Если вы закончили свои другие проекты, почему бы не потратить время на изучение Objective-C? В Интернете есть масса материалов, которые помогут вам начать работу. Честно говоря, это не будет так сложно, и научиться делать некоторое управление памятью будет отличным упражнением. Вы запрограммировали на C раньше?
Сектор Газа — Демобилизация
Большинство кросс-компиляторов не будут делать отличную работу по преобразованию вашего кода, и отладка вашего проекта может стать намного сложнее, если вы разработаете их таким образом.
Amir Afghani 12 янв. 2010, в 18:38
Поделиться
Я знаю C ++, C # и немного C . так что да, я уже делал НЕКОТОРЫЙ C раньше .
Brendan 12 янв. 2010, в 17:42
Основные трудности для людей Java / C # / ActionScript / JavaScript заключаются в (1) существовании и синтаксисе для указателей и (2) ручном управлении памятью. Поскольку у вас есть немного C ++ и C под вашим поясом, вы сможете сравнительно легко подобрать Objective-C.
Chris Hanson 12 янв. 2010, в 20:54
Теперь это возможно с рамкой разрыва телефона
Pratik 15 окт. 2012, в 12:09
Другим относительно новым вариантом является Intel Multi-OS Engine . libgdx использует для развертывания на iOS.
Quazi Irfan 23 дек. 2016, в 22:59
Ссылка на учебник мертва.
Crouching Kitten 21 фев. 2017, в 21:58
Seb 07 июнь 2017, в 13:47
Потому что вам нужно сосредоточиться, и поэтому это не очень хороший ответ.
user8389458 22 март 2018, в 05:06
Показать ещё 5 комментариев
Не совсем ваш ответ, но почему бы не попробовать некоторые разработки Android? Нет необходимости в Mac, с открытым исходным кодом, без инвестиций, на основе Java.
Andiih 12 янв. 2010, в 19:21
Поделиться
Ну, я мог бы спросить своего учителя, будет ли это лучше, но сейчас он настроен на разработку iPhone .
Brendan 12 янв. 2010, в 17:34
Это хорошая идея.
D.C. 12 янв.
2010, в 17:37
почему это становится недооцененным? По общему мнению, это единственное разумное решение? Downvoters объясни себя 🙂
Andiih 12 янв. 2010, в 18:53
+1, прагматичное решение.
missingfaktor 23 фев. 2010, в 08:58
b1nary.atr0phy 08 авг. 2015, в 01:05
Lloyd Sargent 21 фев. 2017, в 15:01
Просто пытаюсь быть ПОЛЕЗНЫМ.
Andiih 22 фев.
Как стать программером под iOS с нуля
2017, в 16:49
Нет, это НЕ полезно. Он спрашивает о Java на iPhone. Ваш ответ был «используйте Android вместо». Он не может изменить какое устройство использовать (или, по крайней мере, это не было в рамках вопроса). Вот почему это не полезно.
Lloyd Sargent 18 апр. 2017, в 19:33
ОП спрашивала о невозможном назначении учителя. Поскольку это был Java-класс, было полезно предложить разработку Android, а не iPhone. Я не хотел отвечать «Нельзя разрабатывать приложения для iPhone на Java». И так как это был класс Java (не класс iPhone), это было в границах тела вопроса (хотя и не заголовка)
Andiih 20 апр. 2017, в 13:57
Seb 07 июнь 2017, в 13:48
Показать ещё 8 комментариев
Я думаю, нам придется подождать еще пару лет, чтобы увидеть больше прогресса. Однако теперь доступно больше фреймворков и инструментов:
Вот список из 5 вариантов:
- Кодовое имя один
- RoboVM
- Птичий не сопровождающий
- XMLVM
- J2ObjC
- Intel Multi-OS Engine снят с производства
Dalorzo 23 апр. 2014, в 00:58
Поделиться
Хороший список, кажется, что они могут быть лучшими.
setherj 02 июль 2014, в 22:46
RoboVM закрыт. robovm.com/robovm-winding-down
Maciek Łoziński 01 авг.
2016, в 21:39
Я думаю, ваш учитель отправил вас по неправильному пути.
Это классический пример попыток поместить квадратный штифт в круглое отверстие. Лучший способ разработки для iPhone — это iPhone SDK и цель C. Лучшим способом разработки для Andriod является Java и Android SDK. Лучший способ разработки для WinMobile — это С#/VB и .Net Framework.
Как вы можете видеть, у каждого есть свой «лучший» SDK. Поскольку вы только изучаете Java, я бы предпочел играть с Java и Android.
deanvmc 12 янв. 2010, в 19:31
Поделиться
Ну, я знаю C #, немного C ++ и другие языки, поэтому, возможно, изучение Objective-C не будет для меня слишком сложным. Я просто пытаюсь понять, насколько сложно было бы использовать Java. Мой учитель только что бросил это в меня сегодня .
Brendan 12 янв. 2010, в 17:40
Также не распространяйте себя, люди имеют привычку знать много языков, но не очень хорошо знают один. Я бы посоветовал на некоторое время исключить цель C из списка и поиграть с множеством Java SDK.
deanvmc 12 янв. 2010, в 20:52
Выучите как можно больше языков. Это даст вам оценку силы (и слабости) каждого. Лично я знаю около 10 языков, хотя признаюсь, что в некоторых из них я ржавый.
Lloyd Sargent 21 фев. 2017, в 15:04
Показать ещё 1 комментарий
Существует новый инструмент под названием Codename one: один SDK на основе JAVA для кода в WP8, Android, iOS со всеми расширенными функциями
- Полная среда Android с супер быстрым симулятором Android.
- Симулятор iPhone/iPad с легким переносом приложений iPhone на iPad с большим экраном в считанные минуты.
- Полная поддержка стандартной отладки Java, профилирование приложений на любой платформе.
- Легкая тема/стиль — всего лишь один клик.
Taranfx 22 фев. 2013, в 10:39
Поделиться
взгляните на проект codenameone.com, это платформа для кросс-платформенной мобильной связи, где часть ui является вилкой LWUIT. Этот проект использует xmlvm для перевода кода Java-байта в Objective C
Chen 27 март 2012, в 10:14
Поделиться
Вы также можете взглянуть на RoboVM.
Он переводит байт-код Java в собственный ARM-код или код x86, который может запускаться непосредственно на процессоре без необходимости использования VM или интерпретатора. Большинство элементов пользовательского интерфейса Obj-C уже подключены к Java и следуют обычным шаблонам проектирования Java.
Edit Robo VM недавно объявила, что это приведет к отключению службы — Источник
A Null Pointer 21 сен. 2013, в 20:10
Поделиться
RoboVM недавно достиг версии 1.0
Christopher Fraser 30 март 2015, в 13:34
попробуйте использовать TotalCross. Это Java Framework, чтобы помочь разработчикам создавать приложения для iOS и Android только с одним исходным кодом. В отличие от других платформ, он не требует каких-либо знаний в iOS (Objective-C или Swift), ни Android (SDK или NDK)
Bruno Muniz 03 май 2017, в 15:05
Поделиться
Просто один вопрос этот с 2010 года .
Brendan 05 май 2017, в 19:58
Я думаю, что Google Open Sources Java To Objective-C Переводчик сделает возможным развитие в Java для iOS https://code.google.com/p/j2objc/
smikesh 25 сен. 2012, в 14:34
Поделиться
Я отвечаю на этот вопрос через 2 года, и я должен стресс, что у меня была такая же проблема, как и у вас. Однако я так счастлив, что Android превратился в то, чем он является сегодня.
Сказав, что, я сожалею о том, что не изучал C/С++, пока мог, и я не хочу обвинять своих учителей в этом cos, где был мой мозг, когда настало время?
Сегодня я погружен в Java, и я рад, что не ошибся в изучении слишком большого количества языков и менее продуктивен. Однако Я изучил HTML5, которые действительно упростили работу, возможно, когда-нибудь, я мог бы получить мотивацию, чтобы изучить C/С++. Или, если я получу Apple Mac по реальной цене выброса, я мог бы узнать Objective-C:)
technoSesh 21 май 2012, в 16:45
Поделиться
Я бы сказал, 1 год, чтобы освоить Java, 3 года, чтобы освоить C ++, и 3 месяца, чтобы освоить HTML5
Jonathan 18 дек. 2018, в 09:45
Если вы планируете интегрировать функциональность приложения с веб-сайтом, я настоятельно рекомендую модель GWT + PhoneGap:
Вот мои два цента из моего собственного опыта: мы используем одни и те же Java POJO для нашей базы данных Hibernate, нашего REST API, нашего веб-сайта и нашего iPhone-приложения. Рабочий процесс прост и красив:
База данных — 1 — > API REST — 2 — > Приложение iPhone/веб-сайт
- 1: Hibernate
- 2: Сериализация GSON и GWT JSON Десериализация
Есть и другое преимущество этого подхода: любой Java-код, который можно скомпилировать с помощью GWT, и любая библиотека JavaScript станут доступны для использования в вашем приложении iPhone.
Naijaba 26 март 2012, в 11:07
Поделиться
Определенно, любой, кто начинает с Java, должен стремиться писать внешние интерфейсы HTML5, которые работают с настольными и мобильными браузерами и которые могут использовать Apache Cordova (разрыв телефона), чтобы встраиваться в нативные приложения на всех возможных телефонах и планшетах. Используйте jquery mobile в качестве скина и jquery для Ajax, а затем на веб-сервере Java опробуйте несколько технологий, чтобы понять, какие из них просты (например, Spring Boot высокопроизводителен, современен, но хорош для использования в качестве связующего звена (возможно, унаследованного) предприятие Java). Для бонусных марок используйте веб-розетки, а не Ajax, которые будут волновать потенциальных работодателей).
simbo1905 10 нояб. 2015, в 08:16
Обратите внимание, что Monotouch позволяет вам разрабатывать в С# вместо Objective-C. http://monotouch.net/
Thorbjørn Ravn Andersen 12 янв. 2010, в 19:11
Поделиться
Стоит отметить, что (сейчас) Monotouch это xamarin.com/ios?gclid=CKu1juOp77UCFUbMtAodUnIAYg
Andiih 09 март 2013, в 09:32
Вам нужно знать, по крайней мере, основы Objective-C для разработки для iPhone. Тем не менее, можно использовать классы С++.
Насколько я знаю, Adobe работает над созданием приложений Flex/Flash для iPhone. Подробнее здесь: http://theflashblog.com/?p=1513
Jacek 12 янв. 2010, в 19:03
Поделиться
И еще больше о технологии: adobe.com/devnet/logged_in/abansod_iphone.html
Jacek 12 янв.
2010, в 17:39
Почему за это проголосовали?
Amir Afghani 12 янв. 2010, в 17:44
Основанная на Java и HTML5 платформа для разработки Oracle ADF Mobile позволяет разработчикам создавать и расширять предприятия приложения для iOS и Android с единой базы кода. Основываясь на гибридная мобильная архитектура, ADF Mobile поддерживает доступ к услуги устройств, позволяет автономные приложения и защищает предприятия инвестиции от будущих технологических сдвигов.
Slartibartfast 14 авг. 2013, в 22:51
Поделиться
Возможно, вам стоит рассмотреть приложения для Android вместо приложений iPhone, если вы действительно хотите разрабатывать Java для смартфонов. Android изначально использует Java для своих приложений; возможно, это может быть лучшим вариантом?
Что касается iPhone, я бы рекомендовал вам изучить Obj-C или C/С++ в зависимости от типа приложений, которые вы хотите создать. Должно быть забавно баловать себя новым языком!:)
Charles 23 фев. 2010, в 10:59
Поделиться
Вы можете попробовать iSpectrum (получить его на http://www.flexycore.com) Вы сможете разрабатывать и отлаживать свои Java-приложения в Eclipse. Вам все равно понадобится Mac и XCode, чтобы запустить его на симуляторе или установить на реальном устройстве. Но вам не нужно будет использовать редактор XCode. Кроме того, вы можете использовать его бесплатно, если планируете работать над проектом с открытым исходным кодом.
Krusty 23 фев. 2010, в 10:46
Поделиться
В частности, речь идет о приложениях на базе Java, которые переносятся на iPhone с использованием аппаратного обеспечения, отличного от Apple.
Вы также можете проверить MonoTouch (С#, а не Java. но эти два очень похожи).
Justin Niessner 12 янв. 2010, в 18:34
Поделиться
Помогло бы, но у нас есть только Java-компилятор в моей школе, хотя я знаю C # .
Brendan 12 янв. 2010, в 17:41
Даже если в вопросе говорится о Java, большинство ответов отступили. Поэтому я думал, что сделаю то же самое:)
Русские Блоги
Со времени использования Objective C для разработки нативных приложений для iOS появилось много альтернатив для разработки приложений для iOS на других языках. Например, некоторые из них перечислены ниже:
[*] [url = http: //www.phonegap.com/] PhoneGap [/ url], используйте HTML / JS для разработки
[*] [url = http: //www.rubymotion.com/] RubyMotion [/ url], используя Ruby
[*] [url = http: //ionicframework.com/] ionic [/ url], разработанный с помощью AngularJS
Недавно я обнаружил RoboVM, с помощью которого вы можете разрабатывать программы для iOS на Java. Эта статья расскажет, как использовать RoboVM и Java для разработки простого приложения.
Вот некоторые предварительные приготовления:
[*] OSX 10.9.3
[*] JDK 1.7
[*] Eclipse Kepler 4.3
[*] Xcode 5.1.1
Во-первых, установите плагин RoboVM для eclipse, в разделе help-install новое программное обеспечение, http://download.robovm.org/eclipse/. Это требует перезапуска IDE.
После установки плагина вы можете создать новый проект. Выберите опцию «RoboVM iOS Project».
Имя проекта, основной класс, имя приложения и идентификатор приложения заполнены HelloWorld. Как показано на скриншоте ниже.
По какой-то причине, когда я использовал мастер, основной класс не был сгенерирован успешно, поэтому мне пришлось делать это вручную. Итак, создайте класс HelloWorld.
Вставьте следующий контент в класс HelloWorld.
Здесь мы унаследовали класс UIApplicationDelegateAdapter, который является версией UIApplicationDelegate для RoboVM. В классе есть метод main, который используется для запуска приложения.
Теперь нам нужно переписать метод didFinishLaunching для генерации UIWindow и UILabel. Просто поместите следующий код в метод.
Большая часть кода выше не требует пояснений. Конструктивными параметрами CGRect являются координаты x, y, а также длина и ширина метки.
Если вы щелкнете правой кнопкой мыши по проекту и выберете запуск приложения-симулятора iOS. Вы увидите всплывающее окно симулятора iOS с зеленым экраном и текстом «Hello World». Как на скриншоте ниже.
Если вы дойдете до этого шага, это означает, что ваша среда настроена, и вы можете начать использовать Java для разработки программ для iOS.
Вот несколько ссылок. Надеюсь, эта статья поможет вам использовать Java для разработки под iOS.
Источник: russianblogs.com
Опыт использования Intel Multi-OS Engine для разработки iOS-приложения на Java
В августе на Intel Developer Forum в Сан-Франциско мы представили нативное мобильное приложение для iPаd для мониторинга пациентов, разработанное с помощью платформы Intel Multi-OS Engine. Приложение предоставляет данные о наиболее важных параметрах состояния пациента, подключаясь к прикроватным мониторам по WiFi-сети (более подробно о самом приложении и его функционале можно почитать на нашем сайте).
В данной статье мы поделимся опытом использования платформы Intel Multi-OS Engine, которая позволяет разрабатывать нативные приложения для iOS на Java.
В том случае, когда требуется разработать приложения как для Android, так и для iOS, возможность использовать Java для разработки приложений для iOS позволяет экономить время и ресурсы на разработку.
Основные преимущества работы с Intel Multi-OS Engine
UIElements
Основываясь на опыте, можно сказать, что основное положительное свойство платформы Multi OS-Engine — это возможность работать с нативными iOS UI элементами, практически так же, как в XCode. Все элементы, необходимые для разработки приложения, уже имелись в платформе, и, соответственно, не потребовалось добавлять что-то дополнительно. Каждый элемент полностью описан: присутствуют все характеристики и методы, что упрощает работу с платформой разработчикам, имеющим опыт работы с iOS.
Правильная организация приложения
В связи с тем, что данная платформа в дальнейшем позволит разрабатывать приложения сразу для Android и iOS, необходимо очень аккуратно подходить к разработке архитектуры приложения, правильно разделять общие и UI specific функциональности. Это позволяет строить очень точные и легкие приложения и организовывает разработчика.
Возможности Java
Преимуществом данной платформы является то, что она позволяет реализовать большинство возможностей Java. Например, рассмотрим работу с потоками и файлами:
Thread thread = new Thread() < public void run() < >>; thread.start(); private void openFileToRead() < String fileId = «hb»; NSBundle mainBundle = NSBundle.mainBundle(); String pathToFile = mainBundle.pathForResourceOfType(fileId, «dat»); File file = new File(pathToFile); FileInputStream fis = null; try < fis = new FileInputStream(file); DataInputStream dis = new DataInputStream(fis); //что-то делаем с input stream >catch (IOException e) < e.printStackTrace(); >>
В процессе работы мы проводили дополнительные исследования по работе с сетью и выяснили, что отлично работает фреймворк Retrofit в связке с okHttp.
Удобно и быстро пишем iOS специфичную часть на Java
Дополнительно можно использовать ObjC-подход для запуска в бэкграунде. В нашем случае при старте приложения мы запускали процесс чтения файлов:
Запуск отдельных функций в главном потоке тоже не является проблемой:
Доступ к ресурсам аналогичен с iOS API: чтобы получить изображение «alarm_on.png» из ресурсов и назначить его кнопке, достаточно выполнить следующее:
UIImage image = UIImage.imageNamed(«alarm_on»); mAlarmButton.setImageForState(image, UIControlState.Normal);
Очень удобно, что синтаксис работы с iOS API на Java практически не отличается от оригинала на ObjC. К примеру, меню, основанное на UITableViewController, добавляли таким образом:
Multi-OS Engine Plugin для Android Studio
Серьезным преимуществом платформы от Intel является «глубина» интеграции плагина Multi-OS Engine в Android Studio. Можно практически всю разработку проводить в Android Studio. При этом можно с легкостью настроить проект на работу сразу с двумя платформами. Для этого достаточно настроить конфигурации для запуска Android- и iOS-версии и переключаться между ними, просто выбрав нужную:
Подключение графиков
Для реализации отображения «бегущих» графиков были использованы наработки по работе с OpenGL, написанные на C. Для их использования был написан UIWaveFormVC контроллер на ObjC, где уже был добавлен C-код. Данный контроллер по входным данным отрисовывает на OpenGL View соответствующие точки с заданной скоростью и цветом.
Далее для использования данного класса внутри Multi OS-Engine нам необходимо сгенерировать для него «обертку», то есть осуществить биндинг Java к ObjC:
Далее мы просто добавляем UIWaveFormVC в логику экранов в MainUI.storyboard.
Затем вся работа проводится уже непосредственно из Java. Для передачи данных нашему UIWaveFormVC мы объявляем метод prepareForSequeSender(), который позволяет получить экземпляр класса контроллера до его отображения и передать ему данные.
Рекомендации по улучшению Intel Multi-OS Engine
• В связи с отсутствием поддержки ODBC драйвера для базы данных проблематично сделать одну унифицированную базу сразу для Android и iOS версии.
• Для поддержки https на iOS требуется приложить некоторые усилия: необходимо вручную добавлять сертификаты от Android сборки.
• При использования сторонних библиотек иногда требуется вносить изменения в настройки proguard, но возможность сделать это стандартным способом через Gradle отсутствует. В результате приходится добавлять нужные флаги вручную.
Сделать это можно в файле proguard.cfg, который находится в /Applications/Intel/INDE/multi_os_engine/tools. Флаги следует просто добавить в конец файла. В нашем случае мы добавили следующие флаги, чтобы использовать Retrofit:
• Отсутствует возможность редактировать storyboard непосредственно в Android Studio, приходилось верстать интерфейс в XCode.