Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Что выбрать .NET или Java


Автор: bezNika 28.3.2009, 15:52
          Добрый, ....!

Коротко о проекте:
     Комплекс для  математических вычислений (статистическое моделирование, графы). В будущем предполагается кластерная вычислительная система. Интерфейс пользователя - WEB. Планируется база данных пользователей, результатов вычислений.     

Ожидания:
     Хочется услышать предложения по технологии реализации такого проекта - "около Java" или "около .NET". Имеется ввиду оценка комплекса систем: language, database, WEB-services, WEB-nterface.


http://forum.vingrad.ru/forum/topic-253232/kw-net-java.html


Заранее всем благодарен!

Автор: Partizan 28.3.2009, 16:14
Цитата

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


С/С++

Добавлено через 2 минуты и 3 секунды
И на будущее:

Java - не тормозит  smile 

Автор: bezNika 28.3.2009, 16:48
Цитата

Цитата

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

 С/С++ 

Да, согласен для этой части проекта - вариант хороший. А что со второй? Удобно ли использовать  С/С++  для реализации WEB систем? Что на счет WEB-services?

Цитата

Java - не тормозит  smile

исходя из http://www.developers.org.ua/forum/topic/463 это не совсем так. Затраты времени на вызов виртуальных методов (таковые все методы Java) несколько больше, чем на вызов статических (такое возможно в C#). Верно ли это утверждение или нет?

Автор: Partizan 28.3.2009, 17:22
bezNika, "Java - не тормозит" - это иронично-саркастическое крылатое выражение =)

Автор: NightmareZ 28.3.2009, 19:20
Это вопрос религии.

Автор: Partizan 28.3.2009, 19:31
Цитата

Затраты времени на вызов виртуальных методов (таковые все методы Java) несколько больше, чем на вызов статических (такое возможно в C#). Верно ли это утверждение или нет?


bezNika,  затраты времени на вызов виртуальных методов всегда больше затрат на вызов невиртуальных...

Автор: Skynin 28.3.2009, 19:44
Цитата

Затраты времени на вызов виртуальных методов (таковые все методы Java) несколько больше, чем на вызов статических (такое возможно в C#)

http://www.ibm.com/developerworks/ru/library/j-jtp1029/index.html

Медленнее и вызов метода по интерфейсу.

НО!

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

В случае же больших мат. вычислений (перемножений каких-нить матриц, и т.п.) прибегают вообще к древнему структурном стилю - библиотеки из статик классов с статик методами, и методы эти, не как принятно в ООП - чем поменьше, а наоборот, с множеством условных переходов, вложенных циклов, потому что даже обычный ассемблерный call - становится затратным.

Так что не по тому критерию Вы пытаетесь сравнить.

Исходя из "Коротко о проекте" я бы так поставил вопрос:
1. Критична ли привязка к технологиям Microsoft - или не критична? Например: нужна ли лицензионная чистота используемого ПО, есть ли деньги на это. Кластерные системы - на чем дешевле строить, на инструментарии Microsoft или ином? и т.д.
1а. Расширение проекта возможно до какой степени: есть ли в планах собирать кластера на специализированных блэйд серверах, или из Sony Playstation (например как http://rptaha.blogspot.com/2008/09/sony-playstation-3.html)

2. Коллективы программистов пишущих на чем - более доступны, дешевы. Какие уже есть программисты?

P.S.
А "Java - тормозит" потому что:
4. "Дурная слава" держится дольше, и хоть давно уже 6ая версия джавы и JITкомпиляция в нативный код - "слава" Java 1.0 не забывается
4а "Java - интерпретатор" - а про ключики запуска подобные -Xcomp, -XX:CompileThreshold=ххх и не знают (см. выше п.4 о молве)
5. Судят не по замерам нужных алгоритмов в сравнении, а глядя на приложение с GUI на Swing'е (который действительно вальяжен в перерисовке, кроссплатформность даром не дается)


Автор: Vasay 28.3.2009, 20:10
language - ИМХО небольшой перевес в сторону C#.
 
database - Впринципе, тут особой разницы нет, оптимальным решением считаю  PostgreSQL - мощная и бесплатная БД.

WEB-services, WEB-nterface - по разнообразию и мощности фреймфорков j2EE вне конкуренции. 

Библиотека математического кода -  западные университеты любят  Java.  Не раз натыкался на реализации весьма редких вещей именно на java. 

Стоимость ПО - Среды разработки Java бесплатны, апликейшен сервера тоже и работают на бесплатном linux


Но в итоге 
Цитата

Коллективы программистов пишущих на чем - более доступны, дешевы. 

Будет решающим фактором.

Автор: Idsa 28.3.2009, 21:57
bezNika, прежде чем создавать подобную тему, стоило крепко погуглить. Вот, например, неплохая холиварная подборочка: http://www.veridicus.com/tummy/programming/java_vs_csharp.asp
Назвать ее актуальной не возьмусь. Так, например, там нахваливается Swing по сравнению с WinForms (и в этом я с авторами полностью согласен). Но ведь .NET'чики уже используют 3-й релиз WPF, с которым Swing и рядом не стоял. Кстати, в Java есть какой-нибудь графический фреймворк, сопоставимый с WPF?
Еще говорится:
Цитата

The remoting framework is advanced and well designed.

Видимо, в Java с этим делом все совсем плохо, ибо я бы не решился назвать "advanced and well designed". WCF - другое дело.
Да и про LINQ ни слова...

Как .NET'чик, работавший одно время с Java, могу сказать, что, имея за пазухой WCF, WPF, C# 3.0, LINQ и т. д. буду писать на Java только под дулом пистолета при необходимости кроссплатформенности.

Кстати, радуют interoperability-средства между .NET и Java. Так, понадобилось недавно использовать Java-проект под .NET - ikvm переварил его и выдал мне .NET-сборку без лишних вопросов.

Автор: Partizan 28.3.2009, 22:10
Цитата

Кстати, в Java есть какой-нибудь графический фреймворк, сопоставимый с WPF?


Idsa, Есть. JavaFX

Автор: Unlocker 28.3.2009, 22:12
Skynin, Vasay, по существу с вами согласен.
Для того, чтобы решить какие решения принимать, нужно составить смету требований и затрат.
1) Если охота связываться с мелкомягкими, то ASP.NET, ADO.NET, MS Windows, MS SQL Server
но это довольно дорого, тяжелые расчеты на винде я бы проводить не стал (ИМХО)
2) если решено делать под Linux, то J2EE, PostgreSQL
быстро (работает) и бесплатно, если все нормально настроить
3) Oracle + PL\SQL + Oracle Forms & Reports
платформа мощная и не привязанная к оси, позволяет создавать распределенные сервера и поддерживает J2EE
минус только в том, что бесплатно только некоммерческое использование основных релизов (Enterprise, Standard, Standard One).
если придет идея все это продавать, по-хорошему, надо покупать лицензию на СУБД.

Возможно повторюсь, но все здесь решает смета требований и расходов.

Автор: Idsa 28.3.2009, 22:38
Цитата(Partizan @  29.3.2009,  02:10 Найти цитируемый пост)
Есть. JavaFX 

Я так понимаю, JavaFX - это попытка догнать .NET с их WPF?
Слышал (на Хабре по-моему) о сырости JavaFX. Интересно, можно ли считать JavaFX на данный момент полноценным конкурентом WPF (все-таки WPF - уже достаточно зрелый продукт)?

Автор: Vasay 28.3.2009, 23:56
Idsa, 

В данной теме было четко сказано про веб интерфейс. А вы про WPF. По моему скромному мнению, вряд ли что будет удобней и прозрачней чем Spring+Velocity. Spring под .net существует, но это только порт Java-вского. Есть ли что-то подобное Velocity под .net - не знаю.

LINQ удобная вещь. Но появилась она недавно. Не думаю что ответ на Java заставит себя долго ждать. К тому же есть беты.
С другой сторон как там с Entity Framework-ом? Он уже достаточно стабилен чтоб его применять в коммерческих приложениях? А то, насколько я знаю, даже после релиза багов там хватало (в то время, как Java-овские Hibernate и TopLink давно успешно применяются).  


Но опять - все это холливар. Исходить надо из экономических соображений. К которым относится не только (в скорее, не столько) стоимость ПО но и стоимость содержания программистов и админов.


оффтопик Unlocker (глядя на вашу подпись) - если бы Шекспир был программистом, он не задавал бы таких глупых вопросов, так как превосходно бы знал, что 2b | ! 2b = ee  smile  

Автор: Idsa 29.3.2009, 16:13
Цитата(Vasay @  29.3.2009,  03:56 Найти цитируемый пост)
В данной теме было четко сказано про веб интерфейс. А вы про WPF.

Ok. Меняем слово WPF на слово Silverlight smile Думаю, для визуализации задач, описанных bezNika, Silverlight будет очень кстати.

Цитата(Vasay @  29.3.2009,  03:56 Найти цитируемый пост)
LINQ удобная вещь. Но появилась она недавно. Не думаю что ответ на Java заставит себя долго ждать. К тому же есть беты.

Уж больше года прошло с момента релиза (очень качественного и стабильного релиза). И сторонних реализаций LINQ хватает. Вон и разработчики NHibernate не остались в стороне, разработав Linq To NHibernate. Очень сложно отказаться от такой вкусности, переходя на Java с .NET.

Цитата(Vasay @  29.3.2009,  03:56 Найти цитируемый пост)
С другой сторон как там с Entity Framework-ом? Он уже достаточно стабилен чтоб его применять в коммерческих приложениях? А то, насколько я знаю, даже после релиза багов там хватало (в то время, как Java-овские Hibernate и TopLink давно успешно применяются).  

Багов, как таковых, в EF v. 1 нет. Есть несколько глюков в дизайнере... но в Hibernate, насколько я знаю, с дизайнерами все тоже не очень гладко.
Если же говорить о зрелости ORM, то, действительно, Java в этом плане пока впереди: все-таки релиз Hibernate 1.0 был в 2002-м, а EF v. 1 - в 2008. По опыту работы с NHibernate могу выделить некоторые преимущества Hibernate над EF: POCO-классы (в контексте Java - POJO-классы), поддержка не только навигационных свойств, но и скалярных FK; поддержка Enum. Хотя все эти недостатки (пожалуй, за исключением отсутствия поддержки POCO-классов) обходятся...
Однако огромным преимуществом EF над Hibernate является Linq To Entities. Использовать hSQL+Criteria или Linq To Entities с небольшими вкраплениями eSQL - две большие разницы.

Автор: Vasay 29.3.2009, 18:27
Idsa, 

Цитата

Ok. Меняем слово WPF на слово Silverlight smile Думаю, для визуализации задач, описанных bezNika, Silverlight будет очень кстати.


Не надо так шутить smile Эта технология непригодна в данном случае. Да и вообще что за веб технология, которая работает в ограниченном числе браузеров (да еще и при условии наличия плагина) и не на всех операционных системах.

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



п.с. Кстати, написав "language - ИМХО небольшой перевес в сторону C#."  - я имел ввиду именно LINQ.

Автор: Unlocker 29.3.2009, 22:55
На мой взгляд, человеку, создавшему тему, нужно только разложить в порядке важности те или иные свойства будущего приложения. Например, так:
1) стоимость (например, упор, по возможности, делать на OpenSource)
2) железо (параметры будущих кластеров, их количество, мощность, ОС)
3) нужна ли переносимость кода
4) как будет работать БД: распределенно или на одном сервере
5) ну и т.д.

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

Автор: TechProg 8.4.2009, 21:38
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!С-Р-О-Ч-Н-О!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ООО «ТехноКонсал-ИС» приглашает на работу начинающих специалистов в технологиях .NET (ASP.NET); MS SQL Server. Испытательный срок 2 месяца. З/п в испытательный срок 30 000р. Полный раб.день, пн-пт. Готовы обучать начинающих программистов. Тел.8-903-7794958 (Василий). С 9 до 22.
Офис фирмы м.Электрозаводская


Автор: Vasay 8.4.2009, 22:32
TechProg, 

Во первых - для найма специалистов на этом форуме отдельный раздел.

Во вторых - на планете Земля, кроме Москвы есть и другие города, там тоже живут люди и они тоже посещают этот сайт. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)