Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
25 Июль 2025, 17:58:37
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Обсуждение Java, выявление положительных, отрицательных сторон

Страниц  :   Вниз
  Печать  
Автор Тема: Обсуждение Java, выявление положительных, отрицательных сторон  (Прочитано 2294 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RILLey_ELf
Гость
« : 17 Июнь 2009, 10:16:36 »

собственно выступая зачинщиком драки, скажу:
каждый язык имеет своё предназначение и класс задач для решения которых он подходит наиболее,
это доказывает огромное количество библиотек, все-возможных сервисов, n-ый год развития возможностей языка и etc.

собственно какие стороны предлагаются к обсуждению и подвергаются некоторой критике:
1) скорость работы (выделяю в отдельную категорию скорость во время запуска всех зависимых демонов, сервисов, серверов и прочего пакета нечисти);
2) размеры конфигурационных файлов, среди которых встречаются читаемые\редактируемые вручную;
3) количество разработанных window\web - based приложений, величина которых падает (С решётка теснит всё в округе).

личный опыт (ака у меня всё работает а у тебя кривые руки) выкидываем вон, только пруф линки на сторонюю инфу спасут родину.

итак затравка:
 * скорость работы:
есть мнение, что скорость запуска приложения под java существенно ускоряется на второй, третий запуск;
дело в каких-то кешах, гошах в которые падают приложения после JIT (или чего там);
собственно вопрос, а как насчёт процесса разработки, когда кеши пользовать противопоказано, в связи с постоянными правками;
дело не в бобине: интересно как это всё работает (нолидж трансфер);
собственно учитывая масштабы для которых обычно используется java в web-based обычно там наблюдается по 20-300 приложений, запуск которых может затянуться и на 5 и на 10 минут;

 * собственно о размерах никто не говорит, все прячуться за "графическими тулами по генерации этих самых конфигурационных файлов";
рассмотрим пока первое но:
 если в какой-то момент прийдётся срочно править на рабочем сервере (из зимних гор куда вы уехали кататься на лыжи) маппинг фунок (например срочно надо поменять название функции);
какими глазами будет смотреть (ухудшим ситуацию: из vi) девелопер на действительно большие конфиг файлы;

 * если посмотреть вокруг:
 то web-based область мелких поделий съел php, а область крупных поделий постоянно съедает C#;
 а window-based можно по пальцам пересчитать (я только argoUML выделю из общего мессива);
если знаете, подскажите ещё.
тут же речь о коммуникаторах\мобилках... так только ленивый производитель мобил до сих пор не написал поверх java свой фреймворк, ну и как результат переносимость на данный устройствах упала до уровня "у тебя nokia? - нет - ну попробуй может и сработает".

(отмечу, что java находится на 1-ом месте в топе используемых языков).
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #1 : 17 Июнь 2009, 13:09:35 »

очень занят, особо времени постить сейчас нету, но все же немножко напишу

собственно выступая зачинщиком драки

ай-я-яй, что на это скажут модеры

каждый язык имеет своё предназначение и класс задач для решения которых он подходит наиболее,

с этим конечно можно поспорить, но так как времени нет, то допустим что это так

это доказывает огромное количество библиотек, все-возможных сервисов, n-ый год развития возможностей языка и etc.

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

1) скорость работы (выделяю в отдельную категорию скорость во время запуска всех зависимых демонов, сервисов, серверов и прочего пакета нечисти);

есть мнение, что скорость запуска приложения под java существенно ускоряется на второй, третий запуск;
дело в каких-то кешах, гошах в которые падают приложения после JIT (или чего там);
собственно вопрос, а как насчёт процесса разработки, когда кеши пользовать противопоказано, в связи с постоянными правками;
дело не в бобине: интересно как это всё работает (нолидж трансфер);
собственно учитывая масштабы для которых обычно используется java в web-based обычно там наблюдается по 20-300 приложений, запуск которых может затянуться и на 5 и на 10 минут;

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

2) размеры конфигурационных файлов, среди которых встречаются читаемые\редактируемые вручную;

если в какой-то момент прийдётся срочно править на рабочем сервере (из зимних гор куда вы уехали кататься на лыжи) маппинг фунок (например срочно надо поменять название функции);
какими глазами будет смотреть (ухудшим ситуацию: из vi) девелопер на действительно большие конфиг файлы;

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

3) количество разработанных window\web - based приложений, величина которых падает (С решётка теснит всё в округе).

 то web-based область мелких поделий съел php,

ява вроде никогда там и не блистала, хотя в том же j2ee5 или spring контейнере мелочь писать намного приятнее чем в пхп (как по мне), там тебе и инжекты, и персистенция, и все остальные плюхи. другое дело что пхп дружелюбнее

а область крупных поделий постоянно съедает C#;

пока mono сырой, а сырым он будет еще долго, дотнет никогда не съест серьезный рынок, никто не будет вкладываться в win-инфраструктуру, если у них уже есть готовая *nix

а window-based можно по пальцам пересчитать (я только argoUML выделю из общего мессива);
если знаете, подскажите ещё.

все семейство Eclipse-RCP? OpenOffice? ну это из масс-продакшена. на яве обычно пишут мультиплатформенный энтерпрайз-софт, у нас это не развито (ибо у нас на фортране пишут), но в той же Германии заказчики очень по этому поводу озабочены

(отмечу, что java находится на 1-ом месте в топе используемых языков).

вот кстати немного косвенный рейтинг популярности языков:
http://www.indeed.com/trendgraph/jobgraph.png?q=java%2Cphp%2Cc%23
http://www.google.com.by/trends?q=java%2Cphp%2Cc%23&ctab=0&geo=all&date=all&sort=0

личный опыт (ака у меня всё работает а у тебя кривые руки) выкидываем вон, только пруф линки на сторонюю инфу спасут родину.

ничего себе... а для чего тогда эта тема тут?
« Последнее редактирование: 17 Июнь 2009, 13:29:00 от spammer » Записан
RILLey_ELf
Гость
« Ответ #2 : 17 Июнь 2009, 13:37:29 »

по поводу кривых рук и прочего;
объяснения в стиле "кривые руки", "я красивый, а ты нет" ни к чему путному не приводят, только раздражают собеседников.

фортран трогать не буду, только отдам ему дань уважения как пожилому дедушке.

open-office к сожалению не могу относить к приложениям которыми хочу пользоваться, скорее к приложениям которыми приходится пользоваться.
имхо как бы то нибыло, пока-что скорость работы, совместимость с windows docs (от них никуда недеться), работа с таблицами... (http://www.oooninja.com/2009/03/multiplatform-benchmark-30.html)

 * насчёт маппинга сервлетов вручную... сколько примерно приходится описывать строк таким образом?
 * насчёт QA в веб-контейнере, значит скрам тут не пройдёт?
 * насчёт HotSpot, каким образом вы сокращаете цикл перезапуска приложения после внесения изменений? HotSpot позволяет перезагружать объектники каждый раз по обращению к таковому?
Записан
VooDoo
Почетный гродненец
*****

Репутация: +89/-1
Offline Offline

Пол: Мужской
Сообщений: 2885


Dum spiro spero

Просмотр профиля WWW Email
« Ответ #3 : 17 Июнь 2009, 14:00:02 »

Цитировать
* насчёт маппинга сервлетов вручную... сколько примерно приходится описывать строк таким образом?
   <servlet>
        <servlet-name>SomeServlet</servlet-name>
        <servlet-class>some.package.SomeServlet</servlet-class>
    </servlet>
и маппинг урла на конкретный сервлет
    <servlet-mapping>
        <servlet-name>SomeServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
это по спеке, если используются разные фрэймворки, то у каждого своё. У некоторых вообще ничего не надо писать, всё аннотациями решается.

Цитировать
* насчёт HotSpot, каким образом вы сокращаете цикл перезапуска приложения после внесения изменений? HotSpot позволяет перезагружать объектники каждый раз по обращению к таковому?
уймя серверов умеют подхватывать изменения на лету. Т.е. правим, жмём ctrl-S, смотрим, радуемся
Записан

Are you human? - My body is.
Do you feel pain? - My body does.
..- --- --- -.. --- ---
RILLey_ELf
Гость
« Ответ #4 : 17 Июнь 2009, 14:19:47 »

извините, что не получается обсуждение самого Jаva, а рассматриваются некие абстрактные фреймворки;
но я думаю, что на чистом Java без дополнительных у нас никто не пишет (так сказать JavaCore) ;


т.е. фактически существуют варианты использования фреймворков когда один сервлет мапится 8-мью строчками?
а все же интересн порядок, количество сервлетов, которые вам приходилось видеть в коде (может в своих проектах, али каких открытых (открытых было бы лучше, чтобы паралельно посмотреть на всё это)).

HotSpot интерпретатором в данном случае выступает?
вот допустим мы дошли до точки когда уже всё более менее, кроме пару тестов на нагрузку (будем оптимизировать всеми возможными способами) ?
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #5 : 17 Июнь 2009, 14:36:02 »

HotSpot - так называется виртуальная машина Java, начиная с 1.5 вроде
http://java.sun.com/javase/technologies/hotspot/
одна из приятный штучек - подмена измененных классов на лету

по количеству сервлетов - обычно если юзается какоу-нибудь фреймворк, то 1, все остальное отрабатывается внутри его диспатчера; если что-то на чистой яве, то тут уже от архитектуры приложения зависит, но обычно опять же делают минимум точек входа (например 2 - основной диспатчер + логин-фильтр)
Записан
RILLey_ELf
Гость
« Ответ #6 : 17 Июнь 2009, 15:43:48 »

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

а меня уже давно волнует вопрос, теперь в яве есть следующие конструкции:
String arr[] = new String[156];
for (String s: arr)
 System.out.println(s);

вопрос в том, как системно ява это обрабатывает (такие объявления зависят от того в for они находятся или не в for?)
каким образом переходит управление и смена итератора
а то пока это больше похоже на костыль для for
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #7 : 17 Июнь 2009, 15:52:19 »

конструкция

Код:
for (t a : b) {
  // ...
}

в яве разворачивается в зависимости от того, чем является b

1) если b это t[], то прячется индекс:

Код:
for (int i = 0; i < b.size(); i++) {
  t a = b[i];
  // ...
}

2) если b instanceof Iterable, то прячется итератор:

Код:
for (Iterator<t> i = b.iterator(); i.hasNext(); ) {
  t a = i.next();
  // ...
}
Записан
RILLey_ELf
Гость
« Ответ #8 : 17 Июнь 2009, 15:56:20 »

это прекомпилятор делает?
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #9 : 17 Июнь 2009, 16:07:16 »

это делает компилятор в байткод
Записан
RILLey_ELf
Гость
« Ответ #10 : 17 Июнь 2009, 16:12:18 »

перед байткодом...
фактически это раскрывание делает прекомпилятор?

для array[] нету итераторов?
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #11 : 17 Июнь 2009, 16:13:59 »

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

для простых массивов итераторов нет
Записан
RILLey_ELf
Гость
« Ответ #12 : 17 Июнь 2009, 16:15:12 »

стоп значит arr[] это не объект? (ссылка на объект...) ?
всмысле причина отсутствия итератора не ясна :\
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #13 : 17 Июнь 2009, 16:17:59 »

это объект, но без интерфейса Iterable
Iterable появился в java 1.5 одновременно с конструкцией for (t a : b) {}
массивы были в яве с самого начала
Записан
RILLey_ELf
Гость
« Ответ #14 : 17 Июнь 2009, 16:25:08 »

мне кажется или угловатость виднеется?

как то кажется, что массив это или недообъект, или переобъект (свой единственный в своём роде конструктор)... ?
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #15 : 17 Июнь 2009, 16:28:31 »

угловатость имеется, из-за легаси поддержки
только в 1.5 свелись вместе примитивные типы и объекты, для саппорта старого кода примитивные типы трогали минимально
в будущих версиях вполне возможно легаси поддержку минимизируют или вообще уберут, но сразу этого делать нельзя, куча кода может отвалиться
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,16 секунд. Запросов: 20.