Насколько меньше библиотек для Mono, чем для Java?
Мне не хватает обзора обеих альтернатив, но у меня есть большая свобода выбора для моего следующего проекта. Я ищу неопровержимые технические факты в области
Я особенно ищу то, что вы действительно испытали в своей работе, а не то, что я мог бы найти в Google. Мое приложение было бы серверной службой, обрабатывающей большие объемы данных из временных рядов.
Моей основной целевой платформой будет Linux.
Редактировать:Чтобы сформулировать свой вопрос более адекватно, меня интересует весь пакет (сторонние библиотеки и т. д.), А не только язык. Для библиотек это, вероятно, сводится к вопросу «насколько меньше библиотек для Mono, чем для Java»?
К вашему сведению, с тех пор я выбрал Java для этого проекта, потому что он казался более устаревшим с точки зрения переносимости, и какое-то время он существовал и в старых системах. Мне немного грустно по этому поводу, потому что мне очень любопытен C#, и я хотел бы сделать в нем какой-нибудь большой проект, но, может быть, в следующий раз. Спасибо за все советы.
Я бы добавил тег "какой язык", но их уже 5, так что не повезло.
Сильно зависит от того, на какие платформы вы нацеливаетесь ...
Возможно, сейчас самое подходящее время, чтобы взглянуть на голанг ...
Возможно, стоит подумать и о Xojo. Он компилирует собственные приложения с использованием LLVM для Windows, Mac Linux. Он имеет автоматизацию сборки IDE, отладку и т. д. Библиотека имеет множество функций и может быть расширена по мере необходимости. www / xojo.com




Думаю, вопрос сформулирован неправильно. C# и Java гораздо менее интересны с точки зрения межплатформенного использования, чем (а) какие платформы вам нужно поддерживать, и (б) с учетом основных библиотек и доступных сторонних библиотек. Язык - едва ли не наименее важная часть процесса принятия решений.
Согласовано. Вопрос в том, насколько хорошо поддерживаются виртуальные машины на различных архитектурах.
Согласовано. Нет никакого удовольствия в полной разработке, если заказчик не может ее запустить.
Что ж .... Java на самом деле более портативна. Mono реализован не везде, и он значительно отстает от реализации Microsoft. Кажется, что Java SDK лучше синхронизируется между платформами (и работает на большем количестве платформ).
Я бы также сказал, что Java имеет больше инструментов для всех этих платформ, хотя для .NET на платформах Windows доступно множество инструментов.
Обновление за 2014 год
Я все еще придерживаюсь этого мнения в 2014 году. Тем не менее, я уточню это, сказав, что я только сейчас начинаю уделять некоторое внимание Mono после долгого времени без особого внимания, поэтому могут быть улучшения в среде выполнения Mono (или экосистеме ), о которых я не знал. AFAIK, до сих пор нет поддержки WPF, WCF, WF, of WIF. Mono может работать на iOS, но, насколько мне известно, среда выполнения Java по-прежнему работает на гораздо большем количестве платформ, чем Mono. Кроме того, Mono начинает видеть некоторые значительно улучшенные инструменты (Xamarin), и Microsoft, похоже, имеет гораздо более кроссплатформенное отношение и готовность работать с партнерами, чтобы сделать их взаимодополняющими, а не конкурентоспособными (например, Mono будет довольно важная часть предстоящего ландшафта OWIN / Helios ASP.NET). Я подозреваю, что в ближайшие годы различия в переносимости быстро уменьшатся, особенно после того, как .NET станет открытым исходным кодом.
Обновление на 2018 год
Моя точка зрения на это начинает меняться. Я думаю, что .NET в целом, особенно с .NET Core, начала достигать «паритета переносимости» с Java. Сейчас прилагаются усилия по внедрению WPF в .NET Core для некоторых платформ, а сам .NET Core сейчас работает на очень многих платформах. Mono (принадлежит Xamarin, который теперь принадлежит Microsoft) является более зрелым и отточенным продуктом, чем когда-либо, и написание приложений, работающих на нескольких платформах, больше не является областью глубокого понимания хакерства .NET, а является относительно простым делом. . Конечно, существуют библиотеки, службы и приложения, предназначенные только для Windows или предназначенные только для определенных платформ, но то же самое можно сказать и о Java (в широком смысле).
Если бы я был на месте OP в этот момент, я не мог бы придумать никакой причины, присущей языкам или самим технологическим стекам, которая помешала бы мне выбрать .NET для любого приложения, которое будет развиваться с этого момента.
Я действительно рад прочитать это и рад голосам в мире Microsoft. .NET действительно хорош, но у Java есть законность, как я всегда пытался объяснить как разработчик .NET и старый Java;)
+1 за это. Я обнаружил, что переносимость Java (для нетривиальных приложений, например, веб-серверов, сложных графических интерфейсов пользователя, аналитических механизмов) лучше, чем любая другая альтернатива. Это не совсем идеально, но это лучшее, что вы можете получить прямо сейчас.
@Ben, ты все еще придерживаешься этого мнения в 2013 году? Если да, не могли бы вы упомянуть об этом, и если вы не обновите этот ответ? Часто, читая ответы четырехлетних детей, трудно сказать.
@BenjaminGruenbaum да, хотя я бы уточнил свое мнение на этом этапе, сказав, что я не уделял много внимания Mono в течение длительного времени, поэтому могут быть улучшения в среде выполнения Mono (или экосистеме), которых я не делал осведомлен о. AFAIK, до сих пор нет поддержки WPF, WCF или WF. Mono может работать на iOS, но, насколько мне известно, среда выполнения Java по-прежнему работает на гораздо большем количестве платформ, чем Mono. Так да. Квалифицировано, но да.
@HighCore аргумент не против Mono, как таковой. Это просто констатация факта: если вы пишете код, зависящий от WPF, вы не можете использовать Mono; следовательно, это непереносимо. Фреймворки пользовательского интерфейса Java могут быть отстойными, но, насколько я знаю, они будут работать везде, где работает Java (и оборудование поддерживает такой интерфейс). Это не делает Java лучше, это делает ее более переносимой именно таким образом.
@HighCore, я никогда не говорил, что обходных путей не существует, и это похоже на споры о субъективных предпочтениях, которые на самом деле не по теме. Xamarin.Forms предназначен только для мобильных устройств, поэтому на самом деле он не сильно улучшает переносимость и не имеет ничего общего с WPF, насколько я могу судить. Думаю, я все еще придерживаюсь своего ответа.
@FedericoBerasategui Я здесь :) .. и мне наплевать на Linux на рабочем столе
Java на самом деле настолько кроссплатформенна, как все говорят. Существует реализация JVM практически для любой основной ОС (даже Mac OS X, наконец), и все они работают очень хорошо. И существует множество инструментов с открытым исходным кодом, которые столь же кроссплатформенны.
Единственная загвоздка в том, что есть определенные собственные операции, которые вы не можете выполнять в Java без написания некоторых библиотек DLL или SO. Это очень редко встречается на практике. Однако во всех этих случаях мне удавалось обойти это, создавая собственные процессы и очищая результаты.
Кроме того, почти в каждом случае, когда Java не может выполнять нативную операцию кроссплатформенным способом, то же самое будет верно и для .NET.
Ну наконец то? В Mac OS X была реализована JVM с 10.0. :)
@Eli - Наверное, правда. Конечно, гораздо проще интегрировать с нативной функциональностью в .NET / Mono, чем в Java. Итак, если вы просто пытаетесь хорошо интегрироваться с собственной платформой, .NET / Mono предлагает реальное преимущество.
"создание собственных процессов и очистка экрана от результатов" содрогаться
Я бы поспорил с «практически любой основной ОС», поскольку нет готовой JVM ни для Android, ни для iOS. Между тем с помощью новых переносимых библиотек классов в .NET вы действительно можете совместно использовать скомпилированный код (хотя и не практически код пользовательского интерфейса) на разных платформах, включая мобильные.
На самом деле я разрабатываю в .NET, запускаю все свои тесты сначала в Mono, а затем в Windows. Таким образом, я знаю, что мои приложения кроссплатформенны. Я сделал это очень успешно как для приложений ASP.NET, так и для Winforms.
Я не совсем уверен, откуда у некоторых людей сложилось впечатление, что Mono настолько ужасен, но он определенно сделал свою работу в моих случаях и мнениях. Это правда, что у вас будет небольшое отставание от последних и величайших изобретений в .NET. world, но пока что .NET 2.0 для Windows и Linux мне очень подходит.
Имейте в виду, что здесь, очевидно, есть много причуд, но большинство из них связано с тем, что вы пишете переносимый код. В то время как фреймворки отлично справляются с абстрагированием от того, на какой ОС вы работаете, такие мелочи, как чувствительность к регистру в путях и именах файлов Linux, требуют некоторого привыкания, как и такие вещи, как разрешения.
.NET определенно очень кроссплатформенный из-за Mono, исходя из моего опыта.
Назовите меня невежественным, но вам вообще нужно тестировать ASP.NET с моно? Все, что было бы .NET, находится на стороне сервера, поэтому не имеет значения, в какой ОС он отображается?
Итан, с помощью Mono вы можете размещать приложения ASP.net в Linux.
ЭХаскинс, я думаю, что Итан имел в виду, зачем беспокоиться о том, чтобы сделать его кроссплатформенным для ASP.NET, когда вы управляете сервером ... просто запустите его в Windows ... Приложения типа Fogbugz будут исключением (с возможностью запуска на клиентский сервер)
Не все по какой-либо причине хотят запускать свое приложение в Windows.
Одна из проблем с отставанием Mono от реализации MS заключается в том, что у вас есть серьезные изменения API (например, .NET 3.5 с W? F). К тому времени, когда вы доберетесь туда в Mono, вы настолько отстанете от остального мира, что сможете стать менее конкурентоспособными (не всегда, но один из рисков отставания).
@ Бен Коллинз: Я действительно не верю, что это веский аргумент. Я всегда рекомендовал бы разработчикам быть в курсе новейших фреймворков, но я никогда не рекомендовал бы им начинать использовать эти новые фреймворки в производственном коде без некоторой задержки. В конце концов, у фреймворков есть свои проблемы ...
@mike Stone: Пытаясь сохранить конкурентоспособность, вы иногда встречаетесь с клиентами, которые не имеют или не желают иметь продукты MS на своих серверных стойках. Я не могу сказать, что согласен, но я, безусловно, могу уважать их пожелания. Поэтому возможность запускать мои приложения в Linux - большое преимущество.
@Rich B: это обсуждение о переносимости, а не о лучших практиках использования фреймворков в производственном коде. Дело в том, что есть более современные реализации java на большем количестве платформ, чем .NET. Я ничего не имею против .NET, но по переносимости он просто не может сравниться с Java.
@ Богатый Б: если клиенту не нужны продукты MS, очевидно, что .NET - неправильный выбор.
@Kjetil: Mono не является продуктом MS.
@Kjeyil и C# также имеют стандарт ECMA, поэтому можно утверждать, что он также не является продуктом MS.
Java была разработана как кроссплатформенная; C# /. Net не было. В случае сомнений используйте инструмент, разработанный специально для вас.
Обновлено: честно говоря, .NET был разработан для работы во встроенных / ПК / серверных средах, так что это СОРТ кроссплатформенного. Но он не был разработан для Linux.
ну, C# стандартизирован ISO, поэтому идея заключалась в том, чтобы иметь что-то кроссплатформенное. Microsoft не хотела разрабатывать реализации для других платформ, но это оставлено на усмотрение других сторон, поскольку язык является стандартом. Однако структура .Net - более сложная история.
Однако Mono - хорошая реализация, а DotGNU (и для Mac тоже)
zappan: правильная точка на C# (не знал), но .NET чертовски огромен. По общему признанию, у меня нет личного опыта здесь.
@zappan - с практической точки зрения не имеет значения, что C# стандартизирован (или что Mono является довольно хорошим клоном C#). Переносимость платформы касается всей платформы (включая библиотеки и экосистему инструментов), а не только самого языка. В этом смысле .Net определенно не является полностью кроссплатформенным.
Я тоже скажу Java. Если вы посмотрите на это с точки зрения зрелости, Sun (и другие) потратили гораздо больше времени и усилий на то, чтобы заставить JVM работать на платформах, отличных от Windows.
Напротив, Mono определенно является гражданином второго сорта в экосистеме .NET.
В зависимости от того, кто ваши целевые клиенты, вы также можете обнаружить, что есть реальный отпор против использования Mono - предлагает ли Novell тот же вид поддержки от поставщиков для Mono, который вы получили бы для Java или .NET в Windows?
Если бы вы в первую очередь ориентировались на размещение своей службы в Windows, было бы разумно рассмотреть этот выбор, но, поскольку вы ориентируетесь в первую очередь на Linux, мне это кажется очевидным.
Я склонен согласиться с тем, что Моно является гражданином 2-го класса, но не с заключением. Java существует уже давно и пронизана устаревшими причудами и проблемами управления памятью, не говоря уже о том, что она почти всегда выбирает наиболее подробный способ сделать что-либо. Он также был довольно застойным (язык) в течение многих лет и только недавно начал включать функции, которые были в .Net в течение многих лет. ИМХО, это выбор между двумя бедами ... Поддержка платформы Flakey с .Net или неуклюжего гиганта, который очень медленно развивается и требует рутинного программирования.
Есть и другие варианты языка. Я очень полюбил Python, который хорошо работает в Windows, Linux и Mac и имеет богатый набор библиотек.
Да, я люблю Python, и в нем есть Django, который мне нравится для веб-приложений, но были некоторые вещи, которые делали его неприемлемым, наиболее важным из которых является GIL в стандартной реализации интерпретатора на языке C. У меня есть ряд операций, которые сильно выигрывают от параллельных вычислений на многоядерных машинах, и мне пришлось бы создавать процессы для этого в cPython.
Я бы проголосовал за то, чтобы Java была более портативной, чем C#. В Java определенно есть очень богатый набор стандартных библиотек. Существует также широкий набор сторонних библиотек с открытым исходным кодом, например, предоставленных проектом Jakarta (http://jakarta.apache.org/).
Все обычные подозрения существуют и для CI, модульного тестирования и т. д. Кросс-платформенная поддержка IDE также очень хороша с такими, как Eclipse, Netbeans, IntelliJ IDEA и т. д.
Чтобы добавить немного больше к разговору, Java будет более портативной, если вы останетесь примерно на одну версию позади - Java 5 по-прежнему имеет много отличных функций, поэтому вы можете дождаться Java 6 и по-прежнему иметь большой диапазон с точки зрения языка и библиотек для разработки. с. Mac - это основная платформа, которой может потребоваться некоторое время, чтобы догнать последнюю версию Java.
У Java также есть превосходный орган по стандартизации, который разумно расширяет платформу на основе предложений многих различных компаний. Это функция, о которой часто забывают, но она позволяет даже новым функциям хорошо работать на нескольких платформах и обеспечивает широкий диапазон поддержки библиотек для некоторых эзотерических вещей (в качестве дополнительных расширений).
OS X 10.6 теперь полностью догнала версию Sun Java 6.
Я поздно задаю тот же вопрос, и, IMHO, .NET / Mono кажется лучшим вариантом просто потому, что в наши дни Mono имеет отличный послужной список для кроссплатформенных настольных приложений. (в отличие от Java) и, конечно же, Mono улучшается не по дням, а по часам.
Я думаю, что ответ - это зависит от обстоятельств. Java работает практически на чем угодно, но .NET / Mono (IMHO) является лучшей платформой для рабочего стола. Думаю, ответ действительно зависит от того, на какие платформы вы планируете ориентироваться.
Рабочий стол не является синонимом окна, хотя на него приходится самая большая часть рабочего стола.
Хотя у Mono есть свой доля проблем, я думаю, что у него лучшая история кроссплатформенной совместимости, особенно если вы полагаетесь на вызов собственной платформы.
Недостаточно слов о переполнении стека, чтобы подчеркнуть, насколько плавнее получить что-то родное, вызываемое и выполняемое в .NET / Mono (по крайней мере, из моего опыта 3 ...) на нескольких платформах по сравнению с эквивалентными усилиями Java.
Я согласен, вызвать код конкретной платформы из .NET / Mono очень просто, если его можно вызвать из C. С CXXI (произносится сексуально) вызов кода C++ также становится легкой прогулкой. tirania.org/blog/archive/2011/Dec-19.html
Java - лучший выбор для кроссплатформенной разработки.
Спектакль. Java и .Net имеют схожий уровень производительности из-за виртуальной машины, но JVM обычно имеет лучшую производительность из-за многолетней оптимизации.
Библиотека. Хотя это зависит от вашей задачи, в Java доступно гораздо больше библиотек с открытым исходным кодом или сторонних разработчиков. Для серверного приложения J2EE, Spring, Struts и т. д. Для графического интерфейса .Net предоставляет API уровня Win32, но это вызывает проблемы совместимости. В Java есть Swing, SWT, AWT и т. д. Он работает в большинстве случаев.
Совместимость. Это ключевые вопросы, которые необходимо учитывать при разработке кроссплатформенной программы. Два вопроса: во-первых, совместимость платформ. Java по-прежнему выигрывает, поскольку JDK хорошо поддерживается единственной оригинальной компанией Sun. Mono не поддерживается MS, поэтому у вас еще нет гарантии совместимости обновлений. 2. Обратная совместимость. Sun поддерживает хорошую репутацию в отношении своей обратной совместимости, хотя иногда это кажется слишком жестким и замедляет темп.
Инструменты. У Java есть хорошие кроссплатформенные IDE. Netbeans, Eclipse и т. д. Большинство из них бесплатны. VS Studio хороша, но только для Windows и стоит недорого. Оба они предоставляют хорошие модульные тесты, отладки, профили и т. д.
Следовательно, я бы предположил, что Java - лучший выбор. В качестве примера можно привести несколько известных настольных кроссплатформенных приложений, разработанных Java: Vuze, Limewire, BlogBridge, CrossFTP, не говоря уже об этих IDE. Что касается .Net, у меня ограниченные знания о таких успешных приложениях.
Работать с mono на «другом» Linux стало непросто. Это отражает главную проблему моно: будущее моно слишком зависит от диктатуры Мигеля де Икасы. Показательный пример: сокращение поддержки «прочего ... (неподдерживаемого)» [mono-project.com/Other_Downloads] Linux, похоже, коррелирует (ИМХО) с разочарованием Мигеля де Икасы в Linux (tirania.org/blog/archive/2013/Mar-05.html). Java не страдает этой проблемой диктатуры. C# может работать на большем количестве платформ, но это связано с большими затратами, рисками, компромиссом и зависимостью от г-на де Икаса. Спасибо, не надо.
@ Michael.M, значит, ты предпочитаешь быть по прихоти Oracle?
@ ThorbjørnRavnAndersen: Неправильно. Позвольте мне разбить это как можно проще: .Сеть -> MSFT Платформа (стабильная успешная компания; ограниченная, но аккуратная экосистема); Мононуклеоз -> De Icaza рамки (el dictador; не работает для Linux, и он показывает: [cultofmac.com/218632/… - попробуйте установить моно на Centos 6.4, это «неподдерживаемый» кошмар); Ява - это Технические характеристики, который принадлежит сообществу и имеет множество различных реализаций поставщиков (Oracle - только один) [coderanch.com/t/327542/java/java/…
@ ThorbjørnRavnAndersen: .. более того, крупный спонсор сообщества Java может даже исключить Oracle и по-прежнему быть успешным и чрезвычайно хорошо поддерживаемым - Java никоим образом не является прихотью Oracle --- пожалуйста, посмотрите: news.techworld.com/applications/3252787/… Oracle может отказаться от всего своего участия в Java, и он все равно будет жить. У каких еще поставщиков есть платформа .Net? Кто еще предоставляет монофоническую среду выполнения, кроме Xamarin? Java - единственная из них, которая не подчиняется диктатуре и имеет настоящий контроль сообщества, поддержку сообщества и руководство сообществом.
@ Michael.M Спецификация? Принадлежит к сообществу? Я думаю, что вы ошибаетесь - я также считаю, что причиной Только, по которой проект OpenJDK не был закрыт после приобретения Sun, была GPL. Java находится в железном кулаке Oracle просто потому, что TCK не доступен в свободном доступе, а это то, что необходимо для создания JVM, которая ведет себя как JVM Oracle. У меня нет проблем с Mono или De Icaza, но я не думаю, что ситуация с Java намного лучше. Единственный имеющий импульс альтернативный проект JVM умер, когда IBM прекратила его поддерживать.
А что не так с изобилие других JVM? (en.wikipedia.org/wiki/List_of_Java_virtual_machines) Да, проекты JCP и OpenSource JVM ближе к процессу сообщества, чем что-либо, которые есть в .Net или Mono. Распространенная причина того, что проекты JVM с открытым исходным кодом умирают, заключается в том, что уже существует так много чертовски бесплатных реализаций - я действительно честно; действительно; искренне; От всей души желаю, чтобы у .Net и Mono была такая же проблема. Java == настоящий открытый исходный код == большое сообщество == множество реализаций == множество платформ.
@ ThorbjørnRavnAndersen: «Единственный альтернативный проект JVM, имеющий импульс, умер, когда» - я думаю, вам нужно проверить факты.
@ Michael.M Факт проверен: Apache Harmony больше не используется (harmony.apache.org). Не стесняйтесь проверять фактическую активность JVM на вашем множестве - вы можете быть удивлены. Что касается JCP, то после того, как Oracle купила Sun, она превратилась в фасад. Также распространенная причина, по которой проекты JVM с открытым исходным кодом умирают, заключается в том, что жесткий обеспечивает 1) скорость и 2) отсутствие ошибок в отношении TCK. Было жаль, что Гармония умерла.
@ ThorbjørnRavnAndersen: Harmony умерла из-за трудностей с получением лицензии, приемлемой для Apache, для использования с проектом Harmony. Даже в этом случае по-прежнему существует только поставщик один .Net и поставщик моно один. В случае с Java дело обстоит иначе. Это прискорбно, так как я люблю C#.
@ Michael.M Нет, пожалуйста, расскажите правду. IBM перестала вносить свой вклад (по слухам, они получили для этого бессрочную лицензию Java), и тогда умер. en.wikipedia.org/wiki/Apache_Harmony#Disengagement_from_IBM
@ ThorbjørnRavnAndersen: Честно говоря, JavaScript и HTML5 могут быть лучше любого из них (в зависимости от цели). Что-то вроде Titanium можно использовать на всех мобильных платформах (включая BlackBerry - не покрывается Xamarin / .Net); с помощью JavaScript (хотя и не чистого) и Unity вы можете разработать игры на любой консоли / мобильном устройстве / компьютере / браузере; а с Node.js вы получаете высокопроизводительный веб-сервер NIO, который может работать в любой ОС. (Node.js даже используется MSFT)
@ ThorbjørnRavnAndersen: Я никогда не оспаривал, что трусливая помощь IBM не способствовала. Я хочу сказать, что это было нет, «потому что трудно получить 1) скорость и 2) отсутствие ошибок в отношении TCK» - это просто неубедительное оправдание. Я рад, что вы подняли вопрос об IBM. Что IBM инвестировала в Mono по сравнению с инвестициями в Java. Хммм. Интересно, о чем это нам говорит.
@ Michael.M Если вы хотите знать это, я предлагаю вам задать другой вопрос.
давайте продолжить обсуждение в чате
Совершенно не согласен с re: библиотеки. Да, их много, и некоторые из них сделают большую часть того, что вам нужно, но у всех есть свои причуды, крайние случаи и проблемы. Обычно сопровождается небольшим количеством документации или ее отсутствием. Если вы работаете в знакомой вам области, вы научитесь справляться с недостатками каждой библиотеки, но для новой области может потребоваться много времени и усилий, чтобы найти правильный выбор. Библиотеки .Net имеют тенденцию быть «чище» и более последовательны, ИМХО, возможно, из-за того, как фреймворк начинался. Несомненно, он пойдет по тому же пути, что и Java, когда станет доступно больше.
Gatorhall у вас есть данные для резервного копирования?
Performance. Java and .Net have similar performance level due to the virtual machine, but JVM normally has better performance because of years and years optimization.
Предыстория: я работаю с Windows с Windows 3.1 и в настоящее время пользуюсь Linux (все еще использую Windows 7, отличную ОС, на виртуальной машине для Visual Studio 2010 и других инструментов).
Дело в том, что я и многие другие пользователи (windows, linux и т. д.), Которых я знаю, могу не согласиться с вами. Java имеет тенденцию работать медленнее даже в настольном приложении Linux, ASP.NET во многих случаях работает быстрее, чем страницы сервера Java. Некоторые могут согласиться с тем, что даже некомпилированный PHP работает лучше в нескольких сценариях.
Java более кроссплатформенная? Я не сомневаюсь в этом (история говорит об этом), но быстрее (не говоря уже о .NET) не так уверен, и я хотел бы увидеть несколько реальных тестов.
Может помочь Другой вопрос и, конечно же, языковая перестрелка. JVM может быть более сильно оптимизирована, но она близка (особенно в Windows). Тесты для ASP.NET по сравнению с J2EE или JSP еще более подозрительны, но я легко могу поверить в то, что ASP.NET намного быстрее, даже если время выполнения совпадает.
Отличный вопрос. Мы также смотрим на оценку кроссплатформенной разработки.