Java против C#

Модератор: Absurd

Ответить
Alex_bust
Сообщения: 1
Зарегистрирован: 02 апр 2009, 12:22

Это вечная делема кто лучше и чем...
А какие есть вообще преимущества java перед с# кроме как кроссплатформенность и бесплатность использования? :confused:
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Прошу прощения, а какие преимущества есть у C# ?

1. Мне кажется, что Java сильнее своей серверной стороной - J2EE, маппингом баз данный в entity beans, своими jsp sever pages.

2. Громадным колличеством библиотек (что обусловлено бесплатностью и популярностью языка) - тот же именитый Hibernate, но не забываем и о SWT (графическая библиотека от Eclipse) для юзер-аппликейшнов.

3. Отдельным пунктом хотелось бы упомянуть "Look And Feel". Как обстоят дела с этим у C# ? Не знаю, может и есть, но в Java это выглядит просто: меняешь стандартный LAF на свой и по одному переписываешь UI (user interface) классы, для желаемого отображения и взаимодействия с пользователем всех графических обьектов.

4. А если уж смотреть в ядро языка - скажу сразу, когда на C# писали, я только сидел рядом, так что о нём знаю почти по наслышке, но!

Как насчёт такого кода:

[syntax="Java"]public abstract class Test {
protected Test() {
// this class and its methods are performance critical
// observed speedup with this call on Hotspot
Compiler.compileClass(getClass());
}
}[/syntax]

в данном случае не важно, зачем это нужно, вопрос в другом: C# может перекомпилировать себя на ходу?

Или тот же "java.lang.reflect" пакет, который позволяет создавать невероятнейшие конструкции на лету - есть в C# этому аналог?

5. Annotations - сам ещё не до конца понимаю их. То есть я знаю, как ими пользоваться, и размышляю сейчас над тем, чтобы их создавать.

Пример - такая себе @XmlRootElement аннотация над классом, которая программиста этого класса, по сути, ни к чему не обязывает и никак особо ему не мешает, позволит программисту в другом пакете (о котором первый может и не знать) имплементировать Save/Load этого класса.

А чудесная анотация @Override, при помощи которой можно заставить компилятор "вылетать", в случае изменения родителей в обьектной иерархии (так что метод никогда бы и не вызвался, и пошла бы программа с багом в серию, если бы Override не подсказал) ? /* да, да ... тесты отловили бы .... maybe ;-) */

---

Единственное преимущество у C#, которое мне известно, это то, что пользовательский аппликейшн можно скомпилировать в бинарный EXE-шник и отдавать заказчику один маленьким файлом,

в то время как java application приходится сопровождать большой JRE библиотекой, и хотя есть программы, которые могли бы превратить это всё в бинарный код под заточеную OS/архитектуру, но лицензия не позволяет этого делать.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Очень жаль, что нет ответов приверженцев C#.
Ибо на носу проект именно на нём (java 100% не подойдёт) и хотелось бы узнать, что же это за зверь.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Наверно лучше самому один раз увидеть, чем сто раз услышать.
Только мне кажется, что такое сравнение не совсем уместно. Какой смысл сравнивать скажем пассажирский автобус и колёсный трактор? Это разные категории транспортных средств и задачи у них, соответственно разные. Хотя оба вроде как относятся к механическим средствам передвижения.
Средства разработки программного обеспечения тоже могут относиться к разным категориям, тогда их сравнивать можно лишь в контексте поставленной задачи.
Единственное преимущество у C#, которое мне известно, это то, что пользовательский аппликейшн можно скомпилировать в бинарный EXE-шник и отдавать заказчику один маленьким файлом, в то время как java application приходится сопровождать большой JRE библиотекой
Это ты наверно путаешь с С++.
C# и правда создаёт небольшие ЕХЕ-модули, но для их работы нужно установить на компьютере пользователя .NET Framework, который весит побольше, чем Java Runtime.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Говоря про маленький exe файлик, человек скорее всего имел ввиду native compilation. Нативная компиляция позволяет получить ускорение за счёт отказа от использования интерпретатора команд, но не избавляет от необходимости иметь на компьютере .NET framework. В этом отношении никаких плюсов по сравнению с Java, так как в ней также есть native compilation, которая имеет точно такие же ограничения.

Главная сила .NET в скорости и качестве разработки UI. По сравнению с возможностями разработки UI в .NET, Java выглядит просто убого и спорить с этим очень сложно. Нужно быть настоящим фанатиком Java, чтобы писать UI на том же swing.

В то же время это не отменяет огромного количества плюсов Java, как-то: неимоверное количество библиотек, качественно написанные Java машины для не-Win платформ и т.д.

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

А вообще тему сразу в "Флейм" :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

При этом ещё нужно не забывать про возможности самой среды разработки. По набору инструментальных и функциональных возможностей с Visual Studuio можно сравнить разве что Delphi. Тем более что в одном решении (solution) Visual Studio может быть реализовано несколько проектов на разных языках программирования. Похожими возможностями обладает C++ Builder, где в одном проекте могут быть использованы файлы с кодом на С/C++ и ObjectPascal. Ну а про электронную документацию MSDN и говорить нечего.
Такой обширной справочной информации больше нет ни в одном другом средстве разработки.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Не совсем так, Витя. Если MSDN ещё кое-как можно назвать более качественной документацией (хотя лидерство не подавляющее), то средства разработки как раз сильнее в Java. Eclipse по своим возможностям выше на голову всех вместе взятых мелкомягких студий и редакторов от Borland. Таких средств для рефакторинга кода, как в Eclipse, нет больше нигде.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
XPert
Сообщения: 1
Зарегистрирован: 23 ноя 2009, 09:14

Oscar писал(а):Прошу прощения, а какие преимущества есть у C# ?
Oscar писал(а):Очень жаль, что нет ответов приверженцев C#.
Ибо на носу проект именно на нём (java 100% не подойдёт)
Очень интересные заявления делаете, товарисч. Даже зарегистрироваться не поленился. С одной стороны вы ставите под сомнение превосходство C#, перечисляя кучу достоинств Java, но тут же выдаете, что планируется проект, для которого Java 100% не подойдет. Так и озвучили бы причины, по которым хваленная вами Ява не подходит?
Rick001
Сообщения: 10
Зарегистрирован: 23 янв 2010, 21:08
Контактная информация:

Доброго времени суток. Очень часто встречаю подобный холивар. Полагаю, что он возможен в случае, если человек знаком с 1 технологией и практически не имеет представления с другой. Дальше дело только фантазии. Например, такая вещь как аннотация @XmlRootElement не является серьезным аргументом в пользу всей Java. К тому же, у .NET для подобного есть SerializableAttribute, если я правильно понял смысл аннотации.
По моему мнению, с появлением .NET 3.0 (и позже 3.5) Java и .NET примерно сравнялись. У каждого есть что-то свое, но это не значит, что одно хуже другого.
PS: Все-таки, стоит проводить сравнения на возможности того или иного архитектурного ршения, а не на таких мелочах.
Ответить