Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
Ну а что писать то ![]() Холивар разводить очередной ? Скажу одно - в Минске Java очень востребована, хорошие программисты, получают хорошие деньги ![]() Востребовано: - Игры на мобилы; - Веб проекты; - Гуи проекты; - Флекс проекты (очень быстро развиваются и набирают обороты) Поясню сразу, что проекты в основном большие, долгосрочные, корпаративные. Добавлено через 58 секунд Ах да, про надежность - вполне можно сделать java код защищенным ![]() |
Автор: 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 | ||
Я знаю, что можно например используя http://www.excelsior.ru/products/jet.html. Но результирующий объём приложения (в неск. раз больше "оригинала") меня совсем не впечатлил... Так всё-таки исходный код явы значит не защищён... И я думаю эта тема не может относиться к холивару, т.к. затеяна не в целях навязывания друг другу своих убеждений. Шутка ли - потратить не один год на обучение и опыт, а потом в этом разочароваться. Да, в инете достаточно сравнений java vs c++ на разных уровнях - и производительности и простоты написания (при достижении одинаковой цели). Но лично мне ява важна в основном со стороны веб-приложений и клиент-сервера (GUI естесственно, по крайней мере клиент). Каким же тогда образом можно извлеч оригинальный код из jar-архива? Может кто-нибудь пробовал? И что такое флекс-проекты, какое-то новшество? |
Автор: Samotnik 13.10.2009, 10:33 |
Ведь 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 | ||
Да причём здесь яваскрипт вообще? Браузеры тут не в тему совершенно и знаю прекрасно что его не защитить. Я говорю о ява-проге-клиенте, которая работает удалённо с серваком. Впрочем, Temdegon всё описал достаточно понятно и убедительно, в этом я с вами согласен. |