[image]

Java и большие проекты

 
1 2 3

TEvg

аксакал

админ. бан
>Впрочем это обещают улучшить...

Ню ню...
   
LV <Олег> #20.02.2002 10:39
+
-
edit
 
В.М.>Отчего же? Если ваша система уже не пользует ресурс, мусорщик его по требованию другой системы отдаст, куда денется?

Проведем мысленный эксперимент:
Имеется Windows98. Максимальное число хандлеров на файлы - 255 (больше уже нельзя). Java-программа создает 255 объектов, каждый из которых открывает 1 файл. В finalize объекты закрывают свой файл - это на всякий случай для забывчивых программистов. Каждый объект создается, быстренько отрабатывается и более не используется:

/* здесь создается массив из 256 имен файлов /
String [] fileName = { "Name1.dat", ..., "Name256.dat" };
for (int i = 0; i < 256; i++) {
MyFile myFile = new MyFile (fileName [i]);
/
здесь что-то делаем с файлом... /
}

Вопрос: сможет ли открыться файл Name256.dat, если все указанные файлы находятся в рабочем директории и доступны на чтение и запись?

Мой прогноз - если памяти мало, откроется (потому что уборщик проснется), если много - нет. А вот аналогичная С++ программа работает всегда!

/
здесь создается массив из 256 имен файлов /
char
fileName [] = { "Name1.dat", ..., "Name256.dat" };
for (int i = 0; i < 256; i++) {
MyFile myFile (fileName [i]);
/* здесь что-то делаем с файлом... */
}
 
+
-
edit
 
хмм
нюнюкать - это не мешки ворочать, я понимаю..

Если так уж хочется написать быстрый интерфейс
никто не мешает использовать нестандартную библиотеку SWT
очень быстрая штука...
Использует правда Native api, но портируется без проблем...
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Вот за что я люблю Web-интерфейсы :)
За то что быстрые, просто пишущиеся и многоплатформенные :)
   
+
-
edit
 
Хе Хе
ей богу
по справнениею с Java
С++ это супер глюкодром :) )
Memory leak - это просто бич всех хоть сколько-нибудь
сложных прог на C++.
На Java это проблемы нет в принципе...
Я тихо молчу про безумных фанатов писать темплейты, переопределять все подряд операторы и использовать множественное наследование...
Кривые библиотеки, не освобождающие память и т.д.

Не надо считать C++ венцом обьектного подхода....
Я понимаю, что привычка использовать автоматические деструкторы
может возникнуть, и их отсутствие кажется грубейшим нарушением инкапсуляции (здесь кстати никакого нарушения нет, прочитайте подробное определение инкапсуляции, и вы увидите,что она здесь не при чем)

Используйте например менеджер транзакций, который будет отпускать все захваченные ресурсы....
 
RU Рыбак Прикаспий #20.02.2002 12:50
+
-
edit
 

Рыбак Прикаспий

втянувшийся
Mikl>Хе Хе
Mikl>ей богу
Mikl>по справнениею с Java
Mikl>С++ это супер глюкодром :) )

Языческие разборки наносят последний удар. Жаль, последний флейм на эту тему канул, хотел вас туда отправить. :)

Mikl>Memory leak - это просто бич всех хоть сколько-нибудь
Mikl>сложных прог на C++.

Бездоказательно. Или это ваши проги?

Mikl>На Java это проблемы нет в принципе...

Нет. И многого ещё нет... ;)

Mikl>Я тихо молчу про безумных фанатов писать темплейты, переопределять все подряд операторы и использовать множественное наследование...

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

Mikl>Кривые библиотеки, не освобождающие память и т.д.

Пользуйтесь прямыми. Если скажете, что их нет - не поверю. :)

Mikl>Не надо считать C++ венцом обьектного подхода....

C++ - не венец объектного подхода. С этим не спорит даже дядя Бьярни. :)

Mikl>Я понимаю, что привычка использовать автоматические деструкторы

Сильно сказано! :D

Mikl>Используйте например менеджер транзакций, который будет отпускать все захваченные ресурсы....

На C++ - напишите свой, и будет вам сборщик мусора. Или возьмите готовый. В конце концов, не самая сложная задача, зато будете знать, где конкретно он будет тормозить. :D

--
Жизнь заставит - и на визуальном бейсике программировать будешь...
   
LV <Олег> #20.02.2002 13:59
+
-
edit
 
Эпиграф:
- Вась, не могу интеграл взять.
- А ты его по частям.
- Не, мне сразу надо...
(Студенческий анекдот)

mikl>по идее в Java все будет работать
к сожалению под рукой 98 нет, но в 2000 все работает,
даже если у вас 10000 файлов....
Если не будет, поставьте после обработки file.close()

Windows2000, пестроенный на базе NT, файлов может открывать немеряно, а вот Windows98 - больше 255 не может (и то если в config.sys прописано files=255, а без этого - и того меньше). А file.close() - это каждый может написать. Фокус не в том, чтобы файл ручками закрыть, а в том, чтобы он закрывался сам и вовремя. Тогда его можно вообще запрятать в объект и забыть о нем. Это называется - инкапсуляция. А если из объекта хвосты торчат, за которые надо дергать в обязательном порядке, то это уже не нкапсуляция, а потенциальный глюкодром.

mikl>Теперь насчет тормознутости :

А вот про Swing - это действительно ценная информация. Отдельное большое спасибо.
 
+
-
edit
 
Спорить с фанатами - дохлое дело :D
Даже и не собираюсь....
Если вы писали и на Java и на C++
вы знаете их сильные и слабые стороны...
(тогда вы должны знать, что разработка на Java идет быстрее,
и программа работает надежнее, но медленее)

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

Если вы серьезно писали на Java, то ответьте пожалуйста, есть ли для C++ аналог технологий EJB,JMS,JTA ? Почему C++ практически не используется в Web ?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Mikl>Почему C++ практически не используется в Web ?

А это уже не аргумент :) Процентов 50 "активного" Web'а работает на Perl, процентов 35 на PHP :D Из оставшихся 15% - процентов 14 - как раз на C/C++ (тот же ВИФ-2, к примеру, а также всевозсожные поисковики, счётчики, рейтинги и т.п.). Ну и ещё процент как раз на экзотику типа JSP/Phyton/Ruby/...

А, чёрт, забыл ещё ASP. Ну пару процентов он тоже занимает :)

Это по числу скриптов. А если по объёму обрабатываемых данных - то C/C++ тут просто вне конкуренции. Даже с такой простой страницы, как эта ты процентов 30 траффика получаешь с C/C++ демонов...

А если вспомнить, что все Perl/PHP/etc написаны на C/C++... Кстати, сдаётся мне, что JRE не на голом ассемблере пишут, и не на том же JRE (как Форты пишут на Фортах...) :D
   
+
-
edit
 
Ну вот,опять кого-то задел за живое :)
Теперь всколыхнулись фанаты PHP

Могу только обратить внимание на название топика....
Насколько я знаю, в больших проектах PHP и перл используются мало
и больше по привычке, так как они для них плохо подходят...

Там соревнуются в основном Jsp,ASP и Cold-fusion
Смею вас заверить, что доля Java весьма весома...
Например небезызвестный Amazon работает под j2ee...

Насчет 15 процентов работающих на C++ это большой загиб :)
Возможно на нем написаны поисковики...
Но это вообще редкая штука...
собственно CGI сейчас в больших проектах практически не используется
Возможно часть COM для ASP написана на C++...

но собственно сайтов в полном обьеме написанных на C++
среди больших коммерческих порталов практически нет Прикиньте время разработки и сложность написания
 
RU пШАЮЙ оПХЙЮЯОХИЯЙХИ #20.02.2002 21:00
+
-
edit
 

пШАЮЙ оПХЙЮЯОХИЯЙХИ
Рыбак Прикаспий

втянувшийся
>Спорить с фанатами - дохлое дело
>Даже и не собираюсь....
>Если вы писали и на Java и на C++
>вы знаете их сильные и слабые стороны...

Вы что, первый раз на подобных разборках? Давно известно, что участвуют в них, чтобы размять мышцы. А истина звучит так: используй тот инструмент, который нравится, и который подходит для задачи. Именно с такой расстановкой приоритетов. "Нравится" может означать мнение начальства, команды, кого угодно. :)

>(тогда вы должны знать, что разработка на Java идет быстрее,
и программа работает надежнее, но медленее)

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

>Если вы писали только на C++, являетесь, так сказать, убежденным фанатом и решили заклеймить презренных джавистов, то я даже спорить не буду....

Я работал не только на C++, и не являюсь фанатом ничего, даже хорошей литературы. Просто стандартный C++ - единственное, что я знаю хорошо в этой жизни. :) Спорьте, пожалуйста.

>Если вы серьезно писали на Java, то ответьте пожалуйста, есть ли для C++ аналог технологий EJB,JMS,JTA ?

CORBA чем не подходит? Но вы правы: я зря ввязался в этот спор, поскольку так и не смог привыкнуть к Джаве... Ну, вы понимаете - нет темплейтов, множественного наследования, неймспейсов (из-за чего сильно громоздкий код), и далее по списку :) .

>Почему C++ практически не используется в Web ?

Мной используется. ;) Если нужно разработать web-приложение, пишу набор CGI на C++. Всё остальное, что ни пробовал, гораздо капризнее.

Прошу извинить за резкий тон. Был выбран исключительно в методических целях. :D
   
+
-
edit
 
Посмотрел пример Олега
по идее в Java все будет работать :)
к сожалению под рукой 98 нет, но в 2000 все работает,
даже если у вас 10000 файлов....
Если не будет, поставьте после обработки file.close()

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

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

Теперь пять копеек насчет больших поректов :
To Kron :
Большие проекты разрабатываются обычно под некую платформу...
То, что вы перечислили, к этому не относится :)
UML - средство проектирования для ООП
CVS - система контроля версий (совершенно фиолетово, какую систему вы используете, можно например спокойно перейти на Source safe и ничего не изменится)

Платформа - для Java это обычно J2EE (java 2 enterprise edition)
Берется какой-нибудь сервер j2ee (например Weblogic)
и под него разрабатывается система,
Сервер предоставляет j2ee среду, избавляя программиста от головной боли...

В общем разговор долгий...
Но для больших проектов Java намного удобнее чем PHP с перлом
Так как есть например промежуточная обьектно-ориентрованная прослойка для работы с информацией - EJB
Например небезызвестный Amazon написан именно на Java.

Теперь насчет тормознутости :
В Java действительно несколько неторопливо работает
библиотека визуальных компонент - Swing :(
Впрочем это обещают улучшить...
В остальном java может работать очень быстро
(ессно, если руки не кривые)
 
RU Владимир Малюх #21.02.2002 06:08
+
-
edit
 
В.М.>>Отчего же? Если ваша система уже не пользует ресурс, мусорщик его по требованию другой системы отдаст, куда денется?

Олег>Проведем мысленный эксперимент:
Олег>Имеется Windows98. Максимальное число хандлеров на файлы - 255 (больше уже нельзя).

Мммм, я конечно 98 не часто пускаю, а случаем не 65 тысяч все-таки?

А вообще-то, для обхода, а точнее решения такой проблемы есть Windows 2000 :) Работайте исправным инструментом...
   
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Кроме того, человек не учитывает (я вскользь уже упоминал), что и Java и Perl и PHP - всего лишь тонкая прослойка между целыми слоями C/C++ :) (ОС - C++; СУБД - C++; Web-сервер - C++; скрипты - вот тут Java и т.п.; стек TCP/IP - C++ ... ... ... Браузер - C++... :D )

И всё же, даже в качестве сервера приложений Java используется крайне редко. Amazon - не показатель :) А то я могу на MS показать и сказать, что крпнейшие сайты работают на ASP :D
   
+
-
edit
 
Ну вот, разворошил кучу...
Если честно, не хотел :)
(Я по-моему сразу сказал, что и у Java и у C++ есть свои слабые и сильные стороны.... )
Я как-то не сразу понял, что тут людей серьезно знакомых с Jav-ой
нет.
Извините, но если вы думаете, что Java - suxx, то я не собираюсь ничего доказывать ...
Людям не знакомым с предметом разговора нельзя ничего доказать
Так что я завязываю...

(to Kron : поинтересуйтесь на досуге, на чем написаны последние версии броузера Netscape, Star-office, весь GUI для Oracle, вы наверное сильно удивитесь ... )
 
+
-
edit
 

Sokrat

модератор

Mikl>to Kron : поинтересуйтесь на досуге, на чем написаны последние версии броузера Netscape

Не знаю как win32 версия, а линуховая "написана" на bash-е :D :

[sokrat@black sokrat]$ head -1 /usr/local/netscape/netscape
#!/bin/sh

:D :D :D

И это почти не шутка ;) :

[sokrat@black sokrat]$ cat /usr/local/netscape/netscape|grep mozilla
...
MOZILLA_BIN="mozilla-bin"
...
exec $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"

:D :D :D

Теперь посмотрим, на чем написана мозилла ;) :

[sokrat@black sokrat]$ zcat mozilla-source-0.9.2.1.tar.gz|tar -t|egrep -i ".c$|.cpp$"|wc -l
5453

[sokrat@black sokrat]$ zcat mozilla-source-0.9.2.1.tar.gz|tar -t|grep ".java"|wc -l
48

//Для тех, кто не понял - это подсчет количества файлов *.c + *.cpp и *.java в исходниках мозиллы 0.9.2.1

Итог - на C и C++ написано. Ась? ;)
   
+
-
edit
 

Sokrat

модератор

Кстати, если есть желание ознакомиться с действительно сложным проектом на Java, то стоит взглянуть на Together. Особенно если имя Peter Coad вам о чем-то говорит. ;)
   
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Ну вот, Сократ опередил. Только я потянулся к сорцам Мозиллы :D
   
LV <Олег> #21.02.2002 14:08
+
-
edit
 
Олег>Имеется Windows98. Максимальное число хандлеров на файлы - 255 (больше уже нельзя).

В.М.>Мммм, я конечно 98 не часто пускаю, а случаем не 65 тысяч все-таки?

К сожалению, нет. А максимальное число одновременно открытых сокетов для Windows98 - 48. Проверенно экспериментально.

В.М.>А вообще-то, для обхода, а точнее решения такой проблемы есть Windows 2000 Работайте исправным инструментом...

Я и работаю "исправным инструментом" - правда не в 2000 а в NT. Но вот у клиентов машины самые разные, и с этим приходится считаться.

А теперь по поводу любителей ломать копья на тему "какой язык программирования лучше". Неужели еще не надоел этот бессмысленный спор?

Мне нравиться С++. Но сейчас изучаю Java, потому что мне придется на нем работать. Красиво писать можно на любом языке. А заводил я этот топик для того, чтобы от опытных людей узнать о подводных камнях, поджидающих тех, кому нравится, кому приходится, кто всю жизнь мечтал, кого заставили, кто просто счастлив, а кто был готов повеситься, но передумал, и теперь преспокойненько пишет свои программы на Java.

Тему автоматических деструкторов я педалировал не для того, чтобы опорочить Java, а для того, чтобы узнать о реальной альтернативе этого механизма. Совет от Mikl для этой цели использовать менеджер транзакций (хотя я еще не знаю, что это такое в Java) гораздо более ценен, чем его же сообщение о том, что С++ - это супер глюкодром. По достоинству мною оценено его же сообщение о неторопливости swing-компонент. Не буду торопиться их использовать (если это вообще возможно).

Ну, кто еще знает, какие и где Java-грабли поджидают разработчиков больших пректов на Java?

А о С++ -граблях интересующихся могу проконсультировать, но это уже в другом топике.
 
+
-
edit
 
Да, с Mozilla я несколько лопухнулся :)
где-то очень давно это читал...

to Oleg
ну Swing кончно вещь не очень быстрая, но небольшие программы
типа админской консоли на нем делаются на ура...
(обязательно используйте Java Tutorial, который лежит на java.sun.com, очень толково рассказаны многие вещи)

А что вам конкретно по Java интересно ?
просто спектр всяких технологий очень широк.
 
RU Victor Blinov #21.02.2002 21:45
+
-
edit
 

Victor Blinov

опытный

Mikl> Почему C++ практически не используется в Web ?

Гы-гы-гы... А почему ява не практически используется в компьтерной графике, офисных приложениях, СУБД итд итп?

Глупый вы аргумент привели, право слово...
   
Я конечно не эксперт, но мне всегда казалось, что мусорщик виртуальной машины должен работать, не только тогда, когда все ресурсы уже вышли, а еще и когда у проца просто малая загрузка? Ведь ВМ не должна грести все под себя, в системе и другие задачи есть.

Кстати а с .net и C# кто нибудь дело имел? Там ведь многое на джаву похоже.
 
LV <Олег> #22.02.2002 10:27
+
-
edit
 
2 Mikl.

Я работаю в банке в группе разработки и сопровождения системы телебанкинга. Начальство желает, чтобы все банковские проекты впредь делались на Java. Решение окончательное и обсуждению не подлежит. Отсюда и характеристики будущих Java-программ - работа с распределенными базами данных, работа под разными ОС (Unix и Windows), JEB-технология, и т.д. и т.п. Теперь понятно, какой бассейн с холодной водой ожидает нас?
 
+
-
edit
 
to Олег
Ну могу посоветовать выбрать EJB сервер получше :)
Лично мне больше всего понравился Weblogic
Пожалуй, самый лучший сейчас.

Еще, по мере возможностей используйте Container managed EJB (CMP)
работают они заметно быстрее.
 
LV <Олег> #22.02.2002 10:34
+
-
edit
 
2 Mikl.

Sorry, палец дрогнул. Не JEB, а EJB - Enterprise JavaBeans.
 
1 2 3

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru