Подтвердить что ты не робот

Какими функциями должна обладать Java 7, чтобы поощрять переход с С#?

С# имеет хороший импульс на данный момент. Каковы функции, которые вам нужны для переключения (или возврата) на Java?

Было бы также полезно, если бы пользователи опубликовали обходные пути для этих версий Java, например. Nullables обернут вокруг пользовательских классов, чтобы сделать это гораздо более интересной вики.

4b9b3361

Ответ 1

Как разработчик .NET/С#, это недостающие функции, которые меня раздражают. Этот список не имеет особого порядка - так же, как мысли приходят на ум:

  • Библиотека Java слишком мала. Для обычных вещей мне приходится выбирать между 5 конкурирующими продуктами с открытым исходным кодом, потому что в базовой библиотеке не так много.
  • Это объектно-ориентированный язык программирования? Почему, черт возьми, примитивные типы не наследуются от "объекта"?
  • Указатели
  • Лямбда
  • Затворы
  • Частичные классы и в меньшей степени частичные методы.
  • Реальная поддержка дженериков
  • Использование операторов и Dispose - для меня это был настоящий WTF. Вы действительно должны явно закрывать соединения в блоках try/catch. Бедные Java-парни!
  • Возврат дохода будет приятным
  • Неподписанные целые числа - снова WTF? Я должен использовать типы номеров больше, чем мне нужно для каких целей снова?
  • В Java вы можете вернуться из финальных блоков try/catch. Сотрудник несколько раз сбивал меня с ума, вводя ошибку таким образом. Это поведение должно быть запрещено, как на С#.

Мне редко приходится использовать Java, и когда я это делаю, у меня есть все виды WTF.

Изменить: я удалил для каждого комментария на основе того, что он больше не является отсутствующей функцией Java с 1.5.

Ответ 2

По моему опыту, Java против .Net является скорее бизнес-решением, чем техническим. Магазины с опытом работы с MS имеют тенденцию к .Net и магазинам с тенденцией Java-опыта к Java и OSS. Я видел мало свидетельств переключения людей на основе языковых особенностей. С другой стороны, я видел, как магазины сильно наклонялись к одной платформе b/c одного или двух ключевых сотрудников, которых они хотели нанять, обладая знаниями в этой области.

Ответ 3

в определенном порядке:

  • указатели на функции (делегаты); все проходящие интерфейсы вокруг вещи глупы.
  • реальные дженерики; какой смысл иметь тип безопасных дженериков, если компилятор не может даже удерживать метаданные посредством компиляции единицы?
  • скорость ui; все самонастраивающиеся ui-библиотеки очень медленны по сравнению с собственными средствами управления, обернутыми в "управляемые" библиотеки, не говоря уже о том, что автоматически нарисованный ui файл ui - это аппаратное ускорение через direct3d
  • Конструкция yield return; С# настолько удобен для пользователя, что он сумасшедший.
  • перегрузка оператора
  • LINQ; просто из-за его употребления
  • свойства; более синтаксический сахар, которым вы зависите от
  • лучше взаимодействовать с собственным кодом; С# p/invoke и встроенная поддержка com делают interop настолько легким по сравнению с jni -.-
  • типы значений первого класса; это идет рука об руку с реальными генериками, имея общие списки, которые никогда не вставляются/не загружаются в С#, являются частью того, почему С# быстрее, чем java.

и я бы сказал, что это самый важный из них:

  • отзывчивый, информативный отладчик; сейчас ничто не может приблизиться к визуальной студии.

Ответ 4

Просто уходя с манжеты, я думаю, что самая большая вещь, на которую нуждается Java 7, все жалуются на отсутствие закрытий.

Ответ 5

Я программист на С#, и около года назад мне пришлось участвовать в разработке приложения на Java. Я пропустил больше всего:

  • Visual Studio (Eclipse - это хорошо, но VS - VS, особенно Team Edition).
  • Сравнение строк с ==
  • Свойства
  • Основные типы как объекты первого класса (например, не "int" типа vs "Integer" класс)
  • Анонимные методы (обходной путь может создаваться с использованием анонимных классов но это не то же самое)
  • LINQ

И была одна единственная функция Java, которую я пропустил, когда я вернулся к С#: явное объявление исключения в сигнатурах методов.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я говорю о несколько старом проекте, я не знаю, присутствуют ли некоторые из этих функций в текущих версиях Java.

Ответ 6

Менее отвратительные инструменты синтаксического анализа XML и манипуляции. Выполнение чего-либо с XML в Java отстой.

Ответ 7

Я также дам один ответ наоборот. С# нужна реализация перечисления, такая как Java. Java перечисляет рок!

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

Ответ 8

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

Ответ 9

Momentum. Я сделал много разработок на обеих платформах. Мне больше нравится среда .NET из-за того, как развивается язык С#. Развитие Java, по-видимому, является скорее реакцией на С#, чем реальным видением. Поэтому я считаю, что лучше всего для Java - игнорировать .NET и создавать что-то новое.

Ответ 10

Еще один, который мне нужен, - это эквивалент LINQ. Я заметил, насколько я на самом деле зависеть от возможности использовать LINQ, когда я пытался провести конкурс лучших кодеров и понял, что они поддерживают только .NET 2.0. Как только вы привыкнете к использованию LINQ для решения проблемы и сделаете ее частью своего обычного словаря программирования, очень трудно не видеть проблем в этом свете. Это сродни использованию дженериков, а затем неспособности использовать общий.

Ответ 11

Я думаю, что выбор между Java и С# - это не вопрос особенностей языка, а вопрос выбора платформы и экосистемы.

Итак, я сомневаюсь, что любой новый синтаксический сахар в Java или С# может привести к значительному количеству переключателей между платформами.

В конце концов, мир JVM имеет Scala, и многие разработчики, чувствительные к языку, каким-то образом используют его.

Ответ 12

Я думаю, вам стоит подумать о том, чтобы развернуть этот святой от "Java vs С#" до "JVM vs CLR", поскольку JVM (в последние годы - в основном) - не только Java, но и Scala, Groovy Clojure, JRuby, Jython и десяток JVM-языков.

Ответ 13

Свойства

Анонимные объекты тоже приятные

Ответ 14

Продолжение, например Scala (помимо остальных) тоже было бы полезно для разработки агентов.

Ответ 15

Поддержка запуска над CLR (и, наоборот, для JVM) без IKVM и других таких слоев.

Ответ 16

Давайте поясним, что нам нужно различать Java и JVM. Я фактически переключился с С# на Java, но я признаю, что это было не из-за особенностей Java! По моему очень скромному мнению, С# - лучший язык, а CLR - это, пожалуй, более элегантная виртуальная машина. Однако даже с помощью Mono вы не пишете приложения, которые работают везде!

Я думаю, что самым большим аргументом для Java является удивительное сообщество. Именно здесь разрабатывается новейшая технология, а не Sun (теперь Oracle). Сообщество Java постоянно является лидером в разработке корпоративных технологий. Например, сколько времени потребовалось Microsoft для предоставления DI Framework? Где AOP в .NET? Когда я запускаю проект .NET, мой фонд - это Spring.NET, порт Java. Когда мне нужно ORM, это NHibernate. Нужна структура тестирования? NUnit. Я понимаю, что существуют другие OSS-проекты для платформы .NET, но их количество и поддержка от Microsoft смешны по сравнению с сообществом Java.

Ответ 17

Нативный "десятичный" тип для Java, заменяющий класс BigDecimal, будет приятным. Но Java-потокобезопасные коллекции приятны.

Возможно, вопрос заключается не столько в том, что Java 7 должен убедить разработчиков использовать его, сколько в том, что заставляет разработчиков переходить с языка Java/на сервер на другой рабочий стол С#, ориентированный только на Windows.

Для большинства разработчиков язык не составит труда выбрать Java или С#. Я развиваюсь на Java, но Linq не занимал много времени, чтобы понять и использовать.

Я думаю, что выбор Java или С# зависит от того, что мотивирует вас лично - возможно, деньги? в этом случае любой язык будет делать, имеют ли они определенные функции или нет.

Ste

Ответ 18

Они должны начинаться с фиксации классов, связанных с календарем/датой, даже это кажется слишком большим спросом.

Ответ 19

Простой способ сопоставить значения в вашей модели с пользовательским интерфейсом (например, bind в Java/FX)

Ответ 20

Я думаю, что это зависит от решений по бизнесу, а не от самих языков. Но я действительно очень люблю С# лямбда и карри: D: D

http://mikeomatic.net/?p=82

Ответ 21

карта ({codeblock}), которая запускает что-либо итерабельное, будет приятной. И фильтр тоже. И возможность легко возвращать несколько значений из метода.

(a,b,c) = getThreeValues();

(назначит отдельные переменные a, b и c).

На самом деле я просто думаю, что они должны иметь Haskell в качестве поддерживаемого языка сценариев на JVM: D

Ответ 22

с другой стороны, имеет .net получили открытые проекты предприятия, такие как Terracotta (полуторный), Infinispan, Compass? нет. ncache (commerical), lucene.net далеко позади них. Особенно Terracotta уникальна, она может улучшить некоторые из ваших приложений x100, она просто идеальна и бесплатна (разделение является коммерческим). Если мы реализуем приложение с высокой нагрузкой в ​​обоих .net с чем-либо и с java с терракотой + спящий режим + теракота-гибернайт-интеграция, приложение java, вероятно, будет намного более реалистичным, чем .NET. Есть несколько портов для .net, таких как nhibernate, log4net, lucene.net, но все они пытаются поймать Java-версии. И структура сущностей - это катастрофа, они должны начинаться с nhibernate в качестве базы или получать от них некоторые уроки.

.net работает только над окнами (моно - далеко от предприятия, нет ни одного предприятия, использующего его), сколько денег потратит myspace.com на свои 4000 лицензий на веб-сервер Windows? 1 миллион?

Вы не можете установить простой плагин для VS (и не можете делать другие вещи), если не покупаете профессиональное издание,

Некоторые типы экземпляров Windows в веб-сервисах amazon составляют почти x2 цены на linux.

если вы посмотрите на количество проектов java-проекта ohloh.net с открытым исходным кодом (с инструментами сравнения языков), вы увидите, что java имеет x5 больше объема, чем С#.

также Java имеет долю %20 во всем мире, в то время как С# имеет% 4.x(источник: tiobe.com)

Посмотрите на верхние веб-сайты; только microsoft и myspace используют .net. google, amazon, ebay, linkedin, alibaba, twitter (переключается на scala из рельсов)... многие из них используют java, а многие другие используют php, ruby ​​(facebook, yahoo,..)

Как язык Java намного отстает от С#, но scala (работает на jvm) так же хорош, как и С#, и его производительность почти такая же, как у java, а также может использовать все jdk и другой java-код в качестве его библиотеки.

Я не говорю, что java лучше, но я говорю, что java так же ценна, как и .net.

Ответ 23

linq, лямбда, анонимные типы

Ответ 24

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

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

С# имеет жесткую интеграцию с рабочим столом и множество полезных функций, которые делают более интересным программирование. Он имеет интеграцию .net. У этого есть указатели, замыкания и т.д., Которые делают его более трудным для n00bs (действительная языковая цель, следовательно, Basic), но более интересны для опытных программистов - я не убедил себя, что эти функции делают вас более продуктивными, но в некоторых ситуациях они могут сделайте свой код намного приятнее! Также, если вам нужны указатели, вам нужны указатели.

Я не вижу много перекрытия в целевых аудиториях. Зачем менять язык, чтобы привлекать программистов, когда здоровее для всей отрасли иметь два здоровых языка, каждый из которых нацелен на решение различных проблем, связанных с привлечением разных разработчиков?