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

Разве Java просто не поддерживается?

Я код С# весь день, но недавно сделал переход на Java для хобби, например, писать для платформ BlackBerry и Android. Все это время я предполагал, что с точки зрения языка Java и С# были близнецами друг от друга.

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

Неужели Java не поддерживается? Или я просто не использую его, поскольку он предназначен?

4b9b3361

Ответ 1

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

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

Я должен сказать, что предпочитаю писать С# в эти дни.

Ответ 2

Я бы сказал, да, Java не справился. Microsoft долго смотрела на Java (и на С++) и выяснила, какие у него были неприятности и какие функции отсутствовали, и зафиксировал многие из них в последующих выпусках С#.

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

Ответ 3

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

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

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

(И, конечно же, С# 4.0 тоже вовлекается в просмотр...)

Ответ 4

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

Java - один из старых языков. С# является относительно новым и может позволить себе более радикально измениться. Сравните с C и С++, которые не менялись в течение десятилетия.

Если вам действительно нужны новые языковые функции для вашего нового кода, попробуйте другой язык на основе JVM, который взаимодействует с Java (Groovy, Scala, Clojure).

Ответ 5

Я думаю, что часть вопроса является экономической. Не случайно Java появилась, когда Sun была ведущим игроком на рынке. Их акции находились на рекордно высоком уровне в марте 2000 года, чему способствовали все серверы, которые покупали компании dot-com.

Когда пузырь лопнул, и все эти серверы попали на рынок, потребовалось много времени, чтобы переработать избыток. Солнце не оправилось от этого. Увеличение мощности товарных серверов подорвало край, который когда-то имели чипы RISC специальности и Solaris. Вы не можете быть великой военной силой, если только вы не являетесь экономической державой; будучи новатором в этом масштабе, также требует денежных средств.

Они потеряли много талантов (например, Bill Joy), которые использовали для того, чтобы подпитывать компанию.

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

Я думаю, что темпы изменений для Java пострадали из-за всего этого.

Microsoft продолжает разрабатывать С#, поскольку выручка продолжает расти, Anders по-прежнему с ними, и они являются компанией-разработчиком программного обеспечения, которая в конечном итоге зарабатывает деньги на продукте. Вот почему они сейчас впереди.

Ответ 6

Действительно, вы правы. Но я думаю, что улучшение языковых улучшений значительно переместилось на новые языки JVM, такие как Groovy и Scala.

И, возможно, это хорошо, поскольку Java имеет значительную базу пользователей, что, к сожалению, вряд ли может согласиться с тем, какие функции, если они есть, и в какой форме должны быть добавлены к языку. Например, посмотрите этот poll. С другой стороны, Sun пообещала усовершенствования JVM, которые облегчили бы разработку и выполнение динамических JVM-языков, таких как invokedynamic инструкция, JSR 292.

Для меня это достойный компромисс.

Ответ 7

И это не к Swing против WPF, которые похожи на мел и икру.