Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi -> Java: отличия, и как с ними разобраться 
V
    Опции темы
skyboy
Дата 18.4.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



перехожу из Delphi в Java.
Прошу людей, хоть сколько-нибудь работавших с обоими языками, сказать, что присутствует в Java, чего нет в Delphi. А то ведь буду делать свои костыли там, где есть вполне "официальные" транспортные средства smile
Навскидку(со многим не знаком, только слышал):
  • Generics
  • Коллекции
  • Garbage collection
  • Отсуствие указателейнепосредственного доступа к указателям
  • модификатор final
Что ещё? 
И, если можно, при упоминании(если просто называете - и всё) приводите ссылки на мало-мальски вменяемые пояснения. Ман, конечно, вещь хорошая, но это ж не учебник, а справочник.
зы Версия знакомой мне Delphi  - 7. Если сравнивать будете с Turbo - переживу  smile 
ззы Знаком с С++ и С-подобными языками, потому родственные синтаксические конструкции(for(;;), ?:, модификатор static) можно опустить smile
зззы Спасибо  smile 
PM MAIL   Вверх
AntonSaburov
Дата 18.4.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



В принципе ты перечислил уже все, в чем эти языки отличаются.

Самое правильное в данной ситуации почитать что-либо по синтаксису - подойдет практически любая книга - поищи на форуме.

Можешь пойти после этого в Студенческий отдел кадров чтобы иметь самое начальное представление.

А дальше - задавай вопросы - готовы будем отвечать.


PM MAIL WWW ICQ   Вверх
skyboy
Дата 18.4.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(AntonSaburov @  18.4.2007,  16:33 Найти цитируемый пост)
В принципе ты перечислил уже все, в чем эти языки отличаются.

правда? я немного разочарован  smile 
кстати, зря я static запихнул в категорию "с этим знаком".
итак, те, кто будет искать ответ на схожий вопрос. ещё одно отличие:
  • static - модификатор. Методы классов в DElphi тоже есть, но этот модификатор может применяться и к полям, что делает поля полями класса   smile
А свойства(property) в java можно реализовать, или придется "обходиться" getter/setter'ами?

Добавлено через 6 минут и 50 секунд
AntonSaburov, а "Студенческий отдел кадров"  - это вещь smile Но в данном случае мне нужна не практика(с ООП - проектированием/программированием довольно тесно работаю в DElphi - там те же классы, абстрактные объекты,интерфейсы и т.д.  - кроме полей классов), а теория - то есть описание, ЧТО собой представляют те же генерики или коллекции. С остальными отличиями(если это и правда - всё) уже свыкся и вполне сосуществую  smile 
и как я мог кодить с принудительным освобождением памяти
PM MAIL   Вверх
W0LF
Дата 18.4.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: нет
Всего: 20



Цитата(skyboy @  18.4.2007,  17:39 Найти цитируемый пост)
А свойства(property) в java можно реализовать, или придется "обходиться" getter/setter'ами?

конечно можно, ставишь спецификатор доступа public, ну или же для данного пакета protected или friendly(то есть ничего не ставишь)
Ну, а вообще некрасиво - инкапсуляция должна быть.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
AntonSaburov
Дата 18.4.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата(skyboy @  18.4.2007,  17:39 Найти цитируемый пост)
правда? я немного разочарован

Так на сегодня С++, Java, C#, Delphi Pascal - достаточно одинаковые по своим конструкциям. Основной плюс Java и .NET - не надо думать об освобождении памяти.

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

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


PM MAIL WWW ICQ   Вверх
skyboy
Дата 18.4.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(AntonSaburov @  18.4.2007,  17:28 Найти цитируемый пост)
Все эти языки досттаочно современные и вряд ли те, кто их делал не использовал опыт предшественников.

ну, javascript с его протипной моделью ОП - тоже не вчерашний день... а специфика работы и проектирования - разная ведь. 
PM MAIL   Вверх
powerOn
Дата 18.4.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Еще в Java есть анонимные и внутренние классы.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
skyboy
Дата 18.4.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(powerOn @  18.4.2007,  18:15 Найти цитируемый пост)
Еще в Java есть анонимные и внутренние классы. 

а можно об этом - но немного подробнее?
PM MAIL   Вверх
nornad
Дата 18.4.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(W0LF @  18.4.2007,  21:21 Найти цитируемый пост)
конечно можно, ставишь спецификатор доступа public

Это не будет соответствовать property в дельфи. Точного соответствия нет, но геттеры и сеттеры ведут себя наиболее приближённо к свойствам. А некоторыми вещами (EJB или Hibernate - не помню, т.к. мало работал) даже воспринимаются как свойство.
Кстати, делать публичные поля не очень хорошая идея.

Добавлено @ 19:44
Цитата(skyboy @  18.4.2007,  22:34 Найти цитируемый пост)
а можно об этом - но немного подробнее? 

Пожалуйста:
Код

public class A {
  private B[] bb;

  public A() {
    bb = new B[1] {
      new B() { // анонимный
        public void doMisc() {
           // делаем что-то другое
        }
      }
    }
  }

  class B { // внутренний
    public void doMisc() {
       // делаем что-то
    }
  }
}


Это сообщение отредактировал(а) nornad - 18.4.2007, 19:46


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
skyboy
Дата 18.4.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(nornad @  18.4.2007,  18:40 Найти цитируемый пост)
Кстати, делать публичные поля не очень хорошая идея.

хм. я ж не о полях говорю, а о свойствах... впрочем, вполне переживу без синтаксического сахара smile
-------
сорри, в коде я понял где анонимный класс, но не понял, зачем его туда захимичили... Можно на пальцах диаграмму классов изобразить?
P.S. Анонимный класс - объектный вариант замыканий?
PM MAIL   Вверх
powerOn
Дата 18.4.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Анонимный класс - это способ быстрого наследования. Ничего сверхъестественного.
Допустим есть класс A в котором определен метод meth(). Твоя задача - отнаследоваться от него и переопределить в наследнике метод meth(). Это можно сделать 2-мя способами:

1) Создать простой класс:

Код

class A 
{
    public void meth() 
    {
        System.out.println("A");
    }
}

// Создаем наследника:
class B extends A 
{
    @Override
    public void meth() 
    {
        System.out.println("B");
    }
}

// Используем его:
class С 
{
    public static void main(String [] args)  
    {
        A obj = new B();
        obj.meth(); 
    }
}


2) Переопределяем метод непосредственно во время создания экземпляра класса:

Код

class С 
{
    public static void main(String [] args)  
    {
        A obj = new A()
        {
            @Override
            public void meth() 
            {
                System.out.println("B");
            }
        };

        obj.meth(); 
    }
}


во втором случае класс несоздавался. Соответственно имени у него нет - поэтому и анонимный.

P.S.: код набирал прямо тут, так что мог ошибиться где-нибудь smile

Добавлено через 58 секунд
Анонимные классы весьма удобно использовать для реализации интерфейсов.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
nornad
Дата 19.4.2007, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Я на них 97% листенеров делаю. smile
Остальные три процента - обобщённые листенеры, которые обрабатываю схожие события от разных компонентов.
Ну и в других местах бывает применяю. Когда лень выделять в отдельный класс. Одна беда - публичные расширения класса в анониме бессмысленны. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Elfix
Дата 17.11.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Мне жутко нравились property из Delphi. Очень удобная вещь. В Java их нет (или я не нашел). Скажем при простом присваивании свойству значений возможно выполнить процедуру Set или Get, в Java нет такого. Ты явно должен Set-тить или Get-тить.

Проще кодом написать:

Код


private
 FColor: TColor;
 function GetColor: TColor;
 procedure SetColor(NewColor: TColor);
public
 property Color: TColor read GetColor write SetColor; default 0;

Писал без редактора, мог ошибиться, но смысл понятен. Т. е. в Delphi мы могли скрыть поле класса, а также скрыть методы работы с ним, но все таки простыми операциями присваивания неявно пользовались ими. Кстати, так же очень удобно событийную модель описывать. Она очень прозрачна и понятна. В Java несмотря на простоту языка все таки трудности возникают. Но я видимо еще сам к ней непривык. Теперь вот перебегаю с одной среды на другу, как мелкий грызун с тонущего корабля... Но ничего не поделаешь...

Это сообщение отредактировал(а) Elfix - 17.11.2007, 17:42
PM MAIL   Вверх
nornad
Дата 17.11.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Elfix @  17.11.2007,  20:39 Найти цитируемый пост)
Мне жутко нравились property из Delphi. Очень удобная вещь. В Java их нет (или я не нашел).

У джавы иная идеология. Вместо пропертей использую пару getter/setter. Постепенно привыкаешь и забывешь о том, насколько удобны были проперти. Потому что проперти, по большому счёту, не панацея - с ними тоже мороки хватает. В джава специально отказались от идеи пропертей, чтобы программист всегда видел, к чему он обращается - к полю или к методу.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Elfix
Дата 17.11.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Да не спорю. Ко всему можно привыкнуть. Много инструментов отобрали. Объясняют тем, что теперь у нас нет возможности плодить ошибок. Да, увы. Раньше хороший юзер был безрукий, безногий, слепой, немой и глухой человек, теперь, увы из программистов делают то же самое. Ты никогда не сделаешь ошибки, если тебе будет нечем ее делать.

Так то пофиг. Лучшая среда программирования та, для которой создано и создается много различных удобных оболочек. Похоже Java самая перспективная в этом плане среда. Ну и бонус многоплатформенность (за которую приходится платить медленностью), конечно, смысл в которой я пока плохо себе представляю ибо мне проще найти привычную виндовую систему, чем какую-либо другую.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0990 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.