Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как долго будет жить и процветать МЕ на телефонах? 
:(
    Опции темы
javastic
Дата 21.8.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Цитата(Frog @ 20.8.2006,  20:22)
... На джаве приходиться писать неудобный ,процедуральный код, что-б обеспечить минимальный фреймрейт. ...

Frog, поясни пожалуйста вот этот момент. Что ты имел ввиду?


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
W0LF
Дата 21.8.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Наврно он имелл ввиду то, что классов должно быть поменьше. Я когда-то работал на одну Новгородскую фирму, так вот там ваще в свое время ставили ограничение на классы. Приходилось писать два-три класса, а все остальное - процедурами в них smile

Добавлено @ 16:00 
Но теперь и телефоны получше стали, я сейчас использую огромное кол-во классов, и ничего... пока работает все нормально


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Frog
Дата 21.8.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 11.3.2006
Где: The swamp

Репутация: нет
Всего: нет



Пожалуйста - классическое ООП предполагает использование классов и  наследования , где общие для всех классов методы наследуються от родительского класса . Взаимодействие между обьектами приложения проис ходит путем вызова соответствующих методов  классов , от которых данные обьекты были произведены.  Таким образом код оказываеться поделен на удобные , небольшие части - классы и методы , исключаються повторения кода , возможность утилизации кода в иных приложениях ессесно тоже улучшаеться. Всем известны выгоды и удобство ООП. НО - увы - за все надо платить -
многочисленные обьекты легко фрагментируют память (особенно heap ,без динамичекой аллокации ) ,а их создание порождает огромное количество "мусора" усугубляющего проблему. А главное - обращение к методу обьекта , причем даже к методу принадлежашему данному обьектку (!) занимает ,увы, значительное время ,иногда порядка сотен миллисекунд , что ,если Вы пишете игру ,или графически нагруженое приложение , и вынуждены перерисовывать экран хотя-бы 10-15 раз в секунду - недопустимо много. Причем торможение на вызовах методов совершенно не зависит от типа компайлера JVM (будь он AHEAD или JIT) или свойств самих классов ,будь они ,скажем , static или нет ... Понятно что на мощных девайсах типа 6630 или К700 торможение менее заметно ,однако для коммерческого кода ,расcчитанного на большое число телефонов, применение того самого процедурального кода оказываеться необходимым.
Процедуральным кодом принято называть код прямо описывающий действия программы - то есть , для J2МЕ игры - у нас есть только два класса - MIDlеt (он мал, но не может быть подвергнут обфускации - потому и вынесен), и самой игры - в классе игры все действия игровых персонажей и состояний (меню,плей) описаны последовательно ,управляються switch(aми) и if/else статементами ,причем всячески избегаються не только методы ,но и циклы (тоже жрут немало процессорного времени) - так писали еще на заре компютерной эры smile - понятно что код получаеться длинный ,сложный , малопригодный для повторного использования в других играх/приложениях.  Зато сей код предельно быстр, и один раз загрузившись обьектов не плодит и память не фрагментирует.  

Нельзя ,однко, не сказать что практическая невозможность использования чистого ООП - один из самых серьезных недостатков всех ,имеющихся на данный момент времени, реализаций J2ME.

Добавлено @ 16:25 
to WOLF - а get и set методы для переменных Вы используете ? ООП - это целостная система и философия прежде всего , а не то или иное количество классов в приложении.

Это сообщение отредактировал(а) Frog - 21.8.2006, 16:19
PM MAIL WWW   Вверх
W0LF
Дата 21.8.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Я до этого два года на с++ сидел. ТАк что наверно использую. И не надо тут рассказывать про ООП. Гради Буча наверно все читали. 
Цитата

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

У меня есть знакомый, которого кол-во классов никогда не смущало, и он не использовал процедурный код. Он просто написал приложение, которое на уровне байткода ООП превращало в процедурное. И мы использовали ООП в полном его объеме, а при компиляции оно превращалось в 2 класса.

Добавлено @ 17:15 
И вообще, если не нравится j2ME - не надо ее здесь опускать ниже плинтуса


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Frog
Дата 21.8.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 11.3.2006
Где: The swamp

Репутация: нет
Всего: нет



Не следует возводить технологию в ранг фетиша - четкое виденье текущих недостатков J2МЕ не делает ее менее ценной в наших глазах , а позволяет создавать более продвинутые програмные продукты.  
Собрать из ООП кода - процедуральный действительно возможно при использовании препроцессора при компиляции , я однако , предпочитаю писать вручную - для лучшего контроля . 
Рассказывать о путях создания програмного обеспечения ,а так-же обсуждать как общую стратегию так и частности - полагаю необходимым. Тем более что Гради Буча я не читал - до всего доходил своим умом , не без помощи добрых людей на форумах ,конечно. А вот использовать get и set методы для J2МЕ приложений - не рекомендую - это-же не С++  smile

Это сообщение отредактировал(а) Frog - 21.8.2006, 18:32
PM MAIL WWW   Вверх
javastic
Дата 22.8.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Мне кажется что чистота кода и алгоритмизация зависит от конкретного кодера. Можно написать всё в одном классе и потом вызывать методы (аля процедурный подход), а можно разбить на классы и реализовывать всю модель приложения дискретно, вызывая теже get и set без проблем для производительности. Я используювсегда второй подход и никогда бы не сказал что программирую с помощью процедурного подхода. Использую и наследование и интерфейсы (где модель приложения требует какой-то абстракции). Java достатчно ОО язык и не пользовться его приемуществами мне кажется плохо. А что касается производительности, то нужно для каждого устроиства компилить свой код, т.к. метод вызываемый (например) в Нокии будет тормозить в Мотороле (для каждого девайс свой код оптимизации, потому что техническая реализация хоть и похожа, но реализация разная). 
/информация с конференции Sun'a/


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Frog
Дата 23.8.2006, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 11.3.2006
Где: The swamp

Репутация: нет
Всего: нет



Конечно , существует огромное количество приложений в которых нам не требуеться перерисовывать экран телефона >10 раз в секунду , кроме того - для игр - если игра не слишком насыщена графикой , количество и размеры выводимых в кадре картинок не велики - то проблемы оптимизации отходят на второй план - и можно наслаждаться ООП кодингом в полной мере. Проблема в том, уважаемый Javastic , что именно в нагруженых графикой и логикой играх мы начинаем остро чувствовать даже разницу в скорости выполнения циклов - так "for где i++" работает явно медленнее чем "for где i--" - не говоря уж о вызове метода раз во фрейм , или там вложенных циклах - в текущих реализациях J2МЕ мы лишены возможностей ООП программирования именно там где оно нам больше всего нужно - при решении тяжелых ресурсоемких задач smile - и это обьективно , и не зависит от вкуса - пока не сольешь все методы в один , и не пораскрываешь циклы - игра будет тормозить. А поскольку Java являеться буквально квинессенцией (эк завернул) ООП , то процедурально с ней работать неудобно и неловко. Таким образом, на мобильных девайсах, преимущества технологии Jаvа фактически сведены к нулю , а иной раз могут быть прямым недостатком (пример - фрагментация heap-memory наплодившимися многочисленными обьектами и завис приложения).
PM MAIL WWW   Вверх
Frog
Дата 23.8.2006, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 11.3.2006
Где: The swamp

Репутация: нет
Всего: нет



Полагаю ошибочным мнение что с ростом мощности телефонных процессоров проблема несовместимости с ООП снимиться и дальнейшему процветанию J2МЕ уже ничто не помешает- дело в том что высокая мощность позволит использовать еще более простые средства разработки - ту-же Flash Lite ,которая ,кстати ,уже наступает на пятки - в частности меня тревожит отсутствие интереса к J2МЕ у производителей мp3 и мультимедия плееров - многие имеют подходящие экраны ,джойстики , казалось-бы Java-игры (установка с компа) были-б к месту - ан нет - не поддерживают smile ( Flash Lite зато поддерживает iRiver U10 - по крайней мере)

Это сообщение отредактировал(а) Frog - 23.8.2006, 02:37
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.