![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
перехожу из Delphi в Java.
Прошу людей, хоть сколько-нибудь работавших с обоими языками, сказать, что присутствует в Java, чего нет в Delphi. А то ведь буду делать свои костыли там, где есть вполне "официальные" транспортные средства Навскидку(со многим не знаком, только слышал):
И, если можно, при упоминании(если просто называете - и всё) приводите ссылки на мало-мальски вменяемые пояснения. Ман, конечно, вещь хорошая, но это ж не учебник, а справочник. зы Версия знакомой мне Delphi - 7. Если сравнивать будете с Turbo - переживу ззы Знаком с С++ и С-подобными языками, потому родственные синтаксические конструкции(for(;;), ?:, модификатор static) можно опустить зззы Спасибо |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
В принципе ты перечислил уже все, в чем эти языки отличаются.
Самое правильное в данной ситуации почитать что-либо по синтаксису - подойдет практически любая книга - поищи на форуме. Можешь пойти после этого в Студенческий отдел кадров чтобы иметь самое начальное представление. А дальше - задавай вопросы - готовы будем отвечать. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
правда? я немного разочарован кстати, зря я static запихнул в категорию "с этим знаком". итак, те, кто будет искать ответ на схожий вопрос. ещё одно отличие:
Добавлено через 6 минут и 50 секунд AntonSaburov, а "Студенческий отдел кадров" - это вещь и как я мог кодить с принудительным освобождением памяти |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: нет Всего: 20 |
конечно можно, ставишь спецификатор доступа public, ну или же для данного пакета protected или friendly(то есть ничего не ставишь) Ну, а вообще некрасиво - инкапсуляция должна быть. -------------------- iOS developer |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Так на сегодня С++, Java, C#, Delphi Pascal - достаточно одинаковые по своим конструкциям. Основной плюс Java и .NET - не надо думать об освобождении памяти. Основная сила платформ Java и .NET в большом количестве удобных и современных технологий и пакетов, которые позволяют создавать очень мощные и сложные приложения за достаточно короткий срок. Так же они позволяют расширять, поддерживать огромные проекты. Вообщем-то и все. Если ты думал увидеть огромную разницу именно в языке - тут не получается. Все эти языки досттаочно современные и вряд ли те, кто их делал не использовал опыт предшественников. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Еще в Java есть анонимные и внутренние классы.
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Это не будет соответствовать property в дельфи. Точного соответствия нет, но геттеры и сеттеры ведут себя наиболее приближённо к свойствам. А некоторыми вещами (EJB или Hibernate - не помню, т.к. мало работал) даже воспринимаются как свойство. Кстати, делать публичные поля не очень хорошая идея. Добавлено @ 19:44 Пожалуйста:
Это сообщение отредактировал(а) nornad - 18.4.2007, 19:46 -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
хм. я ж не о полях говорю, а о свойствах... впрочем, вполне переживу без синтаксического сахара ------- сорри, в коде я понял где анонимный класс, но не понял, зачем его туда захимичили... Можно на пальцах диаграмму классов изобразить? P.S. Анонимный класс - объектный вариант замыканий? |
|||
|
||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Анонимный класс - это способ быстрого наследования. Ничего сверхъестественного.
Допустим есть класс A в котором определен метод meth(). Твоя задача - отнаследоваться от него и переопределить в наследнике метод meth(). Это можно сделать 2-мя способами: 1) Создать простой класс:
2) Переопределяем метод непосредственно во время создания экземпляра класса:
во втором случае класс несоздавался. Соответственно имени у него нет - поэтому и анонимный. P.S.: код набирал прямо тут, так что мог ошибиться где-нибудь Добавлено через 58 секунд Анонимные классы весьма удобно использовать для реализации интерфейсов. |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Я на них 97% листенеров делаю.
Остальные три процента - обобщённые листенеры, которые обрабатываю схожие события от разных компонентов. Ну и в других местах бывает применяю. Когда лень выделять в отдельный класс. Одна беда - публичные расширения класса в анониме бессмысленны. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Мне жутко нравились property из Delphi. Очень удобная вещь. В Java их нет (или я не нашел). Скажем при простом присваивании свойству значений возможно выполнить процедуру Set или Get, в Java нет такого. Ты явно должен Set-тить или Get-тить.
Проще кодом написать:
Писал без редактора, мог ошибиться, но смысл понятен. Т. е. в Delphi мы могли скрыть поле класса, а также скрыть методы работы с ним, но все таки простыми операциями присваивания неявно пользовались ими. Кстати, так же очень удобно событийную модель описывать. Она очень прозрачна и понятна. В Java несмотря на простоту языка все таки трудности возникают. Но я видимо еще сам к ней непривык. Теперь вот перебегаю с одной среды на другу, как мелкий грызун с тонущего корабля... Но ничего не поделаешь... Это сообщение отредактировал(а) Elfix - 17.11.2007, 17:42 |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
У джавы иная идеология. Вместо пропертей использую пару getter/setter. Постепенно привыкаешь и забывешь о том, насколько удобны были проперти. Потому что проперти, по большому счёту, не панацея - с ними тоже мороки хватает. В джава специально отказались от идеи пропертей, чтобы программист всегда видел, к чему он обращается - к полю или к методу. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Да не спорю. Ко всему можно привыкнуть. Много инструментов отобрали. Объясняют тем, что теперь у нас нет возможности плодить ошибок. Да, увы. Раньше хороший юзер был безрукий, безногий, слепой, немой и глухой человек, теперь, увы из программистов делают то же самое. Ты никогда не сделаешь ошибки, если тебе будет нечем ее делать.
Так то пофиг. Лучшая среда программирования та, для которой создано и создается много различных удобных оболочек. Похоже Java самая перспективная в этом плане среда. Ну и бонус многоплатформенность (за которую приходится платить медленностью), конечно, смысл в которой я пока плохо себе представляю ибо мне проще найти привычную виндовую систему, чем какую-либо другую. |
|||
|
||||
| makados |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.10.2007 Где: Киев Репутация: нет Всего: 1 |
||||
|
||||
| Vurn |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 24.5.2007 Репутация: 2 Всего: 3 |
Java значительно быстрей Delphi, наравне с C#, C++, примерно на 20% медленней С.
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
опять за свое взялись...
|
|||
|
||||
| makados |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 2.10.2007 Где: Киев Репутация: нет Всего: 1 |
||||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Это сообщение отредактировал(а) powerOn - 17.11.2007, 22:27 |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
В Java нет конструкции with. Она бывает очень удобной в некоторых случаях. Всегда можно создать экземпляр класса, но при этом не иметь ссылку на него, но тем не менее работая с ним неоднократно. Пример:
Зато потерять ссылку на такой объект, все равно что сделать ошибку в программе - ресурсы за нас никто не освободит. В Java же есть сборщик мусора. Опять же, наверно не понимаю как он работает, но я бы предпочел сам ресурсы освобождать, чем ждать когда за меня это сделает машина. Пример. Класс имеет поле типа массив. Массив содержит несколько тысяч записей. После работы с этими записями (сортировка, уничтожение дубликатов, устранение орфографических ошибок и т. д.) класс сохранит записи в файл и так и будет висеть в памяти, пока его не уничтожит мусорщик. Вопрос только в том, когда он захочет уничтожить такой огромный кусок памяти? А вдруг в тот момент, когда программа будет записывать информацию в базу данных и для юзера максимально быстрая ее запись туда является жизненно необходимой? |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
вызови gc сам и не жди. Добавлено через 34 секунды
в оооочень некоторых.а вообще от неё больше зла. |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 10 Всего: 18 |
В Java невозможно принудительно вызвать GC. Это сообщение отредактировал(а) AlexeyVorotnikov - 18.11.2007, 12:01 -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Согласен, я with'ом пользуюсь крайне редко, в основном кода собираю мусор в исходниках группирую элементы в with для красоты. Только видишь, в Delphi я могу ими пользоваться, а могу и не пользоваться. У меня есть право выбора. То же касается и свойств. В Java же права выбора у меня нет. Не могу сказать плохо это или хорошо. Я сам себе разработчик, мне плохо, а те, кто работает в команде наверно только рады, что вариантов игры с кодом теперь меньше и будет легче понимать своих коллег. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Извиняюсь, за офтоп, но вынужден напомнить прописную истину - вызов System.gc() не обязует Garbage Collector провести немедленную принудительную сборку мусора. Этот вызов всего лишь сообщает GC, что программист в этот момент хотел бы провести очистку памяти. GC же волен вообще проигнорировать сие пожелание. Когда переходишь на джаву с С++ (ну или хотя бы с дельфи), очень недостаёт возможности очищать память самостоятельно по желанию. С другой стороны, намного меньше (имхо, порядка на два) возникает ошибок с утечкой памяти, т.к. не приходится пытаться запомнить все случаи, когда объекты создавались динамически, а потом ещё и стараться отследить все ситуации, когда эти объекты перестают быть нужны. Принимая общую идеологию джавы довольно быстро привыкаешь к GC и учишься по возможности не создавать гигабайтных массивов данных. К тому же, если хорошенько подумать, можно догадаться до того, что такие объёмы в памяти требуются крайне редко. В основном, на крупных серверных системах. Но, уж извините, крупные сервера - на то и крупные, чтобы быть мощнее десктопов и уметь справляться с повышенными нагрузками. Хотя и там лучше заменить прямую работу с данными в памяти на работу с БД, файлами или ещё чем - в зависимости от нужд программы. Добавлено через 9 минут и 29 секунд
Может, тогда стоит обратить внимание на ассемблер? Вот уж где наибольшая свобода. А про медленность разработки на нём особо не рассказывайте - при наличии необходимых библиотек (алгоритмы, работа с сетью и много чего ещё) писать можно практически с той же скоростью, что и на других языках. По поводу "плохо или хорошо". Джава такая, какая есть. Потому она и джава. Хочется свойств - дельфи или билдер (кстати, в вижуале свойств не было - это борланд придумал для популяризации; сами по себе свойства удобны, но код становится непереносимым на другие компиляторы, что редко радует; хотя, микрософт тоже любит делать свои диалекты). Мораль: у каждой технологии своя ниша. И свои поклонники. И фанаты. Наиболее правильно - разобраться с технологией и научиться её использовать в подходящих местах. Да, есть джава-машина реального времени. Но лично я для работы в реальном масштабе времени выберу си, либо ассемблер. Чтобы наверняка не "проколоться". -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Elfix |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
|
||||
|
|||||
| serger |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 1 Всего: 5 |
Люди, имейте совесть!!! Вылазит чел и Delphi форума и понеслось.. Каждому своё!!! ВААЩЕ сравнение языков во многом бесмысленно. Язык определяет мышление, а в этом контексте сравнивать практически не возможно. Задачи на разных языках мб совершенно по-разному реализованы. Если ты силён в чём-то, то смысл дрейфовать туда-сюда следя за модой? Или ты спец в одном деле или "ванька-встанька" (хотя иметь общее представление всё равно не помешает). А если уж переходишь, то лучше отбросить все предыдущие навыки на время, и начать с азов, чтобы не охать и ахать, почему тут так, а там было так! Или мне не удобно, потомучто привык так! Это сообщение отредактировал(а) serger - 19.11.2007, 08:42 -------------------- упс! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |