Сравнение C # и Java - PullRequest
       72

Сравнение C # и Java

6 голосов
/ 19 сентября 2008

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

Каковы относительные достоинства и недостатки C # и Java? Это включает в себя все, от языковой структуры до доступных IDE и серверного программного обеспечения.

Ответы [ 8 ]

8 голосов
/ 19 сентября 2008

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

Поэтому я постараюсь перечислить как можно больше вещей, которые я могу вспомнить или которые уже были опубликованы, и отметить, у кого, на мой взгляд, есть преимущество:

  1. Разработка GUI (толстая или тонкая). C # в сочетании с .NET в настоящее время является лучшим выбором.
  2. Автоматическое связывание источника данных. C # имеет сильное лидерство с LINQ, также множество библиотек 3-й части также дает преимущество
  3. SQL-соединения. Java
  4. Auto-бокс. Оба языка предоставляют его, но C # Properties обеспечивает его лучший дизайн в отношении сеттеров и геттеров
  5. Примечание / Атрибуты. Атрибуты C # - более сильная и понятная реализация
  6. Управление памятью - Java VM во всех проведенных мною тестировании намного превосходит CLR
  7. Сборка мусора - Java здесь явный победитель. Неуправляемый код с платформой C # / .NET превращает это в кошмар, особенно при работе с графическим интерфейсом.
  8. Дженерики - я полагаю, что два языка здесь в основном связаны ... Я видел хорошие моменты, показывающие, что обе стороны лучше. Мне кажется, что Java лучше, но нет логики, чтобы основывать ее. Кроме того, я использовал дженерики C # ALLOT и дженерики Java только несколько раз ...
  9. Перечисления. Java полностью, C # реализация, насколько мне известно, не работает.
  10. XML - здесь. Возможности XML и сериализации, которые вы получаете с .NET, изначально превосходят то, что вы получаете с помощью eclipse / Java из коробки. Но есть много библиотек для обоих продуктов, чтобы помочь с XML ... Я пробовал несколько и никогда не был доволен ни одним из них. Я придерживался нативного C # XML в сочетании с некоторыми собственными библиотеками, которые я создал самостоятельно, и я к этому привык, так что трудно дать этому глубокое сравнение на данном этапе ...
  11. IDE - Eclipse лучше, чем Visual Studio, для работы без графического интерфейса. Так что Java выигрывает для не-GUI, а Visual Studio - для GUI ...

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

4 голосов
/ 19 сентября 2008

Одно отличие состоит в том, что C # может лучше работать с Windows. Недостатком этого является то, что он не работает ни с чем , но Windows (кроме, может быть, с Mono , который я не пробовал).

2 голосов
/ 19 сентября 2008

C # имеет лучший графический интерфейс с WPF, то, что у Java традиционно было плохо.

C # имеет LINQ, что очень хорошо.

В остальном 2 практически одинаковы - как вы думаете, они так быстро создали такую ​​большую библиотеку классов, когда впервые появился .NET? С тех пор все немного изменилось, но по сути C # можно было бы назвать MS-Java.

2 голосов
/ 19 сентября 2008

Еще одна вещь, которую стоит иметь в виду, вы также можете сравнить их соответствующие виртуальные машины.

Сравнение CLR и виртуальной машины Java предоставит вам другой способ различения между ними.

Например, при интенсивной многопоточности Java VM имеет более сильную модель памяти, чем CLR (эквивалент .NET).

1 голос
/ 19 сентября 2008

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

C # (и другие языки .Net, я полагаю) позволяют мне создавать программы, которые идеально сочетаются с Windows, и это меня радует.

Конечно, это спорный вопрос, если мы не говорим о разработке приложения на рабочем столе ... * * 1005

0 голосов
/ 05 июля 2015

Как сказала Элизабет Баррет Браунинг: как я тебя люблю? Позвольте мне сосчитать пути.

Прошу прощения за качественный (по сравнению с количественным) аспект этого поста.

Сравнение этих двух языков (и связанных с ними времен выполнения) очень сложно. Сравнения могут проводиться на многих уровнях и фокусироваться на многих различных аспектах (таких как разработка графического интерфейса, упомянутых в предыдущих статьях). Предпочтение между ними часто личное, а не только техническое.

C # изначально был основан на Java (и CLR на JRE), но, IMHO, в целом вышел за пределы Java по своим возможностям, выразительности и, возможно, полезности. Контролируемая одной компанией (а не комитетом), C # может двигаться вперед быстрее, чем Java. Различия между выпусками и выпусками с Java часто играют наверстывать упущенное (например, недавнее добавление лямбда-выражений в Java, которое долгое время было в C #). Ни один из языков не является супернабором другого во всех аспектах, поскольку оба имеют особенности (и недостатки), которых нет у других.

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

Если вы чувствуете необходимость выбирать между ними, ваш лучший критерий - это ваша платформа интересов. Если вся ваша работа будет выполняться только в системах Windows, IMHO, C # / CLR, с его более богатым языком и способностью напрямую взаимодействовать с нативными API-интерфейсами Windows, является явным победителем. Если вам нужна межсистемная переносимость, то Java / JRE - явный победитель.

PS. Если вам нужно больше навыков переносимых рабочих мест, то IMHO Java также победитель.

0 голосов
/ 19 сентября 2008

Вы сказали:

типы перечислений, которые являются полноценными классами, а не просто целыми числами со свежим слоем краски

Вы действительно смотрели на результат? Если вы скомпилируете приложение с перечислениями в in, а затем прочитаете CIL, вы увидите, что перечисление на самом деле является запечатанным классом, производным от System.Enum.

Такие инструменты, как рефлектор Red-Gate (ранее Lutz Roeder's), разбирают его как можно ближе к оригинальному C #, поэтому может быть не так легко увидеть, что на самом деле происходит под крышкой.

0 голосов
/ 19 сентября 2008

Java:

  • Перечисления в Java пинают столько задниц, что даже не смешно.
  • Java поддерживает общую дисперсию

C #:

  • C # больше не ограничивается Windows (Mono).
  • Отсутствие ключевого слова internal в Java вызывает разочарование.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...