![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Allexx |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 16.12.2003 Репутация: нет Всего: нет |
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Если подходить ответственно к данному вопросу, а не просто кричать "маст дай" не важно по поводу какой-то платформе, то необходимо выбрать критерии, по которым мы можем оценивать ту или иную платформу. 1. Если мы возьмем критерием скорость работы, то тут скорее всего выигрывает .NET 2. Если мы возьмем критерием возможность работать на разных платформах, то тут несомненно выигрывает JAVA. 3. Если мы возьмем критерием распространенность ОС, под которую все это будет работать, то здесь опять же выиграет скорее всего .NET 4. Если берем скорость разработки, то для небольших проектов .NET тоже скорее всего выигрывает. Потому как скорость разработки сложных проектов уже определяются не кто сколько кнопочек быстрее накидает, а поддерживаемыми технологиями, а в этом системы в принципе равны. 5. Если мы говорим о зрелости и устойчивости платформы, то пока лидирует J2EE 6. Если мы берем количество компонент, то здесь выигрышь пока никому не принадлежит. Обе платформы имеют очень большой набор всевозможных компонентов. 7. Если мы говорим о таком явлении, как аплет, то в .NET что-то такое пока отсутствует (Я не говорю об ActiveX компонентах, т.к. это работает только в IE и не может рассматриваться как полная альтернатива аплетам). Хотя при распространенности IE это достаточно маленький выигрышь. В принципе я склонен согласится с одним исследованием, по которому через небольшое время (2-3 года) около 40% рынка будет занимать .NET, другие 40% - JAVA, остальное будет распределено по специализированным системам (SQL на .NET или JAVA писать вы не будете - скорость все-таки нужна). Рынок имеется в виду не количество проектов, а количество денег, вложенных в них. Понятно, что IIS очень сильно распространен потому как идет вместе с ОС. Но если смотреть на дорогой и крупный корпоративный рынок, то там пока Apache недосягаем. (Я не говорю и фирмах в 15-20 человек, где администратора-то часто не бывает). Если смотреть на это как разработчик, то я уверен в том, что и те, и другие специалисты будут востребованы еще долгое время. Можно конечно прикрепится к монстру MS, но лично мне импонирует Java, хотя я стараюсь поддерживать свои знания на обеих платформах. |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Наверняка, это чистый флейм (сорри), но немного сомнительно (ИМХО!!!) будущность этого высказывания. Останется ли Java кроссплатформенной, при хороших показателях, естесственно? 1) Насколько я знаю, лицензия от Sun на использование JavaVM у Microsoft только до сентября 2004г. Потом - только Sun's JVM. 2) Все последующие версии Windows будут основываться на технологии .NET (пока еще что-нибудь не придумают..) - т.е. все программы будут исполняться через Microsoft's VM, а Win32-приложения будут считаться устаревшими (как ныне DOS-программы) и выполняться медленне .NET-программ (из "публичных" выступлений Microsoft.. может, я не так понимаю ситуацию?) и потреблять больше ресурсов. Вся дальнейшая разработка - только под .NET. Замечательно.. Но JavaVM на Windows - не более чем просто программа. Win32-приложение! => Если не изменять реализацию виртуальной машины - она просто устареет, будет сильно отставать по всем показателям.. Ее надо будет переписывать.. На чем?! На .NET? Виртуальная машина на виртуальной машине?! Тогда опять же Microsoft обойдет Java.. Хотя.. может, есть еще какой выход.. 3) Просто дополнение - последние разработки SUN реализованы под Solaris, Linux'ы, по-моему под MacOS, но не под Windows! (судя по их официальным сайтам).. Конечно, тут играет роль профиль конторы и обыденная политика фирм.. Но так, чисто как дополнение, настораживает.. Итого, мое ЛИЧНОЕ мнение - "хорошая" кроссплатформенность Java в будущем сомнительна.. З.Ы. Все это лишь ИМХО. Ничего более.. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
C'hoosen++ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 21.1.2004 Репутация: нет Всего: нет |
Мне кажется, что, хотя Java во многих местах используется, она все-таки
начинает потихоньку устаривать, а вот .NET, наоборот, сильно развивается. И через этот срок (2-3 года), если ничего нового не появиться, то .NET заваюет около 55-65% всего рынка продукции. MS сейчас мощно совер- шеннствует свою технологию и пытается внедрять ее во многих системах, поэтому, если серьезно взяться за обучение и накопления опыта по .NET, то можно стать сильно востебованным специалистом! |
|||
|
||||
__vi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 21.1.2004 Репутация: нет Всего: -1 |
Нет java не устаривает а наоборот развивается. И всё зависит от того что ты хочеш. Если ты ориентируешся тока на виду, то бери .NET на нём писать... легко. Java мощнее.
Это сообщение отредактировал(а) __vi - 12.2.2004, 11:36 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Вполне допускаю. Недавно Vit опубликовывал востребованность программистов в Чикаго. Пока Java там впереди с огромным отрывом. Достаточно хорошо представляя построение JAVA и .NET могу сказать - сегодня JAVA более продуманная платформа, более зрелая. Пока единственный недостаток JAVA - она медленная. Более чем в 3 раза медленнее чем .NET. Это объясняется и тем, что сама JVM будучи более универсальной замедляет исполнение. И построение классов тоже более универсальное, и отсюда медленное. Увы, пока никто не смог сделать более универсальное более быстрым. Хотя говорят, что Java 1.5 (Tiger) хорошо прибавила в скорости. Думаю, что за счет типизация коллекций вполне такое возможно. А теперь IMHO .NET для меня ассоциируется с баньяном (Дерево, у которого корни могут вырастать прямо из веток и просрастать в землю. Может получится огромный лес, но как бы из одного дерева). Вот точно такая же картинка - какую-либо понятную систему построения отследить крайне сложно. Понапихано всякого, все это причудливо может переплетаться. Но садовники что-то там пытаются. Гулять пока получается только с большим мачете или с хорошим проводником. JAVA - хорошо спланированный парк, в котором есть четкие указатели, постриженные газоны, дорожки. Приятно гулять и очень удобно. |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
чистый пиар Микрософт !!! и обсалютная неправда ! -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
Люди пишите на java не бойтесь вы не будет cплошного Мелкософта никогда
если мы все будем писатьна java .NET вообще умрет !!! ура да здравстует java ........... ![]() я пиарщик тоже ![]() -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
C'hoosen++ |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 21.1.2004 Репутация: нет Всего: нет |
to AntonSaburov:
Это в Чикаго, а у нас то как ? to __vi:
Это врятли! (но .NET возьму) to ElectricalStorm: Никакого пиара! Просто .NET действительно мощная платформа. Пусть пока молодая, с ошибками и недоработками, но через некоторое время она обгонит Java (это точно!).
Кто кого боится, а? Хватит играть в эти монопольные игры, пиши на чем хочем и не думай о том кто его создал! Лично я за .NET! ![]() Это сообщение отредактировал(а) C'hoosen++ - 12.2.2004, 14:28 |
||||||
|
|||||||
ElectricalStorm |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 547 Регистрация: 22.1.2004 Репутация: нет Всего: 9 |
Ok ! А я за Java -------------------- Нужно знать инструмент, которым пользуешься |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
А у нас пока никак ![]() У нас пока только базы данных для России пишут. Т.е. всем интересен Oracle, MS SQL. И средства разработки, причем типа "плюх энд плюй" - т.е. Delphi, VB. Теперь еще .NET. Можно быстро накидать всякого барахла на форму, обработать кнопочки. И готово. Если говорить за Россию, то из-за полной бесплатности .NET и Винды для нас это удобно. Но вообщем хотелось бы как-то ближе к цивилизованному рынку подвигаться. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
По поводу делегатов (.NET) vs. листенеры (JAVA), специально для Domestic Cat:
Делегат инкапсулирует в себе ссылку на объект и метод класса объекта (мультикаст-делегаты инкапсулируют несколько ссылок), за счёт этого можно в одном объекте публиковать несколько событий (именованных делегатов), чего нельзя достичь используя один "плоский" список, хранящий ссылки на листенеры. Другое достоинство делегатов vs. листенеры: насколько я понял, класс поддерживающий события в JAVA, наследуется от некоего базового класса, поправьте меня если я не прав. В .net наследоваться ни от чего не нужно: подписать можно любой класс на события любого другого класса. -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Не совсем. Для реализации листенера нужно не наследовать, а реализовать интерфейс. Это не одно и тоже. Любой класс (унаследованный от чего угодно) декларирует, что он имеет определенные методы для обработки событий определенного типа. Это сообщение отредактировал(а) Lamer George - 7.4.2005, 10:07 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Наследование или реализация интерфейса у листенера - в любом случае, это "надстройка" над собственным интерфейсом объекта, а в случае с делегатами ВСЯ логика (список подписчиков, вызов их методов) спрятана внутри делегата. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
http://forum.vingrad.ru/index.php?act=ST&f...=47926&unread=1
Тут я не совсем понял. Ты делаешь несколько делегатов, при при наступлении определенного события можешь вызвать все методы. Только это скрыто от тебя. В Java регистрируются листенеры, при наступлении события на каждом вызывается определенный метод. Вроде то же самое.
Происходит вот что: делается интерфейс, например, ValueChangeListener, с методом, например, valueChanged(). Класс, который хочет слушать такие ивенты, обязан наследовать от этого интерфейса и имплементировать этот метод. Тот, кого должны слушать, имеет обычно методы типа addValueChangeListener(ValueChangeListener v), removeValueChangeListener(ValueChangeListener v). Все листенеры хранятся в коллекции, если наступает ивент, на каждом вызывается метод valueChanged. Естественно, стандартные ГУИ и проч листенер-интерфейсы уже существыют, потому с ними так же просто, как и со стандартными .НЕТ делегатами. Для юзер-дефайнед листенеров - можно написать самому (это дольше, чем пользовать делегат), или воспользоваться одним из стандартных "общих" листенеров. Для меня отличие в том, что я понимаю листенеры полностью; а вот что же передается делегату - загадка ![]() Но : для меня разницы особой нет, что там, что тут пользую одинаково, особых сложностей нигде не вижу. -------------------- |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Делегату (как методу) передаётся вызов с заданными аргументами. Внутри себя делегат (как класс) перечисляет подписчиков и вызывает каждого из них, передавая им эти же аргументы. Кстати, а как в JAVA добавить обработчик события, если метод-обработчик является статическим ? ![]() В .net такое возможно за счёт того, что делегат (как класс) хранит в списке подписчиков не только указатель на метод, но и указатель на объект, а для статических обработчиков - только указатель на статический метод класса. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Никак, нельзя реализовывать методы интерфейса как статики ![]() Но я большой разницы не вижу - ну, можно делегатом сделать статик метод. Вопрос - зачем? -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Может быть класс-утилита, обрабатывающая события. Его методы реализуются как public static, и всем доступны всем классам из любой точки. К примеру, класс, сохраняющий сообщения в лог-файл. Можно сделать то же самое с пом. синглетона, но если по какой-либо причине это не подходит (ну например, мне нужно чтобы файл был открыт статическим конструктором класса, а не при обращении к Instance) - то всё делается статическими методами. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Можно, но возможных реализаций всегда можно много выискать. Того же можно достичь, реализовав методы как инстанс методы, и из них менять статик поля - вот поля и будут доступны всем. Правда, нужно создавать объект класса; но ведь любой делегат озбначает, что будет "за кулисами" создан целый класс.
-------------------- |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
"За кулисами" (в классе делегата) создаётся только список подписавшихся методов, и список этот размещается "публикаторе" события (делегата). Никаких требований к подписчикам не выставляется - пусть они будут хоть статическими, хоть методами объекта класса. Это я к тому, что без делегатов приходится идти окольным путём для статиков:
-------------------- ![]() |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Насчёт кроссплатформенности.
Есть в инете такая библиотека GTK+, которую портировали на C#. Вкратце, это полноценная замена System.Windows.Forms. Вместе с GTK# можно разрабатывать любые приложения для Mono, Win и любых других платформ, на которые будет переведён .NET Framework. Теперь про JAVA... ![]() Мобильники у всех есть? Игры скачивали, устанавливали? Ага, вот то-то и оно ![]() ![]() -------------------- ![]() |
|||
|
||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Я бы выделил слово БУДЕТ большими буквами ![]()
Мне кажется, это недостаток производителей телефонов - плохая реализация исполняющей системы. Это сообщение отредактировал(а) Lamer George - 7.4.2005, 11:42 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
То есть, если так рассуждать, то проблема сводится к плохой реализации JVM в данном телефоне ? Байт-код, что ли, криво выполняется ? Тогда причём тут высокоуровневые заточки, когда программеру нужно избегать использовать какие-то классы из фреймворка J2ME ? -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Так не программеру нужно избегать, а производителю мобилы бороться за то, чтобы его JVM полностью соотвтствовала стандарту. Не знаю, кто пишет исполняющую среду Java для win, linux и прочих осей - разработчики операционки или Sun'овцы - но для мобильников-то наверняка производитель делает это сам. Значит, он ответственен за точное соответствие спецификации виртуальной машины. P.S. А .NET на мобилы разве ставят? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ставят, на смартфоны. -------------------- ![]() |
|||
|
||||
NotGonnaGetUs |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 25.2.2005 Где: Москва Репутация: нет Всего: 12 |
C мобилами есть другая проблема.
Каждый производитель создаёт собственный библиотеки, что бы предоставить те или иные доп. функции. Естественно, если написать приложение используещее "фичи" конкретного телефона, на другом телефоне оно не заработает. А с байт кодом всё впорядке ![]() Пройдёт ещё не много времени и на телефонах можно будет смело ставить "обычную" j2se %) |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот вы спорите-спорите, а никто так и не сказал, что обе среды просто по разному реализуют паттерн Observer. Лично мне по душе ближе реализация .NET, потому что она более слабосвязанная - на классы-публикаторы или потребители событий не накладывается никаких ограничений, т.е не надо создавать и тем более реализовывать никаких интерфейсов.
|
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
А разве интерфейс - это ограничение? ![]() ![]() -------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Понял, повторяя сказанное, такая вещь, как анонимные методы будет в .NET 2.0 и уже есть в Mono 1.1.6. Это будет аналог того, о чем ты говоришь.
|
|||
|
||||
stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
С другой стороны, методу можно дать хорошее описательное имя, например closeButton_Click, а в Java так и останется actionPerformed. Вообще, я так понимаю из этого кода:
что коментарий /* действия */, если его заменить на код, разворачивается в блок switch... эммм, если это так, то очень уж это смахивает на древний подход обработки сообщений из Win32 API. Читабельность у такого блока нулевая. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну да, сразу вдруг и нулевая? ![]()
При небольшом количестве кода можно и без ифов. -------------------- |
||||
|
|||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
![]() И в чем крутизна такого кода? Изини, но выглядит уж как-то слишком искусственно. В чем преимущество таких изворотов? -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Клево ты сформулировал мою мысль. А я сижу и думаю, что тут такого написать ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Не понял - каких? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
alir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Скоро будет! С каждой новой серией увеличевается память мобильных телефонов - сейчас уже 80 мб (не смартфоны!). Т.е. скоро, надеюсь, .net войдет и в эту среду. Хотя может будущее за смартфонами. |
|||
|
||||
Ch0bits |
|
||||||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Приколист, .НЕТ ведь только под виндуза заточет, а в простой мобиле(не смартфоны!) даже операционной системы нет.
![]() ![]() ![]() ![]() Если постояной, то только через флешки наращивают.
Упаси Бог! Хотя этого и так не будет... ![]() Вот на виндузовых КПК он пашет, но это уже другая история... |
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Не понял, может ты вообще без ифов или свитчей код пишешь? ![]() ![]() -------------------- |
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А в Java можно так сделать:
Я думаю, идею ты понял. |
||||
|
|||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Объясни, пожалуйста, здесь ведь не только он. Я не понял ![]() Динамически получаем имя класса, и создаем его объект? Это мы магем с помощью механизма отражения. Но зачем тут тогда классы A и B?.. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
В смысле, есть ли рефлекшн?
![]()
-------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А атрибуты есть в Java?
|
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Есть мета-теги, суть та же, что и у аттрибутов, самому можно создавать. Пример:
-------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Еще один "ламерский" вопрос: возможна ли:
1) динамическая кодогенерация, как Reflection.Emit в .NET? 2) догрузка кода "по требованию" Это сообщение отредактировал(а) arilou - 8.4.2005, 19:19 |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
В Java нет ассемблей, нет метаданных, ПЕ хедеров. Но код можно генерить, есть класс com.sun.tools.javac.Main. есть и более серьезные вещи, типа BCEL.
Добавлено @ 19:23
http://java.sun.com/j2se/1.5.0/docs/api/ja...lassLoader.html -------------------- |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Domestic Cat Не кинешь ссылочку про метатеги? Я о таком не знал...
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
-------------------- |
|||
|
||||
stab |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
И так, обобщая по обработке событий в .NET и Java.
1. Java. 1.1 Событие. На уровне языка понятие события отсутсвует, его вынесли на прикладной уровень или не внесли оттуда ![]() а. Самостоятельно поддерживать внутренний список всех подписавшихся на событие объектов. b. Реализовать методы для добавления\удаления подписчиков из внутреннего списка подписавшихся. c. Опубликовать соответствующий интерфейс, который должен быть реализован каждым из объектов-подписчиков. Каких-то строгих требований к реализации, судя по всему, нет. 1.2 Обработчик события (подписчик). Объект реализующий соответствующий интерфейс обрабатываемого им события. По логике, для каждого такого объекта нужен отдельный класс для того, что бы обеспечить различное поведение объектов. 1.3 Код. Прошу знатоков Java привести полный код класса публикующего событие и пример работы с ним. 2. .NET (C#) 2.1 Событие. Понятие события введено на уровне языка. Каждый класс\объект, который заявляет о желании опубликовать событие, должен: а. Объявить соответствующий класс-делегат с требуемой сигнатурой. b. Объявить соответствующий член-событие. Этот член-событие, по сути, является объектом-списком (System.MulticastDelegate) объектов-делегатов (System.Delegate), который реализует всю функциональность по поддержанию списка, добавлению\удалению подписчиков и по оповещению о наступлении события. 2.2 Обработчик события (подписчик). Обработчиком события может быть любой метод с подходящей сигнатурой. Для добавления в список подписчиков информация о методе инкапсулируется в объекте класса System.Delegate. 2.3 Код. (C# 2.0) Класс с событием:
Пример работы:
или так:
-------------------- 6, 6, 6 - the number of the beast. |
||||||
|
|||||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Несколько замечаний. 1. За все время мне пришлось самому реализовывать такую вещь один единственный раз. И J2SE, и J2EE содержат достаточное количество листенеров на все случаи жизни. В таких случаях все сводится к
что никак не сложнее делегатов. Если говорить о самой системе листенеров (см. пример выше) Недостаток - писать больше, реально - не намного. Недостатки делегатов, имо: 1. Отсутствие соглашения об именовании делегатов и методов. Можно назвать как хочешь, причем даже осмысленное название часто трудно отличить от названия метода/класса/поля. 2. Делегаты скрывают в себе много автогенерированного кода, внутренний механизм их действия труднее понять. 3. Делегаты, помимо введения двух кейвордов, вводят лишнюю сущность в языке - ссылку на метод, которая более нигде не используется. 4. "Извне" трудно понять, что такое делегат - метод или класс. С одной стороны, это класс, объект которого можно создать через new, с другой стороны, вызывается он как метод. 5. Делегат не может иметь больше одного метода. Часто же нужно несколько методов, сгруппированных по к-л признаку. Например, Java интерфейс MouseListener содержит 5 методов, тогда как в C# требуется 5 делегатов (и, следовательно, 5 классов). 6. Java листенеры более гибки, если я реализую такой листенер сам, у меня есть выбор - как хранить листенеры, в каком порядке вызывать методы, реализовать другие, вспомогательные методы. -------------------- |
||||
|
|||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Вдогонку - если нам нужно, скажем, только два метода из этих пяти, можно воспользоваться классом-адаптером и переопределить только нужные нам методы. Для остальных будет использована пустая реализация. Мелочь, а приятно. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В общем, всё сводится к "напишу-ка я всё сам". Т.е. по сути дела, листенеры вообще не нужны, ведь можно обойтись и без них. "Лишний" автогенерируемый код, на самом деле, весь лежит в базовом классе Delegate. Если взять и дизассемблировать сборку, содержащую делегат, в его коде будет всего 3 перекрытых типизированных метода базового класса и конструктор. Возможности, предоставляемые делегатами: 1) Имея объект "делегат", можно получить ссылку на объект содержащий метод (свойство Target), reflection-описание метода (Method); 2) Можно перечислить список всех объектов и их методов, подписанных на делегат (GetInvokeList); 3) Можно вызвать метод(ы), подписанные на делегат, асинхронно!!! Примеры - в MSDN. Умеют ли это листенеры? 4) Можно вызывать метод-подписчик с использованием позднего связывания (late-bound) - метод DynamicInvoke; 5) Можно комбинировать делегаты (метод Combine). Наконец, в листенерах приходится пользоваться switch-ем, а это уже напоминает подход WinAPI. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Но ведь то же можно делать и с листенером.
Все классы в Java, поддерживающие слушателей, имеют методы get<...>Listeners()
Это свойство не делегатов, а фича языка. В Java есть асинхронный вызов методов, см http://java.sun.com/j2se/1.5.0/docs/api/ja...FutureTask.html
Вот с этим я не разбирался, можно пример, чтобы знать о чем речь?
Ну, это то же самое что и +=, и то же самое что просто добавление еще одного листенера в Java.
Сильно сказано; во-первых это не такое уж супер частое явление, во-вторых та же Простая Фабрика пользует свич, но это не значит, что паттерн является чисто процедурным и пришел из винапи ![]() -------------------- |
||||||||||||
|
|||||||||||||
mr.DUDA |
|
||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Нет, это не то же самое. Комбинирование производится из двух и более делегатов (а не методов), и результирующий делегат будет иметь список подписчиков из всех перечисленный делегатов.
Вот пример:
Добавлено @ 08:51 З.Ы. неужели, кроме делегатов, никаких принципиальных отличий .NET от JAVA нету ? -------------------- ![]() |
||||||
|
|||||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Есть конечно, но пока из делегатов выбраться не можем ![]()
Я пропустил там цитату
то есть вопрос был о DynamicInvoke, не об асинхронном вызове.. Но все равно спасибо. -------------------- |
||||||
|
|||||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Здесь всё просто. Так как все делегаты наследуются от базового класса Delegate, можно хранить и передавать объекты Delegate вместо "конкретных" (типизированных) делегатов. Чтобы вызывать методы, подписанные на такой делегат, и используется DynamicInvoke. Другими словами, можно вызвать любой делегат с любым кол-вом и типом аргументов, используя одну и ту же функцию DynamicInvoke. Термин "late binding" здесь означает позднее связывание (конкретные типы объектов неизвестны на этапе компиляции кода). -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Проще говоря, использовать рефлекшн для вызова метода? В Java рефлекшн есть, потому не проблема.
-------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Кстати, а в JAVA можно передать в метод переменное количество аргументов ? Без рефлекшн, конечно.
-------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Можно:
-------------------- |
|||
|
||||
alir |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Я смотрю это ты приколист! .NET вначале проектировался как работающий на любой os, а не только под win. Пока еще есть под freeBSD - и это только начало. И что на счет os? .NET также построен на независимых средствах VM - так что встроить .net в мобилы в будущем тоже реально!
Но ведь раньше и этого не было - примерно год назад (я имею ввиду Россию) вообще за 5 мб не переходило. А сейчас в 16 раз больше + еще карты!
Ты не бойся - как-нить разберутся. p.s. Хотя еще раз повторюсь: скорее всего скоро мобилы уйдут - они полностью перейдут смартофоны. Вот там то .net возьмет свое. |
||||||
|
|||||||
stab |
|
||||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Соглашение есть: Класс-делегат: XxxEventHandler Событие: Xxx Обработчик: ИмяОбъекта_Xxx Удобно то, что вся работа с событием сгруппирована минимум в одном члене, в Java же требуется минимум 1 приватный член плюс 2 публичных.
Это называется инкапсуляция. Сомневаюсь, что Java-разработчики имеют исходный код всех классов с которыми работают, вроде на понимании это не сильно сказалось, правда? ;)
А где она (сущность) еще должна использоваться? Понятие "ссылки на метод" присутствует практически во всех современных языках, кроме Java, уж в C++ и Delphi точно есть.
Можно работать полностью как с объектом, если это требуется. Напоминает спор о свойствах, многие сишники говорят, что это тоже лишний элемент. Им не нравится то, что обращение к свойству не возможно отличить от обращения к полю. Им по душе использовать пару методов getXxx, setXxx, а в это время все языки обзавелись свойствами ![]()
Но в тоже время, на каждый обработчик в Java требуется отдельный класс. И еще, представим такую картину: нам нужно обработать только событие MouseDown, в C# назначем обработчик и все. В Java нужно реализовать все пять методов, т.к. требуется реализовать интерфейс, получаем четыри совершенно ненужных и пустых метода.
Имеется возможность ручками обрабатывать добавление\удаление обработчиков:
и ручками вызывать обработчики в каком угодно порядке:
-------------------- 6, 6, 6 - the number of the beast. |
||||||||||||||||
|
|||||||||||||||||
batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Отнюдь. Зачем же? Один объект может слушать неограниченное количество событий одинакового или разного типа.
Я уже упоминал - для этого предназначены классы-адаптеры. Давайте уже выйдем, наконец, за пределы обработки событий. Я не знаком с .NET, мне интересно, какие еще есть различия. ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
А ежели требуется разную функциональность по работе с каждым объектом реализовать? Это же очень распространеный сценарий, тогда видима if (sender == button1)? А если кнопок 30 штук (toolbar)? Добавлено @ 12:57
Кстати, а в Java есть шаблоны классов (Generics)? -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Теперь есть (в пятой версии). Правда, пока еще не использовал.
Да, тогда нужна проверка условия. Но, как правило, все же используется подход с безымянными внутренними классами:
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот в этом форуме написано, что еще есть в Java. На данном этапе, я думаю, пожно сделать промежуточный вывод в том, что касается бизнес приложений:
1) Там где нужна кроссплатформенность (т.е. клиенты должны работать под разными ОС), Java подходит лучше 2) Там, где среда обусловлена применением Windows, .NET - более оптимальный выбор, т.к. эта технология намного "ближе" к сервисам, предоставляемым ОС (например, Active Directory или COM+). Вот и все, на мой взгляд ![]() Это сообщение отредактировал(а) arilou - 12.4.2005, 13:26 |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Не мог бы ты в двух словах объяснить суть и выгоды того и другого? Термин Active Directory мне совсем не знаком... ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Конечно. COM+ - это развитие Distributed Transaction Coordinator из Windows NT (правда, ему уже уготована замена на Indigo в следующей версии Винды). Позволяет координировать и управлять транзакциями на уровне объектов, ведет глобальный каталог объектов (типа репозитория), поддерживает пулы, диспенсеры ресурсов, и т.д. На примере, дает возможность откатывать не только транзакции в БД, например SQL Server, а также на уровне объектов. Похожее, по-моему, входит в состав Enterprise Java Beans. Active Directory - централизованное хранилище разнородной информации в рамках сети предприятия. Это развитие доменов из Windows NT. Позволяет получать информацию, опубликованную там другими приложениями (например, о пользователях, о конфигурации Exchange, о SQL Server'e) и ей оперировать. Я мог в чем-то ошибиться, т.к. вполотную с этими вещами не работал, только на уровне знакомства. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Идеи здравые и интересные. Аналоги в Java мне не знакомы, однако я уверен, что они есть - просто я еще с ним не сталкивался.
Вопрос к Доместику и остальным джавистам - есть ли подобные технологии в j2ee? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Скорее, Java стремится за Си++, который в .NET, разумеется, уже присутствует (в смысле влияния). Но ты же не будешь утверждать, что это Java родилась как ответ дотНету? ![]() Эти новинки призваны лишь немного дополнить язык, а не кардинально переработать его. К сожалению, я не знаю .NET, поэтому не могу перечислить то, что отсутствует в нем, но имеется в Java. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Не-а, судя по всему, она стремится за C#, потому что именно он - флагманский язык .NET, и появление тех же дженериков (кстати, в C++ они называются "шаблонные классы, template classes", а название "generic" идет именно из C#) это доказывает. Оказывается, что метаданные только-только появились в Java, значит тут был первым .NET? Вобщем, гонка вооружений какая-то ![]() |
|||
|
||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
О будущем введении generics говорил еще Эккель в третьем издании, так что это было довольно давно. Впрочем, возможно это было уже после появления .NET.
Теперь уже, наверное в первую очередь за ним. Но все-таки обратная ситуация тоже имеет место. Получилось так, что разработчики Java посмотрели на С++ и взяли от него все лучшее + добавили своего. Потом разработчики дотНета посмотрели на Java, взяли все лучшее + добавили своего. Что дальше? ![]()
Мы-то от этого только выиграем. ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
Ch0bits |
|
||||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
![]() ![]() ![]() ![]() ![]() ![]()
1. J2ME уже полностью обосновался на мобильных устройствах. 2. И как это НЕТ возьмёт своё? Не вижу ни одной причины сейчас и в ближайшее время. 3. Может ты не заметил, но КПК с Win работают под Intel XScale(x86). А какие проци у смартфонов? |
||||
|
|||||
Domestic Cat |
|
||||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Инкапсуляция бывает хороша, а бывает и не хороша - особенно если онa реализованa на уровне языка.
А можешь ли тy использовaть ссылку на метод так, как в С++ например?
Можнo кak с объектом, но возможость работy как с методом не уберешь.
Тогда я могу использовать например Command паттерн, который встроен в Java в видe Actionов. Или анонимные классy есть. Или теm же свичем.
Есть.
Учти, что шарп поставили на плечи Java, когда егo создали. Многое в нем основано нa ней, вплоть дo странных совпадений, например есть Monitor.Enter() / Monitor.Exit(), тогдa как в Java нa уровне байткода есть команды monitorenter, monitorexit. Некоторые перечисленные тобой фичи - не более чем фичи. Улучшенный for ? Ну превратится он все равно в код с эньюмератором. Автобоксинг? Простое удобство, все равно за кулисами ничего не изменилось. Енумы и аннотации - это действительно хорошо, но разговор о них шел давно.
Большой разницы нет - что так, что эдак. Тот же автобоксинг есть создание объекта под примитив - ну так он в любом случае создается. -------------------- |
||||||||||||||||
|
|||||||||||||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
1. На уровне языка - отсутствие необходимости декларировать throws и ловить иксепшны. С одной стороны, это облегчает жизнь, с другой - забудешь отловить иксепшн, и он вылезет в релизе. 2. В Java не нужно пользовать virtual/override/new; ИМХО это удобнее. В целом же на уровне языка выходит 50 на 50 - по моим личным ощущениям. 3. FCL сыра. В простой программе, в которой я и не думал ничего особо крутого делать, я уже использовал винапи 2 раза + чужую библиотеку. Вот с чем я столкнулся: 1. Нет работы со звуком 2. Нельзя спрятать курсор в ричтекстбоксе 3. В меню нельзя вставлять рисунки - то есть, нужно все делать с нуля 4. В тулбар нельзя помещать свои компоненты - только особые тулбоксовские, причем выглядит это плохо. Это конечно все будет исправлено, но на данный момент я уже привязан к винапи. Есть ряд других моментов, например .НЕТ приложение завязывается на АДО провайдера (SqlConnection/OleDbConnection) тогда как Java позволяет переходить с одной дб на другую без проблем. Буду дополнять ![]() -------------------- |
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Конечно можешь. Как именно использовать? Можно: 1) вызвать метод, на который она ссылается ![]() 2) передать куда-нить, для того, чтобы сделать п.1 ![]() 3) получить метаданные о методе, на который указывает ссылка 4) получить класс, объявляющий данный метод Больше пока ничего не приходит в голову.
Легкий намек на флейм появился? ![]() Технология .NET проектировалась как платформенно-независимая. Доказательством этому служит то, что присутствует JIT-компиляция, которая дает возможность скомпилировать код при запуске на конкретной платформе учитывая её особенности. То, что MS не сделали других реализаций технологии, кроме как под Винду - всего лишь следствие их маркетинговой политики и не нам их за это судить. За них это сделала команда Mono. Под Mono ты можешь запустить в Linux'е код, скомпилированный в IL под Виндой с помощью MS.NET и наоборот (есеесно, с некоторыми оговорками, о которых я писал в соотв. теме в форуме Java - Общие вопросы. |
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Эээ, нет ![]() -------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Если ты будешь использовать не конкретные классы из System.Data.OleDb или System.Data.SqlClient, а интерфейсы из System.Data (например, IDbCommand, IDataProvider, IConnection, ITransaction, etc), то тоже можешь благополучно сменять БД (конечно, при условии, что твой SQL SQL-92 compliant). |
|||
|
||||
batigoal |
|
||||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Явное объявление исключений, бросаемых методом, считаю одним из лучших свойств языка Java. Имхо.
Мда, это действительно нехорошо. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||||
|
|||||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Как это? - мне ведь эtи интерфейсы реализовать нужно, так ведь? Откуда в ниh функциональность возьмется? К тому ж Студия слишом упростила работу с АДО, так что малo кто будет будet подобнoe делать.
это как в с++, только new еще добавлен. -------------------- |
||||
|
|||||
mr.DUDA |
|
||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если кому-то что-то кажется необоснованным, то сначала надо ознакомиться с теорией (зачем это нужно и что это даёт), а уж затем говорить о "кривизне" подхода. 1) virtual - декларирует виртуальный метод; 2) override - перекрывает реализацию вирт.метода в производном классе. В С++ зачастую не было ясно, что откуда унаследовано и перекрыто, в то время как читая шарповский код - сразу понимаешь:что, как и почему; 3) new - позволяет ввести в класс невиртуальный метод с той же сигнатурой что и виртуальный в базовом классе. При этом, в классе остаётся и виртуальный метод, его тоже можно вызывать если привести тип к базовому. В С++ такой возможности не было. Если нужны примеры, для чего это может применяться - приведу.
Откуда я могу заранее узнать обо всех исключениях, которые может выкинуть метод? С другой стороны, если НУЖНО знать, какие СПЕЦИФИЧНЫЕ исключения может выкинуть метод или свойство - всегда можно задокументировать их в XML-комментариях (там есть специальный тэг для этого). -------------------- ![]() |
||||||
|
|||||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Они объявлены в описании тех методов, которые ты вызываешь в своем ![]()
Разумно. Мне нравится. Приведи, пожалуйста, пример. P.S. Если ты не указываешь override, но при этом осуществляешь переопределение, это вызовет оштбку компиляции? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
arilou |
|
||||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Накропал небольшой пример. Если чего-то еще продемнострировать, скажите, допишу.
Т.е. все провайдеры в ADO.NET реализуют один общий набор интерфейсов. В своем коде ты можешь работать с объектами типа интерфейса. Могу пояснить, как указать в рантайме, с каким провайдером работать, если нужно. |
||||||||
|
|||||||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Добавление про ссылки на методы: компилятор не даст прицепить метод к переменной-делегату, если сигнатура (кол-во и типы параметров) не совпадает
|
|||
|
||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
чтo -то разговор переходит в нехорошее русло. Я прекрасно знаю для чего это нужно. В Java все (кроме статик) методы по умолчанию виртуальны, все методы сабклассов с такой же сигнатурой по умолчанию override, добиться невозможность перегрузки можнос помощью final. Единственный аргмент, который я встречаю в пользу override/new/virtual - это versioning. Например, разработчик использует библиотеку, наследуя от класса А , и декларирует метод М . Если в следующей версии в библиотеку будет включен метод М, то в Java получится что разработчик делает override этого метода, хотя скорее всего он этого делать не хотел. Вроде бы тут и нужны new и проч. Но у такого подхода есть свой недостаток: если ты не объявляешь метод виртуальным, его нельзя перегрузить. Если разработчик не объявил метод А виртуальным, а наследующему классу нужно сдеелать оверрайд метода - этого сделать уже никак нельзя. Ситуация номер 2: Есть класс с методом virtual A. Есть наследник, с методом new virtual A. Если теперь кто-то наследует от этого класса и не заметит что он new, получим хороший баг.
Дык опять делегаты?
в твоем примере ты пользуешь System.Data.SqlClient.SqlConnection() - для МСДЕ пойдет, а что если мне нужен Oracle? -------------------- |
||||||
|
|||||||
mr.DUDA |
|
||||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Пожалуйста. Вот задача. Имеется абстрактный базовый класс Base (или интерфейс, как будет угодно). В нём есть виртуальный (или переопределяемый, не знаю как в JAVA это называется) метод Action(). Нужно унаследоваться от Base таким образом, чтобы класс Derived перекрывал метод Action() и "запечатывал" его (т.е. запрещал для дальнейшего перекрытия). З.Ы. это называется member names hiding. Добавлено @ 19:18
Согласен.
Это я к тому, что ИМХО, с virtual/new удобнее ![]() -------------------- ![]() |
||||||||
|
|||||||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Во-первых скажу так: это уж совсем "высший пилотаж", то есть я допускаю что такоe иногда нужно, но такжe допускаю и тo, что всегда можно обойтись без этого. Пример:
Результat [quote] A.java:16: Y() in B cannot override Y() in A; overridden method is final public void Y() ^ 1 error Добавлено @ 19:22
![]() ![]() ![]() -------------------- |
||||||
|
|||||||
arilou |
|
||||||||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Похоже, возникло непонимание по поводу делегатов и с чем их едят. Поясняю: Делегаты решают проблему, которая в других языках решалась с помощью указателей на функции. В отличии от последних, делегаты типизированы. Это означает, что
(Сам себя цитирую ![]() Понятие делегата содержит в себе 2 вещи. По-моему, они именуются одним и тем же словом "делегат", по крайней мере, в моей речи. Из-за этого могут возникать непонятки. Поэтому существуют: 1) Делегат-тип. Описывает сигнатуру с помощью заразервированного слова delegate:
Этот код объявляет тип TestDelegateType, который описывает ссылку на метод, не возвращающий значения (void), и требующий параметров string и int именно в таком порядке. 2) Переменную типа делегат. Описывает фактическую ссылку на метод.
Т.о. переменная delegateObject будет испольоваться для того, чтобы "подцепить" к ней метод, и делать с ним всякие непотребные вещи, например, вызывать ![]()
Этот код записывает в delegateObject ссылку (читай, type-safe pointer) на метод delegateMethod. Обратите внимание, что типы параметров данного метода соответствуют типам параметров, указанных в определении TestDelegateType. Таким образом, делегаты реализуют то, что в C++ называлось указателем на функцию, но не выносилось в отдельное понятие языка. В отличии от C++, делегаты являются type-safe языковыми конструкциями. Одним из применений делегатов являются события.
Если упростить, то это практически равнозначно определению TestDelegateEvent, как переменной типа TestDelegateType. Надеюсь, что я развеял непонятки по поводу делегатов. |
||||||||||||
|
|||||||||||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Аналогично на шарпе:
Два класса (X и Y) - вырожденный пример, на самом деле их бывает больше. Практическая польза от new может быть извлечена не только в плане возможности "запечатать" полиморфный метод, но и в случае, если нужно ввести "новый" метод, который никак не связан с методом базового класса но имеет ту же сигнатуру. -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Видимо мы немного недопоняли друг друга.
Я указывал вот на что:
То есть, что такое delegateMethod? Ссылка на метод. Но можно ли ее использовать где -нибудь еще, например, как в Питоне написать
Я понимаю- всe это отсутствует, вместo используется делегат, что по сути тo ж самое. Так чо ладно, забудем прo delegateMethod - в конце концов этo неважно. Добавлено @ 19:57
Как говорится, палка о двух концах - я уже говорил что это для использующих такой меод нетривиальная вещь, можно легкo забыть (положить объект в контейнер с типом суперкласса например) и потом искать отчего непонятно что проишодит. С другой стороны, посмотри на это с точкi зрения ООП: есть класс Машина, с методом Ехать. Ктo-тo наследовал от нее класс БМВ и сделал метод Ехать new; так что теперь БМВ не едет а летит. Получается теперь, что если смотреть на такоj объект как нa БМВ, тo он летит; нo как только оn рассматривается как Машинa, - он едет ![]() -------------------- |
||||||
|
|||||||
arilou |
|
||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
ОК. Давай вернемся к ADO.NET. Ты спрашивал, как использовать Oracle через ADO.NET. Я не знаю, есть ли managed реализация провайдера для Оракла, совместимая с .NET 1.1, но знаю, что в NET 2.0 она будет (System.Data.OracleClient). Теперь об интерфейсах ADO.NET и их использовании. Допустим, тебе надо в своем приложении реализовать работу с MS Access и SQL Server. Естественно, ты захочешь работать с базами унифицированно. Для этого применяются вышеописанные интерфейсы. В своей проге я указываю, какой провайдер мне нужен, в конфигурационном файле. У меня есть класс Configuration:
Во всей программе используется Configuration.Provider для доступа к данным:
Я думаю, что почти ничего нового в этом подходе ты не увидишь, кроме того, как сделать, чтобы не заморачиваться с разными ADO.NET провайдерами. |
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Согласен, но JDBC вообще изначально не зависит ни от какого провайдера. Все что ей нужно - драйвер, предоставляемый провайдером; если ты хочеш сменить базу данных, ты меняешь драйвер.
Точно так же Java работает с Naming and Directory Services, Authentification and Authorization Services и т п - предоставлят интерфейс, единый для всех. Поэому я могу написать Java приложение, для использования которого нужнa аутентификация, причем оно не поменяется, если я сменю Виндовс аутентификацию на Керберос. -------------------- |
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ну с этим и в дотНете все в порядке ![]()
Вероятно, тут используется более высокий уровень абстракции. Но реализация ADO.NET дает возможность использовать навороты того же SQL Server'а, а не только то подмножество, которое общее для всех. |
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Тоже верно, приложение можно оптимизировать под конкретную БД. Зато при переходе на другую БД возникнут проблемы. Для энтерпрайз приложений на разных ОС вещь не такая уж редкая. -------------------- |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Согласен. Но это уже лирика, правда? |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
По сути, да
![]() -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Да, раз уж заговорили о базах данных, хочется спросить: а есть ли среди стандартных классов JAVA (в том же JDBC) что-то хоть отдалённо похожее на DataSet, DataTable, DataRow и DataRelation ? ИМХО, самые удобные средства для detached-работы с базой данных из всех существующих. Плюс, типизированные датасеты, которые генерируются на основании XML-схемы.
-------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
JDBC построена на интерфейсе ResultSet и его сабинтерфейсах: CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet. Реально модель довольно близка к ADO.NET; АДО в этом смысле более "наворочен", хотя JDBC может делать все то же, что и АДО, за исключением релейшншипов.
Кстати, здесь сравнивать сложно, т.к.языки идут своими путями. В Java широко используется Object-Relational Mapping, фреймворки типа Hibernate, JDO. Грубо говоря, можно набор объектов сохранять в БД, причем учитываются такие вещи как наследование (- вот и релейшншипы). Enterprise Java Beans в некотором смысле ложат АДО.НЕТ одним левым мизинцем, поскольку там вообще программисту никакой БД логики писать не надо - один файл конфигурации, и то в простых случах он займет меньше, чем твой пост. Но EJB ограничены серьезными приложениями, конечно, для простых штук типа складского учета они никак не пойдут. -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
ORM - это, другими словами, persistence, так? Microsoft предложат свой вариант такого решения в новом продукте Microsoft Business Framework. Датасеты - незаменимая вещь при работе с табличными данными, будь то информация полученная из БД, или сформированная в рантайме, полученная от веб-сервиса, зачитанная из XML-файла. Кстати, рульная весч: можно взять XML-файл, прочитать его в датасет, и работать с ним как с таблицей БД !!! Поработав, сохранить обратно в файл, поток, http-стрим и т.п. А если к тому же не полениться и сформировать XML-схему, тогда можно сформировать типизированный датасет, который на порядок удобнее использовать, добавляется возможность проверки корректности структуры данных по заранее сформированным ограничениям (unique key, foreign key, constraint). Кроме всего прочего, датасеты предоставляют богатые возможности по отслеживанию изменений в данных (версионность каждой записи в любой таблице), а используя DiffGram можно пересылать в БД только сделанные изменения, а не весь датасет. -------------------- ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Взято отсюда. Кто хочет прокомментировать?
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Уже частный случай. Остальное вроде прилично, но как-то перестал верить я этим тестам. Кто платит, тот заказывает музыку... Интересно также было бы узнать, во-первых, какие версии были протестированы, а главное - на какой платформе? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Это спорное утверждение ![]() С точки зрения сложного бизнес-приложения, программисту намного удобнее оперировать понятиями предметной области, нежели записями из таблицы (например, объектами Клиент, вместо отдельных записей из таблицы Клиенты). Как известно, существует 2 основных подхода к работе с реляционными данными в приложении. 1) Table Mapping. Его суть заключается в том, что для каждой таблицы в БД, в программе используется один класс. Данный подход всегда пропагандировался MS начиная с DAO. Были resultsets, recordsets. Теперь - datasets, причем последние реализуют disconnected-модель работы с БД. 2) Domain Model. Смысл в том, что для каждого типа записи в таблицах БД создается отдельный класс, т.е. программа оперирует объектами этого типа как отдельными сущностями, т.е. понятиями своей предметной области. Реализация данного подхода называется O/R mapping. Для .NET уже существуют ORM-проекты. Даже я свой написал ![]() Оба подхода имеют преимущества и недостатки. Table Mapping хорошо вписывается там, где не много таблиц, и операции над реляционными данными сводятся к CRUD. В .NET типизированные датасеты позволяют реализовать проверку соответствия типов на этапе компиляции (что есть хорошо). К сожалению, типизированные датасеты не очень хорошо подходят на роль базовых классов для бизнес-сущностей, потому что содержать очень много автосгенерированного кода, усложняющего понимание. Domain Model хорошо подходит, когда необходимо программировать бизнес-процессы, которые оперируют несколькими сущностями. Например, проводка финансовой транзакции, как минимум, затронет такие сущности, как Счет, Клиент, Приход, Расход и т.д. В данном сценарии программисту намного проще реализовать бизнес-операцию, если он будет брать из репозитория экземпляры нужных ему сущностей, модифицировать их, и commit'ить изменения в хранилище. Хорошие ORM пакеты выполнят всё, что связано с БД, сами (откроют-закроют транзакцию, обеспечат блокировку и т.д.). К сожалению, пока .NET не содержит встроенных средств для поддержки ORM. Говорят, будет Object Spaces. Сейчас уже есть сторонние разработки - DeKlarit, OpenAccess.NET, NHibernate, и т.д. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Даже не буду спрашивать, откуда появилось ![]() Вообще, я слышал больше негативных отзывов о подобных механизмах отображения, чем позитивных. В большинстве случаев, если база спроектирована грамотно и адаптирована под твою задачу (при непосредственном участии твоих коллег или твоем лично), вполне можно обойтись JDBC и прочими стандартизирующими надстройками. Но я согласен, что в серьезных приложениях такой подход должен быть удобнее. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А какие именно приводились "негативные" отзывы? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Тяжело отслеживать производительность и находить ошибки, сложность настройки и т.д. Многи сходятся во мнении, что пока объектно-ориентрованные БД не заменят реляционные, популярность и эффективность подобных систем будет невысока.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
По-моему, это 2002 год, то есть, Java 1.5 еще не было ![]() ![]() -------------------- |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Я подчеркнул бы слова "табличные данные". Ведь речь не идёт об объектах, а именно о упорядоченном наборе данных, организованном в виде структуры определённого вида, со средствами для доступа, управления и анализа данных. Датасет - это более низкий уровень, чем объект, маппированный, на БД. Но в то же время, с датасетом легко работать и точно знаешь, что происходит в любой момент времени, в то время как при ORM-подходе приходится терпеть "накладные расходы" на содержание объектов в транзакциях, на создание и отслеживание связей между объектами, поддержку маппирования (съедающую иногда больше процессорного времени, чем выполнение запроса к БД)... Я считаю, что датасеты .NET (aka ADO) - полезная вещь, и при умелом обращении могут заменить маппированные на БД объекты. -------------------- ![]() |
||||
|
|||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Это совсем необязательно в ОРМ.
Ну это тоже необязательно, кто мешает хранить "простые" объекты.
Вещь то полезная, но скорее ОРМ потеснит обычную работу с БД, чем наоборот. С ними проще работать. -------------------- |
||||||
|
|||||||
alir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Народ, расскажите как в .net организована переносимость. Т.е., например, в java после компиляции получаем байт-код, исполняемый после JMV (все знают), но в .net получаютя *.exe под win'ду, которые естесвенно не переносятся. Так какая же должна получаться сущность, которая могла бы переносится и исполнятся на CLR? Как организовано это в FreeBSD? Что дает Mono?
Знающие люди, просветите плз по этой проблеме. |
|||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
.NET only for Windows!
PS: В mono даже Windows.Forms не реализовано, не говоря уж об остальном. Не вижу смысла в таком переносе. PS/2: ИМХО Мелкософт никогда не сделает .NET кроссплатформенным. Это сообщение отредактировал(а) Vadim999 - 25.4.2005, 21:25 |
|||
|
||||
Gazon |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 9.1.2005 Репутация: 3 Всего: 8 |
Мелкософт да, но другие компании сделают. И уже очень много сделано.
В .NET получается IL код, который исполняется под CLR, которая и написана под винду. Но проекты Mono и GNU как раз сделали CLR под *.nix.
Как раз все остальное там реализовано достаточно в полном объеме. И WinForms там реализован, и в GNU он тоже реализован, правда пока не очень хорошо, но это только альфа версии, поэтому есть основания полагать, что все будет улучшено. http://www.gnu.org/projects/dotgnu/screenshots.html http://www.mono-project.com/WinForms --------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться. |
||||||
|
|||||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Gazon
Ух! Мать его за ногу... так он ~40mb уже весит! Нет. Качать не буду. Он будет что-то значить если его в какой-нибудь дистрибутив включат, а я пока подожду... Это сообщение отредактировал(а) Vadim999 - 25.4.2005, 22:31 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Не будет нормального NET под другие платформы. Никогда. Майкрософт в этом совсем не заинтересована. А бежать за MS пытаясь реализовать все прибамбасы не получиться. Mono уже какой год пишут - а даже графики нет. А без графики кому это надо. Берем ту же JAVA и спокойно работаем - там гораздо более надежная система.
|
|||
|
||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Во-во! Фигня это всё! Мало ли что у них за скриншоты на сайте показаны.
.NET only for Windows! |
|||
|
||||
Kurt |
|
|||
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Vadim999
Твои посты в данном топике, да и еще в некторых в разделе не несут никакой смысловой нагрузки. Делаю тебе официальное устное замечание. Не стоит кричать "Фу! Фигня! Microsoft сакс" и т.п. Постарайся лучше более глубоко изучить .NET-технологию или просто не пиши на ней вовсе! ![]()
Спорно. Очень спорно. Все-таки, mono существует. Какой-никакой, но это попытка переноса .NET под Linux, и сейчас рановато говорить об успешности или провале данного проекта. Тем более, насколько я знаю, mono поддерживает ASP.NET . Следовательно, serverside-приложения уже можно пробовать. А учитывая, что Linux в основном используется как СЕРВЕРНАЯ платформа - это очень и очень неплохое достижение. А там видно будет. Можь, Microsoft втихаря пишет VM под *.nix. -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
alir |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Почему же надежная? Уж этот вопрос в сравнении java c .net здесь не уместен.
Ну не знаю ms или не ms, но уже такой с 2000 года существует - только сегодня на занятиях в универе по ТП запускал из win'ды mandrake через VM - все нормально пашет, как и в всем известном обратном варианте (только сорри - забыл название это vm, кому интересно - могу позже сообщить). ![]() |
||||
|
|||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Курт, дело не в моно как таковом, а в том, что компания, разрабатывающая один (скажем так, не маленький) фреймворк, должна обеспечить совместимость. Но когда она этого не делает, а другие пытаются угнаться за ней, имея гораздо меньше средств и сил, это уже не кроссплатформенность. То есть, если я сейчас начну писать в моно, я не уверен когда будут реализованы какие-то фичи, будут ли они реализованы, и т п.
Не пишет. Знаешь, откуда у МС доходы? От винды. Если я беру лаптоп или ПС - вот я и заплатил 200 - 400 баксов МС. Она продается миллионами экземпляров. Что еще - конечно оффис и прочая дребедень. Ее берут меньше, но берут. В МС все рассчитано под винду и для нее. И .НЕТ был создан чтобы привлечь девелоперов к винде, чтобы девелоперы давали больше софта и тем самым стимулириовали винду. Сам .НЕТ бесплатный, все его преимущество - в студии, более супер отличий от Java нет. Ну стоит студия скажем $900. Девелоперов в мире гораздо меньше пользовател;ей винды, потому непосредственная прибыль от .НЕТ / студии мизерна по сравнению с доходом от форточек. Зато они стимулируют винду. Теперь представь, что МС создала .НЕТ для Линуха/Мака/Соляриса. Она тратит деньги на туеву хучу разработчиков, и все для того, чтобы другие разработчики пересели на линуха/маки/солярисы и стали писать софт и тем самым уменьшать доходы МС, потому что если будет много хорошего софта под Линух - какой смысл покупать Виндовс? Получится, что МС сама себе выкопает если не могилу, то хотя бы ямку. Кроме того, подумай сам - Сан сделал Java за сколько лет, причем для нескольких ос сразу. МС, основываясь на Java, имея гораздо большие ресурсы, за 5 лет ничего кроме .НЕТ для виндовс не делает. При этом все активно пользуют виндозные неймспейсы и винапи. Так что не будет .НЕТ(с)Микрософт для линуха, не потому что МС этого не может сделать, а потому что это ей невыгодно... Добавлено @ 00:41
Более надежна, т.к. более проверена. -------------------- |
||||||
|
|||||||
alir |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ну насчет проверенности - это лишь из твоих личных исследований.
Конечно невыгодно, это все понимают. Но, я слышал про какую-ту реализацую под FreeBSD (не mono). Кто-нить знает?
MS сделала .net - и это уже много. Причем тут win'да? И зачем, когда есть xp и делатеся longhorn. А вот я не вижу прогресса со стороны linux - в последнее время лишь bluetooth и поддержка беспроводных сетей, что в винде уже есть давно. Кстати, есть еща такая штука, как Media Center. Это сообщение отредактировал(а) alir - 27.4.2005, 10:38 |
||||||
|
|||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
С какого года на рынке Java и какой процент рынка занимает она сейчас? Не сочтите за холивор, просто это очевидная вещь. -------------------- |
|||
|
||||
alir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ну с 95 года и что? Еще бы! Ведь как-никак 10 лет прошло. ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну так то, что она в два раза старше .НЕТ и сейчас она в пятой версии. Соответственно она в два раза дольше используется. -------------------- |
|||
|
||||
alir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ну так в этом то и дело: все говорят в java есть то се - да потому что 10 лет срок развития продукта приличный. А .net только вышла из начального уровня развития. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Интересно то, что никто так и не ответил на первоначальный вопрос, поэтому я возьму на себя такую смелость ![]() Фишка .NET в общем, и Моно в данном случае, заключается как раз в том, что EXE-файлы, скомпилированные под Microsoft .NET framework под Виндой, запускаются в Linux при помощи Моно без перекомпиляции. Я не слишком силен в линуксовой терминологии, но реализуется это с помощью: 1) Запуска EXE приложения из командной строки с помощью mono <path to exe> 2) Включением загрузчика PE-файлов в ядро Линукса. Вроде как можно либо перекомпилить ядро с поддержкой PE-загрузчика, либо включить его как модуль. Таким образом, переносимость реализуется, так как и Mono и MS.NET C# компиляторы производят IL-код, а компилируется в машинный он в момент запуска. Если же вы используете утилиту ngen для создания предкомпилированного image'a, то уже, естественно, в других ОСях он не пойдет. Вот. |
|||
|
||||
redrick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
alir
http://www.microsoft.com/downloads/details...&displaylang=en - бай МС, заметьте. Ну и что что писали его в HP по заказу МС =) -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
А библиотеки тоже все реализованы ? Фишка как раз не в том, чтобы сделать виртуальную машину - это как раз не так уж и сложно имея спецификацию. Парси байт-код, выбирай команды и аргументы и делай под них нативный код. Т.к. команд не так уж и много (базовых) то вообщем-то это не проблема. А вот библиотеки все портировать - это вам не фунт изюма. Тот же Delphi (да даже VC) имел ИСХОДНИКИ. А где вы видели исходники для .NET ? Значит все на собственном энтузазизме. А значит будет всегда отставание. А значит при выборе платформы всегда будет отдаваться предпочтение NET под Винду, как более полной и тестированной системе. Да, несомненно можно будет Mono использовать, но это будет что-то вроде J2SE и J2ME - вообщем-то одинаково JAVA но реализовано не все во втором случае. И я не удивлюсь, если тот же MS как-то спонсирует Mono - только для того, чтобы все даже под Юниксом перешли на .NET а потом, когда аппетит вырастет появилось желание перейти на Винду. Вот вам и результат. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
не все, но благополучно редиректятся вызова на System.* в Mono.* |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
А ты рефлектора чтоли не видел(?) |
|||
|
||||
redrick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
Run-time error
ну рефлектор это мягко говоря не исходники... а вот проигнорированный (или я млость туплю ??? ) ротор - самый что ни на есть исходник, правда не самого MS Framework конечно - но всё по спецификации -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
alir |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Там только исходники библиотеки. Ксати, если MS делали .net только под винду (а так и есть), то смысл было разрабатывать виртуальную машину и лишь уменьшать производительность, а не на прямую. По-моему этим они добились лишь двух вещей: 1) многоязычность (но сами знаете, что кроме C# все остально лишь реклама) 2) написание программ с защитным кодом (но это опытным прграммистам вообще не нужно). И все... Зачем тогда все эти трудности? IL, JIT и т.д. - насоздавали всякого, нафиг... |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Модератор: последние 2 страницы были перемещены из темы "Как организована переносимость в .net" сюда, т.к. все ответы свелись к сравнению JAVA vs .NET. Ещё раз обращаю внимание всех участников на первое сообщение данной темы:
"В любых других темах замечания типа "JAVA (или .NET) круче!" будут являться оффтопом, даже в том случае, если они аргументированы и приведены доказательства этой "крутости"" -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Господа, Domestic Cat в параллельном топике в разделе Java дал линки на пару статей по поводу Java и .NET. Прошу помочь разобраться с некоторыми моментами.
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=412669 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Вот, недавно начата работа над портом движка OGRE под .NET: вот одна ветка форума и вот другая ветка.
Это всё работает, и показывает мощь .NET в плане переноса существующих C++'нутых исходников под платформонезависимую оболочку, позволяющую программить как под C++, так и под C#, VB, и кучу других языков, с минимальными затратами по производительности и времени разработки. ![]() -------------------- ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
а почему или J# - не выход? (ногами не бить, спросил, чтобы узнать побольше про J#) |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Чессно скажу, у нас в Минске я не встречал НИ разу, чтобы кому-то был нужен специалист по J#, а на .NETчиков спрос большой. Или C#, или VB.NET. Так что делайте свой выбор ![]() ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 1 Всего: 43 |
arilou
а разве J# - не .NET? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
А разве он реально используется? ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Используется, если есть либа, целиком написанная на Java, и нужен порт на .NET. -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Я пока не сталкивался. Правда, я не кручусь среди дотНетчиков.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
NUnit был изначально портирован с JUnit, и только в последних версиях - полностью переписан на C#. Другой пример: в одном из наших .NET-проектов используется библиотека синтаксического анализатора JFlex, причём ни одной строчки кода не переделано - все Java-исходники перенесены в проект J#.
Если когда-нибудь столкнёшься, другого способа решить проблему, кроме как с пом. J#, ты вряд ли найдёшь. -------------------- ![]() |
|||
|
||||
Madferit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 11.7.2005 Где: Запорожье Репутация: 1 Всего: 1 |
Предложили, в качестве темы дипломной работы, тему "Сравнительная характеристика и реализация технологий разработки корпоративных WEB-приложений J2EE и Microsoft.NET "
J2EE я знаю довольно поверхностно, с .NET не знаком вовсе. Пока есть возможность спрыгнуть с темы и переиграть, хочу поинтересоваться: Насколько принципиальны различия этих 2-х технологий, чтобы написать нормальный сравнительный анализ? Насколько реально подобрать практические примеры, чтобы эти различия были видны (а не только на пальцах)? Заранее спасибо. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Запросто можно написать сравнительный анализ. Причем выводы можно сделать как в пользу j2ee, так и .net.
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Различия есть, они существенны... но вопрос представляется мне весьма сложным. Он требует глубоко погружения и знаний, опыта использования в промышленных масштабах и т.д. Я бы не взялся.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Наведи справки, какая из технологий более приветствуется на основной кафедре вашего факультета, и работай в этом направлении
![]() ![]() [edit]
Кстати, различия в любом случае можно показать на реальных примерах. Дело в том, что "в какую сторону" будут направлены дифирамбы - зависит только от тебя. [/edit] -------------------- ![]() |
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
Суть не в том, на каком языке программирования пишешь. Суть в том, чтобы правильно думать.
Если правильно мыслишь, то хоть с помощью VB6 можно написать довольно таки хорошую программу. Вопрос только в том, что с использованием платформ Java или NET это будет быстрее и удобнее. Java поддерживает многоплатформенность, а платформа NET - многоязыковость. Это их основное различие на сегодняшний момент. ИМХО именно благодаря этому факту, с точки зрения корпоративного бизнесса гораздо привлекательней выглядит платформа NET. А если снисходить до самомго языка, то сразу видно, что C# и Java очень похожи (что не удивительно ![]() Уже давно, на передний план вышло знание не столкьо самого языка, сколько знание самих библиотек платформы. -------------------- |
|||
|
||||
onsh76 |
|
|||
Unregistered |
Ага, точно... ![]() Спросите любого кто лабал на VB6, а затем был вынужден перейти на VB.NET, про схожести в двух версиях. Народ смотрел на "этот, усовершенствованный" VB как баран на новые ворота и нихрена ни чего не догонял. В конечном итоге, все .NET-овские языки стали кастрированными в силу того, чтобы соблюдать общий интерфейс - быть MSIL-compatible. Т.е. больших шагов влево и вправо сделать не получится, смотри вроде как старший брат С# делает и старайся подстроиться под него. Нe проще и надежнее иметь дело с C#? |
|||
|
||||
alir |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Ну очень спорное мнение! ![]() Например, в C++.NET можно писать на обычном C++, VB стал просто объектно ориентрованным и еще пару фитч докрутили.
Бред, ничего там сложного. |
||||
|
|||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
отчасти. я тоже так делал. и мне очень помогла книга Дэна Эпплмана "Переход на VB .NET: стратегии, концепции, код". Гениальный автор... |
|||
|
||||
02077461 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Почему никто не оперирует цифрами и фактами?
При использовании аргументов можно было бы обойтись двумя - тремя страницами. Ну хоть кто-нибудь проводил сравнительный тест, или всем хватает собственных убеждений? И еще: почему все фирмы работающие на .NETe -- американские, в то время как например в Германии ценят программистов на Java? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
На предмет чего? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Да много тестов уже проводили, результаты сильно зависят от решаемой задачи.
-------------------- ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
И от того, кто их проводит -- явец или дотнетовец ![]() |
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
http://www.dotsite.ru/Publications/Publication51.aspx
зеркало: http://schools.keldysh.ru/sch444/MUSEUM/LANR/evol.htm -------------------- |
|||
|
||||
kondr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 24.11.2005 Репутация: нет Всего: 1 |
Мне кажется серьезным преимуществом .NET является многоязыковость, т.е. пиши сборки на любом языке поддерживающем .NET собирай все это в одно приложение и все будет работать. Для больших приложений это важно. К примеру я как начал учить С# был приятно удивлен такой возможностью как межьязыковое наследование - класс написан на VB.NET а производный класс можно написать на чем хочешь (только ссылку добавь на сборку с базовым классом)
|
|||
|
||||
02077461 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Назови реальный пример использования этого удобства. Кстати, наследоваться ты будеш от какого-то abstract language, которому даже имя приличного не дали, а не от VB класса.
|
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
В одном проекте люди могут работать на разных языках. Также благодаря многоязыковости существует J#, а значит конвертация исходников с Java довольно проста.
Не понял. Все отлично работает, о чем ты? |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
kondr
Правильно говоришь. Я работал в проекте, где VB.NET и C# были совмещены примерно в отношении 60 на 40. |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Я сейчас работаю и кроме неудобств и траты времени на миграцию с ВБ на шарп ничего от этого не видел.
-------------------- |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Одна сборка может быть написана на разных языках и миграции не нужно.
P.S. Помнится, кто-то говорил, что непонятно, когда юзать св-ва, а когда методы. Вот, что пишет MS:
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Domestic Cat, если бы вы заколбасили GUI-приложение на дотнете с нуля, это как говорится была бы совсем другая тема
![]() -------------------- ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ну причем тут миграция? Речь идет о взаимодействии в рамках одного продукта. И не надо говорить "зачем? кому это надо? одни неудобства....". Есть люди, которым это надо и кто этим отлично пользуется. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Кот говорил про миграцию со старого бейсика на шарп, ИМХО... -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну вообще-то речь шла о миграции с VB.NET на шарп... Заказчик так захотел.
-------------------- |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
||||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Собственно перегонкой кода занимался не я, но в целом были огромные траблы в коде юзающем ком. Добавились баги из-за перегонки. Да и изначально вбшный код был плохим, так что проще было бы его с нуля написать...
-------------------- |
|||
|
||||
VectorMan |
|
|||
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: нет Всего: 4 |
преимущество Java в том что он поддерживаестся большим количеством платформ, .NET пока ещё стабильно живёт только на продуктах майкрософт, субъективно GUI-приложения написанные под .NET работают быстрее, чем написанные на Java (я имею ввиду только скорость реакции пользовательского интерфейса), но я думаю эта скорость достигнута за счёт оптимизации архитектуры платформы .NET под интерфейсы WinAPI, а значит на других операционных системах, возможно всё не будет так безоблачно
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Дело в самом подходе: Java - интерпретируемый язык, а .NET (C#, VB.NET) - компилируемый. Поэтому по определению дотнетовский код (будь то оконное приложение, или консольное) будет работать быстрее при хорошо оптимизирующем код компиляторе. То есть, и под линукс и под Mac можно сделать оконное приложение быстрее чем аналог на Java, используя к примеру GTK# вместо WinForms. -------------------- ![]() |
|||
|
||||
VectorMan |
|
||||
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: нет Всего: 4 |
разве под яву нет JIT-компиляторов?
согласен что можно, только это обёртка для GTK, также как WinForms обёртка для WinAPI Это сообщение отредактировал(а) VectorMan - 9.4.2006, 11:30 |
||||
|
|||||
Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 9 Всего: 62 |
Ну нет. WinForms - это полноценная библиотека, а WinAPI это основа всему что под Windows. JVM под Win тоже через WinAPI работает. И вообще, если так рассуждать, то всё что ни возьми будет под что-то обёрткой. ![]() Это сообщение отредактировал(а) Ch0bits - 9.4.2006, 11:43 |
|||
|
||||
VectorMan |
|
|||
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: нет Всего: 4 |
я не совсем точно выразился. WinForms заточен под платформу Windows, а хотелось бы иметь библиотеку которая бы обеспечивала, примерно одинаковую скорость работы под виндой и никсами, и одинаковый внешний вид приложения, но наверное это мечта идиота :-) |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Я так и не понял, чем плоха GTK#? Для Win, конечно же, она заточена под WinAPI, а для остальных - под соответствующие тулкиты. Что непонятно? |
|||
|
||||
VectorMan |
|
|||
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: нет Всего: 4 |
не знаю, я с не работал с этой библиотекой, наверное это то что мне нужно. а в чем она лучше/хуже java/swing ? |
|||
|
||||
Exception |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Я тоже с ней не работал, так что объективно судить не берусь. А зачем тебе кроссплатформенность? Добавлено @ 12:36
Эээ... Вообще-то, VB .NET и C# используют один и тот же COM Interop ![]() |
||||
|
|||||
VectorMan |
|
|||
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: нет Всего: 4 |
пока сильной необходимости нет, потому что я только изучаю платформу .NET, но есть кое-какие задумки насчет некоммерческого проекта, где бы кросплатформенность не помешала, быть может к тому моменту WinForms будет нормально реализован под никс-системы и тогда мне не о чем беспокоиться ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Есть. Собственно, он встроен в исполняющую среду. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
FatherFrost |
|
|||
![]() Почетный Мороз ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 27.4.2005 Где: Крайний север Репутация: нет Всего: 6 |
Lamer George, а как в JAVA реализована работа с принтером? А то я столкнулся, что в C# оно не особо прямо сделано
![]() -------------------- Задаю много глупых вопросов.... |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
danilsl |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Почитал что такое .NET, возник вопрос, может лучше сразу Java. С другой стороны если JVM будет выполнятся в среде .NET, а на сколько я понял в новых версиях винды так и будет, то получается Java приложения будут интерпретироваться на интерпретируемой JVM. Это насколько же станет тормозить Java?
|
|||
|
||||
02077461 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
А кто мешает оставить прежнюю ЖВМ, не уповая на милость корыстолюбов?..
|
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Очень содержательный вопрос. А главное - на него можно найти два ответа. Это внушает опасения... |
|||
|
||||
danilsl |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Да вообщето я не для смеху писал, просто пытаюсь определиться что учить, советуюсь с людьми, которые это уже прошли. Тем более я не нашёл в данном форуме вразумительного описания плюсов и минусов каждой технологии, только разбор полётов конкретных случаев. Ещё вот гдето вычитал, что J# нормально компилит старые исходники Java, ток не жаву а в .NET. А это тоже внушает опасения. Мелкософту Sun давно глаза мозолила, вроде как даже судились. А эта .NET платформа, по-моему таки направлена на убийство оставшихся конкурентов. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
||||
|
||||
Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Да при чем тут опасения? Sun со своей Java занимает 40% рынка, Microsoft - тоже 40%. Соответственно, переведя все на .NET, особенно Java, они в будущем отхватят несколько % у Sun. -------------------- Разочарованный в .NET |
|||
|
||||
BlodTor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
В .Net есть аналог Java Web Start? Что нужно для работы со стороны клиента и сервера?
Очень хочется пощупать. Java Web Start, позволяет расположить на http сервере “настольное” приложение. При переходе по определенной ссылке в браузере (например: http://xxx.xxx.ru/MyApp.jnlp), на стороне клиента запускается приложение Java Web Start Launcher, которому передается MyApp.jnlp. Пример jnlp файла:
После этого Java Web Start Launcher проверяет наличие 1.jar, 2.jar, Img.jar на машине клиента. Если их нет, то эти файлы выкачиваются, если есть, то проверяются версии этих файлов на клиенте, и то что отличается, закачивается. После чего приложение запускается с определенными правами (если jar файлы не подписаны, то доступа к ресурсам машины нет вообще, если подписаны, то вы можете разрешить приложению использовать ресурсы вашей машины). В Windows можно сделать ярлык на Java Web Start приложение. Приложение может работать и offlain после загрузки, т.е. запустили один раз, потом закрыли приложение, отсоединились от сети и опять запустили уже в режиме offline, если это разрешил разработчик. Java Web Start, входит в JRE. Если стоит IE или Mozilla то все заработает само, если что-то другое, то просто надо указать браузеру, кем открыть jnlp файл (пребывал в linux со всеми браузерами что там стояли - работало). На стороне http сервера надо тока указать что .jnlp это application/x-java-jnlp-file в Mime types, ну и положить Index.html ,MyApp.jnlp,1.jar, 2.jar, Img.jar туда, где они должны лежать. |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Не понял, что это, но для работы ASP .NET нужно пускануть ASP .NET Development Server и пускать странички.
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Тут немного не то. Речь идет об автоматической закачке и запуске десктопных приложений. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Насколько я знаю -- нет. Но я не вижу никаких сложностей в реализации. Видимо это просто не особо востребовано. -------------------- Да. Именно так. |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Угу. Можно ведь просто ехе-шник скачать ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
BlodTor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
Мне чем нравится эта технология. Вот есть куча клиентов, которые используют мою программу на предприятии. И их 1000 человек допустим. Вот они скачали программу и работают с ней, а я взял и переписал код. И теперь мне всем надо об этом сообщить. А тут они запустили программу как обычно через ярлык, она сама посмотрела, что надо обновить, закачала эти части и все работает. Использование сторонних пакетов, не входящих в состав JRE. Если я использую POI, например, то его клиенту надо выкачать вместе с моей программой, добавить к переменной окружения указав, где этот пакет лежит или положить туда, где должны лежать сторонние пакеты. А так все само закачалось и расположилось, так как надо. (При этом, когда я в следующий раз перепишу код приложения, то POI выкачиваться не будет). Если мне вдруг захотелось использовать еще один сторонний пакет (в том числе мной же написанный), то просто в jnlp файле прописал его и все, опять же все само закачается и заработает. Есть клиенты, которые сидят на модеме, например. И им все время качать полностью программу не в кайф, темболее, если там поменялось что-то только в одном пакете и только его надо качать, мне же влом объяснять что качать, куда качать, а так опять же Web Start Launcher все сделает за меня. Самое главное! Не забываем, что “тети Дуси” вообще не хотят знать, что и куда и когда им качать. А тут ярлык им повесил, и радуешься жизни. ASP, JSP и т.д. тут вообще ни причем, нужен любой http сервер (можно и тот что о Java не знает вообще ни чего, главное mime type указать чтоб можно было) и все. Java Web Start - очень удобно использовать (по крайней мере мне), вот я и хочу тоже делать c использованием .net. Поэтому и спрашиваю! Это сообщение отредактировал(а) BlodTor - 3.5.2006, 08:57 |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Я наоборот не люблю, когда программы без моего ведома что-то качают
![]() Хотя автообновление присутствует во многих программах независимо от платформы. А вообще что-то подобное у Microsoft всё-таки есть: Updater Application Block
Это сообщение отредактировал(а) Дрон - 3.5.2006, 09:30 -------------------- Да. Именно так. |
|||
|
||||
Calve |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 12.7.2005 Репутация: нет Всего: нет |
Еще можно почитать в MSDN про ClickOnce Deployment, это как раз то что нужно.
|
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
ClickOnce жжот.
|
|||
|
||||
BlodTor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 27.4.2006 Репутация: нет Всего: нет |
ClickOnce очень похожа на Java Web Start, судя по описанию.
Теперь пощупать ее надо. Спасибо. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А вот и я
![]() .NET код не интерпретируется!!! Сделайте поиск оп форуму, уже не раз писали об этом. Есть. Работает через IE и называется IEExec. А в версии 2.0 это все называется ClickOnce. |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: нет Всего: 127 |
Как и было заявлено, прошло 2 года с того момента, как тема ушла в небытиё. Мне кажется, можно подводить некоторые предварительные итоги - оправдались ожидания или нет? AntonSaburov, как с вакансиями на сегодня?
Я Java`ист, но всё же попытаюсь быть беспристрастным. IBM и BEA уверенно держат оборону и ещё и умудряются между собой активно конкурировать. Доконкурировались до того, что выдавили с рынка HP, да и Oracle здесь явно постольку-поскольку. Сама Sun не столь успешна, ей тяжело поддерживать этот затратный проект, но это, естественно, не будет означать смерть Java и J2EE - переодически проскакивает слух о том, что проект выкупит IBM как только Sun решит от него отказаться - так что тут уж скорее вопрос, что делать BEA в этой ситуации... Java развивается очень бурно - буквально каждый день появляется что-то новое - экзотические фреймворки, архитектурные приёмы, тьма тьмущая библиотек, всё это обновляется, расширяется, объединяется, разъединяется, интегрируется друг с другом и со средствами разработки - уже голова устаёт изучать. Однако это даёт простор для обновлений - с Java уж как минимум не соскучишься, change is fun! ![]() Именно нынешнюю статистику вакансий по Москве я не смотрел, но за эти два года 2 раза поменял работу и оба раза моя зарплата последовательно удваивалась и вот уже сейчас как минимум по разу в месяц звонят с предложениями перейти на новую, и тоже с ростом зарплаты примерно вдвое по сравнению с моей текущей - и я знаю, что это - не предел. В крупных городах ощущается голод на хороших Java-истов, за них идёт яростная конкуренция - крупные компании-разработчики уже заключают специальные договора, по которым обязуются не переманивать программистов друг у друга, компании по-мельче, кто не может заключить такой договор, действуют иначе - обещают не принимать уволившегося сотрудника назад (в одной из таких компаний у меня работает знакомый - сам рассказывал) - всё ради того, что бы ограничить специалистам простор для частых перебегов. Насчёт скорости, Java 5 вполне себя оправала, насколько я знаю, по последним тестам она с .NET - довольно-таки вровень. Да и обычно корпоративные заказчики могут позволить себе купить такое железо, на котором нормально-написанная Java-программа работала так быстро, как это нужно. Что ещё нового за эти годы? SOA, порталы, распространение объектных нашлёпок на реляционные базы, решения для AJAX. Развиваются на Java-платформе так быстро, что не угнаться за всеми хитростями, особенно первые 2, как промышленные, так и опен-соурсные решения. Среды удобнейшие Eclipse и IDEA - и становятся удобнее не по дням а по часам. Java так же вышла на рынок мелких и средних интернет-проектов. Здесь бесспорный лидер - Resin. Быстрый, сильный (полноценный J2EE!), непривиредливый, да ещё и PHP 5 недавно в него засунули - самая тема сейчас для мелочи. Уже и у нас хостинг приличный и недорогой есть. Вот тут кроссплатворменность в самую точку - рынок-то Linux`овый процентов на 70%. ![]() ![]() Intel набирает большое количество Java-программистов, которые непонятно над чем работают уже года 2 или 3, по этому поводу ходят недоумённые слухи - готовится явно что-то очень крупное. На горизонте маячит - массовое распространение 64-разрядных процов, которые наверняка стметут большое количество платформо-зависимого ассемблерного и С/С++ софта, по-этому конкуренция обострится - Java и .NET окажутся уже Робинзонами, лицом-к-лицу. Вот, видимо, всё основное по Java. А как у вас? Я вижу только что MS на сегодняшний день не смогла полноценно интегрировать .NET с Windows`ом. Не видно что бы операторами C# можно было писать команды в командной строке и в bat-файлах и что бы .NET-проги обгоняли Win32. Не видно, что бы мелкомягким удалось сделать их единым целым, хотя... надежда, конечно, умирает последней... -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Комментировать бесплатную рекламу Java не буду. Если всё так радужно, то почему всё так грустно ? Почему новичкам всё ещё по-прежнему сложно освоить такую "простую, как сад с подстриженными газонами и табличками с указателями" систему как Java, и так просто освоить "сложную, запутанную как баньян (с) Pegas" систему как .NET Framework ? Камешек в огород джавистов, чтоб жизнь малиной не казалась. ![]() Разве такие возможности есть в Java ? -------------------- ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Потому что простота языка и концепций не означает простоты платформы в целом. Большинтво вопросов новичка упирается не в язык, а в окружение. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Я и не говорил о Java как о языке, имелась ввиду простота освоения системы (язык + инструментарий платформы). Имхо, для практических целей дотнет освоить быстрее и легче, чем Java. Плюс это или минус ? -------------------- ![]() |
|||
|
||||
Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: нет Всего: 127 |
Простота и порядок - это всё-таки разные вещи, не думаю, что бы Антон считал Java уж очень простой, когда писал это, скорее речь шла о некоторой годами выработанной концептуальной целостности. Ухоженный сад не просто содержать тому же садовнику, к тому же он значительно ограничивает возможности для творчества, дисциплинирует, а дисциплина редко где бывает простой, но часто требует длительного изучения. Такие вещи не совместимы с кроссплатформенностью. Тут либо-либо, согласись. А у .NET и кроссплатформенности нет и глубокой интеграции хотя бы с одной единственной ОС - тоже нету - о чём и толк. Добавлено @ 13:05
А это уже смотря какие практические цели. ![]() -------------------- |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Шутка в тему:
![]() -------------------- ![]() |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
И в чем фишка? -------------------- |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |