Перевод: разработка для Android vs Windows Mobile

http://www.koushikdutta.com/2008/11/post-11-android-versus-windows-mobile.html
  • Перевод

Вступление переводчика


Занимаясь разработкой для платформы Windows Mobile в течение последних двух лет, я не мог не слышать о новых платформах, таких как Apple IPhone, Google Android, Palm Pre. Какое-то время назад я натолкнулся на блог разработчика Windows Mobile, который вел свой блог в достаточно издевательском стиле, пародируя «30 days of Windows Mobile», его посты из той серии назывались «30 Days of Bitching about .NET CF», что переводится как «30 дней сплетен за спиной у .NET CF». В этих постах он описывал подводные камни, с которыми сталкивался при разработке.

Несколько месяцев назад этот блоггер приобрёл HTC G1 и погрузился в мир Android девелопмента. Выпустив пару приложений на Android Market, Кушик Дутта (а именно так его зовут) решил написать сравнительный анализ опыта разработки для Windows Mobile vs Android.

Оригинал находится здесь. Статья написана в ноябре 2008 года, на сегодняшний день некоторые сведения несколько устарели, но хуже от этого она не стала. В тексте есть несколько ссылкок вида [X], в самом конце идёт их расшифровка.

Android против Windows Mobile


Я хотел воздержаться от блоггинга на эту тему пока я не погружусь в достаточной степени в разработку для Andriod. И хотя я ни в коей мере не являюсь гуру Android платформы, я считаю, что могу спокойно делать некоторые достаточно общие утверждения, наступать кому-то на мозоли и быть в состоянии отстоять своё мнение.[0]

Байт-код


Google сделал несколько интересных архитектурных и стратегических решений касаемо Android. Самые заметные — это Java в качестве языка разработки и Dalvik в качестве виртуальной машины. Если коротко, то Dalvik это байт-код, который интерпретируется во время исполнения, как байт-код в Sun Java или Microsoft Intermediate Language (IL) [1]. Я не мог понять, зачем Google решился делать свою спецификацию байт-кода для Java, пока я не прочитал этот великолепный пост. А суть в том, что у компании Sun существуют заморочки с лицензированием Java ME и «открытый» альянс мобильных устройств (Open Handset Alliance) в действительности не может иметь открытую платформу без вероятности того, что какая-либо мега-корпорация не попытается навариться за их счёт.[2]

Но вопрос остаётся открытым — зачем изобретать новый байт-код, когда IL не защищён подобным лицензированием (это ECMA одобренный стандарт)? Может быть Google посмотрел и решил, что IL не годится для мобильной платформы, а может быть они не хотели спать в одной постели с Microsoft. Я полагаю, что вероятнее всего последнее.

Язык


Вообще говоря, байт-код, генерируемый за кадром, так же важен, как цвет моих носков. Я об этом регулярно не думаю. А вот что действительно важно — это язык, на котором вы пишете. Я могу понять, что Google выбрал Java, чтобы облегчить целевым разработчикам миграцию на новую платформу, но всё же… да, я всё-таки скажу это наконец. Java — отстой.

Почему Java отстой? Давайте посчитаем.
  1. Ужасные ограничения вокруг имен пакетов/файлов/каталогов/классов
  2. Отсутствие анонимных методов
  3. Отсутствие замыканий (closure)
  4. Отсутствие лямбда-выражений
  5. Отсутствие событий/делегатов
  6. Отсутствие partial классов
  7. Смешная имплементация перечислений
  8. Ужасная реализация generic-ов
  9. Отсутствие структур и как следствие невозможность хранить составные объекты целиком в стеке. Это существенно сказывается на производительности, там где это важно.
  10. Строки являются неизменяемыми (immutable), но не интернированы (см. intern)
  11. Нет доступа к unsafe-коду
  12. Нет get/set методов для свойств
  13. Нет перегрузки операторов
  14. Нет extension методов
  15. Наконец глупая и неинтуитивная расстановка скобок

Сколько причин? 15? Ха-ха-ха!


Я не пытаюсь придираться — всё, что перечислено выше, я использую на регулярной основе. Тем не менее замечу, что мне до некоторой степени нравятся анонимные классы, но они почти бесполезны без событий/делегатов. Я понимаю, что всё то, что я перечислил — это, по большому счёту, синтаксический сахар, и ни Java, ни C# не мощнее один другого — оба языка могут делать всё, что вам нужно, просто в каждом языке это нужно делать по-своему. За исключением того, что C# позволяет вести разработку быстрее, эффективнее, изящнее.[3]

Среда разработки


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


Моя самая любимая больная мозоль это невозможность просто кликнуть на Expressions view и отредактировать что-либо на месте. Обязательно надо нажать правую кнопку мыши и выбрать там Add/Edit. В результате открывается примитивный текстовый редактор без Intellisense, в котором можно напечатать выражение, помолиться, что оно без ошибок и кликнуть OK. Ошиблись — повторяйте всё сначала.
Ранее я хвалил возможности внутренних классов (inner class) в Java. Какими бы хорошими они не были, Eclipse почти сводит на нет их удобство: вы не можете увидеть значение переменной родительского класса у внутреннего класса! Это делает отладку сущей мукой: приходится загружать родительские классы в локальные переменные, если что-то пошло не так, иначе просто невозможно найти и поправить даже простейшие косяки. Правда, я не уверен, проблема ли это в Eclipse, Java или Android.

Авто-дополнение в Eclipse ужасающе назойливое. Нельзя же так насильно всё дополнять, вне зависимости от желаний разработчика. Я в итоге вообще всё поотключал, потому что то, что он мне вставлял, было по большей части бесполезным. Но даже с полностью отключенным авто-дополнением, Eclipse продолжает расставлять за меня скобки...

SDK


Несмотря на то, что я много жаловался на разработку для Android, я хочу отметить, что я не жаловался на сам Android. По сути любой API, о котором бы я мог подумать, стандартизирован и существует.
Моей лакмусовой бумажкой в этом смысле было портирование Klaxon на Android. Это здорово помогло подчеркнуть колоссальные отличия между двумя платформами.

Лично для меня наиболее заметной разницей были API для доступа к аппаратным сенсорам. Android SDK 1.0 предлагает простой класс SensorManager, в котором я разобрался за 5 минут. У Microsoft было 6 версий Windows Mobile без какого-либо Sensor API.

Во-вторых, запуск приложений по расписанию на Android бесконечно проще, чем на Windows Mobile. Сравним, как я разбирался с этим на Windows Mobile:
  • Я начал с CeRunAppAtTime. Написал большой P/Invoke. Это какое-то время работает, а потом полностью перестаёт. У других людей были такие же проблемы. Пришлось переключиться на иной механизм.
  • Далее я попробовал CeSetUserNotificationEx. Написал ещё один здоровенный P/Invoke.
  • Для того, чтобы это заработало, пришлось разбираться с тем, как правильно заполнить структуру UserNotificationTrigger.
  • Потом выяснилось, что если устройство спит, то Klaxon не всегда правильно срабатывает.
  • Ещё раз перелопатив документацию, я решил и эту проблему — оказывается нужно было в явном виде посылать устройству команду включения, иначе оно опять засыпало.
  • Klaxon работал ещё какое-то время, пока не приключился переход на летнее время. На некоторых телефонах нотификации срабатывают на час позже. Без понятия почему. Я сдался.

А теперь сравним с Android:
  • Обратитесь к AlarmManager
  • Настройте срабатывание события (intent) в определённое время
  • Обработайте событие


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


Таким образом, одна из двух сложных частей во время разработки для Windows Mobile, на Android оказалась проще простого. Напоследок — пользовательский интерфейс.

Windows Forms против Android XML Layout. Windows Forms работает с абсолютными размерами и позиционированием. Android работает с относительными размерами и позиционированием. «Статические» контролы против анимированных контролов. По сути сравнивать нечего, так что я и пробовать не буду.


Проще говоря, Android SDK рвёт на куски Windows Mobile SDK (не учитывая особенности языков и фреймворков).

У Windows Mobile гораздо лучше документация (MSDN), но такова участь любого молодого SDK.

Платформы


Android достаточно жёстко зажат с точки зрения безопасности. Приложения должны регистрировать возможности, которые им нужны, а пользователь должен подтвердить их. Но несмотря на то, что это очень и очень положительная вещь, у неё есть свои недостатки. Например, невозможно написать приложение, которое снимает скриншоты чего-либо, кроме самого себя, т.к. это считается небезопасным [4]

И хотя это не вина Android, но телефоны не такие уж и «открытые» получаются — операторы привязывали и будут привязывать телефоны к себе, т.к. они их субсидируют. Например, у пользователя нет доступа к учётной записи root. Это не даёт возможности настраивать/изменять стандартные приложения, установленные на Android. Но если вы всё-таки получили root-доступ, вы реально можете менять стандартные приложения, т.к. они есть в исходниках.

С другой стороны, Windows Mobile ничего не прячет. Разработчик может получить низкоуровневый доступ абсолютно к чему угодно. Например, если бы у Android не было Sensor API, у разработчика бы не было шансов (кроме установки бинарников вручную через ADB). Ещё один пример: в Android пока нет поддержки потокого видео через Media Player, и насколько я знаю, сделать с этим ничего нельзя, если только не пропатчить бинарники системы через OTA update.

А, да, Android Market! Ничего говорить не буду, из названия и так всё ясно.
Прим.пер.: Да уж, Marketplace ещё только осенью 2009 года появится...

Заключение


В 4 утра не напишешь какого-то фантастического заключения. Скажу только, что мне действительно нравится разрабатывать для Windows Mobile. Язык и средства разработки просто великолепны. Тем не менее, платформа и приложения не очень-то удобны в использовании. С другой стороны, хотя я не так уж и удовлетворён от разработки для Android, платформа, приложения и юзабилити просто фантастические! Наконец-то мне не нужно воевать с телефоном, чтобы выйти в Интернет. Так что угадайте, какой телефон всегда со мной. И подумайте, для какого из телефонов я более заинтересован в разработке.

Я очень надеюсь, что Microsoft сможет создать удобную для пользователя платформу, что сделает меня счастливым пользователем и разработчиком. Я не верю, что я это говорю, но я всё-таки скажу, что им надо вырвать страничку из книги Apple и сказать: «мы забьём на обратную совместимость, мы забьём на существующие приложения, мы просто сделаем абсолютно новую платформу, которая работает». Они слишком долго прибегали к мантре «обратная совместимость», что просто не даёт им двигаться дальше. А между тем они всё отдаляются и отдаляются от рынка, часть которого они так боятся потерять.

Сноски


[0] Я разработал два приложения для Android Market: Telnet и Klaxon, так что я полагаю, у меня есть представление о разработке для платформы Android. Klaxon очень помог подчеркнуть колоссальные отличия между двумя платформами.
[1] Да, я понимаю, что IL не интерпретируется на Windows Mobile. он проходит через JIT-компиляцию.
[2] Каким бы ни был Microsoft «злом», он не был замечен в новостях в попытках отстоять свои патенты. В отличие от Sun
[3] Хочу посмотреть на Ruby
[4] Возможно Google сделает это в будущем

Поделиться публикацией
Похожие публикации
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 151
  • +5
    здорово, очень интересно, особенно мнения о java и сравнение с c#. очень трудно найти человека, который знает одинаково хорошо и то и другое и может трезво их сравнивать
    • +12
      Кушик вообще маньяк, он смог поднять на Andriod-е Mono, после чего начал его зверски тестировать и сравнивать с Dalvik-ом, в итоге очень интересные результаты получились и в комментариях нешуточная война разгорелась :) У меня на очереди как раз перевод Dalvik vs Mono :)
      • +3
        отлично, жду с интересом
        • +1
          видел, что он моно запустил)
          могу сказать, что я его даже себе на андроид поставил и оно работало)

          с нетерпением жду статьи на счет моно)
        • НЛО прилетело и опубликовало эту надпись здесь
          • +3
            В Java вливались разработки тысяч коммерческих и некоммерческих фирм. Надзор за архитектурой Java осуществляет комитет JCP.org.
            Так что говорить о сравнении .NET (которую разработала и ведёт одна Microsoft) с Java (над которой работают сотни компаний), не совсем корректно. Да, архитектурные подходы отличаются в силу того, что кода на Java в тысячи раз больше, чем кода на C#, а его надо поддерживать и обеспечивать обратную совместимость.

            Да, да, «обратная совместимость» в .NET обеспечивается полным набором фреймворков, тогда как в Java совместимость обеспечивается последней версией JRE/JDK.
            • НЛО прилетело и опубликовало эту надпись здесь
              • НЛО прилетело и опубликовало эту надпись здесь
                • –7
                  Либо вы пишете никому не нужный однодневный код, либо вы тролль и мудак. Определяйтесь сами.
                  • НЛО прилетело и опубликовало эту надпись здесь
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Вы явно незнакомы с .NET Framework :)

                  Ибо такую чушь даже самые большие адепты Java не скажут.
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Приведите.

                      Лично меня привело в шоковое состояние множество библиотек для одного и того же GUI.

                      И все совсем не state of art
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • 0
                          >>А что, в дотнети их не множество? WinForms, WPF, GTK# — сиди выбирай.
                          Это плохо? -))))))))
                          А теперь слушаем минусы WPF ^__^
                          • +1
                            Слизана-то, может и слизана, но не тупо, а с необходимыми дополнениями и улучшениями.
                            В чем-чем, а в разработке средств для разработки (извините за каламбур) Майкрософт не одну собаку съел. И тот же MSDN это просто рай для разработчика в сравнении с разрозненным чисто описаловом для Java.
                            Простой пример, использование итератора (его более удобного подобия на C#) есть на MSDN в его описании, использование того же в Java нет в описании, поэтому и существует куча сайтов, где приходится искать эти примеры.
                • 0
                  Просто дженерики в Java появились на год-полтора раньше таковых в C#, поэтому и показались неудобными.
                  • НЛО прилетело и опубликовало эту надпись здесь
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      я не эскперт, но у меня вызывает сомнения пункт «Ужасные ограничения вокруг имен пакетов/файлов/каталогов/классов».

                      Мне больше нравится, как в яве — каждый класс отдельный файл с совпадающим названием. Я хочу работать с логической моделью программ — классами и пакетами и не хочу чтобы меня при жтом зщаставляли управлять файлами.
                      • 0
                        я чего-то не понимаю, потому что в C# у меня тоже каждый класс — это отдельный файл с названием класса, что вы хотели сказать?
                        • 0
                          Рад за вас! А с чужим кодом вы работаете? А не случалось ли вам описаться при назывании файла? А инструментарий такую политику поддерживает?
                          • 0
                            какую политику? жесткой привязки имени класса к имени файла? слава богу нет
                            • 0
                              Кстати, при переименовании в VS2008 (в 2005 уже не помню) файла, студия предлагает отрефакторить имя класса, который в этом файле содержится. Но не заставляет :)
                    • +7
                      А продукты Гугла вообще отличаются очень грамотным проектированием, что серьезно снижает в них количество потенциальных проблем в будущем. Это что-то вроде их фирменного стиля.
                      • –9
                        Можно было написать «Друзья, каждая платформа имеет недостатки, но WM и Android одинаково хороши». А то выходит автор написал сравнение языков и все.
                        • –1
                          не согласен, автор хорошо разложил проблемы одной и другой платформы
                          • +3
                            Пока что автор выразил эмоционально свои проблемы, но обстоятельного сравнения не привёл.
                          • 0
                            Ничего себе, одинаково хороши :) Мне кажется, Кушик далеко не только языки сравнивал, а опыт разработки под обе платформы. Просто так языки сравнивать — чистый holly war.
                            • –1
                              Кроме сравнений возможности java, все это всплывает за неделю попыток разработать продукт под Android. По крайней мере у меня так было.
                              • 0
                                А я вот скачивал Android SDK, гонял разные демки UI, много радовался и т.д., но до реальной разработки руки не доходили, так что когда эту статью прочитал, решил, что перевод никому не повредит. Человек всё-таки несколько месяцев вникал в Андроид, чтобы написать этот пост, не с бухты барахты написал что попало.
                                • 0
                                  Да вы все правильно решили :)
                                  Лично для меня понимание структуры приложений под android немного сложновато дались. Это была 0.8 и 0.9 версия. Не было хороших статей, единственная книга, которая только вышла рассматривала шуточную программу по перехвату смс и установкой веселой мелодии. Сейчас думаю дело обстоит иначе. Я постоянно гоняю эмулятор андроида, особенно сейчас, когда выходят первые livecd.
                          • 0
                            Извините за придирку, но всё же не «синтетический сахар» а «синтАКСический сахар»
                            • +1
                              Мне уже в личке сообщили, поправил. Даже нашёл определение: en.wikipedia.org/wiki/Syntactic_sugar

                              У меня почему-то было стойкое убеждение, что оба термина чуть ли не синонимы :))) Я заблуждался.
                            • +1
                              На счет эклипса я согласен. Как хорошо что есть IDEA и плугин к ней.

                              Я тут писал себе под андроид на IDEA, и потом решил что все же следуюет подробней вникнуть в нативный гуи (я игры пишу, мне нативный гуи в целом не нужен), так как в идеи нет редакторая, решил переключиться на эклипс. Был сильно опечален.

                              Вот уже думаю что проще забить и составлять гуи динамически.
                              • НЛО прилетело и опубликовало эту надпись здесь
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • +1
                                  Почитайте обзор Android 1.5 в четырёх частях на mobile-review.com:
                                  mobile-review.com/pda/articles/android-15-review-p1.shtml
                                  mobile-review.com/pda/articles/android-15-review-p2.shtml
                                  mobile-review.com/pda/articles/android-15-review-p3.shtml
                                  mobile-review.com/pda/articles/android-15-review-p4.shtml

                                  В обзоре рассматривается не просто Android, а применительно к тому, что «допилил» HTC для своего HTC Hero.

                                  Ещё «другой вариант» — это Palm Pre, но он пока не спешит.

                                  Но с весов MS сбрасывать всё равно нельзя, я полагаю, что девелоперы WinMo7 сейчас просто из штанов выпрыгивают, потому что WM 6.5 выходит в качестве мертворождённого, никаких революций в нём нет.

                                  С Android какая ещё беда есть — открытость платформы делает возможность «кому попало» выпускать устройства на Андроиде, но там не будет нормальной интеграции с гугловскими сервисами и т.д. Это может негативно сказаться на имидже платформы. Вот, почитайте внимательно, что гады вытворяют:
                                  www.computerra.ru/terralab/mobilis/442691/
                                  • 0
                                    по поводу Windows Mobile 7 есть небольшая надежда потому что командовать эти направлением поставили бывшего главу направление Exchange, который вывел этот продукт в de facto корпоративный стандарт
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • 0
                                        А Samsung i7500 не годится? Я именно его жду с нетерпением :)
                                        • 0
                                          Есть надежда на Windows Mobile 7.

                                          Ведь они как-то умудрились сделать сногшибательную Windows 7.
                                      • +1
                                        > загонит в микроскопичную нишу

                                        :) Однако эта микроскопичная ниша — ниша дорогих девайсов, в которой у M$ доля не большая.
                                        Да и если сравнивать зарубежный рынок, где ПО покупается, то там доля Apple не маленькая, это у нас все многие левыми виндами пользуются…
                                        • 0
                                          Прибыль идёт не с рынка мегадорогих девайсов, а с ширпотреба.
                                        • 0
                                          А что мешает использовать J2ME-аппараты?
                                          Почитайте «белые страницы» Sony-Ericsson и узнайте, на что способны современные камерофоны (от OpenGL (ES) до GPS-позиционирования и работы с видеокамерой/звуком).
                                          • 0
                                            Странно. Почему тогда не найти ни одной полноценной навигационной программы на яве? «Навифон» в расчет брать даже не хочется…
                                        • +2
                                          Интересно сколько недель у человека опыта использования javы ?")
                                          • 0
                                            Да в общем-то половина замечаний действительно уместна. Вторая относится к идеологии, тут просто вопрос предпочтений, и автор сторонник подхода c#.

                                            Ну и эклипс действительно не особо удобен…
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            • +1
                                              отсутствие делегатов меня удручает в джаве.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • 0
                                                  где сказано отстой? я вижу только «быстрее, эффективнее, изящнее» и это таки факт
                                                  • 0
                                                    цитата из текста: «но всё же… да, я всё-таки скажу это наконец. Java — отстой.»
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                  • 0
                                                    Вообще-то никто с ними ничего не отгребает, непонятно чем обоснованная фраза.
                                                    Тру-ооп настолько же полезен, как и любое другое 'тру'. Красивое слово, позволяющее самого себя загнать в рамки.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                      • 0
                                                        всё равно это проблемы только для компилятора.

                                                        в рантайме пофик.
                                                        • 0
                                                          var f = (a, b) => a & b;

                                                          Это спорный пример — ни один статически типизированный язык с ним не справится.

                                                          Вот такой пример:
                                                          var f = (int a, int b) => a & b;

                                                          реалистичнее, но он не намного короче правильного варианта
                                                          Func<int, int, int> f = (a, b) => a & b;

                                                          поэтому авторы языка сэкономили и не сделали Func неявным типом для такого случая.

                                                          Я согласен что это недоработка.

                                                          С другой стороны, самое главное использование лямбд — создание обобщённых алгоритмов которые затем легко параметризуются локальной информацией от этого не страдает, т.к. в самом Where или OrderBy записаны типы параметров.

                                                          Проблема в том что без closures people.Where(p => p.Age = age && p.Salary > salary) делается гораздо сложнее. new FilterByAgeAndSalary? and(withAge(age), withSalary(salary))? И то и то требует хитрой системы хелперов, а зачем?
                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                            • 0
                                                              Ладно, для одного Where for убедителен, но мне не кажется что в Java будет только чуть-чуть длиннее (без yield).
                                                              А сортировка .OrderBy(x => x.LastName).ThenBy(x => x.FirstName).ThenByDescending(x => x.Salary), например, уже так просто не получится — придётся ре-имплементировать весь алгоритм сортировки.

                                                              С джавой у меня, кажется, та же проблема что и у автора — ничего такой язык, понятно за что его любит enterprise, но он же скучный by design. Это было и в одной презентации про closures: Java не язык для экспериментов. Из-за этого приходится намного длиннее писать во многих случаях.

                                                              Если есть выбор, C# или, кстати, Javascript интереснее (хотя JavaGI рулит как концепт, если бы все архитекторы Java мыслили так же широко, было бы отлично).

                                                              Смущает что Google, который в остольном довольно инновационен, продвигает этот язык.
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                • 0
                                                                  Спасибо, хотя так спорить не интересно, если оба человека слишком вменяемые. :)
                                                                  Мне на самом деле нравятся все фреймворки (4-ый C# разочаровывает, это да), потому что хотя в WPF куча недостатков со стилями, это всё очень клёвая штука, а Linq спасает от кучи циклов и прочих мучений на пустом месте. На самом деле с выходом Linq C# стал удобнее и иногда короче, чем Perl, что я считаю большим достижением.

                                                                  Для Javascript в Visual Studio есть отличный дебаггер (хотя, конечно, к Андроиду он не мог бы подсоединиться), и Firebug тоже ничего. Я бы не сказал чтто его так уж мучительно отлаживать. Плюс там прекрасное метапрограммирование.
                                                            • 0
                                                              var f = (a,b)=>a&b невозможен в принципе в статически-типизированных языках. Не забываем, что оператор может быть перегружен и т.п. Если внутри одной функции компилятор еще хоть как-то может выяснить тип параметров, то в случае, если фуктор выходит за пределы функции, это невозможно. Поэтому функторы и не выводятся.
                                                      • +1
                                                        если человеку так нехватает этих фич, мог бы писать на Scala, а не ныть.
                                                      • +2
                                                        не разводите холиваров, тем более по вопросам очевидным
                                                      • +2
                                                        Что касается языка и среды разработки: есть Scala/Groovy & IntelliJ IDEA. Все они прекрасно работают с Android, если Java+Eclipse не устраивает.
                                                        • 0
                                                          Groovy пока, увы, не работает. Да и дополнительный рантайм тащить тоже не всегда хочется.
                                                          • 0
                                                            В рамках GSoC уже есть рабочая версия.
                                                            • 0
                                                              про GSoC я знаю, спасибо.
                                                              Но ту версию полноценно работающей назвать всё-таки нельзя (надеюсь, что только пока)
                                                        • –1
                                                          Насколько я понимаю для C# он использует Visual Studio, а для Java — Eclipse.
                                                          Если сравнить голую VS (без ReSharper) и IDEA, то сравнение будет настолько сильно не в пользу первой, что даже как-то неловко.

                                                          Ну и глупости из разряда «смешная имплементация перечислений». Вот где она смешная, так как это как раз в .NET.

                                                          Про геттеры/сеттеры тоже очень и очень спорный вопрос. Мне, например, больше нравится их явное наличие, чем использование через property.

                                                          В общем сплошная вкусовщина, которая заканчивается шедевральным «За исключением того, что C# позволяет вести разработку быстрее, эффективнее, изящнее». На что можно только посоветовать попробовать правильную IDE и понять что VS — не более чем продвинутый блокнот.
                                                          • +1
                                                            Ну, вы тоже перегибаете :) «Продвинутый блокнот» — это жестко. Я лично не имею опыта работы в эклипсе, про него не могу аргументированно спорить. Зато имею приличный опыт работы в XCode. До VS2005/2008 не дотягивает однозначно.
                                                            • +3
                                                              Автор оперировал прилагательными быстрее и эффективнее (про изящнее действительно спорно и тут я скорее соглашусь с автором) — и вот сравнивая самые правильные IDE для .NET и Java у VS нет ни одного шанса против IDEA. В смысле быстроты и эффективности.

                                                              В общем-то читать можно было прекратить после «наконец глупая и неинтуитивная расстановка скобок» :)
                                                              • 0
                                                                Вы как долго использовали VS 2008 для C# 3.5?
                                                                • +1
                                                                  не очень долго (до этого vs 2003 и 2005 с решарпером в сумме года 4)
                                                                  насколько успел заметить в 2008 потырили фишек решарпера (ну точнее всего остального цивилизованного мира правильных сред :), реализовав их как-то корявенько на мой взгляд

                                                                  после нескольких месяцев на vs 2008 ушел на idea/java, где пока 1,5 года
                                                                • 0
                                                                  Вообще-то есть Resharper ;)

                                                                  А вообще, работал я в компании с купленным решарпером, а потом в другой без оного… Разница невелика…

                                                                  Все эти плюшки не особо важны… равно как и неважен язык.

                                                                  Я плевался на Перл, но писал на нём два года… Ибо платили и было интересно новое.

                                                                  Я плююсь на Яву, но если будут платить и будет интересно — буду писать на Яве.
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                  • +2
                                                                    Почему это бессмысленные комментарии? Я участвовал в проекте по написанию с нуля кроссплатформенного (Windows/Linux/Solaris) Foundation (CoreFoundation доступен в исходниках, но и его приходилось в некоторых местах дописывать и коммитить в Apple) с использованием ObjC, доступного в GCC (не-Mac версия), лично писал весь NSKeyValueCoding (аналог Reflection в objC), и многое другое.

                                                                    Когда работаешь в отладчике из XCode, то без GDB вообще не обойтись, причём иногда плюёшь на всё и работаешь только в GDB, потому что половина фич, которые в VS существовали годами, в XCode появляться начали вот только что…

                                                                    Про «остроумно подсказывал» — ну о чём тут говорить, так или иначе, от версии к версии в XCode пытаются добавлять фичи, которые как я писал выше, в VS существовали годами.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                              • –5
                                                                >Но вопрос остаётся открытым — зачем изобретать новый байт-код, когда IL не защищён подобным лицензированием (это ECMA одобренный стандарт)?
                                                                если речь технологии от мс, то с ней все очевидно как раз. она изначально задумана с целью развязывания патентных войн. потому гугл решил банально не рисковать.
                                                                • +5
                                                                  >Почему Java отстой? Давайте посчитаем.
                                                                  часть пунктов — неправда.

                                                                  >Среда разработки
                                                                  слава богу, плагин для IDEA активно фиксят и он вполне юзабелен, особенно в 9ке.

                                                                  >Ещё один пример: в Android пока нет поддержки потокого видео через Media Player
                                                                  в 1.1 оно уже точно было.

                                                                  >Байт-код
                                                                  тут тоже много неправды, кстати.

                                                                  Итого: познавательно для тех, кто не писал под андроид, но совершенно бесполезно для тех, кто писал.
                                                                  • 0
                                                                    Да, я не скрываю, что не писал под андроид и мне действительно было познавательно :) Пока сам не попробуешь — своего мнения не получить. А данная статья хоть и частично холиварная (а как без этого, если субъективно что-то не нравится?), но интерес-то подогревает к разработке для Андроида. Автор же сам пишет — угадайте, для какой платформы мне интереснее сейчас программировать?
                                                                  • +3
                                                                    Писал на C#, теперь пишу на Java. Первое время действительно нехватало тех фичей, что он писал. А потом привык и стало понятно, что разницы практически никакой. Никакие лямбды не спасут от рутинного кодирования. А потом я узнал про настоящее ФП и вообще стало смешно сравнивать Java и C# — это практически одно и тоже.
                                                                    • +4
                                                                      ФП без лямбд и замыканий?
                                                                      Y комбинатор на Java в студию!
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                        • 0
                                                                          Странно. Операции map и filter используются повсеместно. Гораздо проще использовать оные в C# вкупе с компактными лямбдами, чем писать многострочный код в Java.
                                                                        • 0
                                                                          Говоря про настоящее ФП я имел ввиду Haskell и Scheme, а на их фоне жава сишарп, да даже турбопаскаль, все одно и тоже. А жава меня полностью устравивает, потому как пишу на ней за деньги быдло-код-морду к БД, а там хороший язык и не нужен — возьми то, положи туда…
                                                                      • 0
                                                                        Умоотвлечённая мысль (не ради холивора, а для расширения просторов фантазии): представьте себе тот день, когда Gecko и Fennec портируют на все мобильные платформы, так что окромя Джавы и C# можно станет сочинять также и на джаваскрипте, программируя XPCOM-компоненты... кроссплатформенный код, одинаково хорошо работающий под Windows Mobile и под Android...
                                                                        • 0
                                                                          Да это вообще мечта, но от халявной кроссплатформенности ИМХО владалец каждой платформы отбивается, как может :) Тот же Flash Lite работает на куче платформ, но аццки тормозит. В итоге кайфа ноль от такой кроссплатформенности :(
                                                                          • –1
                                                                            С другой стороны, Firefox работает на винде, и на линуксе, и на маке, и вроде повсюду неплохо; правда, у него и версия ужé полчетвёртая.
                                                                          • 0
                                                                            Тоже самое кричали и кричат до сих пор любители веб приложений. Однако когда первый iphone был ими ограничен люди были не довольны и сейчас качают полноценные проги.
                                                                            • –1
                                                                              >Gecko и Fennec портируют на все мобильные платформы
                                                                              Тогда XML преобразования на клиенте совсем умрут. (А с ними и мечты о светлом будущем и w3c стандартах)

                                                                              >кроссплатформенный код, одинаково хорошо работающий под Windows Mobile и под Android
                                                                              Ну так Mono уже научились под Android запускать (причём оно работает быстрее Delvik)
                                                                              Итого: Windows, MacOS X, Linux, Windows Mobile, Android.
                                                                              • 0
                                                                                На самом деле c Mono не всё так радужно, в том плане, что на Windows Mobile у нас Compact Framework, а Compact Mono не существует, плюс P/Invoke от WinMo очевидно не заработает на Android :) Но радует, что прогресс есть в этом направлении. Если когда-нибудь получится полноценно запускать mono на Android, т.е. с GUI и т.д. — будет классно :) Пока что там это только Proof of concept.
                                                                                • 0
                                                                                  и опятьже если МС в какойто момент не надумает поприставать к моно на тему патентов (см. обсуждение заявления Столмана)
                                                                            • 0
                                                                              я например программирую на java уже лет, но вот случилось такое — мне пришлось работать в проекте на Cи.
                                                                              Я конечно разобрался, все мы сделали как надо, сдали проект вовремя, получили премию.

                                                                              Но угадайте, было ли мне удобно после эклипса работать в Visual Studio? было ли мне приятно писать на Си? Смог ли я в полной мере использовать все фишки языка с которым я не так знаком как с основным?

                                                                              > оба языка могут делать всё, что вам нужно, просто в каждом языке это нужно делать по-своему

                                                                              Вот эта фраза ключевая, как мне кажется.
                                                                              • 0
                                                                                уже 5 лет

                                                                                извиняюсь num lock выключен был
                                                                                • 0
                                                                                  >Вот эта фраза ключевая, как мне кажется.
                                                                                  Ну дык. На машине Тьюринга тоже всё можно сделать.
                                                                                  • +1
                                                                                    если вы работали 5 лет на машине Тьюринга и начинаете писать на java то первое время будет очень неудобно, но потом когда когда научитесь «это делать по-своему» все неудобства уйдут.

                                                                                    Теперь понятен ход моих мыслей?
                                                                                    • +1
                                                                                      А наоборот?
                                                                                      • –1
                                                                                        И наоборот.
                                                                                        • +1
                                                                                          Не верю!
                                                                                          5 лет мало. Думаю, и 50 не хватит.
                                                                                • +4
                                                                                  самое интересное, что когда мне пришлось переходить с Java на C# — претензий к языку было тоже более чем достаточно ;)
                                                                                  так что данный раздел скорее вопрос привычки к какомуто языку/инструменту.
                                                                                  если не так, как привык — значит скорее всего это плохо…

                                                                                  не смотрел как в оригинале статьи, но категоричность утверждения «java отстой» надеюсь все таки «особенности перевода». Иначе на остальные мнения автора и смотреть не захочется — чересчур субьективно и категорично. фанатизмом попахивает.

                                                                                  примерно тоже самое относится к описанию eclipse.
                                                                                  Тот кто работал с эклипсом при переходе на студию в обязательном порядке поставит resharper, ибо штатный intellisence оставляет желать (по крайней мере в 2005 студии)

                                                                                  • 0
                                                                                    Так Вы бы перечислили что Вам не нравится.
                                                                                    • +6
                                                                                      сейчас уже сложновато припомнить — почти три года прошло
                                                                                      тем более к многим вещам после перехода привык и они перестали раздражать (именно этот термин я бы использовал вместо «отстой»)

                                                                                      из того что вспомню:
                                                                                      очень не нравилось отстуствие строгого следования системе пакетов как в java (т.е. если класс называется my.pkg.MyClass то он обязан лежать в каталоге my/pkg/) — до сих пор считаю этот метод правильным и следую ему.
                                                                                      не нравился синтаксис namespace в отличии от package.
                                                                                      не нравилось что нет соглашения по именованию пакетов, классов, методов как в java (пакет всегда с прописной, класс с заглавной, метод с прописной) — в .net в этом плане каша полная
                                                                                      есть некоторое «неприятие» partial class. однажды написанный кемто класс есть черный ящик с интерфейсом использования. и тут мы дописываем партиал — делаем дырку сбоку класса и чтото в нем меняем. хорошо если без последствий. нафига тогда вообще модификаторы доступа? все сделать публичным и пусть лазит куда душа пожелает…
                                                                                      да я знаю, что на данной методолгии построен ряд вещей (asp.net, ado.net ...) в которых без этого былобы тяжело, но всетаки приятно знать, что класс my.pkg.MyClass лежит в каталоге my/pkg/, а не в еще нескольких местах

                                                                                      ЗЫ претензия к тому что у свойств в Java нет методов get|set мягко говря странная — у java нет свойств. есть члены класса и методы доступа. хотя свойства мне со временем скорее понравились.

                                                                                      естесно все сказанное мое личное imho :)
                                                                                      • –1
                                                                                        > очень не нравилось отстуствие строгого следования системе пакетов как в java (т.е. если класс называется my.pkg.MyClass то он обязан лежать в каталоге my/pkg/) — до сих пор считаю этот метод правильным и следую ему.

                                                                                        А зачем строгое?

                                                                                        > не нравился синтаксис namespace в отличии от package

                                                                                        Чем не нравился?

                                                                                        > не нравилось что нет соглашения по именованию пакетов, классов, методов как в java

                                                                                        Вообще-то, соглашения есть. А именно: все публичные члены должны придерживаться CamelCase.

                                                                                        > есть некоторое «неприятие» partial class. однажды написанный кемто класс есть черный ящик с интерфейсом использования. и тут мы дописываем партиал — делаем дырку сбоку класса и чтото в нем меняем. хорошо если без последствий

                                                                                        Мы не можем ничего менять. Только добавлять новые члены.

                                                                                        > нафига тогда вообще модификаторы доступа?? все сделать публичным и пусть лазит куда душа пожелает…

                                                                                        Обычно предполагается, что разработчики библиотеки для себя могут поставить какие угодно типы доступа, особого смысла запрещать здесь что-то нет. Главное — public и protected.

                                                                                        C помощью partial classes удобно работать со сгенерированным кодом (дизайнером, например). Как без него нормально, например, прикручивать ant, который код грамматики генерирует вообще не понятно.

                                                                                        Мне, кстати, не понятна Ваша настройчивость на расположении файлов класса. В редакторе обычно можно сделать Go To Definition, а как они в скомпилированном файле лежат, ИМХО, вообще не важно.

                                                                                        Признаюсь, опыт использования Явы у меня не большой (один интерпретатор урезанной модулы-2 — семестровая работа). Но за это время, например, отсутствие partial classes порядком достало.
                                                                                        • +2
                                                                                          >А зачем строгое?

                                                                                          иногда приходится по тем или иным причинам открыть файл не в студии.
                                                                                          тогда возникает вопрос «а где собственно?».
                                                                                          просто удобно.
                                                                                          Java это не просто предлагает, а требует

                                                                                          соглашения есть, но если посмотреть что творится в библиотеках…
                                                                                          на тот момент мне это не нравилось. потом смирился :)

                                                                                          >partial

                                                                                          да. добавить. и своим методом порушить всю логику работы класса.
                                                                                          хотя конечно и при наследовании можно напортачить :)
                                                                                          НО! не будет неожиданного поведения класса изза того, что коллега решил «взломать» класс и чтото в нем править своим методом

                                                                                          я не спроста упомянул ado.net — в нем без партиал былобы совсем тоскливо (опять же в 2005). особенно когда нагенерил кучу кода работы с таблицами, а потом оказывается, что с транзакцию можно прикрутить только через это самое заднее крыльцо — partial
                                                                                          • 0
                                                                                            >>partial
                                                                                            >да. добавить. и своим методом порушить всю логику работы класса.
                                                                                            >хотя конечно и при наследовании можно напортачить :)
                                                                                            >НО! не будет неожиданного поведения класса изза того, что коллега решил «взломать» класс и чтото в нем править своим методом
                                                                                            Стоп. Может я конечно чего-то не понимаю, но по моему и ты и твой собеседник не понимаете что такое partial.
                                                                                            Partial — это просто способ разбить ТЕКСТ кода класса на два ФАЙЛА. Partial никак не отражается на скомпилированном коде (примерно. как если в С++ часть кода написать в .h файле, а потом сделать include).
                                                                                            • 0
                                                                                              ну отчего же не понимаю
                                                                                              прекрасно понимаю
                                                                                              и использовал

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

                                                                                              в большинстве случаев пример гипотетический, но если ктото может чтото сделать неправильно, он это сделает ;)
                                                                                              • 0
                                                                                                Просто есть языки, в которых это возможно уже после компиляции (MixIn'ы и множественное наследование).
                                                                                                А от «ходов конём». мне кажется, ничего не спасёт.
                                                                                                • 0
                                                                                                  вобщемто да — если ктото захочет чтото сломать, он это поломает :)
                                                                                                  через туже рефлексию
                                                                                                  • 0
                                                                                                    Reflection, а ещё proxy есть (с помощью CGLIB, например) и AOP-интерцепторы. С другой стороны, всё выше перечисленное — это advanced техники и не умудрённый опытом программист их врядли осилит. Не уверен, можно ли сказать то же самое про partial.
                                                                                                • 0
                                                                                                  По моему скромному опыту, partial классы применяются очень редко. В принципе, он нужен только для автогенеренного кода — вот здесь без partial было бы очень плохо.
                                                                                            • 0
                                                                                              >Мы не можем ничего менять. Только добавлять новые члены.
                                                                                              Не можем.
                                                                                              Partial — всего лишь директива компилятора.
                                                                                            • 0
                                                                                              А в objective c (который в macosx и iphone) есть такая фича у NSObject как poseAs, которая позволяет подменить любой класс своим — конструкторы и т.д. будут возвращать экземпляр подменённого класса везде… А вы тут на partial жалуетесь :)))
                                                                                              • +5
                                                                                                вообщето в Java такой финт тоже можно сделать применив свой classloader или просто положив свой класс в classpath раньше :)

                                                                                                я не то чтобы жалуюсь. я понимаю что в данном продукте (.net) без этого просто никак…

                                                                                                ну любит мс так делать — сначала создаем красивое, логичное здание, но чегото в нем нехватает для когото.
                                                                                                поэтому берется ломик и проделывается дыра в стене. некрасиво? да. зато можно быстро добраться к ящику пива, а не обходить вокруг здания к парадному входу (это я так прозрачно намекаю на «Нет доступа к unsafe-коду» — если нельзя, но очень хочется, то можно)

                                                                                                Опять же про этот unsafe код.
                                                                                                просто надо учитывать, что unsafe является платформозависимым, что не вписывается в концепции java как кроссплатформенного решения

                                                                                                • –1
                                                                                                  >unsafe является платформозависимым, что не вписывается в концепции java
                                                                                                  А JNI типа вписывается?
                                                                                              • 0
                                                                                                >очень не нравилось отстуствие строгого
                                                                                                Обычно это называется «наличие гибкого»

                                                                                                >в .net в этом плане каша полная
                                                                                                Покажите пример. Между прочим, FxCop (встроенный в студию) на такие вещи ругается.

                                                                                                >однажды написанный кемто класс есть черный ящик с интерфейсом использования.
                                                                                                Не написанный, а скомпилированный. Так и есть.

                                                                                                >класс my.pkg.MyClass лежит в каталоге my/pkg/, а не в еще нескольких местах
                                                                                                Если это Ваш клас, так положите его куда хотите, а если он не ваш, так он и в Java лежит не так.
                                                                                                • 0
                                                                                                  в Java он ВСЕГДА лежит именно так
                                                                                                  будь это каталог classes или библиотечный архив (jar).
                                                                                                  иначе рантайм его просто не найдет

                                                                                                  FxCop в какой версии студии? в 2005 такого не помню. 2008 не пользовался
                                                                                                  • 0
                                                                                                    >в Java он ВСЕГДА лежит именно так
                                                                                                    >будь это каталог classes или библиотечный архив (jar).
                                                                                                    >иначе рантайм его просто не найдет
                                                                                                    Не совсем понимаю. Разве java не позволяет использовать jar архивы, лежащие, например, в папке программы? Думаю, что позволяет.
                                                                                                    Далее, dll библиотека — это хоть и аналог package, но архивом не является (хотя иерархия классов в ней есть).

                                                                                                    >FxCop в какой версии студии? в 2005 такого не помню. 2008 не пользовался
                                                                                                    В 2005й он, вроде, был эддоном.
                                                                                                    • +1
                                                                                                      jar можно положить куда угодно. главное чтобы в classpath попало
                                                                                                      а внутри jar структура дерева полностью сохраняется

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

                                                                                                      сделано это, для того чтобы свести к минимуму вероятность перекрытия классов с одинаковым именем (пакет+класс). но, как показывает практика, это спасает далеко не всегда. что приводит к неожиданным казусам, когда компилятор выдает ошибку на какойто метод, а в исходнике его и близко нет.
                                                                                                      в моем случае это было с классом типа com.company.utils.Tool

                                                                                                      если коллега дал распечатку какогото класса и там есть строки package и class вы достаточно быстро найдете где этот класс лежит.

                                                                                                      на так давно довелось покопаться в С++ проекте.
                                                                                                      когда нескоклько классов лежат в одном файле, да еще и класс называющийся например xmlparser лежит в файле xmpar.cpp который лежит в одном каталоге с сотней других файлов в формате 8.3 — чтото найти можно только полнотекстовым поиском или после индексации всего проекта в IDE

                                                                                                      так что, с моей точки зрения, это просто удобно.
                                                                                                • 0
                                                                                                  Полностью согласен.
                                                                                                  Мне так же не понравились еще пара вещей: неудобная система внутренних классов(нет доступа к полям родителя, надо указывать родителя явно), нет анонимных классов.
                                                                                                  Не понравился стиль именования свойств(с большой буквы): бывает, что название свойства полностью совпадает с названием получаемого класса.
                                                                                                  Ну и, конечно, не удобная расстановка скобок =) хотя это просто вопрос привычки. Я на c++ писал скобки как в java, поэтому мне привычней она. Но в любом случае привыкаешь.

                                                                                                  Но некоторых вещей в джаве действительно не хватает после шарпа. Тех же замыканий и делегатов…
                                                                                                  • 0
                                                                                                    Это вы ещё Ruby не видели…

                                                                                                    Вообще — возможность расширять существующий поднятый класс, это мегафича, по моим наблюдениям…

                                                                                                    Имею опыт несколько лет в C#, и совсем немного в Ruby, так вот фича расширения классов — самая замечательная.
                                                                                                    • 0
                                                                                                      в java это всё легко делается с помощью groovy :)
                                                                                                • 0
                                                                                                  Автор — фанат программирования для мобильных устройств. Не существует понятия «абсолютная истина», везде есть субъективизм. Напомню, человек долго программировал для Windows Mobile, перешёл на Android, хочет под него программировать и регулярно натыкается на «косяки» на его взгляд. Но ему всё равно нравится платформа и он под неё программирует.

                                                                                                  В оригинале: «Java sucks». Я мог бы перевести дословно: «Java сосёт», но что «сосёт», что «отстой» — разница не велика.

                                                                                                  Кстати, я лично от решарпера достаточно быстро устал и снёс, штатный intellisense для меня достаточно хорош.
                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  • 0
                                                                                                    >производительность
                                                                                                    Дело в том, что написанное на коленке Mono оказалось быстрее хвалёного Dalvik.
                                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      • 0
                                                                                                        Я собираюсь перевести вот эту статью в ближайшее время: www.koushikdutta.com/2009/01/dalvik-vs-mono.html
                                                                                                        Боюсь, правда, что комментарии, которые тоже крайне интересны, я могу все не осилить, хотя они важны :)

                                                                                                        Тем не менее, вы можете и сейчас посмотреть бенчмарки и т.д.
                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      • 0
                                                                                                        было бы удивительно, если б Dalvik без JIT'а показал приличную скорость…
                                                                                                        Да и потом, никто и не обещал космических скоростей от Dalvik'а…
                                                                                                        • 0
                                                                                                          В этом-то и странность.
                                                                                                          Ибо в Mono JIT сделан не Microsfot+Intel, а. Тем не менее оно раз в 11 быстрее Perl/Python/PHP/Ruby на их «подном» *nix. А теперь и Delvik на Android (хотя и не во столько раз).
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                            • 0
                                                                                                              >Если Dalvik делали из расчета на оптимальное соотношение производительности и потребления памяти, почему она плоха?
                                                                                                              Потому, что компромис между скоростью и памятью есть всегда, а памяти сейчас не так мало, чтобы сберегая её пренебрегать скоростью.
                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                        • 0
                                                                                                          было бы удивительно, если б Dalvik без JIT'а показал приличную скорость…
                                                                                                          Да и потом, никто и не обещал космических скоростей от Dalvik'а…
                                                                                                      • 0
                                                                                                        Андрюха, молодец!
                                                                                                        • 0
                                                                                                          > За исключением того, что C# позволяет вести разработку быстрее, эффективнее, изящнее.[3]
                                                                                                          Будут какие либо доводы касательно «быстрее и эффективнее»? («Изящнее» не рассматриваем совсем, как субъективное для каждого человека. Для многих это и минимализм же)
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                            • 0
                                                                                                              Нет, IDEA действительно платная. Есть триал, вроде на месяц. Есть бесплатный варианты получения, но они не тривиальны, нужно доказать, что ты действительно подходишь по критериям.
                                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                • 0
                                                                                                                  вряд ли.
                                                                                                                  просто на момент написания статьи плагин к идее если и был, то весьма сырой.
                                                                                                              • 0
                                                                                                                да, платная.
                                                                                                                но её цена (~250-300$) достаточно быстро окупается.
                                                                                                                не хочется холиварить в этой теме, но по многим пунктам IDEA _значительно_ лучше Eclipse/Netbeans
                                                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                              • 0
                                                                                                                А под Android можно писать нативные проги? То есть чтоб они уже были скопилированы в машинный код?
                                                                                                                • 0
                                                                                                                  NDK вышел совсем недавно: developer.android.com/sdk/ndk/1.5_r1/index.html
                                                                                                                  Однако, целиком native программу нельзя будет сделать, можно только из Java вызывать «performance critical» методы, написанные на C/C++. Но ИМХО это нормально для Android.
                                                                                                                  • 0
                                                                                                                    Ага. Спасибо за линк. Что же до моего ИМХО, то заставлять бедный маленький наладонник ворочать байт-код в виртуалке — это не нормально.
                                                                                                                    • 0
                                                                                                                      >заставлять бедный маленький наладонник ворочать байт-код в виртуалке — это не нормально.
                                                                                                                      вам напомнить когда появилась JavaME? ;)
                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                • +1
                                                                                                                  холивары такие холивары

                                                                                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.