Если у вас есть многолетний опыт работы с Java и многолетний опыт работы с C # и .NET, я бы оценил ваше мнение о различиях в производительности разработки программного обеспечения между этими двумя средами. Один из наших клиентов рассматривает возможность замены существующего программного решения. По мере замены потребуется ок. Работа в течение 10–15 человеко-лет, выбор Java или .NET на основе различий в производительности между ними, может существенно повлиять на требуемые инвестиции и время выхода на рынок.
Не могли бы вы предоставить нам информацию о различиях в производительности разработки программного обеспечения между Java и C # /. NET? Я бы предпочел получить ответ следующим образом:
Мой опыт основан на X-летнем опыте работы с Java и X-летнем опыте работы с C # / .NET. Java на X% более продуктивна, чем C # .NET или C # /. NET на X% продуктивнее, чем Java, если принять во внимание следующее.
источник
Ответы:
Мой опыт основан на 10-летнем опыте работы с Java и 3-летнем опыте работы с C # / .NET. Java на 0% более продуктивна, чем C # .NET. Это основано на написании внутренних сервисных приложений.
C # / .NET может быть на 5% более производительным, чем Java, для написания пользовательских приложений. Но тогда я не делал этого почти 5 лет на Java, и новый редактор пользовательского интерфейса Netbeans мог бы закрыть этот пробел.
Вы хотите увеличить производительность? CI (в идеале непрерывная доставка) и автоматизированные тесты. Продуктивность, достигнутая выбором языка / платформы / IDE на любом основном языке / платформе / IDE, довольно мала.
источник
Я работаю над проектами в колледже и в реальном мире с использованием Java и C # уже 5 лет.
Руки вниз Мне больше нравится использовать C # из-за его краткости и использования синтаксического сахара. Вы редко найдете
Factory.GetFactory(OfFactory.GetFactory(Factory));
код в C #. Проще читать и следовать, потому что синтаксис меньше и лаконичнее.Какой из них вы будете более продуктивным? Это зависит от типа проекта.
Вы разрабатываете настольное приложение для Windows? Тогда C # - лучший выбор, потому что это мощная среда IDE Visual Studio, а .NET Framework делает создание графического интерфейса очень простым.
Честно говоря, я рад, что я больше не использую Java (прошло уже больше года), потому что я помню, насколько ужасно многословным должен был быть код. Быстрый пример - обработка исключений. Если ваш код может выдать исключение, вы должны учитывать каждое возможное исключение. Это быстро превращает тривиальный код в 20 строк + чудовище.
C # не так сложен, если вы решите оставить свой код открытым, и вам решать как разработчику.
C # также сделал много дополнений в течение года, которые делают его радостью от использования. Лямбды, делегаты, анонимная функция (а-ля Ruby), много хороших мелочей, которые вы найдете в процессе работы.
источник
If your code can throw an exception you must account for every single exception possible.
Я не вижу обратной стороны этого, по крайней мере, это повышает осведомленность о проблемах ... хотя, может быть, только я.Я много работал с Java (с 1996 года) и .Net (с 2002 года), а в 2010 году принял решение использовать Java в своей компании, исходя из того, что это будет наиболее продуктивная среда в целом .
Обратите внимание, что я определяю продуктивность разработки программного обеспечения в терминах стоимости бизнеса, созданной на единицу стоимости / ресурса, на сквозной основе (т. Е. Вы должны смотреть на продуктивность всего жизненного цикла программного обеспечения, включая развертывание и обслуживание, а не только на начальное кодирование !!).
Вот ключевые элементы моих рассуждений:
object.getSomeProperty()
напишутobject.SomeProperty
или используют анонимный внутренний класс против лямбды, просто не будет иметь никакого существенного значения для конкурентного преимущества вашей компании ....Так что, хотя было много сложных соображений, в целом я очень доволен выбором перехода на Java и сделал бы такой же выбор сегодня (по состоянию на начало 2012 года).
Вероятно, единственный случай, когда я бы пошел с .Net, был бы, если бы я разрабатывал настольное приложение только для Windows (где преимущество .Net явно огромно).
источник
У меня есть: Java 10 лет, C # 8 лет
Я голосую за Java
источник
Ява: 5 лет (не непрерывно)
C #: 7 лет
Я не верю, что вы можете количественно оценить производительность таким образом. Это сильно зависит от конкретного разработчика и проекта. Используйте то, что знают ваши разработчики.
Изменить:
Давайте определим «типичное корпоративное приложение» как:
И Java, и C # могут это сделать. Дело не столько в языке, сколько в фреймворке / времени выполнения. Опять же, используйте то, что знают ваши разработчики. Они могут выучить новый язык и новую структуру, но на это нужно время. Это было бы верно для настольного приложения. Оба языка могут использоваться с многочисленными GUI-инструментами / библиотеками, но все они имеют разные подходы и принципы.
источник
У меня более 10 лет опыта работы с Java (начиная с версии 1.1!) И 7 лет опыта работы с .NET (в основном C #).
У вас есть очень правильное решение, но в основном вы должны попытаться разбить его на несколько сценариев:
Настольное приложение
Если вы разрабатываете настольное приложение, вы должны использовать основную платформу, с которой будете работать. Если платформа Microsoft использует .NET, то нет лучшего решения, чем платформа, разработанная самой компанией. Если это Linux или мультиплатформенный сценарий, рассмотрите Java или переходите на веб-решение.
Веб-приложение
Это очень трудное решение, потому что у каждого есть свои сильные и слабые стороны. Вот несколько из них:
C #
Сила: в настоящее время имеет больше возможностей для создания новых функций в язык и платформу / структуру. Все идет от одного поставщика, и, безусловно, это преимущество. Вы также можете использовать некоторые очень мощные компоненты, такие как DevExpress, например (Java не подходит даже для того, чтобы иметь что-то наподобие того, что команда DX собрала за эти годы, и это представляет собой огромный прирост производительности).
Слабость: для корпоративных приложений .NET не так развита, как Java. У вас не так много поставщиков, создающих корпоративное программное обеспечение в .NET, как у вас для Java.
Джава
Сила: более зрелая (уже объясненная) и имеющая большое сообщество с несколькими отличными проектами с открытым исходным кодом, которые могут помочь. Несколько так называемых проектов с открытым исходным кодом .NET на самом деле являются просто копией проектов из Java.
Слабость: Oracle владеет Java (я знаю, а не JCP), и это определенно риск, который следует учитывать. Их намерения не очень ясны, и мне лично не нравится, где сейчас движется язык (я знаю, что многие разработчики Java имеют схожие проблемы).
Приложение на стороне сервера
Это в основном те же аргументы, что и для веб-приложений, но, поскольку вам не нужно слишком беспокоиться о пользовательском интерфейсе, Java в этом случае становится сильнее. Но опять же, если платформа в основном Windows .NET может быть лучшим выбором.
Общие соображения
В целом, на мой взгляд, .NET имеет преимущество главным образом из-за тесной интеграции Visual Studio 2010 (предоставляет лучшую IDE), MS SQL, Entity Framework, IIS и так далее. Все это представляет собой огромный рост производительности, и у меня есть огромный опыт, подтверждающий это. Кроме того, я работаю в основном с разработчиками Java, которые обратились к .NET, и они придерживаются того же мнения.
Я думаю, что это также хороший момент, что Microsoft сильнее, чем когда-либо, что означает, что .NET будет там некоторое время. Поэтому, глядя в будущее на 10-15 лет, я чувствую себя более защищенным с .NET, чем с Java.
источник
Я недавно окончила университет, но у меня был коммерческий опыт работы с обоими языками, что дает в общей сложности около 3 лет Java и 4 года C # .Net (примечание .net означает, что вы можете использовать C #, VB.net, C ++ CLI, и J # и F #).
Сейчас я констатирую, что мое общее предпочтение - C # по сравнению с Java, хотя оба имеют схожий синтаксис, мне нравится мощь .Net Framework по сравнению с кросс-совместимостью Java. Вы должны сильно подумать, что нужно строить? Это просто настольное приложение? Вам нужно подключение к другим клиентам, таким как другие настольные компьютеры, мобильные телефоны, веб-сайты?
** Обсуждение IDE потеряно, так как вопрос в Stackoverflow был закрыт. В конце концов, в Java было много бесплатных IDE, но они, на мой взгляд, не сравниваются с мощью и аддонами визуальной студии. Но обратите внимание, Visual Studio стоит дороже за лицензию.
Вам нужно посмотреть, какими навыками уже обладает ваша команда разработчиков, так как это окажет первоначальное влияние. Что быстрее, ни здесь, ни там не дано опытному пользователю в любом языке / фреймворке. Что, я думаю, приводит к тому, что вы не должны рассматривать язык, так как язык - это просто синтаксис, а инструменты и структура, которые использует язык.
источник
Схожесть синтаксиса и инструментов приводит к тому, что прирост производительности от C # или java не настолько велик, чтобы существенно изменить ваш рабочий проект на 10 - 15 человеко-лет. Я бы более внимательно посмотрел на такие вопросы, как:
Я хотел бы предположить, что, на мой взгляд, предпосылка вопроса о том, что «различия в производительности между (C # и Java) могут значительно повлиять на требуемые инвестиции и время выхода на рынок», не соответствует действительности. Я не сомневаюсь, что будет какая-то разница, но она не будет существенной.
источник
Я переключался между Java и .NET, начиная с Java 1.2 до 1.6 и .NET 1 до 4.0, за более чем 10-летний профессиональный опыт работы (до этого был программистом на C / C ++).
Когда-то, как и в .NET 2.0, я бы сказал, что Java и C # будут примерно одинаковыми, особенно для серверной работы. Языковые конструкции были еще очень похожи. .NET, вероятно, получил бы преимущество в программировании пользовательского интерфейса рабочего стола из-за дизайнера WinForms в Visual Studio, а Java получил бы преимущество в Web / Server, в первую очередь потому, что вы не были привязаны к IIS.
Теперь, перейдя к .NET 3.5 и 4, я даю преимущество в производительности .NET, просто. Это, в первую очередь, на мой взгляд, потому что .NET является гораздо более быстро развивающимся языком, поскольку MS может относительно быстро принимать языковые решения, в отличие от проталкивания изменений в политике JCP. Большие улучшения - это
var
ключевое слово, полный набор Linq, методы расширения, оператор объединения нулей??
,dynamic
и , вероятно, гораздо более большой материал , который действительно повышает производительность труда.Тем не менее, «самый продуктивный» язык для проекта - почти всегда тот, который наиболее удобен и опытен для большинства разработчиков. Кривая обучения всегда самая большая убийца производительности.
источник
Одна вещь, которую я заметил, - это то, что многие магазины C # / .NET придерживаются позиции «не изобретено здесь» и запрещают все сторонние библиотеки / библиотеки с открытым исходным кодом, в то время как многие магазины Java более охотно используют библиотеки с открытым исходным кодом. Также, похоже, для Java доступно больше библиотек. Даже если вы посмотрите на некоторые классные сторонние библиотеки в .NET, например, NHibernate, NPOI, Spring.NET и т. Д., Они являются портами библиотек Java и, следовательно, находятся за ними. Похоже, что многие из этих нововведений были первыми в Java, а затем был создан порт .NET. С точки зрения библиотеки, безусловно, Java выигрывает с точки зрения новых инновационных открытий.
Тем не менее, Microsoft делает некоторые официальные библиотеки, например ASP MVC, LINQ и т. Д. Но часто, как и в случае с ASP MVC, сторонние библиотеки, такие как Struts, Spring MVC и т. Д., Уже отсутствовали для Java, и Microsoft опаздывала на веб-парадигму контроллера представления модели.
Конечно, многие из этих библиотек экономят массу времени и повышают производительность. Базовый язык для базового языка C # и Java не так уж отличается, и для меня это слишком близко, чтобы называть. Бросьте в армию сторонних библиотек, и масштаб наверняка сместится в сторону Java. Все еще с открытым магазином много этого наклона уравновешивается. Просто у многих .NET-магазинов здесь нет изобретательности, а у многих Java-магазинов есть все, что нужно для выполнения работы ... Это верно даже для компании, в которой я работаю, команда .NET не получает много (из-за управления), в то время как у команды Java есть много утвержденных сторонних библиотек / утилит. Кроме того, в .NET гораздо больше полезного не является бесплатным (например, до NPOI, если вы хотели работать с офисными документами Microsoft, большинство решений [не считая автоматизации офиса] не были бесплатными.
источник
Я часто задавал себе этот вопрос: что лучше? C # или Java?
Я дам вам совет, и этот совет является заключением моего исследования: ни один из них не лучше, только язык, который вы хорошо знаете, и с которым вы можете делать много интересных приложений, является лучшим.
Узнайте, как программировать, а затем много тренируйтесь на одном языке, и когда вы станете совершенствоваться в написании кода на нем, подумайте о других языках и, поверьте мне, вы выучите другие языки как кусок пирога.
источник