Java

Java - объектно-ориентированный язык. Разработан компанией Sun Microsystems, под контролем которой и развивается. Основная черта - переносимость. Изначально Java разрабатывался согласно принципу WORA: Write Once - Run Anywhere. Из этого, в частности, следует техническая особенность реализации: java-код компилируется в т.н. байт-код, который исполняется виртуальной машиной. Что означает следующее - код, написаный на Java и скомпилированный, может быть перенесен на любую систему, где есть виртуальная машина, и будет исполняться на этой системе без каких-либо изменений. Подробнее: http://ru.wikipedia.org/wiki/Java



Правила конференции





 

Михаил Голуб

пише?8 января 2007 в 12:48

Хе хе.. не думал, что сюда кто-то так быстро заглянет :)

Дмитрий Лазаренко

пише?10 января 2007 в 23:06

Да я вообще фанат))

Денис Валентинович Рысцов

пише?14 января 2007 в 2:40

Java must die, хотите возразить, вступайте!
groups.php?act=s&gid=912

Михаил Матвеев

пише?16 января 2007 в 2:54

forum.juga.ru жжот :)))
Mysterio, я вас узнал :)

Михаил Голуб

пише?18 января 2007 в 18:02

Да.. отличный форум, только в последнее время во флейм сваливается частенько..
А Вы там кто?
P.S. Странно, отправил 2 личных письма, ни одно из них в отправленных не появилось. Баг?

Михаил Матвеев

пише?18 января 2007 в 18:42

А мне ни одно не пришло :)
Я там Earendil. Читаю в основном :)))

Дмитрий Лазаренко

пише?21 января 2007 в 23:16

на самом деле juga.ru - нормальное место для флуда) но если действительно пытаться что-то выяснить офигенно нужное, не самое то... зачастую время потраченное на гугл будет меньше, чем обсуждение в форуме

Михаил Голуб

пише?22 января 2007 в 0:06

Э.. не скажи. Есть вопросы, которые в гугле ты не найдешь.
Например, какой фреймворк лучше подойдет для данной задачи?
Или какие недостатки и достоинства имеет данное решение?
Какая сфера применения этой технологии?

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

Олег Андреев

пише?23 января 2007 в 22:47

1) Кто компетентно ответит, почему в джаве нет #define ?
2) Кто компетентно ответит, почему в джаве забито слово goto, но оно не используется?
3) Кто компетентно ответит, почему в джаве так ценят garbage collector и вменяют его отсутствие в минус Си++?

Михаил Голуб

пише?23 января 2007 в 23:55

1) Это директива препроцессора и к Java она отношение не имеет. Вы можете взять и использовать сишный препроцессор, если он уж вам так нужен.
А в Java это просто не нужно.
Для чего чаще всего используется #define? Для кроссплатформенных программ: #ifdef WIN ... #elif ...

Частенько препроцессор используют только разработчики на платформе JME. Ну там ситуация грустная, есть куча вендорозависимых API, которые приходится использовать для написания программ из-за слабой проработки MIDP 1.0, CLDC 1.1.
Более менее ситуация начинает исправляться после выхода MIDP 2.0, но и сейчас.. JVM имеют кучу багов, особенно у корейских телефонов, поэтому реальной кроссплатформенности там нет.

А в JSE/JEE ситуация хорошая (пока), и особых причин использовать нет.

2. Не используется, потому что пытаются обойтись без него. В самом деле у вас есть break/continue [label] конструкции, в которых goto чаще всего и использовалось (выйти на несколько циклов выше например). Думаю, не нужно пояснять, почему goto не нужно использовать в других случаях?

3. Garbage Collector (GC) позволяет вам не заботиться об операциях по освобождению памяти. Чем это хорошо? Вы можете сосредоточиться на написании бизнес-логики, а не на отлавливании багов с памятью. Не туда залез, не то освободил.. и сидите мучайтесь потом с SEGMENTATION FAULT. А это ОЧЕНЬ полезно в корпоративных системах - нише, где Java проявляет себя в полной мощи. Там важна стабильность системы и отказоустойчивость.
Чем мы платим за такое удобство? Тем, что это не оптимальное расходование ресурсов. Но преимущества значительно больше недостатков, особенно с ростом ресурсов ПК.

На счет C++: если честно, я с ним знаком лишь поскольку-постольку. Очевидно в области системного программирования он с Java не пересекается. Там приходится управлять памятью вручную.
В области корпоративных систем: я не знаю, как обстоят дела там у C++, но мне будет очень интересно посмотреть на системку вроде как у WallMart (крупнейшая торговая сеть США) на 500+ серверов

Михаил Голуб

пише?24 января 2007 в 0:02

Гм.. тут еще и ограничение на запись.. Ну когда уже сделают нормальный ветвистый форум? :(

В дополнение: в области десктопа: пока C++-программист ловит свои утечки памяти, Java-программист просто пишет код.

Ну и чтобы быть более беспристрастным: в Java тоже есть утечки памяти, но совсем другого рода. Однако от класса утечек памяти она все же освобождает. За что ей большое спасибо :)

Олег Андреев

пише?24 января 2007 в 2:51

Большое спасибо за стандартный ответ :)

1. Как насчет точечного дебага? Я понимаю, что можно использовать фунции, но их вызовы будут и в релизе, что м.б. накладно в узких местах. Можно и внешний препроцессор, но все софтверные технологии стремятся к плотному взаимодействию, а такая широкая штука, как Джава не очень удобна, если её обвесить кучей метаязыков.

2. Это вопрос с подвохом. Зачем тогда goto зарезервирован? Это из области боязни Ктулху?

3. Страуструп сказал, что он любит сборщик мусора в Си++ за то, что он создает так мало мусора. Что за сборщик? Очень просто:

void func()
{
ComplexObject obj = ComplexObject(a,b,c);
// do smth...
// forget about obj
return;
}

obj создается на стеке, из которого вылетает при выходе из функции, а все данные аккуратно уничтожаются в деструкторе.

Если нужно хранить что-то глобальнее - то храни в переменной класса. Объект-член будет уничтожен автоматом при уничтожении объекта класса.

Указатели? Ок. Если ты создаешь что-то на куче, то все просто как круглые скобки: где открыл, там и закрой. Создал в конструкторе - удали в деструкторе. Создаешь динамический список: поздравляю! Бери STL deque/vector/queue или воплощай свои извращения самостоятельно (что нужно очень-чень редко).

Если честно, то гемморой с seg fault был у меня только тогда, когда работа с дин. памятью не вписывалась в стандартную ситуацию: это был мост между джаваскриптом и джавой, написанный на Си++. Объект создавался в одних местах, а удаляться должен был на колбэке сборщика мусора скрипт-интерпретатора. Т.е. в другом, совсем другом, месте ("круглые скобки" не очевидны). Если учесть, что скрипт-раннер и JNI содержали непонятки в доках и банальные баги при отсутствии сорцов, то источник геммороя вполне очевиден :)

Мораль: в Си++ все, что касается языка богаче, чем у джавы :)) Правда, у Си++ другая система оформления модулей, которая бывает гораздо более удобной, а бывает и совсем наоборот. Но это другая история.

Олег Андреев

пише?24 января 2007 в 3:23

При работе с Джавой меня не покидало ощущение, что мне дали конструктор от 3 до 5 лет, с такими, укрупненными кубиками и без острых, подвижных деталей. Т.е. заботы - выше крыши.

То же чувство я испытывал, получив ответ от разработчиков одного браузера. Вопрос был в том, чтобы они в свою собственную структуру добавили void-указатель, где я смогу запомнить объект (что бы не создавать std::map для учета указателей разного происхождения). Это обычная практика в API, но они отказали, сказав, что это опасно: а вдруг, я удалю объект дважды, или забуду о нем. Классно, правда? Давайте я напишу лишние 30 строк чтобы обойти эту, без сомнения, ошибку в дизайне.

Михаил Голуб

пише?24 января 2007 в 3:31

1. Что такое точечный дебаг? У меня тестовые классы хранятся отдельно, запускаются через JUnit и в релизе не используются.

2. Я не помню зачем зарезервирован. Можете спросить на джуге, по-моему в Шилдте где-то объяснялось. Ясно одно, использование его запрещается на уровне языка, а это -1 антипаттерн :)

3. В Java можно написать ComplexObject obj = new ComplexObject(new Object1(), new Object2(new Object3())); и забить на очистку мусора. А это удобно.
Знаете, вы можете рассказывать и доказывать, что сборка мусора в C++ безумно проста и удобна, но проблема есть! И постоянно пишутся новости: в такой-то программе устранена крупная утечка памяти, устранена уязвимость из-за действия с адресной арифметикой и т.д. и т.п.
И пишут проекты отнюдь не новички. Поэтому просто глупо отрицать роль сборщика мусора.

На счет возможностей языка: да C++ богаче Java, я не спорю. Собственно это и было понятно сразу: C++ язык общего предназначения для системного/прикладного программирования, Java только для прикладного программирования. Она более высокий язык, чем C++. И поэтому теряет в гибкости.

Только вот не понятно. Вы для себя уже решили, что C++ рулит, а Java нет и используете этот блог для расставления смайликов?
Тогда чего я тут распинаюсь?

Если не верите мне, спросите на forum.juga.ru. У меня любительский опыт работы с Java около года, а там профессионалы с опытом по 12 лет (Skipy) сидят. Они вам расскажут более реальное положение вещей.

Михаил Голуб

пише?24 января 2007 в 3:45

Про кубики: а по сути так оно и есть. Вам не нужно возиться с памятью, с кроссплатформенностью (размеры машинных слов, например, в С++ разные, в Java нет), вообще со всякими низкоуровневыми операциями. За вас это делает JVM, а вам остается бизнес-логика.

Олег Андреев

пише?24 января 2007 в 3:53

1. Ок, специфика отдельных задач :)
2. goto - это либо ктулху, либо reserved for future use :)

Я ничего не решил :) И смайлики не просто так расставляю. Мне интересно мнение знающих людей. Вот твое мнение мне интересно, ты, может и любитель, но говоришь убедительно. Значит, можно с тобой серьезно говорить. Извини, что почти развел на флуд, это я зря, да.

Михаил Голуб

пише?24 января 2007 в 8:02

Сейчас поспрашивал на физтеховской борде про goto. Борда не шарит, что впрочем и следовало ожидать. Вообще вопрос интересный, хотя и сомневаюсь я в будущем использовании этого слова. Но спрошу у Skipy, может он знает.

Михаил Голуб

пише?24 января 2007 в 18:45

Хех.. борда таки помогла: http://zlo.rt.mipt.ru/dev/?read=9309
Интервью с Гослингом.

Олег Андреев

пише?24 января 2007 в 23:51

Как-то более пафосно, чем по сути :) Они уже придумали хорошее применение goto? Может, сделают continuation (структурный гипер-goto :), что было бы впечатляюще, особенно с учетом религиозных войн на этот счет.

Михаил Голуб

пише?25 января 2007 в 1:17

А что такое структурный гипер-goto? Можеть переходить между отдельными процедурами?

Пока не придумали и, надеюсь, не придумают. Хотя.. OpenSource-коммунити, как я уже упоминал, очень хочет запихнуть в Java все, что в принципе в нее можно запихнуть. Так, что там и до goto недалеко.

Олег Андреев

пише?25 января 2007 в 2:40

Да, можно и между отдельными процедурами.

"Продолжение (иногда отложенные вычисления, англ. continuation) представляет состояние программы в определённый момент, которое может быть сохранено и использовано для перехода в это состояние. Продолжения содержат всю информацию, чтобы продолжить выполнения программы с определённой точки."

http://ru.wikipedia.org/wiki/Продолжение
http://en.wikipedia.org/wiki/Continuation

Александр Левантовский

пише?25 января 2007 в 10:53

Вот такая задача: сделать так чтобы окно (JFrame) прилипало к границам экрана (как Winamp). Естественное решение - написать обработчик события ComponentMoved() или как-то так и установить нужные координаты. Но при перетаскивании мышкой получается так, что сначала без моего ведома окно перемещается вслед за мышью, а уже потом вызывается мой обработчик перемещения окна и оно становится куда надо (вплотную к границе экрана). Это приводит к морганию, дерганию окна.
Таким образом, необходимо как-то ухватить тот момент, когда окно скоро сдвинется, но еще не сдвинулось (аналог WindowClosed и WindowClosing). Как это сделать? Проверимл, что метод setLoсation() не вызывается при перетаскивании мышью.

Михаил Голуб

пише?27 января 2007 в 4:29

Как раз читаю Swing Hacks, это такой сборничек всяких нетривиальных решений в UI.
Там как раз такая проблема обсуждается.
Цитирую:
Because the component events are read-only, it is impossible to intercept the move and position the window before it has been drawn on screen. Thus the window will flash as the user moves it. Creating a custom event queue would seem to be the answer because you could then modify the events before they are sent to the components, but this won't work for move events on windows (or any subclass like JFrame).Windows are real structures provided by the operating system, rather than purely Java objects. The window events are created by the OS itself and passed into the JVM from the C level, meaning there is no way to capture these before they take effect. Still, in many of your applications, the flashing may be an acceptable trade-off for snapping.

То есть решение довольно геморройное.. Нужно это событие (перемещение окна за мышью) обработать еще в очереди сообщений и заменить его на событие перемещения к краю экрана.
В принципе мне идея ясна, но нет времени набросать реализацию.
Но довольно нетривиально получается :) Особенно если учесть, что это все ради какого-то "прилипания" к краю экрана.

Александр Левантовский

пише?27 января 2007 в 11:41

Нда... я так и думал, что тут что-то не то. А делать с эффектом мерцания как-то неприлично. Пока забью на это дело.
Спасибо за совет!

Олег Андреев

пише?27 января 2007 в 13:01

Очередь сообщений сделать несложно, но, как явствует из цитаты, это не поможет. Забавно, что у самой ОСи (Винды/Мака) такая возможность есть, но она не вписывается в API джавы. Абыдно.

Александр Левантовский

пише?28 января 2007 в 0:10

Короче, недоброжелатели Джавы сейчас начнут кричать про его высокоуровневость и так далее...
Видимо, разработчики подумали, что это никому не надо.

Олег Андреев

пише?28 января 2007 в 3:30

К сожалению, в этом мире все надо. Все, без исключения. Но всего-то не осилишь, да?

Михаил Голуб

пише?30 января 2007 в 7:33

Нашел интересную библиотечку, позволяет программировать музыку текстом (аля midi):
http://www.jfugue.org/index.jsp
Понравилось :) Жаль у меня нет музыкального образования :(

Олег Андреев

пише?1 февраля 2007 в 4:52

Bash.org #338364

Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.

Михаил Голуб

пише?1 февраля 2007 в 9:21

эту цитату упоминают в каждой второй статье против Java

Олег Андреев

пише?2 февраля 2007 в 13:40

Это тупая фраза, то же самое можно даже о Си сказать. Странно, что она так популярна.

Михаил Голуб

пише?2 февраля 2007 в 13:51

вот я не вижу странного в том, чт она популярна :)

Олег Андреев

пише?2 февраля 2007 в 16:45

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

Роман Олегович Белоус

пише?2 февраля 2007 в 21:43

Хороший юмор для среднего подросткового возраста... Не надо так на критиков накидываться - они очень полезны.

Олег Андреев

пише?2 февраля 2007 в 22:47

Кстати, насчет критиков. В википедии про OOP, в разделе "Критика":

One study by Potok et. al. has showed no significant difference in productivity between OOP and procedural approaches.

PDF (66К): http://www.csm.ornl.gov/~v8q/Homepage/Papers Old/spetep- printable.pdf

Звучит интригующе, правда? Смотрим 3-ю страницу, где под формулой (1) сказано:

Where team productivity is the measure of the team output for a given unit of time or effort, e.g., thousands-of-lines-of-code (KLOC) per month.

PS. Дональд Кнут как-то шутливо ответил на вопрос "как оплачивать работу программиста?". Он сказал: "обратно пропорционально количеству кода, обеспечивающего заданную функциональность".

Александр Левантовский

пише?15 февраля 2007 в 19:25

Имеется программа, хранащая настройки в виде java.util.Properties. Как по-вашему лучше сохранять их на диск: в файл типа ini или xml? Оба формата поддерживаются на халяву. Рекомендации аргументировать.

Олег Андреев

пише?16 февраля 2007 в 16:28

Лучше в ini - читать и править руками легче. Хотя, еще лучше - в yaml.

Александр Левантовский

пише?16 февраля 2007 в 20:47

Сам добавлю:
минус ini - кириллица (и другие не латинские символы) сохраняются в виде escape-последовательностей. Вот пример:
RecentFolders_1=E\:\\MP3\\\u0420\u0443\u0441\u0441. ..
Кодировку файла задавать нельзя.
Xml - наоборот, сохраняет обычным образом, но можно задать кодировку (н-р, UTF-8).

Олег Андреев

пише?18 февраля 2007 в 3:29

Проблема кодировки - от кривой реализации сериализатора, а не "минус ini".

Александр Левантовский

пише?18 февраля 2007 в 17:48

Я спрашиваю в том числе и про конкретную реализацию.

Олег Андреев

пише?19 февраля 2007 в 19:08

Может, стоит сменить реализацию? =)

Александр Левантовский

пише?19 февраля 2007 в 21:15

Да, пока еще не поздно (версия не распространилась за пределы моего компьютера :+/-) )

Жежечка Адельшина

пише?21 февраля 2007 в 17:22

СРОЧНО:
В крупную торговую компанию требуются Программисты 1С 7,7 и 7,7 и 8,0.
Основные обязанности:
• Оптимизация программных процессов
• Консультирование по программе 1С
Требования:
• Высшее образование
• Технический английский
• Знание 1С: Предприятие (Производство, Бухгалтерия, Торговля, Склад, Кадры)
• Опыт работы от 1 года
ЗП от 900$, соц пакет, питание, оформление, известная компания.

Если у вас есть знакомые - пусть пишут!!!!!!!

Олег Андреев

пише?22 февраля 2007 в 0:15

"Основная черта - переносимость. Изначально Java разрабатывался согласно принципу WORA: Write Once - Run Anywhere"

Удивительно, но факт: на платформах мобильников этот принцип почти не соблюдается. Все компании пишут свои версии ява-машин, а производители софта оптимизируют софт под каждую платформу. А платформ - десятки.

Кто-нибудь знает, в чем корень зла?

Александр Левантовский

пише?22 февраля 2007 в 19:51

В том, что компания Sun в какой-то момент выпустила из-под контроля сертификацию мобильных Джава-машин, или не уделила этому должного внимания. Все силы были брошены на JavaSE, JavaEE.

Александр Левантовский

пише?25 февраля 2007 в 14:40

Короче, к моему вопросу: я написал свою читалку/писалку ini в кодировке UTF-8 и усё.

Олег Андреев

пише?26 февраля 2007 в 4:28

За ваше здоровье! Клади на sourceforge, что ли.

Михаил Голуб

пише?26 февраля 2007 в 15:27

Олег, на счет JME ситуация вообще сложная. Sun была первопроходцем в приложениях для мобильных устройств. И сильно просчиталась с архитектурой первых фреймворков, это MIDP 1.0. Очень скудные возможности вынуждали разработчиков использовать специфичные для вендоров библиотеки.
В MIDP 2.0 и CLDC 1.1 это вроде как чуть-чуть поправили. (З.Ы. Я не JME-шник, поэтому не пинайте, если порю чушь на счет версий)

Это первая беда, которая нарушила принцип WORA. Но есть и вторая беда, которая серьезнее и о которой тут уже написали. JVM от различных вендоров или не проходят сертификацию вообще, или проходят ее каким-то другим путем. В итоге имеем кучу багов на различных моделях телефонов, принцип WORA опять не соблюдается.

Показательно, если зайти на мой любимый forum.juga.ru и посмотреть кол-во сообщений в разделе JME в сравнении со всеми остальными разделами вместе взятыми, а так же заголовки тем, картина становится ясной и грустной.

Михаил Голуб

пише?26 февраля 2007 в 15:29

И Александр, если запостишь на sourceforge, отрепорти в JCP, может к 7 версии пофиксят или закоммить сам в репозиторий.

Хм, я вообще не знал, что с этим в Java проблема.

Михаил Голуб

пише?26 февраля 2007 в 16:33

Мда.. век живи - век учись. Уж не знаю, как в 5-рке, а 6-рка позволяет сохранять и в UTF-8, и вообще в XML-формате. Через все тот же java.util.Properties

Александр Левантовский

пише?26 февраля 2007 в 21:18

https://sourceforge.net/projects/orbita-nplayer/
Баги, естественно, есть...
XML не хочу - криво смотрится. Я пишу пока под 5 версию.

Олег Андреев

пише?28 февраля 2007 в 0:24

А че без юнит-тестов?

Александр Левантовский

пише?28 февраля 2007 в 18:38

Это что такое?

Олег Андреев

пише?28 февраля 2007 в 18:41

Это, то, что запускаешь, а оно говорит:

323 tests, 1295 assertions, 0 failures, 0 errors

Автоматические тесты софта, то есть.

Александр Левантовский

пише?28 февраля 2007 в 18:46

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

Александр Левантовский

пише?28 февраля 2007 в 18:47

Или решь о тестах отдельных функций (методов)?

Олег Андреев

пише?28 февраля 2007 в 19:27

Тестирование - это проверка аспектов работы приложения или его частей. Ты можешь тестировать как один метода, так и целую сессию работы с объектом (объектами).

Даже графическое приложение можно тестировать. Скажем, есть у тебя класс декодер аудио. Ты сразу пишешь тест: берешь тестовый файл, запускаешь декодер, проверяешь нет ли исключений, ловишь выход, сравниваешь с эталоном. Другой класс, скажем, - контроллер. Тест для него такой: берешь тестовый файл, запускаешь контроллер, с помощью своего же API "перематываешь" на 10 сек. вперед и проверяешь, что действительно перемоталось. И тому подобные вещи.

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

Умные дядьки последние 5-6 лет продвигают TDD - Test-driven development. Штука в том, что перед тем, как написать функциональность, ты пишешь тест для нее. После этого уже кодишь. До тех пор, пока тест наконец скомпилируется и будет пройден успешно. Такой подход гарантирует, что у тебя нет неоттестированного кода.

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

Читать:
http://en.wikipedia.org/wiki/Unit-testing (обязательно см. секцию See also)

Кстати, насчет тестирования GUI. Некоторые делатели сайтов уже давно придумали тестирование Javascript-а и элементов HTML в результате тестового запроса. Так что, автоматически тестировать можно почти все.

Александр Левантовский

пише?28 февраля 2007 в 20:26

Спасибо за комментарий! Буду знать. По крайней мере, в будущем. Это-то не столь серьезное приложение - так, что б не потерять навыка...

Александр Левантовский

пише?28 февраля 2007 в 22:35

Желательно, что б кто-нибудь из-под линукса попробовал.
https://sourceforge.net/projects/orbita-nplayer/
А то у меня только винда.

Александр Левантовский

пише?6 марта 2007 в 23:37

Вымерли все, чтоли?

Олег Андреев

пише?7 марта 2007 в 3:03

Уже неделю ставлю линух. 5 вариантов перепробовал, ищу идеалъ, понимаешь :) Как найду - проверю и плеер.

Александр Левантовский

пише?7 марта 2007 в 22:06

Тут главное не забыть прикомпилировать драйвер звуковухи к ядру :+/-)

Олег Андреев

пише?8 марта 2007 в 20:05

Проверил в Xubuntu, работает. Только я не понял, можно ли там микшировать треки.

Скриншот:
http://oleg.subway.net.ru/misc/NPlayer-1.png

Александр Левантовский

пише?8 марта 2007 в 23:54

Спасибо за тест! Микшировать можно что угодно, но без изменения ритма - для проведения дискотек не подходит. Программа задумывалась для применения во время разных культмассовых мероприятий (напрмер, использую для озвучки турниров по играм "Что? Где? Когда?") и для домашнего использования, когда много файлов в коллекции.

Валерий Akvel Акинцев

пише?12 марта 2007 в 10:14

На Javу перелез после perl-a. Пишу в Eclipce ну очень нравится =)

Олег Андреев

пише?13 марта 2007 в 0:19

Эклипс - говно. Бесплатный софт, который кушает целую планку 512 метров? Нет, спасибо.

Михаил Голуб

пише?13 марта 2007 в 0:55

Э.. это что в нем было открыто?
У меня метров 200 Eclipse сжирает, но проекты небольшие (пишу один).

Собственно другие Java-IDE вроде не сильно отличаются.

Я Eclipse ругаю совсем за другое. За то, что он - конструктор, а не IDE.
Callisto чуток ситуацию выправило.. но не до конца.

Олег Андреев

пише?13 марта 2007 в 21:12

1. Десяток листингов по 300-700 строк, а что же еще? :)
2. Я вообще считаю IDE = Integrated Development Environment неправильно понятым. Нынешние IDE, как правило интегрируют не все, что нужно, да в добавок еще и то, что не нужно.

Автокомплиты в редакторе должны быть в редакторе, а управление билдами (тесты, деплой, генераторы) - отдельные инструменты. Как показывает 30-летняя история юникса, ничего удобнее, чем разделять софт на мелкие утилиты и автоматизировать работу с ними из скриптов, для разработчиков придумано не было.

Редактор должен редактировать, а билды - строиться по команде build_test_commit.rb. Команду можно засунуть и в запуск по расписанию (cron или что там на винде), и в консоль, и в ярлык, и переслать по почте. Объяснять в чате какой пункт меню нужно выбрать мышью в IDE - не comme il faut.

Александр Левантовский

пише?13 марта 2007 в 21:54

Я использую IntelliJ Idea и очень доволен. До этого работал в Borland JBuilder`е.

Александр Соколов

пише?14 марта 2007 в 9:58

Идея - тормозное глюкало!
6-й нетбинз - рулит!

Алексей Cheat Злобин

пише?14 марта 2007 в 11:12

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

Олег Андреев

пише?14 марта 2007 в 15:55

Сама отладка - это бред, а не её отсутствие в ide. В те редкие моменты, когда мне нужна была отладка (для Си+ и Руби), происходило следующее:
1. Си отлаживал на редкой платформе с линухом, на которой gdb, как, впрочем и эклипсовые примочки работать не будут никогда.
2. Руби отлаживал из консоли irb. Это еще удобнее, чем из редактора: сначала расставляете breakpoint-ы, потом в консоли появляется субконсоль (уже irb), в которой вы можете _на языке руби_, _в текущем контексте_ выполнять любые команды, изучать объекты и т.п. Т.е. трогать процесс своими грязными руками.

А чтобы отлаживать не приходилось - пишите много компактных юнит-тестов. Тогда все проблемы будут локализовываться очень быстро без отладчика.

Сергей Гусев

пише?14 марта 2007 в 15:55

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

Александр Левантовский

пише?14 марта 2007 в 16:23

То, что Идея тормозит - подтверждаю. На PIV 1.4 640 MB иногда бывают притормаживаться. Но это не сильно раздражает.

Сергей Гусев

пише?14 марта 2007 в 18:04

блин ну на 640 метрах любое джава приложение объёма идеи будет притормаживать. тут уже скорее вопросы к джаве. вот помню ставили мы в универе пятую идею на какой то древний селерон. не помню сколько у него памяти было но это была жесть.

Олег Андреев

пише?14 марта 2007 в 20:23

Потомушто джава - это отстой. Вон, у плеера Саши Левантовского функциональность хорошая, а свинговый интерфейс - жуть и кошмар. Нужно писать под Какао на Obj-C ;-)

Алексей Cheat Злобин

пише?14 марта 2007 в 20:37

Олег Андреев, чтож вы в этой группе делаете тогда?
Идея заметно быстрее и билдера и эклипса но, как мне показалось, но функциональность беднее... Вообще могу насчёт неё заблуждаться ибо практически не работал, а только осматривал на пердмет возможности перехода...

Олег Андреев

пише?14 марта 2007 в 21:32

> Олег Андреев, чтож вы в этой группе делаете тогда?

Обсуждаю джаву, а что?

Сергей Гусев

пише?14 марта 2007 в 22:54

> а свинговый интерфейс - жуть и кошмар
свинг не настолько плох. за примером далеко ходить не надо - идея.

Михаил Голуб

пише?14 марта 2007 в 23:33

Все-таки я бы не стал так сильно пинать Swing.
Вспомните еще хорошие кроссплатформенные библиотеки (красивые, а не Tk), которые имеют прекрасную архитектуру и возможность вклиниться практически в любое место.

BTW: одно из преимуществ JRuby, о котором кто-то заикнулся в группе ruby on rails в google groups: возможность писать проги с гуем на Swing. Видимо не устраивает человека Tk, GTK, Qt.

Олег Андреев

пише?15 марта 2007 в 1:09

Из всех более-менее знакомых мне графических либ мне понравились только 3 (и снаружи и "изнутри"): Qt, GOGI, Cocoa.

Остальные - Tk, GTK, Swing, MFC не понравились совершенно.

PS. GOGI = Generic Opera Graphical Interface (platform-independent)

Михаил Голуб

пише?15 марта 2007 в 2:19

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

что понравилось, а что нет..

Я вот только со Swing на приличном уровне знаком. Поэтому и могу его как-то оценивать. А сравнить с чем-то еще.. не смогу.

Алексей Cheat Злобин

пише?15 марта 2007 в 21:10

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

НАХУЙ УДАЛИТЕ НАХУЙ

пише?20 марта 2007 в 22:29

13-15 апреля в питере Sun Tech Days все дуем туда!

Александр Левантовский

пише?22 марта 2007 в 20:56

Поправлю: конференция пройдет с 11 по 13 апреля,
http://ru.sun.com/techdays/agenda.html

Михаил Голуб

пише?22 марта 2007 в 22:14

Именно поэтому я это в новостях выделил (!!!) (их я один читаю?)
з.ы. поменяй себе описание.. или тебе такой нравится? )

Сергей (cy6erGn0m) Машков

пише?23 марта 2007 в 17:26

Qt не только для описание интерфейса..так говорят те кто плохо его знает. Qt позволяет писать полноценные переносимые приложения. Если правильно её использовать, то можно написать приложение, которое можно будет собрать под Win, Linux и Mac практически без изменений и при этом приложение будет нативным.


Кстати, кто на Java Tech Day идет?

Александр Левантовский

пише?23 марта 2007 в 18:53

Ага, теперь только заметил, что меня поздравляют... Спасибо!
Если честно, я сам не ожидал такого решения. Жюри обещало прислать некое подобие рецензии на проекты. Интересно будет почитать.

Алексей Cheat Злобин

пише?23 марта 2007 в 23:25

2 Сергей Машков: и без перекомпиляции?)
Да иду точно.
2 Александр Левантовский: присоединяюсь к поздравлениям... мне вот стало интересно: а чего софтинка-то делает?

Александр Левантовский

пише?24 марта 2007 в 12:23

Да собственно, ничего особенного не делает... Плеер. Декодер mp3 готовый...
Я просто пытался написать удобный, очевидный и в то же время мощный интерфейс.
https://sourceforge.net/projects/orbita-nplayer/

Сергей (cy6erGn0m) Машков

пише?27 марта 2007 в 19:01

2 Злобин Алексей: с перекомпиляцией но без изменения текста...LnF поддерживаются и многое другое...изучите прежде чем говорить... наверняка не пожалеете ;)

Сергей (cy6erGn0m) Машков

пише?27 марта 2007 в 19:13

2 Александр Левантовский:
посмотрел я плеер: замечательная штука... в целом все на редкость грамотно сделано ;)

Сергей (cy6erGn0m) Машков

пише?27 марта 2007 в 19:19

2 Александр Левантовский:
туда бы еще pitch-контроллеры...то получилась весьма сербезная программка...можно будет сводить треки...хотя, если декодер уже готовый и в нем ничего не исправить...то это обидно...

Сергей (cy6erGn0m) Машков

пише?27 марта 2007 в 19:23

2 Александр Левантовский:
Кстати, можно сделать к дереву какие-то ярлыки для быстрого перехода к типовым папкам...как в стандартном диалоге открытия файлов слева есть кнопки "Мой Комп", "Документы" и т.д. Было бы очень удобно

Александр Левантовский

пише?27 марта 2007 в 23:36

Хе-хе! Уже реализовано!!! См. меню Options-Recent Folders!

Александр Левантовский

пише?27 марта 2007 в 23:37

Моих документов, конечно, по умолчанию нет, но в линуксе их тоже нет...

Михаил Голуб

пише?28 марта 2007 в 23:37

Александр? Их же узнать можно, в смысле в винде оно выдаст:
C:\Documents and Settings\<user_name>, в Unix: /home/<user_name> (в-общем случае оно их разумеется из /etc/passwd тащит)

System.getProperty("user.home")

Александр Левантовский

пише?28 марта 2007 в 23:54

В папке System.getProperty("user.home") сохраняются настройки в поддиректории \npkayer\.
Папка "Мои документы" не совпадает с домашним каталогом пользователя и появление на экране папки, в которой лежат невендомые пользователю "application data" и прочие только приведет пользователя в ужас. Так что это не выход.

Сергей (cy6erGn0m) Машков

пише?29 марта 2007 в 18:24

именно: мои документы в Linux'е отсутствуют в принципе - домашняя папка и документы это разные вещи..

Дмитрий Куранов

пише?9 апреля 2007 в 22:31

И в чем разница??


Top
 



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
[ Time : 0.084s | 10 Queries | GZIP : Off ]