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
|
очень занят, особо времени постить сейчас нету, но все же немножко напишу собственно выступая зачинщиком драки
ай-я-яй, что на это скажут модеры каждый язык имеет своё предназначение и класс задач для решения которых он подходит наиболее,
с этим конечно можно поспорить, но так как времени нет, то допустим что это так это доказывает огромное количество библиотек, все-возможных сервисов, 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%23http://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
Гость
|
по поводу кривых рук и прочего; объяснения в стиле "кривые руки", "я красивый, а ты нет" ни к чему путному не приводят, только раздражают собеседников. фортран трогать не буду, только отдам ему дань уважения как пожилому дедушке. open-office к сожалению не могу относить к приложениям которыми хочу пользоваться, скорее к приложениям которыми приходится пользоваться. имхо как бы то нибыло, пока-что скорость работы, совместимость с windows docs (от них никуда недеться), работа с таблицами... ( http://www.oooninja.com/2009/03/multiplatform-benchmark-30.html) * насчёт маппинга сервлетов вручную... сколько примерно приходится описывать строк таким образом? * насчёт QA в веб-контейнере, значит скрам тут не пройдёт? * насчёт HotSpot, каким образом вы сокращаете цикл перезапуска приложения после внесения изменений? HotSpot позволяет перезагружать объектники каждый раз по обращению к таковому?
|
|
|
Записан
|
|
|
|
VooDoo
|
* насчёт маппинга сервлетов вручную... сколько примерно приходится описывать строк таким образом? <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
Гость
|
извините, что не получается обсуждение самого Jаva, а рассматриваются некие абстрактные фреймворки; но я думаю, что на чистом Java без дополнительных у нас никто не пишет (так сказать JavaCore) ;
т.е. фактически существуют варианты использования фреймворков когда один сервлет мапится 8-мью строчками? а все же интересн порядок, количество сервлетов, которые вам приходилось видеть в коде (может в своих проектах, али каких открытых (открытых было бы лучше, чтобы паралельно посмотреть на всё это)).
HotSpot интерпретатором в данном случае выступает? вот допустим мы дошли до точки когда уже всё более менее, кроме пару тестов на нагрузку (будем оптимизировать всеми возможными способами) ?
|
|
|
Записан
|
|
|
|
spammer
|
HotSpot - так называется виртуальная машина Java, начиная с 1.5 вроде http://java.sun.com/javase/technologies/hotspot/одна из приятный штучек - подмена измененных классов на лету по количеству сервлетов - обычно если юзается какоу-нибудь фреймворк, то 1, все остальное отрабатывается внутри его диспатчера; если что-то на чистой яве, то тут уже от архитектуры приложения зависит, но обычно опять же делают минимум точек входа (например 2 - основной диспатчер + логин-фильтр)
|
|
|
Записан
|
|
|
|
RILLey_ELf
Гость
|
ага т.е.; с большего если сильно достаточно почитать, и немного посношаться, то почти все проблемы вполне можно разрешить.
а меня уже давно волнует вопрос, теперь в яве есть следующие конструкции: String arr[] = new String[156]; for (String s: arr) System.out.println(s);
вопрос в том, как системно ява это обрабатывает (такие объявления зависят от того в for они находятся или не в for?) каким образом переходит управление и смена итератора а то пока это больше похоже на костыль для for
|
|
|
Записан
|
|
|
|
spammer
|
конструкция в яве разворачивается в зависимости от того, чем является 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
Гость
|
это прекомпилятор делает?
|
|
|
Записан
|
|
|
|
spammer
|
это делает компилятор в байткод
|
|
|
Записан
|
|
|
|
RILLey_ELf
Гость
|
перед байткодом... фактически это раскрывание делает прекомпилятор?
для array[] нету итераторов?
|
|
|
Записан
|
|
|
|
spammer
|
в яве нет препроцессора эта конструкция компилится в байткод, эквивалентный байткоду, получаемому из ее раскрытий (которые я написал)
для простых массивов итераторов нет
|
|
|
Записан
|
|
|
|
RILLey_ELf
Гость
|
стоп значит arr[] это не объект? (ссылка на объект...) ? всмысле причина отсутствия итератора не ясна :\
|
|
|
Записан
|
|
|
|
spammer
|
это объект, но без интерфейса Iterable Iterable появился в java 1.5 одновременно с конструкцией for (t a : b) {} массивы были в яве с самого начала
|
|
|
Записан
|
|
|
|
RILLey_ELf
Гость
|
мне кажется или угловатость виднеется?
как то кажется, что массив это или недообъект, или переобъект (свой единственный в своём роде конструктор)... ?
|
|
|
Записан
|
|
|
|
spammer
|
угловатость имеется, из-за легаси поддержки только в 1.5 свелись вместе примитивные типы и объекты, для саппорта старого кода примитивные типы трогали минимально в будущих версиях вполне возможно легаси поддержку минимизируют или вообще уберут, но сразу этого делать нельзя, куча кода может отвалиться
|
|
|
Записан
|
|
|
|
|