Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Клиент-сервер, JAVA vs. C++


Автор: serghd 12.10.2009, 22:08
Мой друг 6 лет пишет на с++ и абсолютно уверен в том, что системы клиент-сервер на с++ писать удобнее и, главное, надёжнее, чем на JAVA. Разве можно "извлеч" скомпиленый ява-код программы на клиентской машине? Какие вообще дыры могут быть на стороне JAVA? 
Сам я в принципе только из-за клиент-серверных приложений и решил изучать JAVA - надоели браузеры (4 года был на php+js+mysql и т.п.) и "недо"-ООП до ужаса. 
Под мобилки неинтересно (мне кажется почему-то, что не окупаемый это труд), апплеты почти полностью вытеснены флешем, остаются консольные и десктопные приложения. Короче говоря, для меня важно знать надёжность и целесообразность софта клиент-сервера на JAVA, кому не в лом, отпишитесь пожалуйста.

Автор: Samotnik 12.10.2009, 23:41
Ну а что писать то smile
Холивар разводить очередной ?
Скажу одно - в Минске Java  очень востребована, хорошие программисты, получают хорошие деньги smile  
Востребовано:
 - Игры на мобилы;
 - Веб проекты;
 - Гуи проекты;
 - Флекс проекты (очень быстро развиваются и набирают обороты)
Поясню сразу, что проекты в основном большие, долгосрочные, корпаративные.

Добавлено через 58 секунд
Ах да, про надежность - вполне можно сделать java код защищенным  smile 

Автор: Temdegon 13.10.2009, 04:33
Если под надежностью имеется ввиду отказоустойчивость, отсутствие фатальных ошибок и утечек ресурсов, то тут многое зависит от скила программиста, но в java с этим в десятки раз проще. 
Если писать "хэллоу ворды" и "echo-серверы" из книжки, то проблем в С++ никаких. Но если дело доходит до сложных многопоточных серверов, тот тут уже надо иметь нехилый опыт и сильно постараться, что бы на C++ все работало как надо. С профилированием кода в С++ опять же все гораздо сложнее. А если задача стоит написать относительно переносимый сервер, то тут уж точно на C++ поседеть можно, когда проект использует десяток библиотек, каждая из которых за собой тащит еще столько же зависимостей, и каждая имеет всякие причуды под разными осями. Хотя я давно этим не интересовался, и мое мнение может быть ошибочным. Та же Qt снимает много проблем с переносимостью.
Если под надежностью подразумевать безопасность, то ИМХО, ситуация такая: да, компиленный java-код легко декомпилируется, но это мало что меняет. Те кто считают, что написали прогу на Cи, скомпилили native-код, и они защищены, никогда не пользовались SoftICE, декомпиляторами и дизассемблерами. Для решения проблем безопасности, обоих языках используют обфускацию кода, и это достаточно эффективно. Ну и опять же, серверное ПО защищено уже потому, что лежит на сервере. А вопросы безопасности протоколов шифрования и передачи данных вообще мало касаются языка программирования. А клиентскую часть особо-то и защищать незачем. Ты же JavaScript не шифруешь, чтоб не дай бог не взломали хэкеры, а пишешь все ядро на PHP, который просто валяется на сервере в открытом виде (ну или каким-нить Zend-энкодером прикрыт).
К слову, пару месяцев назад решил "фо фан" взломать одну триальную прогу, написанную на C# (те же яйца, что и с Java, декомпилируется без проблем). Код программы естественно был обработан обфускатором. Но меня это не смущало - "Что я проверку серийника найти и отключить не смогу?". Да, на выходе декомпилятора я получил что-то похожее на исходный код, и это "что-то" явно было написано на C#. Но в реале, этот был не код, а каша из переменных вида z12y, вывернутых на изнанку проверок, развернутых циклов, разбитых на куски строк и прочих радостей исследования обфусцированного кода. Хотя я точно знал, в каком участке кода начинались проверки, это мне мало помогло. В общем, я просидел за этим винегретом 4 часа и сдался =).
Ну и как известно, идеальной защиты для клиентских приложений пока еще не придумали. Те же игрушки, защищенные старфорсом, успешно ломаются, и бывает что кряки выходят даже раньше релиза игры. Всякие навесные защиты, типа ASProtect, EnigmaProtector, Armadillo то же взламывают - если не кейген напишут, то уж exе точно пропатчат. Ну а срок триала программ, защищенных этими протекторами так вообще продлевается в домашних условиях за считанные минуты. И ведь казалось бы, почему не напишут "идеальную защиту"? Ведь все на их стороне: нэйтив код, определенная ос, определенная аппаратная платформа. Хочешь драйверы уровня ядра для своей защиты пиши, хочешь шифруй библиотеки, практически неограниченный доступ к железу, а все равно никак! А потому, что наши процессоры и наши ОС - это та же JVM, только более низкого уровня, которую можно отладить. Они уже много чего умеют, но вот защищать исполняемый код от костлявых пальцев и красных, от бессоных ночей, глаз пока не приспособлены.

Автор: serghd 13.10.2009, 10:29
Цитата(Samotnik @ 12.10.2009,  23:41)
Ах да, про надежность - вполне можно сделать java код защищенным  smile

Я знаю, что можно например используя http://www.excelsior.ru/products/jet.html. Но результирующий объём приложения (в неск. раз больше "оригинала") меня совсем не впечатлил...
Так всё-таки исходный код явы значит не защищён...

И я думаю эта тема не может относиться к холивару, т.к. затеяна не в целях навязывания друг другу своих убеждений. Шутка ли - потратить не один год на обучение и опыт, а потом в этом разочароваться. Да, в инете достаточно сравнений java vs c++ на разных уровнях - и производительности и простоты написания (при достижении одинаковой цели). Но лично мне ява важна в основном со стороны веб-приложений и клиент-сервера (GUI естесственно, по крайней мере клиент). Каким же тогда образом можно извлеч оригинальный код из jar-архива? Может кто-нибудь пробовал? И что такое флекс-проекты, какое-то новшество?

Автор: Samotnik 13.10.2009, 10:33
Цитата(serghd @  13.10.2009,  10:29 Найти цитируемый пост)
Так всё-таки исходный код явы значит не защищён... 

Ведь Temdegon,  очень все грамотно описал. Я скажу в двух словах: 
Идеальной защиты нету. Что говорить, если ломаются гигантские программы, которыми пользуется весь мир (Фотошоп, Автокад, Виндовс) Думаете разработчики этого софта не разрабатываю защиту ? 
Все относительно в этом мире. В Java код защищен не хуже, чем в С# или С++.

Автор: serger 13.10.2009, 10:38
А зачем защищать код в client-server? и от кого?

Автор: serghd 13.10.2009, 10:40
код клиента, от хакеров. Допустим игра "покер", там будет много конкурентов и все заходят найти дыры в протоколе или ещё где-нибудь

Автор: Samotnik 13.10.2009, 10:45
Клиентский код защитить очень трудно (JS  вообще никак не реально защитить) А серверный код хранится на сервере, поэтому есть маленькая вероятность, что его не вскроют. 

Автор: serghd 13.10.2009, 10:52
Цитата(Samotnik @ 13.10.2009,  10:45)
Клиентский код защитить очень трудно (JS  вообще никак не реально защитить) А серверный код хранится на сервере, поэтому есть маленькая вероятность, что его не вскроют.

Да причём здесь яваскрипт вообще? Браузеры тут не в тему совершенно и знаю прекрасно что его не защитить. Я говорю о ява-проге-клиенте, которая работает удалённо с серваком. Впрочем, Temdegon всё описал достаточно понятно и убедительно, в этом я с вами согласен.

Автор: powerOn 13.10.2009, 10:52
Цитата(serghd @  13.10.2009,  11:40 Найти цитируемый пост)
код клиента, от хакеров. Допустим игра "покер", там будет много конкурентов и все заходят найти дыры в протоколе или ещё где-нибудь


Если ошибка в протоколе, то нет никакой разницы, что Java, что С++. 

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