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

 
1 2 3
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Вот тут мне обсуждение попалось:




А вообще, я краем уха слышал, что на Java тяжело делать большие проекты...
 
LV <Олег> #18.02.2002 13:16
+
-
edit
 
Я много лет пишу на С++. Но вот теперь начальство под страхом исключения из пионеров заставляет начинать большой проект на Java. Если у кого-то есть опыт работы на Java, особенно опыт создания больших проектов, поделитесь, пожалуйста, своим мнением о плюсах и минусах. А то начальство прямо сочится энтузиазмом, а я з-цей медный таз чувствую...
 
RU Владимир Малюх #18.02.2002 13:46
+
-
edit
 
Олег>Я много лет пишу на С++.

Уточню -под виндами и в Visual Studio? Если да, то при переходе на чистую яву будет первое время сильно колбасить от непривычности сред разработки. Да и само по себе - тоже не очень, именно после С/С++ всяких "мелочей" не будет хватать, типа пойнтеров и дифайнов :)

Олег>Если у кого-то есть опыт работы на Java, особенно опыт создания больших проектов, поделитесь, пожалуйста, своим мнением о плюсах и минусах. А то начальство прямо сочится энтузиазмом, а я з-цей медный таз чувствую...

Опыт не совсем уж больших, но на сотню-другую тысяч строк есть. Не непосредствоенно моими руками, но руками моих подчиненных. В общем-то больше неудобоств, чем выигрышей. Все эти паккаджи, то и дело "потерянные" классы, отсутствие привычных сишных либ и дллелек итп итд. К тому же неискоренимое ощущение тормознутости. Если к языку можно привыкнуть, не так страшен черт, но само окружение после традиционного сишного будет угнетать. Сочувствую. Если это не апплетки и сервлетки то смысла я не вижу, особенно если есть нормальные сишные разработчики.
Maschinen muessen "idiotensicher" werden  
+
-
edit
 

МиГ
Реконструктор

опытный

А почему в вашем bCAD-е плагины написаны на джаве?
 
LV <Олег> #18.02.2002 17:37
+
-
edit
 
Владимиру Малюху:

Мы в нашей группе пишем на С++ под Windows. Текст набираем в notepad или еще в каком-нибудь любимом редакторе, используя только библиотеки API. Ресурсы редактируем в Borlad Workshop. Транслируем, линкуем и собираем весь проект, используя nmake. Так что новая среда разработки не пугает. Можно использовать привычную. :)

А пугает вот что (далее следуют грустные мысли, навеяные изучением языка) :

В С++ всякие "утечки" памяти и других ресурсов мы изживаем, активно используя свойства конструкторов и деструкторов. Допустим, если в конструкторе что-то открыл или захватил, то в деструкторе закрыл или отпустил. А так как точно известно, когда сработает конструктор, а когда - деструктор, то никогда никаких утечек!

А в Java же finalize (т.е. деструктор) сработает тогда, когда "уборщица" соизволит заняться делом. Такое положение дел делает написание деструкторов в Java бессмысленным занятием и заставляет программиста освобождать захваченные ресурсы вручную. :(

Кроме того, "уборщица" просыпается тогда, когда уже начинает чувствоваться дефицит свободной памяти. Это означает, что в какой-то момент программа начнет жутко тормозить, т.к. каждая очередная операция создания объекта будет ждать освобождения памяти. К тому же создается дефицит памяти для других приложений, работающий в системе. Наратает интенсивность свопинга. Тормозит уже вся система. :(((

Может, я не прав? Может, этот апокалипсис мне только привиделся?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Олег>Мы в нашей группе пишем на С++ под Windows. Текст набираем в notepad или еще в каком-нибудь любимом редакторе

Если не пробовали, то порекомендую встроенный редактор FAR'а с плагином Colorer. Плюсы - родной text-mode, удобная работа с вертикальными блоками, интеллектуальная раскраска (вплоть до раскраски синтаксических ошибок), куча прелестей типа быстрого перехода на парную фигурную скобку и т.п. Всё это для нескольких десятков языков и форматов.

Олег>А в Java же finalize (т.е. деструктор) сработает тогда, когда "уборщица" соизволит заняться делом. Такое положение дел делает написание деструкторов в Java бессмысленным занятием и заставляет программиста освобождать захваченные ресурсы вручную. :(

Меня вот что поражает - почему в Java народ постоянно утыкается в сборщика мусора? На Perl и PHP про это никто и не вспоминает, не смотря на то, что Perl/CGI и PHP на многих задачах уделывают по скорости приложения JSP...

Кстати, никто не в курсе, отчего вдруг начался массовый переход программистов с JSP на PHP и Perl/CGI? Хотя ещё год назад всё было с точностью до наоборот?
 
RU Владимир Малюх #19.02.2002 06:35
+
-
edit
 
МиГ>А почему в вашем bCAD-е плагины написаны на джаве?

Потому что рядовые инженеры и дизайнеры не очень в ладах с С/С++, с пойнтерами, не умеют правильно работать с памятью итд итп. В данном случае java была паллиативом. Эдакий недо-С++.
Maschinen muessen "idiotensicher" werden  
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Анализы и мне не попадались. Но когда я возился с Java (на любительском, признаюсь, уровне) в эхах и форумах по Java вопрос мусорщика всплывал постоянно. А вот в эхах по Perl/PHP такого не видел ни разу. Вот и думаю, к чему бы это? :)
 
=KRoN=>Анализы и мне не попадались. Но когда я возился с Java (на любительском, признаюсь, уровне) в эхах и форумах по Java вопрос мусорщика всплывал постоянно. А вот в эхах по Perl/PHP такого не видел ни разу. Вот и думаю, к чему бы это? :)

Есть у меня гипотеза. На джаве в основном все таки больше профи пишут, чаще с си перешедшие, мусорщик для них новинка, вот и вопросы, понять хотят. Мне так кажется, что по задумке он производительность повышать должен. Память освобождается когда у программы других дел нет, а это в каждом конкретном случае виртуальной машине виднее, чем программисту (если он конечно загрузку проца все время не мониторит). Если проге считать надо, то пусть сперва досчитает, а потом вспомогательными вещами занимается. Что-то типа отложенной записи на диск в общем. Ну а если памяти так уж мало, что все время освобождать надо, то это как ни крути нехорошо,добавить надо. Вообще то эффективность таких вещей тестируется запросто.

А на Perl/PHP видимо в среднем народ более неприхотливый - заработало и ладно, зачем еще о мусоре беспокоиться. Вон visual basic программеры тоже редко о высоком говорят.
 
RU Владимир Малюх #19.02.2002 08:00
+
-
edit
 
Олег>Владимиру Малюху:

Олег>Мы в нашей группе пишем на С++ под Windows. Текст набираем в notepad или еще в каком-нибудь любимом редакторе, используя только библиотеки API.

То есть без MFC и всяких надстроек над ней? Сурово. Трудоемкость уж слишком высокая.

Олег>А в Java же finalize (т.е. деструктор) сработает тогда, когда "уборщица" соизволит заняться делом. Такое положение дел делает написание деструкторов в Java бессмысленным занятием и заставляет программиста освобождать захваченные ресурсы вручную. :(

Или совсем их не освобождать :) Отвис указатель и бог с ним, система разберется.

Олег>Кроме того, "уборщица" просыпается тогда, когда уже начинает чувствоваться дефицит свободной памяти. Это означает, что в какой-то момент программа начнет жутко тормозить, т.к. каждая очередная операция создания объекта будет ждать освобождения памяти. К тому же создается дефицит памяти для других приложений, работающий в системе. Наратает интенсивность свопинга. Тормозит уже вся система. :(((

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

Олег>Может, я не прав? Может, этот апокалипсис мне только привиделся?

В этом смысле не так все страшно.
Maschinen muessen "idiotensicher" werden  
RU Владимир Малюх #19.02.2002 08:04
+
-
edit
 
МиГ>>>А почему в вашем bCAD-е плагины написаны на джаве?

В.М.>>Потому что рядовые инженеры и дизайнеры не очень в ладах с С/С++, с пойнтерами, не умеют правильно работать с памятью итд итп. В данном случае java была паллиативом. Эдакий недо-С++.

МиГ>Плохо, надо было сориентироватся на VB или Delphi.

Это почему плохо-то? Иу ж эти две глюкалки мы поддержим в последнюю очередь.

МиГ> Win XP дистрибутируется без джава машины и поэтому у вас будут некоторые проблемы с потребителями,

Не будут, т.к. JVM легко инсталлируется и в нашем дистрибутиве она есть.

МиГ>У меня есть некоторое вопросы по bCAD-у. Если не лень, прошу ответить. :)

Здесь? :eek: А в саппорт написать?

МиГ>И так, я начертил какую-то фигуру фрихендом.

Каким таким фрихендом? Где вы его у нас нашли?

МиГ>Как потом эту фигуру селектировать и потом двигать туда-сюда и вертеть (также фрихендом)?. Как изменить зрительный угол viewport-а?

Вы что хелп и туториала совсем не читаете? Это же упражнение номер ноль. Изменть угол зрения - F12. Двигать -комнада move, естественно, она сама вам селектировать предложит. То же самое и rotate. А тутор все-таки прочтите.
Maschinen muessen "idiotensicher" werden  
RU Владимир Малюх #19.02.2002 08:06
+
-
edit
 
=KRoN=>>Анализы и мне не попадались. Но когда я возился с Java (на любительском, признаюсь, уровне) в эхах и форумах по Java вопрос мусорщика всплывал постоянно. А вот в эхах по Perl/PHP такого не видел ни разу. Вот и думаю, к чему бы это? :)

ab>Есть у меня гипотеза. На джаве в основном все таки больше профи пишут, чаще с си перешедшие, мусорщик для них новинка, вот и вопросы, понять хотят.

Похоже, что так. Просто им непривычно, что эту работу, о которой они так пеклись раньше, за них будет делать система.

ab>Мне так кажется, что по задумке он производительность повышать должен. Память освобождается когда у программы других дел нет,

Выглядит именно так.
Maschinen muessen "idiotensicher" werden  
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Нет, кажется всё проще :) Звиняйте, что сразу не допёр.
На Perl/PHP среднее время работы скрипта - секунды. в худшем случае - десятки секунд. Потом скрипт убивается системой. Вместе со всеми своими утечками. Потому их никто и не замечает, видимо :)

А вот традиционные Java-апплеты работают относительно долго...
 
Олег>Мы в нашей группе пишем на С++ под Windows. Текст набираем в notepad или еще в каком-нибудь любимом редакторе, используя только библиотеки API.

Совершенно искренне потрясен до глубины души.

Олег>А в Java же finalize (т.е. деструктор) сработает тогда, когда "уборщица" соизволит заняться делом. Такое положение дел делает написание деструкторов в Java бессмысленным занятием и заставляет программиста освобождать захваченные ресурсы вручную. :(

Ну надо же хоть чуть-чуть доверять разработчикам мусорщика виртуальной машины, они же тоже головой думают. (Или ваши тесты показали обратное? Тогда извините.) Иначе надо и компилятор Си самому переписывать, а вдруг там тоже что то нехорошо сделано. А уж в самих то функциях API и утечки есть и ошибки, их просто обязательно надо переделать.
 
=KRoN=>Меня вот что поражает - почему в Java народ постоянно утыкается в сборщика мусора?

А что значит утыкается? Мне вот как-то пока не попадались серьезные анализы его эффективности/неэффективности. Где то есть?
 
RU Владимир Малюх #19.02.2002 10:04
+
-
edit
 
МиГ>Я просто был удивлен как вы скрестили пи-код джавы и x86 код C++. :)

Есть такое слово - COM :)

В.М.>>Не будут, т.к. JVM легко инсталлируется и в нашем дистрибутиве она есть.

МиГ>Я скачал bCAD-студент, и никакой JVM в ней не было. И так как я на XP, при попытке запустить какой-нибудь плагин прога глючит.

Вы хотите ее скачивать всегда? :) Она же там на страничке лежить в папочке "Системные файлы", если у вас ее нет, ьерите оттуда. А на сидюке ясное дело она есть.

В.М.>>Здесь? :eek: А в саппорт написать?

МиГ>Я не заплатил за bCAD. Неужели имею право на саппорт? :)

Вы читали, что про студенческую версию написано - только по e-mail, то есть без телефона :)

МиГ>>>И так, я начертил какую-то фигуру фрихендом.

В.М.>>Каким таким фрихендом? Где вы его у нас нашли?

МиГ>Free-hand это такой термин. Означает рисовать/чертать что-то рукой

Именно рукой. :) В графике этим термином обзначают инструмент который БУКВАЛЬНО повторяет траекторию указателя.

МиГ>при помощи мышки или таблета или какого-нибудь другого устройства, при этом не соблюдая никаких правил.

Это нахывается эскиз :) Или, по аглицки - sketch.

В.М.>>Вы что хелп и туториала совсем не читаете? Это же упражнение номер ноль. Изменть угол зрения - F12. Двигать -комнада move, естественно, она сама вам селектировать предложит. То же самое и rotate. А тутор все-таки прочтите.

МиГ>Я читал, но кажется, там ссылки на печатный бумажный носитель ;)

Да ну? :eek: Меню "Помощь" - Содержание - там в катлоге выбирате "bCAD, Первые Шаги". Либо даунлодайте доки в вордовском формате, они тма же лежат.
Maschinen muessen "idiotensicher" werden  
+
-
edit
 

МиГ
Реконструктор

опытный

МиГ>>А почему в вашем bCAD-е плагины написаны на джаве?

В.М.>Потому что рядовые инженеры и дизайнеры не очень в ладах с С/С++, с пойнтерами, не умеют правильно работать с памятью итд итп. В данном случае java была паллиативом. Эдакий недо-С++.

Плохо, надо было сориентироватся на VB или Delphi. Win XP дистрибутируется без джава машины и поэтому у вас будут некоторые проблемы с потребителями, которые перешли на XP. Если, конечно, не воткнете машину в дистрибютив bCAD-a.

У меня есть некоторое вопросы по bCAD-у. Если не лень, прошу ответить. :)
И так, я начертил какую-то фигуру фрихендом. Как потом эту фигуру селектировать и потом двигать туда-сюда и вертеть (также фрихендом)?. Как изменить зрительный угол viewport-а?
 
LV <Олег> #19.02.2002 11:33
+
-
edit
 
Олег>Мы в нашей группе пишем на С++ под Windows. Текст набираем в notepad или еще в каком-нибудь любимом редакторе, используя только библиотеки API.

KRoN>Если не пробовали, то порекомендую встроенный редактор FAR'а с плагином Colorer. Плюсы - родной text-mode, удобная работа с вертикальными блоками, интеллектуальная раскраска (вплоть до раскраски синтаксических ошибок), куча прелестей типа быстрого перехода на парную фигурную скобку и т.п. Всё это для нескольких десятков языков и форматов.

ab>Совершенно искренне потрясен до глубины души.

Средства разработки выбирались исходя из задачи. Дело в том, что setup с новой версией программ наши клиенты получают во время связи с ценральным сервером. Часто для этого используются модемы. Число клиентов измеряется тысячами. Все это диктует жесткие требования к объему программ. Нам удалось решить эту задачу: клиентовская программа (весьма сложная Windows-аппликация с пользовательским интерфейсом на 3-х языках) и сервер клиентовской (локальной) базы данных занимают менее 300 кб.

KRoNу - спасибо за совет.


Олег>А в Java же finalize (т.е. деструктор) сработает тогда, когда "уборщица" соизволит заняться делом. Такое положение дел делает написание деструкторов в Java бессмысленным занятием и заставляет программиста освобождать захваченные ресурсы вручную. :(

ab>Ну надо же хоть чуть-чуть доверять разработчикам мусорщика виртуальной машины, они же тоже головой думают. (Или ваши тесты показали обратное? Тогда извините.)

Головой думают все. ;) Я же хотел-бы узнать из первых рук мнение людей, имеющих опыт создания и эксплуатации больших java-проектов.

ab>Иначе надо и компилятор Си самому переписывать, а вдруг там тоже что то нехорошо сделано. А уж в самих то функциях API и утечки есть и ошибки, их просто обязательно надо переделать.

Достаточно знать недостатки и ошибки используемых средств разработки и уметь обходить их. А переделывать и переписывать - эта кустарщина.
 
LV <Олег> #19.02.2002 13:31
+
-
edit
 
KRoN>Может, от указателей в java отказались как раз из-за того, что корректную сборку мусора с ними не придумали?

Нет, Java с объектами работает как раз только через указатели. Но эти указатели "статические", их нельзя двигать. Поэтому они называются не указатели а референции. Статичность референциий обеспечивает безопастность java-программ в том смысле, что программа в принципе не всостоянии "дотронуться" до чего-либо, кроме своих переменных и своих данных. "Статичность" референций на объекты также привела к отказу от множественного наследования, что дало замечательный эффект: одна и та же референция указывает на сам объект и одновременно на всех его "предков". Проблема же не в том, чтобы освободить память из-под объекта, а в том чтобы надежно и оперативно освободить захваченный объектом ограниченный системный ресурс. Особенно это становится актуально в свете инкапсуляции, когда нам не известны детали реализации класса. Мы можем не знать или, зная, не иметь доступ к захваченному ресурсу. А "уборщица" вприципе не может ничего знать о таких ресурсах. Есть возражения?
 
BG Реконструктор #19.02.2002 21:06
+
-
edit
 
В.М.>Это почему плохо-то? Иу ж эти две глюкалки мы поддержим в последнюю очередь.

Ну, с точки зрения ламера и C++ - "глюкалка". Если умееш писать, то VB никогда глючить не будет, а Delphi тем более.
Я просто был удивлен как вы скрестили пи-код джавы и x86 код C++. :) "Никогда такого не видел" ©

В.М.>Не будут, т.к. JVM легко инсталлируется и в нашем дистрибутиве она есть.

Я скачал bCAD-студент, и никакой JVM в ней не было. И так как я на XP, при попытке запустить какой-нибудь плагин прога глючит.

МиГ>>У меня есть некоторое вопросы по bCAD-у. Если не лень, прошу ответить. :)

В.М.>Здесь? :eek: А в саппорт написать?

Я не заплатил за bCAD. Неужели имею право на саппорт? :)

МиГ>>И так, я начертил какую-то фигуру фрихендом.

В.М.>Каким таким фрихендом? Где вы его у нас нашли?

Free-hand это такой термин. Означает рисовать/чертать что-то рукой при помощи мышки или таблета или какого-нибудь другого устройства, при этом не соблюдая никаких правил. Не знаю как лучше объяснить. Просто выбираеш из палитры какую-нибудь фигуру (скажем окружность) и движением руки "надуваеш" эту окружность до нужных размеров.

МиГ>>Как потом эту фигуру селектировать и потом двигать туда-сюда и вертеть (также фрихендом)?. Как изменить зрительный угол viewport-а?

В.М.>Вы что хелп и туториала совсем не читаете? Это же упражнение номер ноль. Изменть угол зрения - F12. Двигать -комнада move, естественно, она сама вам селектировать предложит. То же самое и rotate. А тутор все-таки прочтите.

Я читал, но кажется, там ссылки на печатный бумажный носитель ;)
 
ab>Есть у меня гипотеза. На джаве в основном все таки больше профи пишут, чаще с си перешедшие, мусорщик для них новинка, вот и вопросы, понять хотят.

В.М.>Похоже, что так. Просто им непривычно, что эту работу, о которой они так пеклись раньше, за них будет делать система.

На самом деле идея "мусорщика" проста и понятна. Мусорщик освобождает память из-под более не используемых объектов. При этом выполняется finalize. Но как быть, например, с закрытием файлов или сокетов? Эти ресурсы в системе ограничены. Если их не закрывать вручную, а ждать "мусорщика", то очень скоро программа будет заниматься только обработкой exception. Я прав? Или нет?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Всё утыкается в одну проблему - как считать, что объект больше не используется. Если у нас как в Java нет указателей - то всё ок. А вот как в Perl и PHP, где указатели есть это обошли - не знаю. Кстати, вот характерный пример, что указатели - не зло. Десятки тысяч ламеров пишут на тысячах серверов в Интернете на Perl и PHP, вовсю используя указатели, отлаживая софт "вживую", прямо на web-сервере и ничего у них не падает и не сыплется...

Может, от указателей в java отказались как раз из-за того, что корректную сборку мусора с ними не придумали?
 
RU Владимир Малюх #20.02.2002 04:31
+
-
edit
 
В.М.>>Похоже, что так. Просто им непривычно, что эту работу, о которой они так пеклись раньше, за них будет делать система.

Олег>На самом деле идея "мусорщика" проста и понятна. Мусорщик освобождает память из-под более не используемых объектов. При этом выполняется finalize. Но как быть, например, с закрытием файлов или сокетов? Эти ресурсы в системе ограничены.

Память вообще-то тоже ограничена :) Отдает их мусорщик точно так же.

Олег>Если их не закрывать вручную, а ждать "мусорщика", то очень скоро программа будет заниматься только обработкой exception. Я прав? Или нет?

Отчего же? Если ваша система уже не пользует ресурс, мусорщик его по требованию другой системы отдаст, куда денется?
Maschinen muessen "idiotensicher" werden  

TEvg

аксакал

админ. бан
МиГ>Плохо, надо было сориентироватся на VB или Delphi.
>Это почему плохо-то? Иу ж эти две глюкалки мы поддержим в последнюю очередь.

За козла ответишь :p Это с каких пор Дельфия глюкавая? Могет руки.sys вам заменить?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★★
Народ, БОЛЬШИЕ проекты делаются не на конкретных языках. А в конкретных средах разработки больших проектов. Всякие там UML/CVS/итд/итп. Сам об этом очень поверхностно знаю, так что не меня трясите. А уж на чём под ними - это дело второе. Хотя они все лучше под C++ заточены, как правило...
 
1 2 3

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