LINUX.ORG.RU

Объясните про Android NDK для дебилоидов.


2

2

Утерждения, которые я считаю истинными, но не уверен в их истинности. Просьба знатокам пофиксить. Вопросы.

1) C++ код для NDK будет скомпилирован в машинные инструкции конкретного камня.

2) Если C++ компилируется в JVM-код, то нафига бы тогда был нужен C++?

3) Мобильных процессоров много, значит приложение должно содержать 50 вариантов машинного кода для одного и того же C++ кода для 50 разных камней, на которых твоё приложение потенциально могут запустить.

3.1) Среда разработки NDK содержит 50 компиляторов под 50 камней и рожает 50 сборок твоего кода под все камни, на которые нацелена твоя разработка.

4) Обычно C++ применяют для реализации каких-то .so-шек, реализующих тяжёлые вычисления, а само приложение проще написать на Java. Оттуда C++-код подключается как java-модули и используется путём создания экземпляров классов определённого типа, только эти классы написаны на C++ и лежат в .so-шках.

5) Целиком приложения на C++ писать смысла мало и никто не пишет void main(...) под NDK.

★☆

Последнее исправление: kiverattes (всего исправлений: 1)

Ответ на: комментарий от PolarFox

Лол, ну cpython тоже исполнитель байт-кода. Нужно больше идиотизма...

anonymous
()
Ответ на: комментарий от kiverattes

То есть, если я хочу запускать встроенное приложение «фотокамера», чтобы получить фотку, то мне надо изначально планировать, что приложение будет написано на java?

Не обязательно, там вроде есть native-api для андроида. Но я туда сильно не смотрел, не знаю что там.

Dudraug ★★★★★
()
Ответ на: комментарий от waker

Вы видели встроенную autodesk-рисовалку на новых galaxy note 3? Есть догадки, как они добились такой скорости вывода графики при рисовании пером даже под большим зумом и как построено графическое ядро этого приложения с учётом скроллинга огромной картинки типа 2000x2000 точек.

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

Ява - это просто язык, он компилируется в разные байткоды)

jvm - это ТМ как бы, подразумевается байт-код именно сана/оракла.

К.О.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

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

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

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

Нет, jvm - это виртуальная машина испольняющая только байт-код от сана/оракла. Я говорил только это.

Dudraug ★★★★★
()
Ответ на: комментарий от peregrine

Ибо jvm это название конкретного стандарта на виртуальные машины.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

Вы видели встроенную autodesk-рисовалку на новых galaxy note 3?

нет

waker ★★★★★
()
Ответ на: комментарий от kiverattes

огромной картинки
2000x2000

/0

все это не составляет абсолютно никаких проблем, например, для opengl.

waker ★★★★★
()
Ответ на: комментарий от Dudraug

Непонятно с чего начался срачь. Зачем вы пишете, что байт-код для JVM отличается от байт-кода для Dalvik, если никто не утверждал обратного? Сами с собой тут срётесь по-моему)

kiverattes ★☆
() автор топика
Ответ на: комментарий от RiseOfDeath

А можно подробностей? А то мне такого на глаза не попадалось.

Вот когда начнете прикручивать поддержку всяких G+, Leaderboards, Achievements, Cloud Storage, Multiplayer, etc., то тогда попадется :)

Можете начать отсюда: http://developer.android.com/google/play-services/setup.html

andreyu ★★★★★
()
Ответ на: комментарий от waker

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

динамически меняй фрагменты, и обойдешься одной активити

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

динамически меняй фрагменты, и обойдешься одной активити

а всякие там PreferencesActivity, и прочие подобные заманухи - как? тоже через фрагменты как-то можно?

waker ★★★★★
()
Ответ на: комментарий от andreyu

Не правильно выразился. Искал Google Native API, но гугл был скуп и дал мне обычный API для явы.

То, что по вашей ссылке указано - как раз описание явовоского API, меня же волнует вопрос возможности использовать Android API и Google Services API не вставляя прослоек на яве.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 2)
Ответ на: комментарий от kiverattes

срач начался с вашего сообщения

>JVM в андроиде нет в принципе,

Разве Дальвик не является Виртуальной Машиной Ява? )

Dudraug ★★★★★
()
Последнее исправление: Dudraug (всего исправлений: 1)
Ответ на: комментарий от Dudraug

Так разве дальвик не является виртуальной машиной, которая исполняет некий байткод некой явы? Я же ничего не пишут про конкретный стандарт на байткод, я просто сказал, что это (1) виртуальная машина, (2) исполняющая байткод, полученный от компиляции явы

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

Надо разделять понятия язык java и платформа java. Язык-то компилировать можно во много что, а вот java-машина предназначена для работы именно с байткодом java(который имеет только историческую связь с языком java, как и сама jvm).

anonymous
()
Ответ на: комментарий от kiverattes

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

срач на пустом месте.

anonymous
()
Ответ на: комментарий от kiverattes

Ну тебе еще на первой странице написали, что jvm в андроиде нет. А ты стал спорить. Тебе несколько раз указали, что JVM - это tm, то есть конкретная виртуальная машина, а не общее название виртуалок которые исполняют байт-код из явы. Собственно в этом и суть.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

И не только в этом. Есть и другие реализации «JVM». Но в Android'е нет виртуальной машины, которая бы выполняла байткод Java. У них свой байткод и своя виртуальная машина, которая с Java никак не связана. И далее у них есть транслятор в этот байткод, не более того.

anonymous
()
Ответ на: комментарий от Dudraug

jvm - это и аббревиатура и TM, поэтому любую «машину», которая является виртуальной и выполняет некий байт-код, полученный путём компиляции кода на java можно назвать jvm. По-крайней мере я могу и меня это не напрягает, кто не может так назвать — его трудности. Не вижу никакой логической задницы в своём таком назывании. По крайней мере со мной много людей согласны, ибо когда в microsoft сделали свою виртуальную машину, которая выполняла несовместимый с Sun-JVM код, получнный путём компиляции программ на java, они называли это поделие JVM. Я предпочитаю называть вещи исходя из логики, а не из брендов.

Завтра придумают стиральную машину «океан» и вы этим словом начнёте называть только эти стиральные машины, а не океаны...

Поэтому дальвик, являющийся программой, которая интерпретирует некий байткод, то есть машиной и машиной виртуальной (а не реальной), который (байткод) получается преймущественно в результате компиляции программ на java, для меня является JVM, как бы там ни назывались продукты SUN. Кто не видит этой логики — так это ведь его трудности, я-то вижу.

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 5)
Ответ на: комментарий от kiverattes

А ты угадал с названием треда. Не только на жабе можно писать для андроида (вернее для дальвика). Жаба здесь только как удобный высокоуровневый язык. Если появится компилятор для питона в dalvikvm, то можно будет и на питоне писать для андроида.

anonymous
()
Ответ на: комментарий от kiverattes

jvm - это и аббревиатура и TM, поэтому любую «машину», которая является виртуальной и выполняет некий байт-код, полученный путём компиляции кода на java можно назвать jvm.

нет.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

По-крайней мере я могу и меня это не напрягает, кто не может так назвать — его трудности. Не вижу никакой логической задницы в своём таком назывании.

Потому что когда говорят jvm подразумевают виртуальную машину которая выполняет код для sun/oracle java-платформы. Это термин. Это как называть Москвой любой крупный город.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

По крайней мере со мной много людей согласны, ибо когда в microsoft сделали свою виртуальную машину, которая выполняла несовместимый с Sun-JVM код, получнный путём компиляции программ на java, они называли это поделие JVM.

Пруф.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

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

Ява, если мы говорим о языке, это всего лишь язык. И компилироваться может во что угодно. С кого фига тогда исполняемая среда должна называться по имени языка? Ты не называешь интел-процессор - виртуальной машиной си?

Яву при желание (теоретически) можно и в натив-код скомпилировать и в байт-код .NET. Почему название среды исполнения должно зависеть от языка? Где тут твоялогика.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Ну москва тоже и название конкретного города и название типа городов. Иногда мы говорим: «в какой-нибудь москве», подразумевая любой город на неск. млн. челов. Поэтому, например, можно сказать «в штатах тоже есть москва», подразумевая, что там есть нью-йорк какой-нибудь заблёванный.

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 1)
Ответ на: комментарий от kiverattes

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

Ява, если мы говорим о языке, это всего лишь язык. И компилироваться может во что угодно. С кого фига тогда исполняемая среда должна называться по имени языка? Ты не называешь интел-процессор - виртуальной машиной си?

Яву при желание (теоретически) можно и в натив-код скомпилировать и в байт-код .NET. Почему название среды исполнения должно зависеть от языка? Где тут твоялогика.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

который (байткод) получается преймущественно в результате компиляции программ на java, для меня является JVM

Лишь потому что так компилирует компилятор. Сам этот байт-код никак не связан с явой. ты можешь хоть компилятор си в дальвик написать.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

Ну вот, значит ты понимаешь. Дальвик машина исполняющая байт-код, который может быть получен из чего угодно. Пока из явы. Никто не дает гарантии, что через 5 лет все проги не будут писаться на C#, но при этом компилироваться все в тот же дальвик байт-код.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Называние идёт не от языка, а от байт-кода, в который чаще всего компилируют именно яву. Яву чаще всего компилируют в разные байт коды, например в sun-jvm или в dalvik-vm. Эти байт-коды я называю байт кодом явы, потому что их породил компилятор, компилируя чаще всего яву. Интерпретаторы этих байт кодов, соответственно, называются для меня интерпретаторами байткода явы. Ну или виртуальными машинами. Явы. Берём английские буковки, получаем jvm. Такой же мысленный путь проделали и авторы (tm) JVM, но они меня мало волнуют, подумаешь родились раньше меня, сволочи )

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 1)
Ответ на: комментарий от kiverattes

Эти байт-коды я называю байт кодом явы

С чего вдруг? Байт код явы - это sun/oracle-vm, ибо в данном случае ява тут не язык, а название платформ. В аббревиатуре JVM Java это не языка, а одноименная платформа. На андроиде рантайма этой платформы нет (из коробки).

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

Это понятно, можно байт-код хоть в hex-редакторе писать.

так с чего вдруг он тогда становится байт-кодом явы? Еще раз скажу. Java в JVM означает не язык.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

Да тут даже tm не при чем же. J в jvm - это не язык!

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

Вы продолжаете повторять мантру, по-сути целуя сапоги маркетологам. Они так сказали, а вы повторяете. В отличие от этих мантр у меня есть логика, возможно извращённая, но хоть какая-то.

Байт-код явы — это байт-код, который породил некий компилятор, компилирующий java.

Java я называю только язык, потому что «платформа java» не означает ничего конкретного, потому что платформ всяких дохрена - J2EE, J2SE, разные версии и т.п. и т.д. Я ещё 90% разных платформ вообще не знаю, которые могут исполнять этот байт-код.

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 2)
Ответ на: комментарий от Dudraug

Он становится байт-кодом явы просто потому, что 99% этих байт-кодов в мире за всю историю было получено скармливанием java-кода java-компилятору. Оставшийся 1% — это всякие скалы и грувы нашего времени, а до нас ещё 10 поколений дедов жило и кодило на java :) Корректнее конечно каждый байт-код называть байт-код-такой-то-формат-стандарт-версия.

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 2)
Ответ на: комментарий от kiverattes

Это не поцелую сапог маректологов, а 1) здравый смысл. Я не называю vm по названию языка на котором чаще всего под него пишут

2) Я использую устоявшееся название. Даже твоя Microsoft JVM - это по сути все та же vm для sun/orcale java platform. Только «своя особая» не до конца совместимая. Но по сути она запускает тот же байт-код. Можешь почитать о ее судьбе кстати.

Dudraug ★★★★★
()
Ответ на: комментарий от kiverattes

Он становится байт-кодом явы просто потому, что 99% этих байт-кодов в мире за всю историю было получено скармливанием java-кода java-компилятору. Оставшийся 1% — это всякие скалы и грувы нашего времени, а до нас ещё 10 поколений дедов жило и кодило на java :) Корректнее конечно каждый байт-код называть байт-код-такой-то-формат-стандарт-версия.

Ну это же полностью ненаучный бред. Я тогда сейчас назову core i7 хардверной машиной Си. И по твоей логике я буду прав.

Dudraug ★★★★★
()
Последнее исправление: Dudraug (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.