2009-02-08 4 views
3

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

Я знаю следующие преимущества Java:

  • Java заезды везде ",
  • Java имеет поддержку units and measures
  • (якобы) лучше латентности Java
  • J2EE (I не думайте, что есть эквивалент в .Net)
  • различный подход к дженерикам (с нечетными круговыми определениями, такими как «Enum>», см. Ken Arnold)

Что относительно дженериков - есть ли изящные примеры Java, которые не могут быть представлены на C#? Или другие API или библиотеки?

Спасибо,

Иржи

P.S. некоторые общие ссылки:

+0

Я не возражаю против вопросов типа «какие различия между дженериками в Java и C#», но вопросы, которые предполагают качественное различие, кажутся попрошайничеством для аргумента. Мое предпочтение было бы в том, чтобы переписать этот вопрос менее провокационным образом. – tvanfosson

+0

Мне нравятся анонимные классы Java ... например, для посетителей. –

+0

Java-клонирование уничтожает .NET, это единственный плюс, о котором я могу думать. –

ответ

7

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

В другом месте, где Java «выигрывает», ИМО является его поддержкой перечислений. Переменные перечисления C# в основном называются числами. Java намного ориентирована на объекты. Аналогичным эффектом может быть в основном, достигнутый в C# с использованием вложенных классов, но поддержка рамок (эквивалент EnumSet) и поддержка переключателей приветствуются.

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

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

+0

перечисления ... конечно, они дали себе множество вариантов, чтобы размышлять над этой конкретной проблемой, не так ли? :) – U62

-1

Что означает «лучшая латентность» даже в этом контексте?

Кроме этого, я согласен с Джоном Скитом. В целом, C# - светлее, чем Java. В Java есть несколько трюков, которые являются опрятными (например, перечислениями), но они являются скорее исключением, а не правилом.

+0

Спасибо за ответы, ребята - я просто googling EnumSets ... В разделе «latency» я имел в виду скорость ответа на входящий запрос (например, HTTP-запрос по локальной сети) -jiri – 2009-02-10 22:28:56

+0

Это не имеет ничего общего с язык. В сетях задержка измеряется в миллисекундах. В коде он измеряется в наносекундах или не более чем через микросекунды. Любой язык, о котором вы хотите упомянуть, может обрабатывать HTTP-запрос за меньшее время, чем требуется, чтобы ваша сетевая карта получала пакет. – jalf

Смежные вопросы