Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JAVA или .NET ? обсуждаем достоинства и недостатки 
:(
    Опции темы
Allexx
Дата 3.2.2004, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




M
mr.DUDA
Вопросы, мнения и просто свои мысли по поводу особенностей платформы .NET в сравнении с JAVA можно обсудить в этой теме. В любых других темах замечания типа "JAVA (или .NET) круче!" будут являться оффтопом, даже в том случае, если они аргументированы :).

P.S. аналогичная тема есть в разделе по JAVA.

PM MAIL   Вверх
stab
Дата 12.4.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Цитата(Lamer @ 12.4.2005, 09:43)
Отнюдь. Зачем же? Один объект может слушать неограниченное количество событий одинакового или разного типа.


А ежели требуется разную функциональность по работе с каждым объектом реализовать? Это же очень распространеный сценарий, тогда видима if (sender == button1)? А если кнопок 30 штук (toolbar)?
Добавлено @ 12:57
Цитата(Lamer @ 12.4.2005, 09:43)
Давайте уже выйдем, наконец, за пределы обработки событий. Я не знаком с .NET, мне интересно, какие еще есть различия.


Кстати, а в Java есть шаблоны классов (Generics)?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
batigoal
Дата 12.4.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(cully @ 12.4.2005, 12:55)
Кстати, а в Java есть шаблоны классов (Generics)?

Теперь есть (в пятой версии). Правда, пока еще не использовал.

Цитата(cully @ 12.4.2005, 12:55)
А ежели требуется разную функциональность по работе с каждым объектом реализовать? Это же очень распространеный сценарий

Да, тогда нужна проверка условия. Но, как правило, все же используется подход с безымянными внутренними классами:
Код

list.addListSelectionListener(new ListSelectionListener()
{
    public void valueChanged(ListSelectionEvent e)
    {
         ... // действия по обработке
    }
});



--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
arilou
Дата 12.4.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



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

1) Там где нужна кроссплатформенность (т.е. клиенты должны работать под разными ОС), Java подходит лучше
2) Там, где среда обусловлена применением Windows, .NET - более оптимальный выбор, т.к. эта технология намного "ближе" к сервисам, предоставляемым ОС (например, Active Directory или COM+).

Вот и все, на мой взгляд smile

Это сообщение отредактировал(а) arilou - 12.4.2005, 13:26


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
batigoal
Дата 12.4.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(arilou @ 12.4.2005, 13:25)
2) Там, где среда обусловлена применением Windows, .NET - более оптимальный выбор, т.к. эта технология намного "ближе" к сервисам, предоставляемым ОС (например, Active Directory или COM+).

Не мог бы ты в двух словах объяснить суть и выгоды того и другого? Термин Active Directory мне совсем не знаком... smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
arilou
Дата 12.4.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



Цитата(Lamer @ 12.4.2005, 13:31)
Не мог бы ты в двух словах объяснить суть и выгоды того и другого?

Конечно. COM+ - это развитие Distributed Transaction Coordinator из Windows NT (правда, ему уже уготована замена на Indigo в следующей версии Винды). Позволяет координировать и управлять транзакциями на уровне объектов, ведет глобальный каталог объектов (типа репозитория), поддерживает пулы, диспенсеры ресурсов, и т.д.
На примере, дает возможность откатывать не только транзакции в БД, например SQL Server, а также на уровне объектов. Похожее, по-моему, входит в состав Enterprise Java Beans.

Active Directory - централизованное хранилище разнородной информации в рамках сети предприятия. Это развитие доменов из Windows NT. Позволяет получать информацию, опубликованную там другими приложениями (например, о пользователях, о конфигурации Exchange, о SQL Server'e) и ей оперировать.

Я мог в чем-то ошибиться, т.к. вполотную с этими вещами не работал, только на уровне знакомства.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
batigoal
Дата 12.4.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
stab
Дата 12.4.2005, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



Честно говоря как-то странно смотреть на новинки JDK 5 (http://java.sun.com/j2se/1.5.0/docs/guide/language/index.html) и на разговоры на тему .NET vs Java.

Generics -- есть в .NET, сейчас в бета-тестировании.
Enhanced for Loop -- есть в .NET начиная с первой версии.
Autoboxing/Unboxing -- есть в .NET начиная с первой версии.
Typesafe Enums -- есть в .NET начиная с первой версии.
Varargs -- есть в .NET начиная с первой версии.
Static Import -- нет в .NET.
Annotations -- есть в .NET начиная с первой версии.

Из семи новинок только одна является действительно уникальной и довольно спорной. Причем, как я понял, Generics и Autoboxing/Unboxing реализованы на уровне компилятора, а не на уровне JVM, т.е. имеем что-то вроде старого доброго препроцессора. Java скорее догоняет .NET по языковым возможностям, а не задает направление движения.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
batigoal
Дата 12.4.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(cully @ 12.4.2005, 17:10)
Java скорее догоняет .NET по языковым возможностям, а не задает направление движения.

Скорее, Java стремится за Си++, который в .NET, разумеется, уже присутствует (в смысле влияния). Но ты же не будешь утверждать, что это Java родилась как ответ дотНету? smile
Эти новинки призваны лишь немного дополнить язык, а не кардинально переработать его. К сожалению, я не знаю .NET, поэтому не могу перечислить то, что отсутствует в нем, но имеется в Java.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
arilou
Дата 12.4.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



Цитата(Lamer @ 12.4.2005, 17:28)
Скорее, Java стремится за Си++,

Не-а, судя по всему, она стремится за C#, потому что именно он - флагманский язык .NET, и появление тех же дженериков (кстати, в C++ они называются "шаблонные классы, template classes", а название "generic" идет именно из C#) это доказывает.

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


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
batigoal
Дата 12.4.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



О будущем введении generics говорил еще Эккель в третьем издании, так что это было довольно давно. Впрочем, возможно это было уже после появления .NET.
Цитата(arilou @ 12.4.2005, 17:34)
она стремится за C#

Теперь уже, наверное в первую очередь за ним. Но все-таки обратная ситуация тоже имеет место. Получилось так, что разработчики Java посмотрели на С++ и взяли от него все лучшее + добавили своего. Потом разработчики дотНета посмотрели на Java, взяли все лучшее + добавили своего. Что дальше? smile
Цитата(arilou @ 12.4.2005, 17:34)
Вобщем, гонка вооружений какая-то

Мы-то от этого только выиграем. smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Ch0bits
Дата 12.4.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


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

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



Цитата(alir @ 10.4.2005, 10:25)
.NET вначале проектировался как работающий на любой os

smile smile smile // Упал со стула // smile smile smile

Цитата(alir @ 10.4.2005, 10:25)
полностью перейдут смартофоны. Вот там то .net возьмет свое.

1. J2ME уже полностью обосновался на мобильных устройствах.
2. И как это НЕТ возьмёт своё? Не вижу ни одной причины сейчас и в ближайшее время.
3. Может ты не заметил, но КПК с Win работают под Intel XScale(x86). А какие проци у смартфонов?
PM WWW   Вверх
Domestic Cat
Дата 12.4.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
Это называется инкапсуляция. Сомневаюсь, что Java-разработчики имеют исходный код всех классов с которыми работают, вроде на понимании это не сильно сказалось, правда? ;)


Инкапсуляция бывает хороша, а бывает и не хороша - особенно если онa реализованa на уровне языка.

Цитата
А где она (сущность) еще должна использоваться? Понятие "ссылки на метод" присутствует практически во всех современных языках, кроме Java, уж в C++ и Delphi точно есть.


А можешь ли тy использовaть ссылку на метод так, как в С++ например?

Цитата
Можно работать полностью как с объектом, если это требуется. Напоминает спор о свойствах, многие сишники говорят, что это тоже лишний элемент. Им не нравится то, что обращение к свойству не возможно отличить от обращения к полю. Им по душе использовать пару методов getXxx, setXxx, а в это время все языки обзавелись свойствами


Можнo кak с объектом, но возможость работy как с методом не уберешь.

Цитата
Но в тоже время, на каждый обработчик в Java требуется отдельный класс. И еще, представим такую картину: нам нужно обработать только событие MouseDown, в C# назначем обработчик и все.


Цитата
А ежели требуется разную функциональность по работе с каждым объектом реализовать? Это же очень распространеный сценарий, тогда видима if (sender == button1)? А если кнопок 30 штук (toolbar)?

Тогда я могу использовать например Command паттерн, который встроен в Java в видe Actionов.
Или анонимные классy есть. Или теm же свичем.

Цитата
есть ли подобные технологии в j2ee?

Есть.

Цитата
Java скорее догоняет .NET по языковым возможностям, а не задает направление движения.


Учти, что шарп поставили на плечи Java, когда егo создали. Многое в нем основано нa ней, вплоть дo странных совпадений, например есть Monitor.Enter() / Monitor.Exit(), тогдa как в Java нa уровне байткода есть команды monitorenter, monitorexit.
Некоторые перечисленные тобой фичи - не более чем фичи. Улучшенный for ? Ну превратится он все равно в код с эньюмератором. Автобоксинг? Простое удобство, все равно за кулисами ничего не изменилось.
Енумы и аннотации - это действительно хорошо, но разговор о них шел давно.

Цитата
Autoboxing/Unboxing реализованы на уровне компилятора, а не на уровне JVM

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




--------------------

PM   Вверх
Domestic Cat
Дата 12.4.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата
Эти новинки призваны лишь немного дополнить язык, а не кардинально переработать его. К сожалению, я не знаю .NET, поэтому не могу перечислить то, что отсутствует в нем, но имеется в Java.


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

2. В Java не нужно пользовать virtual/override/new; ИМХО это удобнее.

В целом же на уровне языка выходит 50 на 50 - по моим личным ощущениям.

3. FCL сыра. В простой программе, в которой я и не думал ничего особо крутого делать, я уже использовал винапи 2 раза + чужую библиотеку. Вот с чем я столкнулся: 1. Нет работы со звуком 2. Нельзя спрятать курсор в ричтекстбоксе 3. В меню нельзя вставлять рисунки - то есть, нужно все делать с нуля
4. В тулбар нельзя помещать свои компоненты - только особые тулбоксовские, причем выглядит это плохо.

Это конечно все будет исправлено, но на данный момент я уже привязан к винапи.

Есть ряд других моментов, например .НЕТ приложение завязывается на АДО провайдера (SqlConnection/OleDbConnection) тогда как Java позволяет переходить с одной дб на другую без проблем.

Буду дополнять smile


--------------------

PM   Вверх
arilou
Дата 12.4.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

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



Цитата(Domestic @ 12.4.2005, 18:03)
А можешь ли тy использовaть ссылку на метод так, как в С++ например?


Конечно можешь. Как именно использовать? Можно:
1) вызвать метод, на который она ссылается smile
2) передать куда-нить, для того, чтобы сделать п.1 smile
3) получить метаданные о методе, на который указывает ссылка
4) получить класс, объявляющий данный метод

Больше пока ничего не приходит в голову.

Цитата(Vadim999 @ 12.4.2005, 18:01)
// Упал со стула //

Легкий намек на флейм появился? smile Поясняю:

Технология .NET проектировалась как платформенно-независимая. Доказательством этому служит то, что присутствует JIT-компиляция, которая дает возможность скомпилировать код при запуске на конкретной платформе учитывая её особенности.
То, что MS не сделали других реализаций технологии, кроме как под Винду - всего лишь следствие их маркетинговой политики и не нам их за это судить.
За них это сделала команда Mono. Под Mono ты можешь запустить в Linux'е код, скомпилированный в IL под Виндой с помощью MS.NET и наоборот (есеесно, с некоторыми оговорками, о которых я писал в соотв. теме в форуме Java - Общие вопросы.



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Domestic Cat
Дата 12.4.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

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



Цитата

Конечно можешь. Как именно использовать? Можно:
1) вызвать метод, на который она ссылается
2) передать куда-нить, для того, чтобы сделать п.1 
3) получить метаданные о методе, на который указывает ссылка
4) получить класс, объявляющий данный метод

Больше пока ничего не приходит в голову.



Эээ, нет smile Все это привязано к делегату, и более нигде не используется. Или приводи пример.




--------------------

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

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


 




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


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

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