ANDROID и Лаза - Вилы вильные! :(
Модератор: Модераторы
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
Вот интересно что можно делать в таком чистом нативном приложении?
Можно ли обратиться к тач-скрину, к openGL'у, создать интент (ну, к примеру камерой сфоткать что-то)?
Т.е. понятно что как-то можно, но насколько гиморно?
Что-то мне подсказывает, что эти приблуды, позволяющие LCL на андроиде использовать, работают через Dalvik-приложение.
Можно ли обратиться к тач-скрину, к openGL'у, создать интент (ну, к примеру камерой сфоткать что-то)?
Т.е. понятно что как-то можно, но насколько гиморно?
Что-то мне подсказывает, что эти приблуды, позволяющие LCL на андроиде использовать, работают через Dalvik-приложение.
Mirage насчёт LCL на андроид, там действительно собственно Activity запускается из java-класса, и она уже подцепляет приложение на LCL. Это тот вариант, который предлагается на данный момент в этой статье http://wiki.lazarus.freepascal.org/Cust ... ce/Android
Однако:
Возможно вести разработку на FPC для андроида без Java вообще. При этом даже на компьютере, на котором будет вестись разработка, даже не должна быть установлена Java и Eclipse.
Возможно это благодаря тому, что, как вот здесь описано: http://developer.android.com/reference/ ... ivity.html
в Android 2.3 ввели фичу, чтобы делать Activity на C. вот тут какие-то примерчики:
http://sourceforge.net/p/lazarus-ccr/sv ... pengltest/
http://sourceforge.net/p/lazarus-ccr/sv ... gltest.pas
Можно посмотреть, как в в статье про NativeActivity приведён код, и как тот же код используется в ndkopengltest.pas в примерчике, но уже сделано всё на FPC, но так как ведру, поддерживающему NativeActivity, не важно, на чём написан код, главное, чтобы был бинарный файл был........ короче не вижу особого смысла дальше всё в подробностях объяснять; надеюсь что всё уже ясно. Таким образом, можно уже сейчас вести разработку приложений для ведра (2.3 и новее, разумеется) не связываясь с жабой вообще. Особенно учитывая, что заголовочные файлы для NativeActivity для C уже портированы (см. пример - там они используются как модули паскаля). Надо только прикрутить какой-нибудь OpenGL-ES движок туда, и можно пилить пользовательский интерфейс. без жабы
Однако:
Возможно вести разработку на FPC для андроида без Java вообще. При этом даже на компьютере, на котором будет вестись разработка, даже не должна быть установлена Java и Eclipse.
Возможно это благодаря тому, что, как вот здесь описано: http://developer.android.com/reference/ ... ivity.html
в Android 2.3 ввели фичу, чтобы делать Activity на C. вот тут какие-то примерчики:
http://sourceforge.net/p/lazarus-ccr/sv ... pengltest/
http://sourceforge.net/p/lazarus-ccr/sv ... gltest.pas
Можно посмотреть, как в в статье про NativeActivity приведён код, и как тот же код используется в ndkopengltest.pas в примерчике, но уже сделано всё на FPC, но так как ведру, поддерживающему NativeActivity, не важно, на чём написан код, главное, чтобы был бинарный файл был........ короче не вижу особого смысла дальше всё в подробностях объяснять; надеюсь что всё уже ясно. Таким образом, можно уже сейчас вести разработку приложений для ведра (2.3 и новее, разумеется) не связываясь с жабой вообще. Особенно учитывая, что заголовочные файлы для NativeActivity для C уже портированы (см. пример - там они используются как модули паскаля). Надо только прикрутить какой-нибудь OpenGL-ES движок туда, и можно пилить пользовательский интерфейс. без жабы
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
Это здорово, хотя интенты еще год назад из нативного приложения использовать было нельзя. Точнее через вызов специальной команды можно, но это не то. Как сейчас не знаю.
Другой вопрос какой в смысл "не связываться с жабой"?
Производительность? На десктопе жаба может порвать не то что FPC или Delphi (этим бы JavaScript обогнать), но даже С++. В Далвике JIT послабее, но каков код генерируемый FPC для ARM? Был бы LLVM другое дело.
Другой вопрос какой в смысл "не связываться с жабой"?
Производительность? На десктопе жаба может порвать не то что FPC или Delphi (этим бы JavaScript обогнать), но даже С++. В Далвике JIT послабее, но каков код генерируемый FPC для ARM? Был бы LLVM другое дело.
Mirage писал(а):На десктопе жаба может порвать не то что FPC или Delphi (этим бы JavaScript обогнать), но даже С++
Улыбнуло
Можно хоть один пример.
ThreeCat-nev писал(а):КАК ЭТО ЛЕЧИТЬ ????
Тыкать кнопку "пропустить". Это известный баг CodeTyphon, идущий еще с версии 4.30, нWамудрено с кросс-линками некоторых гейм-макерских вендовых библиотек. Кстати, из-за этих библиотек поделие до сих пор неработоспособно на native Windows XP )). Уж на андроидный код это точно никак не повлияет.
Добавлено спустя 3 минуты 10 секунд:
SeZuka писал(а):Можно хоть один пример.
...с одним исключением - "жаба может порвать не то что FPC или Delphi , но даже С++ исключительно при обработке строковой информации", во всем остальном она по скорости обычно серьёзно уступает.
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
SeZuka:
Пример чего? Бенчмарки разные есть, в том числе и с таким результатом. Хотя это нетипично конечно.
http://en.wikipedia.org/wiki/Java_perfo ... _languages
SSerge:
Про обработку строк откуда инфа? Тут я бы как раз на Дельфи поставил, особенно если уникод не нужен.
Слабое место явы - сборка мусора(GC). Если много выделений памяти, то рано или поздно начнутся тормоза с любым видом GC, даже G1. Хотя сейчас скорее поздно, чем рано. Впрочем, на Андроиде рано начнутся.
Однако это можно учесть и избежать тормозов, что сделали, например JetBrains.
Плюс еще некоторые оптимизации недоступны, т.к. например нет адресной арифметики и много чего еще.
Это более-менее успешно компенсирует JIT.
Числодробилки будут оптимизироваться JIT'ом до нативной скорости, он вообще чудеса творить умеет - виртуальный метод, например, заинлайнить.
Это я к тому что говорить сейчас, что Java медленная некорректно. На самом деле, чтобы быть быстрее жабы надо иметь ОЧЕНЬ хороший компилятор. А просто компиляции в нативный код и близко недостаточно. Оно проигрывает даже принципиально медленному жабаскрипту.
Пример чего? Бенчмарки разные есть, в том числе и с таким результатом. Хотя это нетипично конечно.
http://en.wikipedia.org/wiki/Java_perfo ... _languages
SSerge:
Про обработку строк откуда инфа? Тут я бы как раз на Дельфи поставил, особенно если уникод не нужен.
Слабое место явы - сборка мусора(GC). Если много выделений памяти, то рано или поздно начнутся тормоза с любым видом GC, даже G1. Хотя сейчас скорее поздно, чем рано. Впрочем, на Андроиде рано начнутся.
Однако это можно учесть и избежать тормозов, что сделали, например JetBrains.
Плюс еще некоторые оптимизации недоступны, т.к. например нет адресной арифметики и много чего еще.
Это более-менее успешно компенсирует JIT.
Числодробилки будут оптимизироваться JIT'ом до нативной скорости, он вообще чудеса творить умеет - виртуальный метод, например, заинлайнить.
Это я к тому что говорить сейчас, что Java медленная некорректно. На самом деле, чтобы быть быстрее жабы надо иметь ОЧЕНЬ хороший компилятор. А просто компиляции в нативный код и близко недостаточно. Оно проигрывает даже принципиально медленному жабаскрипту.
Mirage писал(а):чтобы быть быстрее жабы надо иметь ОЧЕНЬ хороший компилятор
Чтобы быть быстрее жабы, достаточно иметь одноядерный процессор.
Mirage писал(а):Тут я бы как раз на Дельфи поставил, особенно если уникод не нужен.
Ну и зря вы на него ставите.
Про дельфу ничего не могу сказать, мне его запрещено незаконно использовать. ))
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
SSerge:
Многопоточность это отдельная тема. Грамотно воспользоваться несколькими ядрами сложно и в яве, хотя там сильно помогает модель памяти и гарантии с её стороны. Аналог для С++ появился только в С++11.
А вот в Delphi появился ARC с блокировками при работе с классами. Тут потоки будут по очереди выполняться, ага.
Насчет тестирования - не поделитесь кодом тестов? Я бы их прогнал, настроив и "разогрев" предварительно JIT. И дельфа вполне законная имеется.
SSerge писал(а):Чтобы быть быстрее жабы, достаточно иметь одноядерный процессор. По всем моим попыткам тестирования, при подобного рода аппаратуре, жаба сливает в разы. И со строками, кстати, тоже.
Многопоточность это отдельная тема. Грамотно воспользоваться несколькими ядрами сложно и в яве, хотя там сильно помогает модель памяти и гарантии с её стороны. Аналог для С++ появился только в С++11.
А вот в Delphi появился ARC с блокировками при работе с классами. Тут потоки будут по очереди выполняться, ага.
Насчет тестирования - не поделитесь кодом тестов? Я бы их прогнал, настроив и "разогрев" предварительно JIT. И дельфа вполне законная имеется.
Java рвёт C++ и FPC по потреблению памяти, на Андроид если скомпилить пустое приложение, оно сразу занимает в оперативной памяти 18 мегабайт. Кто не верит - может посмотреть в любом нормальном диспетчере задач для андроида. Ни одно приложение не может занимать меньше 18 мегабайт в принципе. +9 мегабайт "Shared" - это типа память, которая так же используется другими приложениями (кто не в курсе - в винде тоже shared-память есть, например, если каждое приложение использует user32.dll, библиотека в памяти будет загружена только один раз)
На Windows Moblie 6.5 браузер Opera с поддержкой JavaScript и прочего занимал 10 мегабайт. А простенькие приложения в 100 килобайт укладывались. (Я здесь всюду говорю об оперативной памяти)
На Windows Moblie 6.5 браузер Opera с поддержкой JavaScript и прочего занимал 10 мегабайт. А простенькие приложения в 100 килобайт укладывались. (Я здесь всюду говорю об оперативной памяти)
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Не наезжайте на "андрюшу"
Только благодаря ему (точнее монстроидальным аппаратным требованиям GUI Java-ы) в массовом "сегменте" сейчас имеем 2+ ядерные 2+ ГГц мобильные процы, 3D-акселераторы, батареи 2000+ МАч. С одним маааааленьким минусом - один фиг зарядки аппарата хватает на 1..2 дня.
Есть конечо в разы более экономичные платформы того же класса - например BADA. Жаль,что она пока не портирована.
Есть конечо в разы более экономичные платформы того же класса - например BADA. Жаль,что она пока не портирована.
debi12345 писал(а):С одним маааааленьким минусом - один фиг зарядки аппарата хватает на 1..2 дня.
HTC One X+ абсолютно нормально живет неделю с выключенным фай-фаем. Всё включено 3 дня легко.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Всё включено 3 дня легко.
3 дня с вайфаем и синезубом ?! Тип и емкость батареи ? Атомная что ли ?
У меня приятель купил один из последних HTC, с большим экраном но не AMOLED-овский - каждые два дня заряжает. Даже тренирвка батереи не спасает. Юзает умеренно - в основном софт, использующий экран - медиаплэйеры, букридер, GPS, веб-браузер,..
debi12345 писал(а):Всё включено 3 дня легко.
3 дня с вайфаем и синезубом ?! Тип и емкость батареи ? Атомная что ли ?
У меня приятель купил один из последних HTC, с большим экраном но не AMOLED-овский - каждые два дня заряжает. Даже тренирвка батереи не спасает. Юзает умеренно - в основном софт, использующий экран - медиаплэйеры, букридер, GPS, веб-браузер,..
Встроенный литий-ионный аккумулятор
Емкость:2300 мАч
не знаю, какой "один из последних", у этого самый мощный акк. из всей линейки HTC и вроде на рынке тоже.
Гарнитурами не пользуюсь, поэтому не вижу необходимости в синезубе. 3 дня спокойно выживает.
Почитать книжку в метро по дороге туда-обратно, фейсбуки, твиттеры, музыку иногда послушать. Выключенный фай-фай, кино, музыка, книга - неделя.
-
Mirage
- энтузиаст
- Сообщения: 881
- Зарегистрирован: 06.05.2005 20:29:07
- Откуда: Russia
- Контактная информация:
hinst писал(а):Java рвёт C++ и FPC по потреблению памяти, на Андроид если скомпилить пустое приложение, оно сразу занимает в оперативной памяти 18 мегабайт.
Это же хип, т.е. кусок памяти, выделяемый одномоментно, который собсно и используется как память java-приложением. Хотя сразу столько не должно отжирать - что-то с настройками девайса, либо приложения, а скорее всего диспетчера погоду на марсе показывают.
Многоядерность и 3D акселерация к тормозам явы никакого отношения не имеют и никак здест не помогают, да и GUI в андроиде не на яве написан. Они были введены по какой-то другой причине.
