Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Если переходить с Delphi то на Java или же на C#?


Автор: prgmdelphi 1.7.2014, 14:45
Добрый день. Давно пишу на Delphi в основном desktop+БД, также вел с нуля разработку достаточно крупного проекта от проектирования до внедрения на предприятия клиентов. В начале моего пути развития как программиста (а это начало 2000чных) были тогда сомнения что же выбрать С++ или Delphi?! Выбрал последнее и ни дня не жалел. Но мир меняется, меняются и технологии в разработке ПО, WEB вытесняет Desktop и много чего еще другого происходит. В последнее время встал у меня вопрос, чтобы подстраховать свое будущее решил изучить одну из экосистем: JAVA или же C#. Но вот что выбрать, с учетом все же разработок корпоративных приложений, берут сомнения? Что можете посоветовать?

Автор: Ilya81 1.7.2014, 15:53
В backend сейчас доминирует Java, перспективы C# здесь реальны только под Microsoft Azure, который пока что в стадии развития. Для desktop-приложений, ориентированных на Windows, C# популярнее. Что касается Web, ASP (C#) и JSP (Java) здесь конкурируют, кто популярнее, сказать сложно. Для мобильных устройств покуда доминирует Android, Java намного популярнее, C# может прижиться лишь в случае успехов Xamarin или если Windows Phone вернёт какую-то долю.

Автор: Bulat 1.7.2014, 16:01
Цитата(prgmdelphi @  1.7.2014,  14:45 Найти цитируемый пост)
В последнее время встал у меня вопрос, чтобы подстраховать свое будущее решил изучить одну из экосистем: JAVA или же C#. Но вот что выбрать, с учетом все же разработок корпоративных приложений, берут сомнения? Что можете посоветовать?


Perl  smile  smile 

Автор: Stolzen 1.7.2014, 17:15
Цитата(Ilya81 @  1.7.2014,  16:53 Найти цитируемый пост)
 Что касается Web, ASP (C#) и JSP (Java) здесь конкурируют, кто популярнее, сказать сложно.

Не сложно, достаточно посмотреть кол-во открытых вакансий 
* hh.ru/search/vacancy?text=java+web - Найдено 1 306 вакансий
* hh.ru/search/vacancy?text=c%23+web - Найдено 680  вакансий

З.Ы. hh умный и java script на java не выдает

Автор: prgmdelphi 1.7.2014, 20:06
Ilya81, спасибо за ответ. 
Не могли на примерах рассказать - под какие задачи, как правило, в РФ выбирают C#, а под какие Java.
Просто хочу понять практические секторы применения, а то до сих путаюсь. Вот думал, что те же клиент-банки пишут в Java, а нет в соседнем топики говорят мол на C# т.к.  в банке стоят Windows Server-а, то велика вероятность того, что уже установлен .Net Framework, развёрнут IIS и крутится SQL Server

Автор: Ilya81 2.7.2014, 06:53
Цитата(prgmdelphi @  1.7.2014,  20:06 Найти цитируемый пост)
Вот думал, что те же клиент-банки пишут в Java, а нет в соседнем топики говорят мол на C# т.к.  в банке стоят Windows Server-а, то велика вероятность того, что уже установлен .Net Framework, развёрнут IIS и крутится SQL Server

В последние годы это несколько менее распространённое решение, чаще выбирают Solaris (вариант - один из дистрибутивов Linux) + OracleDB + Java/JSP + WebLogic. Если ж по какой-то причине Windows, то, естественный выбор IIS и SqlServer, а расширения базы данных для SqlServer тоже пишутся на C#.

Автор: prgmdelphi 2.7.2014, 14:02
А правильно ли это утверждение - если мы написали сайт на asp.net mvc, и разместили к примеру его на хостинге nic.ru, то nic.ru должен крутить сервер IIS на компе с Windows, чтобы этот asp нормально отработал?

Автор: Ilya81 2.7.2014, 14:38
Фактически да. IIS существует только для Windows. Теоретически ASP .Net возможно развернуть и под другими ОСями на основе Apache+XSP+Mono, я даже как-то подобное делал, но на практике это почти не применяется.

Автор: prgmdelphi 2.7.2014, 21:09
Посмотрел ролики по ASP.NET Web Forms - идея построения web-морды, основанная на компонентах, чем-то похоже на Delphi.
Но народ пишет, что ASP.NET Web Forms отходит и на смену пришел ASP.NET MVC, а разве с помощью ASP.NET Web Forms нельзя организовать логику MVC.
Условно говоря 2 нижних слоя (бизнес логику/контроллер и ORM) пишем как сервер на том же C#, а затем делаем связку верхнего слоя (интерфейса) с ASP.NET Web Forms,
в чем плюс ASP.NET MVC?

P.S. Кстати установил MS Visual Studio 2013 и в меню Project->Web Site не нашел ASP.NET MVC?

Автор: Ilya81 3.7.2014, 07:37
Web Forms был идеей совместимости между различными browser'ами в те времена, когда не было jQuery и иже с ним. Но по быстродействию и объёму передаваемых данных он крайне неоптимален, поэтому ASP .Net перешёл на более явный способ обеспечения совместимости между различными browser'ами.

Добавить code behind можно и MVC, но нужно ли - что там писать, что не приведёт к запутыванию структуры проекта и снижению его maintenability.

Цитата(prgmdelphi @  2.7.2014,  21:09 Найти цитируемый пост)
Кстати установил MS Visual Studio 2013 и в меню Project->Web Site не нашел ASP.NET MVC? 

user posted image

Автор: diadiavova 3.7.2014, 10:36
Цитата(prgmdelphi @  2.7.2014,  22:09 Найти цитируемый пост)
Но народ пишет, что ASP.NET Web Forms отходит и на смену пришел ASP.NET MVC

Ну это не совсем так. Вот если винформы отходят, то их не обновляют уже аж с 2005-го года, а вебформы живут и развиваются. Просто у вебформ и мвц немного разные задачи и то, что под аспнет существует и то и другое - скорее преимущество аспнет.
Цитата(prgmdelphi @  2.7.2014,  22:09 Найти цитируемый пост)
а разве с помощью ASP.NET Web Forms нельзя организовать логику MVC.

Наверно, если очень сильно захотеть, то видимо можно, хотя мне, честно говоря, сложно представить себе как это могло бы  выглядеть. В вебформах и в мвц по-разному обрабатываются запросы к серверу. В мвц при обработке запроса сначала определяется класс контроллера, который должен его обрабатывать, метод действия и вычисляются параметры. Дальше создается экземпляр контроллера, вызывается соответствующий метод и возвращенный им объект определяет какое представление надо создать, создается экземпляр представления, ему передаются данные, полученные из метода действия и уже на основе этих данных формируется результат, который и будет отправлен в ответ на запрос. 
В вебформах же в ответ на запрос создается экземпляр формы и ему передается запрос, который там же и обрабатывается. При таком раскладе разделить логику и представление как минимум затруднительно, поскольку представление вместо обработанных данных получает данные запроса, которые само же и должно обработать. Я уже не говорю о том, что сами веб-контролы несут в себе значительную часть логики, которая должна быть реализована в контроллере. Но если есть идеи как реализовать то, о чем ты пишешь - было бы интересно ознакомитсья smile 
Цитата(prgmdelphi @  2.7.2014,  22:09 Найти цитируемый пост)
P.S. Кстати установил MS Visual Studio 2013 и в меню Project->Web Site не нашел ASP.NET MVC? 

Там в последней версии просто выбираешь аспнет, и на следующем экране уже выбор конкретного типа проекта(если не ошибаюсь).

Автор: Bulat 3.7.2014, 12:03
Цитата(prgmdelphi @  1.7.2014,  20:06 Найти цитируемый пост)
Не могли на примерах рассказать - под какие задачи, как правило, в РФ выбирают C#, а под какие Java.

Все зависит лишь от количества специалистов, если проект/бизнес создается долгие годы:
1. Его нужно создать
2. Поддерживать
3. Менять/улучшать/дорабатывать

Раб сила - эжто самый первый и главный параметр. При этом уровень и квалификация этой самой раб. силы уже не всегда имеет значение!  smile 

Цитата(Ilya81 @  2.7.2014,  06:53 Найти цитируемый пост)
В последние годы это несколько менее распространённое решение, чаще выбирают Solaris (вариант - один из дистрибутивов Linux)

Покажите мне этих умных людей!!! Я с удовольствием пойду к ним работать и даже не попрошу свой бешеный гонорар в сорок баксов!!! За так... за бутерброд с чаем!!!  smile 

Цитата(prgmdelphi @  1.7.2014,  20:06 Найти цитируемый пост)
Вот думал, что те же клиент-банки пишут в Java, а нет в соседнем топики говорят мол на C# т.к. 

Еще пару тем заведешь, тебе еще и другие языки распиарят  smile 

Автор: Ilya81 3.7.2014, 12:12
Цитата(Bulat @  3.7.2014,  12:03 Найти цитируемый пост)
Покажите мне этих умных людей!!! Я с удовольствием пойду к ним работать и даже не попрошу свой бешеный гонорар в сорок баксов!!! За так... за бутерброд с чаем!!!

Это вопрос не ко мне, я пока что специализируюсь на C#, так сложилось, ну а покуда от C# совсем массово не откажутся, смысла переквалифицироваться не вижу. Но JSP и WebLogic вряд ли менее популярны, чем ASP. А вот ASP под Linux на Apache - в России я вообще таких решений не встречал.

Автор: Bulat 3.7.2014, 12:58
Цитата(Ilya81 @  3.7.2014,  12:12 Найти цитируемый пост)
А вот ASP под Linux на Apache - в России я вообще таких решений не встречал. 

А зачем ASP под Linux, когда уже есть PHP/Perl/Python/C ??  smile 

Автор: Ilya81 3.7.2014, 13:38
Цитата(Bulat @  3.7.2014,  12:58 Найти цитируемый пост)
А зачем ASP под Linux, когда уже есть PHP/Perl/Python/C ??

Например, чтоб можно было Web-узел, уже написанный на ASP развернуть на сервере, на котором уже установлен Linux. Для мелких Web-узлов, думаю, PHP вне конкуренции (разве что Ruby может быть в Web когда-нибудь потеснит всех остальных), а вот крупные порталы по мне на PHP только в сочетании с C++. А предпочтительнее ASP или JSP, чтоб не нужно было там со всякими php.h заморачиваться и можно было б отлаживать всё напрямую. Это если применительно к Web, где в нём C (если не считать вроде как уже вымершего CGI) или Perl - не знаю.

Автор: Bulat 3.7.2014, 14:04
Цитата(Ilya81 @  3.7.2014,  13:38 Найти цитируемый пост)
если не считать вроде как уже вымершего CGI

Это когда это CGI умер?? А чо недавеча я с ним бодалсо в одном коммерческом прожэкте??  smile  smile 

Цитата(Ilya81 @  3.7.2014,  13:38 Найти цитируемый пост)
Например, чтоб можно было Web-узел, уже написанный на ASP развернуть на сервере, на котором уже установлен Linux.

Wine... Хотя в совокупе это получицца такие танцы с бубном, что проща переписать под тот жа CGI  smile  smile  smile 

Автор: Ilya81 3.7.2014, 14:28
Цитата(Bulat @  3.7.2014,  14:04 Найти цитируемый пост)
Это когда это CGI умер?? А чо недавеча я с ним бодалсо в одном коммерческом прожэкте??

Последний действующий узел на CGI я видел у Российской Национальной библиотеки 5 лет назад. Хотя, на исключаю, что где-то в .htaccess вместо cgi ставят что-то другое.

Цитата(Bulat @  3.7.2014,  14:04 Найти цитируемый пост)
Wine... Хотя в совокупе это получицца такие танцы с бубном, что проща переписать под тот жа CGI

Если через Wine, то возможно, да и быстродействие оставит, мягко говоря, желать лучшего. А вот Mono уже несколько лет назад функционировал вполне хорошо.

На глаз быстродействие Web, однако, оценить сложно, но для сравнения Gtk-приложения на Mono показывают вполне хорошее быстродействие, XWT - что-то наравне с Java. Впрочем, если говорить о приложениях для Linux (а не про Web-узлы), то тут C и C++ куда больше подойдут.

Автор: Bulat 3.7.2014, 14:32
Цитата(Ilya81 @  3.7.2014,  14:28 Найти цитируемый пост)
Последний действующий узел на CGI я видел у Российской Национальной библиотеки 5 лет назад. Хотя, на исключаю, что где-то в .htaccess вместо cgi ставят что-то другое.

и не только .htaccess.... mod_rewrite и "красивые" ссылки плавно обрабатываются каким-нить cgi-скриптом, но внешне и комар носа не подточит  smile  smile 

Автор: Ilya81 3.7.2014, 14:54
Цитата(Bulat @  3.7.2014,  14:32 Найти цитируемый пост)
и не только .htaccess.... mod_rewrite и "красивые" ссылки плавно обрабатываются каким-нить cgi-скриптом, но внешне и комар носа не подточит  

Поискал, действительно, интересно, оказывается и CGI используется в AJAX'е. А я думал, что там PHP или Ruby, ну, естественно, помимо JSP и привычного мне AjaxHelper'а.

Автор: prgmdelphi 4.7.2014, 08:37
Возьмем ОС Windows.
1. C# позволяет используя ASP.NET Web Forms (пусть даже если он и вымирает) создавать быстро интерфейс Web-страниц используя механизм компонентов.
Возможно ли в Java с использованием ее фреймворков сделать такое? Если нет, то что в этом случае зачастую что будет использовано Java-командой: HTML5, jQuery или что?

2. C# позволяет используя ASP.NET MVC создавать удобную связку web-страниц с серверной частью. Возможно ли в Java с использованием ее фреймворков сделать такое? Если нет, то что в этом случае зачастую что будет использовано Java-командой?

Автор: Stolzen 4.7.2014, 15:56
Цитата(prgmdelphi @  4.7.2014,  09:37 Найти цитируемый пост)
1. C# позволяет используя ASP.NET Web Forms (пусть даже если он и вымирает) создавать быстро интерфейс Web-страниц используя механизм компонентов.
Возможно ли в Java с использованием ее фреймворков сделать такое? Если нет, то что в этом случае зачастую что будет использовано Java-командой: HTML5, jQuery или что?

Да, на джаве оч много подобных фреймворков. Можно гуглить "component-based web frameworks java" и найти много всего. Из популярного (из того, что сам использовал) -  ZK и GWT, под оба есть плагин в эклипсе с дизайнерами и прочим. 

Еще часто компоненты используют чисто на стороне клиента и используют какой-нибудь ExtJS (http://stackoverflow.com/a/2934270/861423 список популярных).

Добавлено через 1 минуту и 2 секунды
Цитата(prgmdelphi @  4.7.2014,  09:37 Найти цитируемый пост)
2. C# позволяет используя ASP.NET MVC создавать удобную связку web-страниц с серверной частью. Возможно ли в Java с использованием ее фреймворков сделать такое?

Да, с помощью GWT, ZK, JSF и прочего.

Добавлено через 2 минуты и 12 секунд
ЗЫ. Только в случае с джавой условие "Возьмем ОС Windows" отпадает как ненужное и даже, зачастую, вредное smile

Автор: prgmdelphi 4.7.2014, 21:27
Что на Java практически ничего не делают под Windows?

Автор: Stolzen 4.7.2014, 21:48
Если речь о декстопных приложениях, то вопроса о платформе обычно не стоит - write once, run anywhere 

Но как правило на джаве больше пишут сервер-сайд, а он почти весь на никсах

Автор: prgmdelphi 5.7.2014, 01:41
Цитата(Stolzen @  4.7.2014,  21:48 Найти цитируемый пост)
 сервер-сайд

что вы имели ввиду под этой фразой?

Автор: LSD 7.7.2014, 07:14
Цитата(prgmdelphi @  5.7.2014,  02:41 Найти цитируемый пост)
что вы имели ввиду под этой фразой?

Приложения которые работают на стороне сервера, а не клиента. 
                                                                                                                КО

Автор: Ilya81 7.7.2014, 08:11
Цитата(prgmdelphi @  4.7.2014,  21:27 Найти цитируемый пост)
Что на Java практически ничего не делают под Windows? 

Очень много даже что делают. По-крайней мере немало приложений под Windows, определённо написанных на Java. Я не знаток Java вообще, так что точно не знаю, на чём делают пользовательский интерфейс, лишь немного знаю AWT и Swing.

Автор: Bulat 7.7.2014, 20:14
Цитата(Stolzen @  4.7.2014,  21:48 Найти цитируемый пост)
пишут сервер-сайд, а он почти весь на никсах

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

Автор: prgmdelphi 8.7.2014, 12:13
Определенно уже могу сказать, что переход с Delphi на C# менее болезненнее, чем на Java. В C# под .Net  зачастую в вакансия требуются люди с хорошим опытом в построении UI-интерфейса - а после Delphi этого опыта хоть отбавляй. В целом даже по языку Delphi ближе к шарпу. И все я это понимаю, но живут во мне сейчас 2 противоречивых мнения: мозги прекрасно понимаю, что с C# будет проще  и быстрее по времени, а значит и быстрее я ухожу от Delphi и перехожу на C# и новую работу-проект - но душа как-то не лежит. Что касаетсяJava, то к ней душа ближе, как бы хотелось ей заняться, более перспективна, востребована и нормально оплачиваема. Но в тоже время понимаю, что порог вхождение гораздо дольше (из-за кучи фреймворков), а т.к. на текущей работе близится не за горами конец - значит есть вероятность остаться без желаемого дохода - т.е. со старой потребуется уйти, а устроиться на нормальную новую по Java не получиться из-за отсутствия нужного объема знаний и опыта.
И вот не знаю и мучаюсь с выбором.

Автор: Stolzen 14.7.2014, 15:53
Занимайтесь чем, к чему душа лежит. В зарплате, конечно, потеряете (в любом случае), но максимум на первый год, потом догнать не сложно будет.

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