.NET / Mono или Java - лучший выбор для кроссплатформенной разработки?

Насколько меньше библиотек для Mono, чем для Java?

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

  • производительность (например, мне сказали, что Java хороша для многопоточности, и я слышал, что оптимизация кода времени выполнения в последнее время стала очень хорошей для .NET)
  • Переносимость реальный мир (оба предназначены для переносимости, что такое Catch-22 для каждого?)
  • доступность инструмента (CI, автоматизация сборки, отладка, IDE)

Я особенно ищу то, что вы действительно испытали в своей работе, а не то, что я мог бы найти в Google. Мое приложение было бы серверной службой, обрабатывающей большие объемы данных из временных рядов.

Моей основной целевой платформой будет Linux.

Редактировать:Чтобы сформулировать свой вопрос более адекватно, меня интересует весь пакет (сторонние библиотеки и т. д.), А не только язык. Для библиотек это, вероятно, сводится к вопросу «насколько меньше библиотек для Mono, чем для Java»?


К вашему сведению, с тех пор я выбрал Java для этого проекта, потому что он казался более устаревшим с точки зрения переносимости, и какое-то время он существовал и в старых системах. Мне немного грустно по этому поводу, потому что мне очень любопытен C#, и я хотел бы сделать в нем какой-нибудь большой проект, но, может быть, в следующий раз. Спасибо за все советы.

Отличный вопрос. Мы также смотрим на оценку кроссплатформенной разработки.

Mat Nadrofsky 03.11.2008 16:34

Я бы добавил тег "какой язык", но их уже 5, так что не повезло.

Daniel Daranas 26.02.2009 13:04

Сильно зависит от того, на какие платформы вы нацеливаетесь ...

Thorbjørn Ravn Andersen 01.04.2010 17:36

Возможно, сейчас самое подходящее время, чтобы взглянуть на голанг ...

StartupGuy 22.09.2015 00:07

Возможно, стоит подумать и о Xojo. Он компилирует собственные приложения с использованием LLVM для Windows, Mac Linux. Он имеет автоматизацию сборки IDE, отладку и т. д. Библиотека имеет множество функций и может быть расширена по мере необходимости. www / xojo.com

Paul Lefebvre 17.08.2018 16:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
108
5
25 729
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

Думаю, вопрос сформулирован неправильно. C# и Java гораздо менее интересны с точки зрения межплатформенного использования, чем (а) какие платформы вам нужно поддерживать, и (б) с учетом основных библиотек и доступных сторонних библиотек. Язык - едва ли не наименее важная часть процесса принятия решений.

Согласовано. Вопрос в том, насколько хорошо поддерживаются виртуальные машины на различных архитектурах.

Allain Lalonde 14.09.2008 23:08

Согласовано. Нет никакого удовольствия в полной разработке, если заказчик не может ее запустить.

Thorbjørn Ravn Andersen 01.04.2010 17:37
Ответ принят как подходящий

Что ж .... 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;)

JoeBilly 01.04.2010 16:29

+1 за это. Я обнаружил, что переносимость Java (для нетривиальных приложений, например, веб-серверов, сложных графических интерфейсов пользователя, аналитических механизмов) лучше, чем любая другая альтернатива. Это не совсем идеально, но это лучшее, что вы можете получить прямо сейчас.

mikera 20.12.2012 13:00

@Ben, ты все еще придерживаешься этого мнения в 2013 году? Если да, не могли бы вы упомянуть об этом, и если вы не обновите этот ответ? Часто, читая ответы четырехлетних детей, трудно сказать.

Benjamin Gruenbaum 28.05.2013 19:21

@BenjaminGruenbaum да, хотя я бы уточнил свое мнение на этом этапе, сказав, что я не уделял много внимания Mono в течение длительного времени, поэтому могут быть улучшения в среде выполнения Mono (или экосистеме), которых я не делал осведомлен о. AFAIK, до сих пор нет поддержки WPF, WCF или WF. Mono может работать на iOS, но, насколько мне известно, среда выполнения Java по-прежнему работает на гораздо большем количестве платформ, чем Mono. Так да. Квалифицировано, но да.

Ben Collins 28.05.2013 20:04

@HighCore аргумент не против Mono, как таковой. Это просто констатация факта: если вы пишете код, зависящий от WPF, вы не можете использовать Mono; следовательно, это непереносимо. Фреймворки пользовательского интерфейса Java могут быть отстойными, но, насколько я знаю, они будут работать везде, где работает Java (и оборудование поддерживает такой интерфейс). Это не делает Java лучше, это делает ее более переносимой именно таким образом.

Ben Collins 09.10.2014 02:37

@HighCore, я никогда не говорил, что обходных путей не существует, и это похоже на споры о субъективных предпочтениях, которые на самом деле не по теме. Xamarin.Forms предназначен только для мобильных устройств, поэтому на самом деле он не сильно улучшает переносимость и не имеет ничего общего с WPF, насколько я могу судить. Думаю, я все еще придерживаюсь своего ответа.

Ben Collins 09.10.2014 03:10

@FedericoBerasategui Я здесь :) .. и мне наплевать на Linux на рабочем столе

Shane 11.08.2018 11:59

Java на самом деле настолько кроссплатформенна, как все говорят. Существует реализация JVM практически для любой основной ОС (даже Mac OS X, наконец), и все они работают очень хорошо. И существует множество инструментов с открытым исходным кодом, которые столь же кроссплатформенны.

Единственная загвоздка в том, что есть определенные собственные операции, которые вы не можете выполнять в Java без написания некоторых библиотек DLL или SO. Это очень редко встречается на практике. Однако во всех этих случаях мне удавалось обойти это, создавая собственные процессы и очищая результаты.

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

Eli Courtwright 15.09.2008 04:05

Ну наконец то? В Mac OS X была реализована JVM с 10.0. :)

mipadi 07.02.2010 20:58

@Eli - Наверное, правда. Конечно, гораздо проще интегрировать с нативной функциональностью в .NET / Mono, чем в Java. Итак, если вы просто пытаетесь хорошо интегрироваться с собственной платформой, .NET / Mono предлагает реальное преимущество.

Justin 27.01.2012 23:09

"создание собственных процессов и очистка экрана от результатов" содрогаться

Basic 04.06.2014 21:48

Я бы поспорил с «практически любой основной ОС», поскольку нет готовой JVM ни для Android, ни для iOS. Между тем с помощью новых переносимых библиотек классов в .NET вы действительно можете совместно использовать скомпилированный код (хотя и не практически код пользовательского интерфейса) на разных платформах, включая мобильные.

Mathieson 16.08.2014 04:49

На самом деле я разрабатываю в .NET, запускаю все свои тесты сначала в Mono, а затем в Windows. Таким образом, я знаю, что мои приложения кроссплатформенны. Я сделал это очень успешно как для приложений ASP.NET, так и для Winforms.

Я не совсем уверен, откуда у некоторых людей сложилось впечатление, что Mono настолько ужасен, но он определенно сделал свою работу в моих случаях и мнениях. Это правда, что у вас будет небольшое отставание от последних и величайших изобретений в .NET. world, но пока что .NET 2.0 для Windows и Linux мне очень подходит.

Имейте в виду, что здесь, очевидно, есть много причуд, но большинство из них связано с тем, что вы пишете переносимый код. В то время как фреймворки отлично справляются с абстрагированием от того, на какой ОС вы работаете, такие мелочи, как чувствительность к регистру в путях и именах файлов Linux, требуют некоторого привыкания, как и такие вещи, как разрешения.

.NET определенно очень кроссплатформенный из-за Mono, исходя из моего опыта.

Назовите меня невежественным, но вам вообще нужно тестировать ASP.NET с моно? Все, что было бы .NET, находится на стороне сервера, поэтому не имеет значения, в какой ОС он отображается?

Ethan Gunderson 14.09.2008 23:54

Итан, с помощью Mono вы можете размещать приложения ASP.net в Linux.

Eric Haskins 15.09.2008 00:01

ЭХаскинс, я думаю, что Итан имел в виду, зачем беспокоиться о том, чтобы сделать его кроссплатформенным для ASP.NET, когда вы управляете сервером ... просто запустите его в Windows ... Приложения типа Fogbugz будут исключением (с возможностью запуска на клиентский сервер)

Mike Stone 15.09.2008 00:09

Не все по какой-либо причине хотят запускать свое приложение в Windows.

Bernard 15.09.2008 05:43

Одна из проблем с отставанием Mono от реализации MS заключается в том, что у вас есть серьезные изменения API (например, .NET 3.5 с W? F). К тому времени, когда вы доберетесь туда в Mono, вы настолько отстанете от остального мира, что сможете стать менее конкурентоспособными (не всегда, но один из рисков отставания).

Ben Collins 15.09.2008 05:56

@ Бен Коллинз: Я действительно не верю, что это веский аргумент. Я всегда рекомендовал бы разработчикам быть в курсе новейших фреймворков, но я никогда не рекомендовал бы им начинать использовать эти новые фреймворки в производственном коде без некоторой задержки. В конце концов, у фреймворков есть свои проблемы ...

GEOCHET 15.09.2008 08:04

@mike Stone: Пытаясь сохранить конкурентоспособность, вы иногда встречаетесь с клиентами, которые не имеют или не желают иметь продукты MS на своих серверных стойках. Я не могу сказать, что согласен, но я, безусловно, могу уважать их пожелания. Поэтому возможность запускать мои приложения в Linux - большое преимущество.

GEOCHET 15.09.2008 08:06

@Rich B: это обсуждение о переносимости, а не о лучших практиках использования фреймворков в производственном коде. Дело в том, что есть более современные реализации java на большем количестве платформ, чем .NET. Я ничего не имею против .NET, но по переносимости он просто не может сравниться с Java.

Ben Collins 28.11.2008 07:54

@ Богатый Б: если клиенту не нужны продукты MS, очевидно, что .NET - неправильный выбор.

Kjetil Ødegaard 09.03.2009 14:27

@Kjetil: Mono не является продуктом MS.

GEOCHET 09.03.2009 14:41

@Kjeyil и C# также имеют стандарт ECMA, поэтому можно утверждать, что он также не является продуктом MS.

AaronLS 20.08.2012 06:49

Java была разработана как кроссплатформенная; C# /. Net не было. В случае сомнений используйте инструмент, разработанный специально для вас.

Обновлено: честно говоря, .NET был разработан для работы во встроенных / ПК / серверных средах, так что это СОРТ кроссплатформенного. Но он не был разработан для Linux.

ну, C# стандартизирован ISO, поэтому идея заключалась в том, чтобы иметь что-то кроссплатформенное. Microsoft не хотела разрабатывать реализации для других платформ, но это оставлено на усмотрение других сторон, поскольку язык является стандартом. Однако структура .Net - более сложная история.

zappan 15.09.2008 01:21

Однако Mono - хорошая реализация, а DotGNU (и для Mac тоже)

Andrei Rînea 15.09.2008 14:21

zappan: правильная точка на C# (не знал), но .NET чертовски огромен. По общему признанию, у меня нет личного опыта здесь.

AlexeyMK 01.10.2008 07:42

@zappan - с практической точки зрения не имеет значения, что C# стандартизирован (или что Mono является довольно хорошим клоном C#). Переносимость платформы касается всей платформы (включая библиотеки и экосистему инструментов), а не только самого языка. В этом смысле .Net определенно не является полностью кроссплатформенным.

mikera 20.12.2012 13:05

Я тоже скажу Java. Если вы посмотрите на это с точки зрения зрелости, Sun (и другие) потратили гораздо больше времени и усилий на то, чтобы заставить JVM работать на платформах, отличных от Windows.

Напротив, Mono определенно является гражданином второго сорта в экосистеме .NET.

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

Если бы вы в первую очередь ориентировались на размещение своей службы в Windows, было бы разумно рассмотреть этот выбор, но, поскольку вы ориентируетесь в первую очередь на Linux, мне это кажется очевидным.

Я склонен согласиться с тем, что Моно является гражданином 2-го класса, но не с заключением. Java существует уже давно и пронизана устаревшими причудами и проблемами управления памятью, не говоря уже о том, что она почти всегда выбирает наиболее подробный способ сделать что-либо. Он также был довольно застойным (язык) в течение многих лет и только недавно начал включать функции, которые были в .Net в течение многих лет. ИМХО, это выбор между двумя бедами ... Поддержка платформы Flakey с .Net или неуклюжего гиганта, который очень медленно развивается и требует рутинного программирования.

Basic 04.06.2014 23:02

Есть и другие варианты языка. Я очень полюбил Python, который хорошо работает в Windows, Linux и Mac и имеет богатый набор библиотек.

Да, я люблю Python, и в нем есть Django, который мне нравится для веб-приложений, но были некоторые вещи, которые делали его неприемлемым, наиболее важным из которых является GIL в стандартной реализации интерпретатора на языке C. У меня есть ряд операций, которые сильно выигрывают от параллельных вычислений на многоядерных машинах, и мне пришлось бы создавать процессы для этого в cPython.

Hanno Fietz 02.07.2009 16:24

Я бы проголосовал за то, чтобы 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.

Thorbjørn Ravn Andersen 01.04.2010 17:38

Я поздно задаю тот же вопрос, и, IMHO, .NET / Mono кажется лучшим вариантом просто потому, что в наши дни Mono имеет отличный послужной список для кроссплатформенных настольных приложений. (в отличие от Java) и, конечно же, Mono улучшается не по дням, а по часам.

Я думаю, что ответ - это зависит от обстоятельств. Java работает практически на чем угодно, но .NET / Mono (IMHO) является лучшей платформой для рабочего стола. Думаю, ответ действительно зависит от того, на какие платформы вы планируете ориентироваться.

Рабочий стол не является синонимом окна, хотя на него приходится самая большая часть рабочего стола.

ZOXIS 14.04.2017 15:58

Хотя у Mono есть свой доля проблем, я думаю, что у него лучшая история кроссплатформенной совместимости, особенно если вы полагаетесь на вызов собственной платформы.

Недостаточно слов о переполнении стека, чтобы подчеркнуть, насколько плавнее получить что-то родное, вызываемое и выполняемое в .NET / Mono (по крайней мере, из моего опыта 3 ...) на нескольких платформах по сравнению с эквивалентными усилиями Java.

Я согласен, вызвать код конкретной платформы из .NET / Mono очень просто, если его можно вызвать из C. С CXXI ​​(произносится сексуально) вызов кода C++ также становится легкой прогулкой. tirania.org/blog/archive/2011/Dec-19.html

Justin 04.02.2012 03:52

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# может работать на большем количестве платформ, но это связано с большими затратами, рисками, компромиссом и зависимостью от г-на де Икаса. Спасибо, не надо.

StartupGuy 13.04.2013 23:00

@ Michael.M, значит, ты предпочитаешь быть по прихоти Oracle?

Thorbjørn Ravn Andersen 19.06.2013 22:17

@ ThorbjørnRavnAndersen: Неправильно. Позвольте мне разбить это как можно проще: .Сеть -> MSFT Платформа (стабильная успешная компания; ограниченная, но аккуратная экосистема); Мононуклеоз -> De Icaza рамки (el dictador; не работает для Linux, и он показывает: [cultofmac.com/218632/… - попробуйте установить моно на Centos 6.4, это «неподдерживаемый» кошмар); Ява - это Технические характеристики, который принадлежит сообществу и имеет множество различных реализаций поставщиков (Oracle - только один) [coderanch.com/t/327542/java/java/…

StartupGuy 20.06.2013 03:17

@ ThorbjørnRavnAndersen: .. более того, крупный спонсор сообщества Java может даже исключить Oracle и по-прежнему быть успешным и чрезвычайно хорошо поддерживаемым - Java никоим образом не является прихотью Oracle --- пожалуйста, посмотрите: news.techworld.com/applications/3252787/… Oracle может отказаться от всего своего участия в Java, и он все равно будет жить. У каких еще поставщиков есть платформа .Net? Кто еще предоставляет монофоническую среду выполнения, кроме Xamarin? Java - единственная из них, которая не подчиняется диктатуре и имеет настоящий контроль сообщества, поддержку сообщества и руководство сообществом.

StartupGuy 20.06.2013 03:28

@ Michael.M Спецификация? Принадлежит к сообществу? Я думаю, что вы ошибаетесь - я также считаю, что причиной Только, по которой проект OpenJDK не был закрыт после приобретения Sun, была GPL. Java находится в железном кулаке Oracle просто потому, что TCK не доступен в свободном доступе, а это то, что необходимо для создания JVM, которая ведет себя как JVM Oracle. У меня нет проблем с Mono или De Icaza, но я не думаю, что ситуация с Java намного лучше. Единственный имеющий импульс альтернативный проект JVM умер, когда IBM прекратила его поддерживать.

Thorbjørn Ravn Andersen 20.06.2013 04:44

А что не так с изобилие других JVM? (en.wikipedia.org/wiki/List_of_Java_virtual_machines) Да, проекты JCP и OpenSource JVM ближе к процессу сообщества, чем что-либо, которые есть в .Net или Mono. Распространенная причина того, что проекты JVM с открытым исходным кодом умирают, заключается в том, что уже существует так много чертовски бесплатных реализаций - я действительно честно; действительно; искренне; От всей души желаю, чтобы у .Net и Mono была такая же проблема. Java == настоящий открытый исходный код == большое сообщество == множество реализаций == множество платформ.

StartupGuy 20.06.2013 12:16

@ ThorbjørnRavnAndersen: «Единственный альтернативный проект JVM, имеющий импульс, умер, когда» - я думаю, вам нужно проверить факты.

StartupGuy 20.06.2013 12:20

@ Michael.M Факт проверен: Apache Harmony больше не используется (harmony.apache.org). Не стесняйтесь проверять фактическую активность JVM на вашем множестве - вы можете быть удивлены. Что касается JCP, то после того, как Oracle купила Sun, она превратилась в фасад. Также распространенная причина, по которой проекты JVM с открытым исходным кодом умирают, заключается в том, что жесткий обеспечивает 1) скорость и 2) отсутствие ошибок в отношении TCK. Было жаль, что Гармония умерла.

Thorbjørn Ravn Andersen 20.06.2013 12:45

@ ThorbjørnRavnAndersen: Harmony умерла из-за трудностей с получением лицензии, приемлемой для Apache, для использования с проектом Harmony. Даже в этом случае по-прежнему существует только поставщик один .Net и поставщик моно один. В случае с Java дело обстоит иначе. Это прискорбно, так как я люблю C#.

StartupGuy 20.06.2013 13:25

@ Michael.M Нет, пожалуйста, расскажите правду. IBM перестала вносить свой вклад (по слухам, они получили для этого бессрочную лицензию Java), и тогда умер. en.wikipedia.org/wiki/Apache_Harmony#Disengagement_from_IBM

Thorbjørn Ravn Andersen 20.06.2013 13:28

@ ThorbjørnRavnAndersen: Честно говоря, JavaScript и HTML5 могут быть лучше любого из них (в зависимости от цели). Что-то вроде Titanium можно использовать на всех мобильных платформах (включая BlackBerry - не покрывается Xamarin / .Net); с помощью JavaScript (хотя и не чистого) и Unity вы можете разработать игры на любой консоли / мобильном устройстве / компьютере / браузере; а с Node.js вы получаете высокопроизводительный веб-сервер NIO, который может работать в любой ОС. (Node.js даже используется MSFT)

StartupGuy 20.06.2013 13:37

@ ThorbjørnRavnAndersen: Я никогда не оспаривал, что трусливая помощь IBM не способствовала. Я хочу сказать, что это было нет, «потому что трудно получить 1) скорость и 2) отсутствие ошибок в отношении TCK» - это просто неубедительное оправдание. Я рад, что вы подняли вопрос об IBM. Что IBM инвестировала в Mono по сравнению с инвестициями в Java. Хммм. Интересно, о чем это нам говорит.

StartupGuy 20.06.2013 13:45

@ Michael.M Если вы хотите знать это, я предлагаю вам задать другой вопрос.

Thorbjørn Ravn Andersen 20.06.2013 13:57

давайте продолжить обсуждение в чате

Thorbjørn Ravn Andersen 20.06.2013 14:47

Совершенно не согласен с re: библиотеки. Да, их много, и некоторые из них сделают большую часть того, что вам нужно, но у всех есть свои причуды, крайние случаи и проблемы. Обычно сопровождается небольшим количеством документации или ее отсутствием. Если вы работаете в знакомой вам области, вы научитесь справляться с недостатками каждой библиотеки, но для новой области может потребоваться много времени и усилий, чтобы найти правильный выбор. Библиотеки .Net имеют тенденцию быть «чище» и более последовательны, ИМХО, возможно, из-за того, как фреймворк начинался. Несомненно, он пойдет по тому же пути, что и Java, когда станет доступно больше.

Basic 04.06.2014 21:52

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 намного быстрее, даже если время выполнения совпадает.

Justin 04.03.2012 13:59

Другие вопросы по теме