Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/ashowflat.php?Number=11349845&src=&showlite=l
Дата изменения: Unknown
Дата индексирования: Sat Mar 1 15:54:44 2014
Кодировка: Windows-1251
Нубский вопрос: Java vs C++. Зачем в андроиде используют Java? - Public forum of MSU united student networks
Technical >> Development (Archive)

Страницы: 1 | (4)
Kai : Re: Нубский вопрос  [re:DarkGray]   09.02.2013 01:57    | Reply | Edit |
15

 
Quote:

зато на Java-е меньше возможностей для уязвимостей.



Не зря в браузерной джаве раз в месяц по уязвимости находят.

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

Переносимость именно _бинарников_ (т.е. байткода) - основной аргумент.


Shurik   [re:rogdin]   09.02.2013 02:31    | Reply | Edit |
3
Quote:

для джавы нужна виртуальная машина, и наверное, от этого проги на джаве медленнее?



Синовски - руководитель разработки Windows 8 - такого же мнения, поэтому WinRT в Windows 8 сделали на C++. Синовски, как разработчик, вырос на C++, всякие дотнеты и джавы недолюбливал.
Эппл издавна пилила свой Objective C, поэтому там Objective C.
У гугда, видимо, у руля оказался джава архитектор джавист.

ayvango   [re:Kai]   09.02.2013 02:38    | Reply | Edit |
0
Но безопасность (построение фреймворка с делегацией полномочий и независимым исполнением клиентских программ) тоже важна. И поскольку lxc не дописали до сих пор, а java была уже тогда, то системные средства пришлось заменить java фреймворком. Естественно перенося при этом код фреймворка на яву.

Почему не питон - очень просто. Ява все же намного быстрее. Всего в полтора раза медленнее си. И ява умеет в многопоточность. К тому же документирована лучше, у питона же наблюдается болезнь под названием "вместо языка одна референсная реализация интерпретатора". Тех же действующих яв штуки три уже было совместимых между собой, и соответственно стандартизация была лучше.

Почему не c# ответ простой - си шарп не открытый и не свободный софт. Для построения независимой мобильной платформы не подходит. Почему не mono вопрос более интересный. Возможно ориентировались на большое количество уже существующих библиотек явы, возможно верили, что текущая тенденция сравнительных скоростей развития останется неизменной, но оракл пожрал яву, а моно ускорило свое развитие как единой открытой инициативы.

P.S. Кто разбирается в dalvik - там все так же плохо в tail call optimization как в настоящей яве, где она невозможна? И type erasure столь же убог?

unkulunkulu   [re:DarkGray]   09.02.2013 04:18    | Reply | Edit |
-2
Quote:

1. код Java-ы отделен от особенностей процессора, C/C++ наоборот сильно зависим от особенностей процессора.


да не процессора, на плюсах не очень сложно переносимый между архитектурами код писать. Дело в завязках на ОС в основном.

DarkGray   [re:unkulunkulu]   09.02.2013 04:19    | Reply | Edit |
0
kai уже правильно сформулировал

unkulunkulu   [re:DarkGray]   09.02.2013 04:23    | Reply | Edit |
0
ок, ночь, темно, ничерта не видно :bat:

DizzyDen   [re:Kraft]   09.02.2013 09:23    | Reply | Edit |
-4
Quote:

И еще про сборку мусора не надо забывать. Мемори-лик в плюсах - как два пальца.



Плюсы могут быть со сборкой мусора.
Я, правда, не слышал про такие имплементации.

marufa   [re:rogdin]   09.02.2013 10:30    | Reply | Edit |
0
В современной разработке главное простота и надежность. То, что пишется на java, обычно сразу работает правильно. Вероятность ошибки в техническом плане крайне мала. Поэтому все внимание уделяется самой задаче, выраженной в человеческих терминах. Такие задачи для смартфонов и планшетов разнообразны и решать их желательно быстро. Все поставлено на поток. Отсюда - java.

А C++ больше связан с копанием в техвопросах. Только для отдельных разновидностей приложений это важно. Например, при разработке браузеров или для системного программирования.

Demetr   [re:Kai]   09.02.2013 10:47    | Reply | Edit |
0
В ответ на:

Переносимость именно _бинарников_ (т.е. байткода) - основной аргумент.


Гм, ну вообще-то именно байт код в гугле из джавы выкинули и использовали свою компиляцию

Demetr   [re:rogdin]   09.02.2013 10:57    | Reply | Edit |
0
Java значительно определеннее по своим состояниям, у нее инт не может быть длины 14 бит :)

А если серьезно, то под андроид есть SDK для джавы и NDK для С, используют жабу просто потому, что значительно удобнее.

DeeMon   [re:Demetr]   09.02.2013 15:34    | Reply | Edit |
0
Как это выкинули? Когда с Play прогу скачиваешь, она не в байткоде?

nelenivy   [re:Kraft]   09.02.2013 16:16    | Reply | Edit |
0
Даже с интеллектуальными указателями?

Thirteen   [re:DeeMon]   09.02.2013 16:44    | Reply | Edit |
0
в далвике свой байткод, с блекджеком и регистрами

DeeMon   [re:Thirteen]   10.02.2013 12:42    | Reply | Edit |
1
Я знаю. Но это таки байткод. И сам далвик намного более интерпретатор, чем jvm.

Demetr   [re:DeeMon]   10.02.2013 17:10    | Reply | Edit |
0
В ответ на:

Я знаю. Но это таки байткод. И сам далвик намного более интерпретатор, чем jvm.


ну да, тока там другой байткод :)

Top