Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Java или .NET ? |
Автор: Domestic Cat 7.4.2005, 09:58 |
Предлагаю обсуждать тут достоинства и недостатки обеих платформ. См. также http://forum.vingrad.ru/index.php?showtopic=47924 Любые переходы на "крутизну", "проприетарность", личности будут сурово караться. |
Автор: mr.DUDA 7.4.2005, 10:23 |
Наверное, нужно сделать одну тему в одном форуме, а во втором - ссылку на неё (а так можно ?), чтобы не было "раздвоения"... |
Автор: chipset 7.4.2005, 10:24 | ||
Религиозные войны? ![]() |
Автор: mr.DUDA 7.4.2005, 10:28 | ||
Нет, см. http://forum.vingrad.ru/index.php?showtopic=47924&view=findpost&p=373228 |
Автор: Guest 7.4.2005, 10:32 |
Мое мнение (именно по удобству работы): Если хочешь работать с .net (именно профессионально программистом), то когда нанимаешься в какую-нить фирму, то 100% знаешь, что у них стоит Visual Studio.NET (как всеобщий стандарт), т.е. то, что ты так разбирал дома. Знаешь VS, знаешь технологии .net - вперед работать с легкостью и удобством. ![]() Что же касается java по данной теме, то, лично меня, раздрожает ее непостоянность - куча IDE, куча заморочек с поддержкой, т.е. при приходе на работу не знаешь, как они там пишут тот или иной проект. p.s. Насчет достоинств и недостатков надо еще подумать... ![]() |
Автор: Domestic Cat 7.4.2005, 10:35 | ||||
С двумя темами можно одновременно обсуждать два разных топика ![]()
Ну, куча ИДЕ никогда недостатком не была. ![]() |
Автор: batigoal 7.4.2005, 10:56 | ||
Ну и прекрасно - есть выбор. Да и различия невелики. |
Автор: chipset 7.4.2005, 10:57 |
Меня чрезвычайно радует кроссплатформенность жавы. Допустим можно программировать сидя на BSDюхе, а потом легко пересесть на виндузы ;) |
Автор: batigoal 7.4.2005, 11:03 |
chipset Пересаживался? Просто я никогда не пробовал Джаву нигде, кроме винды. Сегодня буду ставить Линукс. ![]() |
Автор: Domestic Cat 7.4.2005, 11:08 | ||
Пересаживался - работает ![]() |
Автор: Sun 7.4.2005, 12:01 | ||
С BSD не все так радужно. Там только версия 1.3 получила аккредитацию от Sun Microsystem да и ту вроде отозвали. |
Автор: Се ля ви 7.4.2005, 13:00 |
Ну что ж, опишу своё видение этого вопроса. Как раз сегодня подметил для себя забавный факт - .NET - много языков, но одна единственная среда разработки Java - один язык (хотя Jython явно набирает обороты!), но множество сред разработки. Учитывая, что, как выразился наш преподаватель по C#, спецификация языков под .NET убивает всякие "маленькие приятности" различных языков программирования (т.е. акробатические трюки, позволяющие некоторые задачи решать очень короткими элегантными кусочками кода), ценность многоязычия становится весьма и весьма сомнительна, ибо по сути все языки .NET можно теперь считать лишь некоторыми диалектами некотороко серого, выхолощенного простого языка. Но вот отсутствие альтернативных сред разработки - реальный минус, поскольку, не знаю, как вам, но мне IDEA, например, нравится гораздо больше, чем Visual Studio .NET, которая ну уж очень сильно тормозит и которой многих мелких удобностей явно не хватает - а добавить их туда никто не может, есть только возможность клянчить у Microsoft изменения в будущей версии студии dotNET (кстати, можно ли под вижуал-студию писать свои скины и плагины? Я ничего такого там не видал - возможно, плохо искал). Что касается мощности платформы, тут просто у Microsoft`а просто больше денег. Во многих областях уже Java гонится за .NET`ом, а не .NET - за ней. Я уже писал, что мне кажется, что перемирие между Sun и Microsoft в вопросе о слизывании Java, видимо, состояло просто в том, что каждый негласно позволил друг-другу слизывать всё, что он пожелает - на том и договорились. По-этому сейчас становится приоритетным вопрос о том, кто готов вложить больше денег в новые библиотеки и сервисы. Даже уже построен настоящий мост между технологиями - веб-сервисы. Напомню, что на более раннем этапе, где было возможно выстроить такой мост между технологиями от Microsoft и технологией Java, реализовав полноценно в Visual C++ и в Java CORBA-стандарт, Microsoft на это не пошло (видимо, боялись, что множество программистов мигрируют на Java, когда поймут, что на ней те же задачи делать быстрее и удобнее). То, что Microsoft выстроили этот мост теперь, свидейтельствует о том, что они серьёзно взялись за дело перетаскивания программистов к себе из Java-сообщества. Идеологически, Java - это с одной стороны, в большей степени академический подход, ибо для написания серьёзных приложений на Java нужно знать многие вещи и хорошо в них разбираться. .NET в бОльшей степени отвечает требованиям неквалифицированного разработчика, которому необходимо погружаться в глубину реализации лишь всилу нестандартности его задачи - подход, в значительной степени был взят из Delphi (какой-то крупный начальник из Borland`а перешёл работать в Microsoft и имел отношение к руководству проекта .NET - неудивительно, что Delphi тоже приспособили под .NET - платформу - кароче спелись). Т.е. тут сталкивается академический и домохозяйский подходы - прям как Linux vs. Windows, Delphi vs. C++ и т.д. С другой стороны, хотя Java многие крупные авторитеты open-source сообщества долгое время критиковали за излишнюю осторожность в отношении этого сообщества, однако в последнее время Java, наконец, открыли и стали привлекать вольных разработчиков для создания "Мустанга", что говорит о том, что борьба пошла всерьёз и на полную катушку - и сейчас уже не до осторожностей - не проиграть бы Microsoft`у рынок и не похерить бы всю платформу J2EE, в которую вложено колоссальное количество денег! По-этому, частично и не от хорошей жизни, но Java - это демократия, открытый исходный код, возможность плюнуть на лидера - Sun - и заниматься Java`ой самому (что и делает, насколько я понимаю, IBM), если она не будет достаточно адекватной обстановке, отсутствие авторских прав как препятствия прогрессу и т.д. .NET же - это полная тоталитарность и авторские права как угроза тому, что если ты их нарушишь, с тебя потом в судебном порядке будут взыскивать большие деньги - если проект действительно удастся, канешь - никому твой проект не нужен, пока он денег не приносит и пиши реально на чём хочешь его. Пиратство тут катит только до той поры, пока проект не начинает приносить хорошую прибыль. По-этому .NET для перспективных проектов в нашей ситуации - это западня. В Java же хороший проект можно создать на основе абсолютно-открытого софта на открытой IDE и на открытом сервере - деньги платят в основном за поддержку и навороченные библиотеки в виде расширений спецификаций - как у продуктов Borland`а, Bea и IBM на основе Java - при том, что и на основе стандартных, заявленных в спецификации J2EE средств, можно решить практически все задачи. Т.е. в итоге всю оплату можно свести к удобству использования и поддержке, при полной свободе делать проект, что называется, "дёшево и сердито". Т.е. это, с другой стороны, ещё и противостояние демократии и терании. В целом, на рынке сейчас по большому счёту некоторый паритет с некоторым небольшим перевесом .NET`а. Это, что хорошо, даёт компаниям реальный выбор, ибо монополии не наблюдается, с другой - стимулирует развивать обе платформы во всех отношениях, что тоже очень благотворно сказывается на них. Вот, собственно, и всё, по поводу того, как я вижу этот вопрос. ![]() |
Автор: mr.DUDA 7.4.2005, 13:13 | ||
Не понятно, о чём тут идёт речь - то ли о лицензировании дистрибутивов .NET (что за чушь! вон они, по всей Сети разбросаны - качай сколько хочешь, это же redistributables), то ли о неких гипотетических платных библиотеках... Насколько я знаю, под .NET (как и под WinAPI) можно делать проекты и продавать их безо всяких отчислений кому бы то ни было. А может, имеется ввиду "закрытость" исходников .NET? Так ведь они открытые! Уже много раз повторял: возьмите Reflector, запустите плагин "Disassemble To File" и будет вам Счастье, в виде полных исходников всей платформы. Мелкомягкие до сих пор никому за это в нос не дали, им наоборот даже выгодно то, что исходники платформы лежат в практически открытом виде -- вон, уже Mono написали, там глядишь ещё куда-нибудь портируют. |
Автор: Се ля ви 7.4.2005, 13:34 |
mr.DUDA Интересная информация - я не знал об этом. Но скажи мне - если я возьму эти исходники, изменю всё под себя, и начну распространять это дело под названием .NET Вася Пупкин Едишн - да ещё и если мой едишн переплюнет по количеству поклонников реализацию Вижуал-студии от MS - они просто так будут на это смотреть и не захотят подкопаться и подмять всё как всегда под себя? С Java IDE такое более чем возможно. Неужели .NET не держится под железной пятой MS? |
Автор: mr.DUDA 7.4.2005, 14:56 | ||||
Если будешь на этом зарабатывать - скорее всего, тебе "дадут в бубен". ![]()
Не понял, ты имеешь ввиду, что создатели Java IDE защищают свои права на исходный код? |
Автор: nucer 7.4.2005, 15:53 |
Се ля ви, согласен на 95%... <Удалено модератором> По-моему, я предупреждал в самом первом посте. |
Автор: mr.DUDA 7.4.2005, 17:43 | ||
Типичный неаргументированный ответ человека, не имеющего абсолютно никакого понятия о том, о чём он говорит. Наверное, в Ваших проектах всё по-настоящему сложно и Вы не используете "накликательный" подход, и Ваши продукты действительно являются примером академически-выверенного подхода, правда ? ![]() |
Автор: alir 7.4.2005, 17:52 |
[quote]И вообще не видел я на нём ни одного серьёзного проекта.[quote] Мож кто пример приведет серьезного проекта на .net (слышал, что были)? ![]() |
Автор: mr.DUDA 7.4.2005, 18:23 |
1) DevExpress 2) RA.NET Framework / BusinessFramework / Workflow 3) Mono ![]() 4) GTK# 5) Axiom 3D Engine 6) DotGNU ..... |
Автор: Domestic Cat 7.4.2005, 18:25 |
mr.DUDA, погоди... разве Моно и дотГНУ написаны на .NET? |
Автор: arilou 7.4.2005, 19:12 | ||||||||||||
Скорее, человек явно не видел, что языки даже в поставке VS.NET различаются тем, что по-английски называется "syntactical sugar". Например, в VB.NET можно объявить событие без явного указания типа делегата. Событие можно выбрасывать не проверяя, есть ли подписчики. В C# придется сначала объявить делегата, потом событие, а при его выбрасывании проверять, есть ли подписчики (чтобы не было NullReferenceException).
Рекомендую посмотреть на http://www.sharpdevelop.com - бесплатная среда. Мне кажется, нельзя судить .NET за то что практически нет альтернативных сред - слишком мало времени на рынке. Среды появляются.
Можно плагины. Так делают очень многие.
Это очень спорное и, на мой взгляд, хорошо завуалированное, утверждение о том, что квалификация программистов, использующих .NET низка. Буду рад ошибаться. Скорее всего, Вы тут путаете с ориентированностью среды VS.NET на низкоквалифицированных программистов со всеми ее drag-n-drop'ами и вождениями "за ручку". Да, согласен, не без этого. Но это отнюдь не означает ориентированности .NET framework на новичков. Без отсутствия навыков которые приобретаются только с опытом на .NET, как и на любом другом языке/технологии (кроме, наверное, Лого, если кто помнит такое) серьезные приложения никто не напишет.
К сожалению, тут очень легко можно перейти к войне open vs propietary source. Не будем этого делать. Как сказал mr.DUDA, исходный код .NET приложений элементарно просматривается. Мне кажется, это связано с ориентированностью MS на западный рынок, где программу купят, если она нужна, а не будут использовать хакнутую версию. Во-вторых, "открытость" кода в .NET не означает "возможность его модифицировать и предоставить под другим именем". Не зря лицензия на ROTOR (типа как исходный код .NET framework) запрещает использовать код или его фрагменты кроме как для образовательных целей.
.NET framework SDK 1.1 (free download) + SharpDevelop (free download) + MSDE (free download) при условии лицензионности Винды: можно писать Forms и ASP.NET приложения и веб-сервисы работающие с SQL. Для тех, кто под *nix: Mono 1.1.6 (open source) + MonoDevelop + mySQL - решают те же самые задачи. Где глобальное преимущество? 2 примерно равные по возможностям среды конкурируют. Но в .NET не байт-код выполняется, а байт-код (простите меня апологеты .NET'а, я назову его так, чтобы не пришлось потом выяснять, чем байт-код Java отличается от кода MSIL ![]() Добавлено @ 19:16 Я надеюсь, что ответил на все аргументы |
Автор: Domestic Cat 7.4.2005, 19:24 | ||||||
В принципе - да, но к сожалению, все упирается в Винду + ИИС.
В Java JIT тоже компилит байткод в нативный - не полностью, но тем не менее. Собственно, преимущество было бы, если бы по скорости .НЕТ из-за этого значительно выигрывал, но реально Java/.NET программы почти идентичны в этом плане.
Моно в моем понимании - совсем не .НЕТ. Вопрос: можно ли на Моно писать АСП.НЕТ? Насколько Моно охватывает энтерпрайз приложения? Другой пример : я пишу программку на .НЕТ и мне понадобился звук.... Ыпс... Естественно, я пользую винапи. Теперь мне понадобились стандартные звуки, и я не задумываясь лезу в регистри. Пойдет такая программа на Моно? |
Автор: arilou 7.4.2005, 19:25 | ||||||||||||
Еще одна вещь по поводу propietar'ности. MS сделали спецификацию доступной для всех. То, что их реализация спецификации пропиетарна является всего-лишь следствием их позиции на рынке. Mono - это свободная реализация свободной платформы. И никто их судить не будет (если копирайтов не нарушат). У них даже многие вещи лучше получаются, чем у MS. Заслуга MS в том, что они соединили воедино простоту использования VB (не путать с его простотой) с мощью C++ и без интерпретации, как в Java. Так вот, то, что появился такой проект как Mono как раз свидетельствует о том, что придуманная платформа - вполне жизнеспособный и нужный другим проект, а соотв. это и есть признание .NET сообществом Open Source. P.S. Кстати, насчет интерпретации в Java я могу ошибаться, или мои сведения устарели. Добавлено @ 19:30
Давайте сделаем тест. Предложи текст проги на Java, мы предложим тоже самое на .NET.
Можно поставить Apache. К нему есть модуль поддержки Mono.
System.EnterpriseServices не поддерживается в силу закрытости того, как MS его реализовало. ASP.NET + WebServices поддерживается при помощи как xsp/xsp2 (lightweight веб-сервер, написанный, кстати на C#), так и через Apache.
Да, ты прав - надо лезть в WinAPI. Можно использовать Managed DirectX. Можно использовать сторонние разработки. It's up to you, как говорится. Registry -
Не знаю, но почти уверен, что доступ к реестру в Mono реализован. Не знаю, правда, как это состыкуется с другими осями. |
Автор: Domestic Cat 7.4.2005, 19:30 | ||
Скорее не признание .НЕТ, а своя интерпретация .НЕТ ![]() |
Автор: Domestic Cat 7.4.2005, 19:43 | ||||||||
Я об этом и говорю - какой реестр на Линухе?
Ну вот, и так ведь не я один. Получается что большинство автоматически замкнуты на винде + .НЕТ; ведь серьезный проект без подобных "украшений" не сделаешь. Кросплатформенности нет.
То есть, Моно проигрывает Java на не-виндоус ОС на 99%, т.к. в основном Java используется там для энтерпрайз приложений. Опять-таки, пишу я на .НЕТ с ИИС... Могу я перейти на Линух?
Делали - тут внизу где-то топик есть "Очередные данные о медленности Java" там в конце. У меня результаты получались один в один, с разбросом в сотню мс. Аналогичные результаты приведены в "Thinking in C#" Эккеля. |
Автор: arilou 7.4.2005, 19:44 | ||||||
Не .NET а "платформы .NET" Добавлено @ 19:52
Это скорее исторически сложившаяся ситуация. Такой набор стандартных средств в .NET (я имею ввиду и Mono и MS.NET): Reflection + XML + ADO.NET + WebServices решает 70% так называемых enterprise-приложений.
По-моему, тут небольшая путаница. Кроссплатформенное приложение по умолчанию не будет использовать реестра. В Java тебе же тоже придется откуда-то взять стандартные звуки? |
Автор: arilou 7.4.2005, 19:56 |
Посмотрел тему "Очередные данные о медленности Java". Почему математику используем в качесте тестов? Давайте проверять скорости работы среды: вызовы, доступ к свойствам, события. Мне самому интересно, что будет быстрее работать. C++ нам тут вообще не нужен. Сравнивать будем C# и Java только в стандартных средствах среды. Я ухожу сейчас. Если будут идеи по постановке тестовой задачи, пишите. Сам подумаю, может завтра чего предложу. |
Автор: Domestic Cat 7.4.2005, 20:12 | ||||||
Хм, разве энтерпрайз приложения - это одни вебсервиса? Это гораздо больше - веб приложения, десктоп приложения, разбросанные по различным городам/ОС. Опять-таки, нет в .NET EJB, а это очень серьезная технология.
Я их буду распространять вместе с кодом, т.к. на каждой ОС свои ![]() Про реестр - это просто пример к тому, что Микрософт вообще не заботится о кроссплатформенности. Нет даже простейшего напоминания : "в вашем коде строки ХХ используют специфичхеские для ОС методы, будьте осторожны".
События - вешь чисто дотнетовская, в ява все сводится к вызовам методов (да и в шарпе тоже). Доступ к свойствам - тоже вызов методов, в java пишем getX() setX(), в шарпе проперти превращаются в get_X() - set_X() ![]() Ну давай протестим, предлагай кот(д) ![]() |
Автор: arilou 7.4.2005, 20:17 | ||||||||||
ОК.
Web-service - это один из видов коннекторов, другими словамиб RPC, для распределенных приложений, о которых ты сейчас говоришь. С его помощью сервера будут общаться с другими серверами, клиенты с серверами, и т.д.
А я о чем? Это не имеет ничего общего с кроссплатформенностью.
Зато Mono беспокоится ![]()
ОК. See you tomorrow. |
Автор: Domestic Cat 7.4.2005, 20:21 | ||||
Конечно, но ведь энтерпрайз приложения - не только рапределенные приложения. Это поддержка (в т.ч. распределенных) транзакций, баланс нагрузок, и т п, для Java существуют десятки бесплатных контейнеров, обеспечивающих подобные вещи.
ОК ![]() |
Автор: Се ля ви 7.4.2005, 21:04 | ||||
Закрытых - да, опен-соурсных - нет. Я как раз об этом и говорю.
О чём я и говорю ![]() А на Java никто и слова не скажет :-) |
Автор: Се ля ви 7.4.2005, 21:50 | ||||
nucer Вообще-то, не в обиду будет сказано, ты явно не сталкивался с разработкой приложений уровня предприятия. Большие и серьёзные системы на .NET есть, как и на J2EE. Это большой рынок автоматизации средего и крупного бизнеса во всех сферах.
С Java 1.4 появился универсальный очень простой интерфейс записи и извлеччения информации, сохраняющейся между запуском программы. Виртуальая машина сама решает как их хранить - на винде он реализуется через реестры, а на линуксе, видимо, как-то через настройки пользователя. Если надо их считать и перенести на другую платфрму - ну делаешь объект, который их считывает, после этого его сериализуешь, переносишь, десереализуешь - и записываешь. Всё просто. Т.е. кроссплатформеность на уровне интурпретации JVM`ом универсальных интерфейсов.
Итересно, т.е. потуги всё-таки есть. Посмотрю-поизучаю ![]() Но без энтерпрайза это всё беззубое, зачаточное. Область применения .NET - это КИС, заточенные под конкретное предприятие, как и у J2EE. Вот в то, что серьёзную КИС можно написать на базе Mono - я не верю, пока такой не увижу - очень большие сомнения... Ну представь - в конторе все (1000 - 1500 человек) сидят на Linux`е, сервера Unix`овые и Solaris`овые, сложные задачи - такие, что и Oracle на Sparc`е хорошо загружают - и там вся бизнес-логика на .NET на Mono - ну не комедия ли?.. ![]() |
Автор: arilou 8.4.2005, 11:22 | ||||
Да, под Виндой это делается через COM+. Т.е ситуация немного другая - эти средства встроены в ОС, а языки/технологии могут их потреблять.
Прикольно. Сериализация в двоичное и XML представления в .NET тоже есть, но, по-моему, такого применения там нет. Про серьезные приложения на Mono: From http://www.mono-project.com/Software: Mainsoft (http://www.mainsoft.com/solutions/interoperability.html), an important contributor to Mono, bundles Mono libraries in its Visual Mainwin for J2EE (http://www.mainsoft.com/products/vmw_j2ee.html) to deploy .NET web applications on J2EE application servers. Vault (http://www.sourcegear.com/vault/index.html), from SourceGear (http://www.sourcegear.com/), relies on Mono to run on Unix systems. Virtuoso Universal Server (http://virtuoso.openlinksw.com/), from OpenLink Software (http://www.openlinksw.com/), is a cross-platform hosting environment for Mono/.NET/C#. Völcker used Mono (http://www.novell.com/success/volcker.html), .NET and C# to re-code its Active Entry (http://www.activeentry.com/) software to run on Linux. Winfessor SoapBox Framework Mono Edition (http://www.winfessor.com/portal/DesktopDefault.aspx?tabid=57) enables developers to build .NET-based IM solutions that run on any Mono-supported platform |
Автор: Domestic Cat 8.4.2005, 18:15 |
Это все круто, но единственный очень интересный проект здесь - Visual Mainwin for J2EE. J2EE - это большей частью спецификация, над которой работают сотни компаний, включая IBM и др - полный список на сановском сайте. Естественно, они и производят сервера под J2EE, и естественно, сервера эти отработаны на различных ОС. Все приведенные выше проекты возможно,сыграют роль в развитии Моно/.НЕТ, но пока Микрософт не пошел на объединение усилий в .НЕТ и нпривел всех к одному знаменателю, все это останется на полулюбительском уровне. |
Автор: Domestic Cat 16.5.2005, 22:03 |
Вот нашел такую статейку. Имо автор грамотно пишет, и главное, без фанатизма. http://www.veridicus.com/tummy/programming/java_vs_csharp.asp http://www.veridicus.com/tummy/programming/dotnetshame.asp |
Автор: Се ля ви 16.5.2005, 23:02 |
У меня не открываются ![]() |
Автор: Domestic Cat 16.5.2005, 23:23 |
Мда, два часа назад работали ![]() |
Автор: Stampede 16.5.2005, 23:57 | ||
Полегли, не выдержав бешеного трафика с Винграда ![]() |
Автор: Ch0bits 17.5.2005, 00:15 |
Люди! Может у кого сохранилось? Выложите почитать... ![]() |
Автор: Domestic Cat 17.5.2005, 00:20 |
Должно быть в кеше на работе у меня. Но я думаю до завтра сервер заработает.. |
Автор: chipset 17.5.2005, 04:07 |
Ловите ;) 1. http://64.233.179.104/search?q=cache:gWu5sB_LxPQJ:www.veridicus.com/tummy/programming/java_vs_csharp.asp+&hl=ru 2. http://64.233.179.104/search?q=cache:z2L-TgGR9PoJ:www.veridicus.com/tummy/programming/dotnetshame.asp+&hl=ru |
Автор: batigoal 17.5.2005, 11:12 |
А у меня открываются нормально. Помогите, пожалуйста, с переводом и пониманием. Что значит "managed and unmanaged code"? "Metadata attributes are a VERY, VERY powerful feature" - что это за фича? "XML documentation tags" - аналог JavaDoc? Чем они лучше? "The System.CodeDom namespace" - что за зверь? Что же до статей, то мне представляется, что многие недостатки .NET'a могут быть ликвидированы в достаточно короткие сроки. Я имею в виду в первую очередь нарекания к стандартным библиотекам (SWT, collections...). Ведь они и в Java были серьезно переработаны по сравнению с начальным вариантом. |
Автор: arilou 17.5.2005, 11:22 | ||||||||
Управляемый и неуправляемый код: 1) Код, написанный с помощью .NET fx 2) Весь остальной код ![]()
Речь идет об атрибутах как части механизма рефлексиИ в .NET - в двух словах, они дают возможность декларативного программирования/
Не знаю, лучше или хуже, но дают возможность генерирования референсной документации по проектам. Среда создает XML файл с описанием классов и членов, а при помощи XML attributes дается возможность его наполнять.
Это набор классов для динамической генерации кода, и интерфейсов для создания новых компиляторов, поддерживающих .NET fx. Надеюсь, помог ![]() |
Автор: batigoal 17.5.2005, 12:32 |
arilou Почти. Только скажи, что такое fx? ![]() |
Автор: arilou 17.5.2005, 12:35 |
framework сокращенно ![]() |
Автор: batigoal 17.5.2005, 13:44 |
В общем, аналоги прослеживаются четко, и чтобы понять, что удобнее, надо пробовать. А возможности близки. |
Автор: Domestic Cat 17.5.2005, 18:16 | ||||
Старенькие статьи,
Java код тоже "managed", в .NET кодом "управляет" CLR, в Java - JVM .
Эта фича есть в Java 1.5. |
Автор: Guest 1.9.2005, 20:02 |
![]() ![]() Но почему Java такая медленная? Одна и та же программа на .NET выполняется в 1,5 раза быстрее, чем на Java? Почему? http://gzip.rsdn.ru/Forum/Message.aspx?mid=1358598&only=1 ![]() ![]() |
Автор: LSD 1.9.2005, 20:13 |
Те скоростные тесты которые мы здесь гоняли показали, что Java не медленней C#. |
Автор: bars_uz 3.9.2005, 12:11 |
Vsetaki Java kruche esli ... esli eshe polzovatsya pri programirovanie DB JDataStore 7 to,, kruche nichego ne naydeote.. k primeru.. ya nedavna sozdal baze dlya muzeya holakost... 40000-50000 zapis. otkrivaet za 1.3 sekunu.. eto na kompe P4 256RAM.. a na P1 32RAM uhodit 3-4 sek. nu nascheot C# .. Horoshiy yazik.. no na Win95/98 ne rabotaet.. vchem prikol. vsetaki Java kruche.. |
Автор: mr.DUDA 8.9.2005, 12:02 | ||
Полный гон. Работает .NET на 98-ой винде, и на 95-й, при наличии IE6. |
Автор: mr.DUDA 6.5.2006, 14:23 | ||||||||
Да уж, странно, конечно. По-моему дело тут не в самом браузере, а в ActiveX и прочих компонентах, которые ставятся вместе с ним.
С этим полностью согласен ![]()
Если сравнивать то что предлагала M$ до сих пор в плане API и технологий (COM, ActiveX), .NET радикально отличается в лучшую сторону. Если же сравнивать с Java, то нового кроме поддержки нескольких языков, ничего.
Будем надеяться, что этот момент произойдёт тогда, когда все будут к нему готовы. В любом случае, для этого потребуется достаточно веская причина. Сама по себе платформа уже устоялась, и выход новых версий windows к отказу от .NET не приведёт. |
Автор: vinegr 15.5.2006, 13:34 |
Позвольте описать конкретную проблемку, на которой IMHO хорошо видна разница между дотНет и Java: в проекте на C# (.Net 2.0) разделил сервер на два модуля (Транспорт и АппСервер), общающиеся через Remouting. Транспорт обслуживает клиентские соединения, парсит команды, для выполнения которых асинхронно вызваыет методы АппСервера ([OneWay] в атрибутах метода, SingleCall в конфиге). Если бы делал подобное на Java, пришлось бы писать пул нитей-обработчиков, менеджер их порождения, механизмы синхронизации и тп. - т.е. в 10 раз больше кода, причем достаточно хитрого кода. На C# все красивенько-компактненько, работает просто с офигительной скоростью, НО - абсолютно непрозрачно. Когда эта механика начала сбоить (рано или поздно, но закономерно) - сервер после нескольких десятков тысяч команд (нескольких суток работы) стал тихо умирать. Где-то подтекает какой-то ресурс (скорее всего, системный пул внутри Remoutinga) - но где и какой ? Вся механика-то СИСТЕМНАЯ, встроена в недра исполняющей системы, причем не в виде "системных объектов", из которых можно надеяться выжать хоть какую-нибудь диагностику, а встроена прямо в язык - атрибут в коде и две строчки в конфиг-файле. Т.е. вместо исследования проблемы предполагаются пляски с бубном вокруг черного ящика. Черный ящик (исполняющая система .Net) УМЫШЛЕННО И ПРИНЦИПИАЛЬНО НЕ ПОДДЕРЖИВАЕТ возможность своего исследования. Хочу это особенно подчеркнуть, потому что именно НЕПРОЗРАЧНОСТЬ - ГЛАВНОЕ ОТЛИЧИЕ .Net от Java. В Java есть возможность "спуститься" на любой уровень, полностью отследить цепочку выполнения (пусть это "принципиальная возможность" - на практике слишко трудоемкая) - в .Net ничего такого вообще нет. Да, в Java есть включения native-кода, но они обособлены, специфицированы и в 99% cлучаев их можно заменить штатными средствами (в ранних Сановских версиях долго гулял баг в работе с сокетом - но он никого особенно не напрягал, потому что сразу появилась туча альтернативных DLLей). .Net основан на native-компонентах, и весь managed-код всегда будет лишь "обмазкой" для них, что, может быть, в теории допустимо, но на практике отдает жульничеством. (конкретно в моем случае - теоретически можно встроить в Remouting sink свои обработчики - но на практике подключение managed кода не только резко сажает производительность (раз в 30), но и кардинально меняет поведение системы - а какой смысл в дебаггере, если под ним программа исполняется совсем не так, как без него). Ну, путем шаманства и рихтовки, довел я uptime своего сервера до приемлемой цифры - но что я получил, полноценный продукт, независимый от MS ? |
Автор: ALKS 15.5.2006, 15:02 |
vinegr, ну я думаю самому не пришлось бы писать "пул нитей-обработчиков, менеджер их порождения, механизмы синхронизации и тп. - т.е.". наверняка есть уже готовые бибилотеки и вообще асинхронные коммуникации ты бы основал скорее всего на JMX. ну т.е. я думаю наврдяли на самом деле тебе бы пришлось полностью разрабатывать нужный механизм с нуля. особенность современной разработки на Java уже в том сейчас, что прежде чем сделать что-то входит в привычку порыться в комъюнити - и всегда находиться ![]() по-теме: суть разницы между .NET и Java по-моему придельна ясна. .NET никогда не будет по настоящему кросплатформенным решение, просто потому что это прямо протеворечит интересам MS. Какой смысл MS вваливать десятки милонов баксов в разработку мощной среды которая позволит разрабатывать приложения работающее НЕ ПОД Windows? это откровенно глупо!!! люди должны покупать Windows.Windows - основной продукт и ядро бизнеса MS. все и любые разработки MS должны подталкивать людей покупать Windows. весь шум и вся борьба между .NET и Java. она не вокруг того какой язык C# или Java лучше. она вокруг разработчиков софта. Прямой интерес MS в том, чтобы люди писали софт под Windows, а не под другую OS. и если для этого нужно разработать альтернативную J2EE платформу - то вот она. и более того я убежден что .NET функционально будет лучше J2EE, так же как C# ,будет богаче Java(собственно Java уже отстает от С#...) Ведь если мы не может предложить кросплатформенность мы должны предложить нечто альтернативное, чтoбы склонять разработчиков к нужному нам выбору... Делать так чтобы .NET работал под Free BSD??? чтобы вместо того чтобы покупать Windows 2003 Server (стоящий кстати конкретно!) люди радостно ставили BSD?? MS можно как угодно обзывать. но уж дураками их назвать точно нельзя. более того - они очень умные и дальновидные ребята именно поэтому они доминируют на этом рынке. Вы что всерьез думаетете что .NET нету под BSD, потому что это трудно сделать? - увольте, для компании которая может легко ввалить в любую разработку миллиард - это вообще не проблема. оне НЕ не могут.они совершенно сознательно НЕ хотят. У Sun в одиночку нет никаких шансов против MS. Sun повезло в том что интересы монстров индустрии IBM и Oracle совпадают с интересами Sun. И дело тут вовсе не в желании насолить MS, а в том что этим компаниям жизненно необходимо развитое кросплатформенное средство разработки софта и проще присоедениться к чужому и хорошему, чем разрабатывать свое с нуля... |
Автор: COVD 15.5.2006, 15:42 | ||
![]() ![]() |
Автор: batigoal 15.5.2006, 15:54 | ||
Почему? Мы же рассматриваем платформу в целом. |
Автор: ALKS 15.5.2006, 15:58 | ||||
да не только... часто выясняеться что тебе нужен не просто специалист в J2EE а человек опытный в ряде фреймворков. потому что изучение группы не простых технологий отнимает недели в лучшем случае. это с одной стороны паршиво, потому что начинают появляеться класс спецов которые не знают базовые спецификации но знаю скажем как юзать Struts... т.е. развитие фреймворков поощряет деградацию специалистов. ![]() но с дургой стороны это и большая свобода выбора и возможность подобрать или найти, что-то удобное именно для твоей задачи что приимущество ... |
Автор: COVD 15.5.2006, 16:03 | ||
Конечно, чтобы воспользоваться, например, Hibernate, надо знать для начала java. Но владение собственно языком в программировании на java является все еще необходимым, но уже все менее достаточным. Я про это. Ничего нового ![]() |
Автор: vinegr 17.5.2006, 10:41 |
меня лично мало напрягает НЕ-кросс-платформенность дотНета (под виндой он удобнее и будет только все более удобным со временем). Выбрать технологию очень просто: виндовый сервер=доНет, уникс(или кросс-платф)=Java. Меня ДИКО напрягает непрозрачность дотНета - т.е. масса механизмов, включенных в недра исполняющей системы, которыми принципиально нельзя управлять. Практических ситуаций - море (необязательно в хитрых механизмах вроде асинхронных коммуникаций - вон в http://forum.vingrad.ru/index.php?showtopic=80975&unread=1&st=0&#entry734025 обсуждается тривиальная ситуация - форма, порожденная в асинхронном вызове. Такая форма в дотНете почему-то принудительно закрывается при сворачивании родительской формы. В Java cуществует тысяча путей прояснения и обхода подобной ситуации, а как бороться с этим в дотНете - НИКАК! и такие "никак" будут только накапливаться и усугубляться. |
Автор: COVD 18.5.2006, 15:32 | ||||
А может в этом и есть великая сермяжная правда? Еще один шаг к стандартизации процесса программирования? Java упразднила поинтеры, чтобы проще было, а дот нет принудительно закрывает формы. Усилия, направленные на то, чтобы приучить всех переходить улицу строго по переходу и строго на зеленый, а не как захочется. Меньше свободы творчества, больше стандартов - столбовая дорога любой индустрии.
Это не деградация, а какой-то новый вид специалиста. Получив задание, он лезет в интернет, быстро находит что-то и прикручивает. (Нашел новую игрушку и разломал ![]() ![]() Мне вот интересно, возможно ли научиться работать с java - технологиями без опыта программирования на чистой java? Сразу командовать полками, не посидев в окопах? Брать "проверенные профессиональные" решения и прикручивать. Собственно, прогресс к этому ведет. |
Автор: vinegr 26.5.2006, 15:46 | ||
прогресс здесь вообще ни при чем, просто надо убивать менегеров
|
Автор: arilou 30.5.2006, 14:36 |
vinegr, а кто ж вас тогда будет пинать, чтобы не увлекались перфекционизмом? ![]() |
Автор: jimur 1.6.2006, 21:48 |
вот хорошая ссылочка тему "Java или .NET": http://www.oreillynet.com/onjava/blog/2006/06/a_response_to_java_succumbing.html?CMP=OTC-FP2116136014&ATT=A+Response+to+Java+Succumbing+to+NET+in+my+Organization |
Автор: Се ля ви 6.6.2006, 16:30 |
Хочу отметить один недостаток организации пропертей .NET и в частности в C#: в них нельзя разграничить доступ к сеттеру и геттеру какого-то поля, ибо модификатор доступа ставится только перед полем в целом. |
Автор: arilou 6.6.2006, 16:49 | ||
В .NET 2.0 эта проблема уже решена. |
Автор: integral 4.9.2006, 17:32 | ||||
|
Автор: JUncle 7.9.2006, 19:06 |
Да вроде как и Ruby запускаютъ. |
Автор: integral 10.9.2006, 18:41 |
точно, почти запустили - JRuby. Еще есть абсолютно новый язык - Groove |
Автор: angus 11.11.2006, 04:04 |
я слышал от друга что Apple разрабатывает .Net для *nix-о, - ето правдв ? ![]() |
Автор: LSD 11.11.2006, 12:24 |
Apple врядли, нафига им это сдалось. Скорее всего речь иде о http://www.mono-project.com/Downloads, там есть и версия под Mac OS X. |
Автор: angus 12.11.2006, 16:15 | ||
спасибо - попробую заюзать под Linux ![]() |