Pull to refresh

Comments 53

В сравнении сказать не могу, на C++ опыта нет, но на Java делать серьезные веб-приложения - очень удобно. Много различных и качественных фреймворков (советую JBoss Seam), наличие таких штук как Spring(or Guice), Hibernate, EJB3, очень облегчает жизнь.
PS: делаем давно, продуктивно и мощно :)
Да, в Java привлекает то, что это сильно "коммерциализированная" технология, которую активно продвигают монстры индустрии, причем продвигают и как web-платформу. То есть кучи фреймворков, крутых решений и. т. д.

С++ в этом плане видимо немного отстает. И порог вхождения у C++ под web - выше. Но думаю что в C++ тоже все есть. Ну и конечно производительность...

Еще многие пугают некоей "низкоуровневостью" C++, сборкой мусора и т.д.. Склоняюсь к мнению, что в крупных проектах скорость разработки с использованием обоих технологий будет примерно одинаковая...

Хотя требования к специалистам C++ безусловно выше. Но зато этот язык часто выбирают настоящие маньяки :)
1. Производительность java выше, чем многие думают. При правильном (не виртуозном, а просто не-ламерском) написании, разница с с++ будет небольшой.
2. Как только звучит слово "кластер", java выигрывает еще больше. Там (в j2ee) это все прозрачно, удобно, надежно и производительно.
3. Найти хорошую комманду с++шников - сложно. Реально сложно. Как и любую хорошую комманду, в принципе. Но в мире java больше народу. И грамотного народу тоже - больше :)
как показывает опыт - главное верно оценить загрузку создаваемого программного комплекса

при большой загрузке приложение, написанное на Java, будет вылетать из-за проблем Java-машины. На С++ подобных проблем нет

с точки зрения удобства разработки, то тут однозначно лидирует Java из-за обилия серъезных фреймворков и просто наборов классов.
да, насчет фреймворков - видимо Java лидирует...
О каких проблемах java hotspot вы говорите?
Не знаю на сколько я прав, но возможно такие проблемы были у bobrdobr.ru, когда их сервер упал от чрезмерной нагрузки. Веб приложение у них написано на java.
А еще.. а еще.. у них были сервера Интел! Наверное с ними тоже что-то не то.. И с операционками, да..

при большой загрузке приложение, написанное на Java, будет вылетать из-за проблем Java-машины. На С++ подобных проблем нет

Расскажите подробнее о этих проблемах. Мне вот интересно, что за проблемы.
мне тоже очень интересно..
первый раз о таком слышу, хотя работаю в конторе которая девелопит веб-платформу на джаве в промышленных масштабах
Может они используют "client" VM ? =)
Видимо имелось в виду что-то типа того, что сервер с Java слетит на 5 минут раньше чем с C++ :)
Не хочу в холеваре учавствовать. Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч... Java не такая уж и быстрая, как многие про неё говорят. Если создаётся огромное количество маленьких объектов, и к работе приступает сборщик мусора...

Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч...

А зачем вы используете java в realtime ?


Java не такая уж и быстрая, как многие про неё говорят.

Java является довольно быстрым языком.


Если создаётся огромное количество маленьких объектов, и к работе приступает сборщик мусора...

Что имеет отношение к реализации виртуальной машины, но никак не к языку.
Немного не понял смысла фразы "Java является довольно быстрым языком", что значит быстрый язык?

Что имеет отношение к реализации виртуальной машины, но никак не к языку.

Я немного не в курсе, но разве GB не является частью Java, и от него можно отказаться? Разве можно самому убить нужный объект в GB не запуская его? IMHO единственное, что можно, это принудительно заставить GB собрать мусор. Вот тут и встаёт проблема, если в приложении создалось огромное количество объектов.

Немного не понял смысла фразы "Java является довольно быстрым языком", что значит быстрый язык?

На многих операциях дает скорость, сравнимую с C++.


Я немного не в курсе, но разве GB не является частью Java, и от него можно отказаться? Разве можно самому убить нужный объект в GB не запуская его?

Уборщик мусора работает паралельно, а никак не последовательно. И саму работу VM машины тормозит только косвенно. При наличии возможности обрабатывать несколько потоков на разных процессорах, у вас не будет наблюдаться потери производительности. Кстати под обработку большого числа параллельных процессов заточена "Niagara".
Уборщик мусора работает паралельно, а никак не последовательно. И саму работу VM машины тормозит только косвенно. При наличии возможности обрабатывать несколько потоков на разных процессорах, у вас не будет наблюдаться потери производительности. Кстати под обработку большого числа параллельных процессов заточена "Niagara".

Я не спорил, что он работает последовательно, а вот про обработку на разных процессорах не знал, спасибо за информацию.
java не самый быстрый язык. хотя бы потому, что на то, чтобы на лету скомпилировался native код - нужно потратить процессорное время. кроме того, существует gc, да.
НО. в среде web - где бОльшую часть времени занимают операции ввода/вывода, java не может проиграть c++ (ну, по крайней мере, при обозримой загрузке сервера).
google на java не напишеш, также как и не получится написать, скажем, производительный движок рендера 3d изображений. а вот для web - это очень хорошее решение, масштабируемое и расчитанное на широкий круг задач.
Все дело в том, что современные web-приложения все больше и больше теряют web-специфику, и кто знает до чего они дойдут завтра...

Так что возможность быстрого рендеринга 3d - тоже бонус...
FPS Chrome написана на Java. Вполне себе играет :) Это к вопросу о движке 3D.
Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч...

Но только не помните, что проблемы там были вовсе не в Java.
Еще один довод в пользу Java, а точнее J2EE для подобных проектов, это относительное изобилие специалистов. На C++ наверняка можно поднять тяжелый веб проект, и видимо можно найти какие-то доступные и работающие фреймворки, но специалистов знакомым с этим делом заметно меньше чем для мира веб приложений на java. Да и вообще, из моей практики, достойного програмиста на java найти легче чем на C++.
Насчет специалистов видимо вы правы. Но с другой стороны - найти специалиста по PHP проще, чем по Java (хотя шлака там ооочень много :)

В общем согласен, но меня этот фактор пока не пугает... (может и зря - ну да время покажет)
Я просил уже вас на rpod'е, и Повторяю тут свою просьбу. Порасскажите о Java for Web. Тем более, вас слушает такое количество php-шников, которых не любит (окей, развел на флейм) ваш коллега bobuk. Вот и просветили бы, надеюсь, многим будет интересно.
Я бы рассказал, но тема черезчур узкая, на мой взгляд. У нас все таки подкаст не для проф. программеров, а для более широкой аудитории.
А жаль, что до сих пор нет хорошего подкаста для профессиональных программеров на русском.

Хотя я и на английском ни одного не знаю.
На английском должно быть в достатке. По дотнету, во всяком случае, так и есть.
Ну до .NET мне далеко как до луны :)
сам прогаю на java и мне очень нравится, поэтому я бы порекомендовал ее..
Если хотите большой и хороший проект - spring/hibernate нужно знать обязательно (опционально можно прикрутить 5ый tapestry), ну и не забываем про jakarta commons. Как показывает практика, при таких раскладах к j2ee можно не прикасаться (это хорошо!).
Кстати удивило сравнение джавы и плюсов, обычно ее сравнивают с шарпом.

p.s. А про ruby - зря вы так. Присмотритесь к рельсам - очень прогрессивная вещь.
Насчет шарпа - он сразу отметается, как представитель win-индустрии. Никсы, только никсы, они, родимые.

Рельсы уже давно покурил, прикольно конечно, но это узкая ниша. Сомневаюсь, что чего-то подобного нет под плюсы
Как можно считать Java и C++ одинаковыми языками?
Да хотя бы потому, что в Java есть GC, а в C++ его вообще нет и быть не может.
Я разве где-то назвал их одинаковыми языками?
"Технологии примерно одного класса" - вот что я говорил.
В больших проектах думаю наличие/отсутствие GC будет не очень сказываться. И хотя это довольно философское различие двух языков программирования, технологии очень близкие...
Простите, уважаемые, хабра-люди, но то, чот вы говорите - бред сивой кобылы. Простите, ещё раз.
С одной стороны вы говорите, что Java - лидирующий фрэймворк. Тогда возникает вопрос, что такое за C++ за страшный фрэмворк?

С другой стороны как можно сравнивать кроссплатформенную Java с C++?

Вообщем, это называется так: "Какай хороший язык Java".:)

p.s. Автор случайно не из Единой России? Уж очень похож подчерк :)
хорошая мысль, только хочу немного поправить: java - это не фреймворк
p.s. ПО поводу ЕР - а что у вас на Украине они тоже отжигают?
Какой еще фреймворк?

И при чем тут кросс-платформенность? Мы вроде не софт для мобильников обсуждаем, а серьезную серверную разработку, причем строго под никсы.

p.s. руки прочь от автора, автор - наш человек, я его лично знаю :)
Берите Java ! :) Сравнение Java и С++ для веб разработок - эксклюзив в общей сложности. Единственное что я могу сказать по сути вопроса - eBay мигрирует с ISAPI на С++ к Java, если верить этому.

C C++ проблем будет куда больше (на истину в последней инстанции я не претендую).

А почему так сразу отметаются Perl и Python ? Под mod_perl и mod_python можно писать (хендлеры для апача) и получить неплохие результаты. На С можно делать тоже самое, только это решение может оказаться "золотым".
Обсуждаем Java и C++. Perl и Python - это иное...
...дабы не плодить излишних холиваров...
ОК. Попробуйте найти реализованный на C++ ORM фреймворк, MVC фреймворк и движок шаблонов. Очень полезные вещи в народном хозяйстве.
По-моему, это дискуссия того же плана, что "php vs не-php", лучшая серверная ОС и т.д. Автору нужно немного конкретизировать задачу.

Дело не только в том, кто быстрее, стабильнее, и более стильно собирает мусор, но и в сложности/дороговизне поддержки, лёгкости нахождения специалистов и т.п.
Задача стоит довольно конкретно. Необходима среда для веб-разработки хорошо документированая и хорошо поддерживаемая. Все же IMHO Java в этом плане лучше C++
Ну... блин, дожились! Теперь у нас С++ и Java - инструменты одного класса... :\
У меня в городе знаю с десяток контор, которые пишут под j2ee, не только веб, но в основном конечно он самый. Есть .NET, но его не рассматриваем. Не знаю ниодного человека который бы учавствовал в разработке чего-то под веб на С++. Исключениями в этой области могут послужить разве что какие-то поисковые машины или другие масштабные системы. Но и в масштабируемости думаю Java на голову выше C++, благодаря готовым наработкам.
К тому же и сам язык в разы удобнее и безопаснее, и набор инструментов такой, что удовлетворит любые потребности.
Так что лично для меня выбор очевиден :)

BTW, про PHP: друг фрилансер недавно сказал что нашёл одного буржуя, который хотел веб-проект небольшой(!), в принципе, если проект маленький, то можно использовать и PHP не особо напрягясь. Да и человека действительно легче найти и можно меньше заплатить. Так вот этот заказчик поставил сразу условие: "только не PHP".
Накидайте плз ссылок на фреймворки на С++ для девелопинга под веб...
Добрый день
Спору нет, на С++ сложно девелопить вообще.
Но почему его всё ещё используют, и не собираются отказываться?
Грамотная комбинация инструментов gcc,gdb,make,cvs,...
тщательный подход к сбору логов, статистики, профилированию, возможности отката ситуации,
Наличие стандартной библиотеки STL, наличие огромного количества исходников, которые можно заюзать в проекта,
делает этот язык, технологию вполне пригодным и перспективным для веб разработок, с учётом увеличения трафика (возможности оптимизации почти бесконечны).
Так же, в отличие от пыхала, гораздо проше писать код для многократного применения, да и вообще создавать новые технологии, но это имхо.
а если следовать unix away то можно легко строить большие проекты, используя связки различных технологий (языки), чему весьма способствует веб.
Ни кто не запрещает скриптовыми языками создавать прототипы, а на плюсы уже переносить готовые решения.
Некоторые размышления о технологиях

О сложности использования.
Не так давно пробовал, насколько просто можно писать под C++ FastCGI-шные веб-приложения.
Оказалось, не сложнее, чем на любом другом языке (не путать с фреймворками, где вся эта радость уже out-of-the-box крутится и просит только веб-сервер правильно настроить).
Для себя сделал вывод - имея команду хороших C++-разработчиков "с нуля" проекты можно писать в сравнимые с остальными языками сроки.

О производительности.
Средняя скорость выполнения C++-программы быстрее Java.
Подробнее сравнить можно на сайте Computer Language Benchmarks Game (http://shootout.alioth.debian.org/gp4/benchmark.php?test=all), и сделать вывод, что Java - самая быстрая технология после языков, которые компилят native code.
Но этот вопрос в отношении веба скорее решается грамотным кэшированием, кластеризацией и инвестициями в железо.

О распространенности.
Количество существующих наработок в области веб-разработки под Java однозначно больше, чем под C++, к тому же больше опытных разработчиков и коммьюнити более информативное.

О безопасности.
На C++ гораздо легче наделать ошибок, приводящих к серьезным проблемам с безопасностью - на каждом шагу подстерегает переполнение буфера и выполнение произвольного кода с привилегиями веб-сервера.
Java-машина - среда изолированная, и через нее гораздо сложнее нанести вред ОС сервера. Но в коде Java-машины вполне может быть дыра, которую найти и ликвидировать своими силами гораздо сложнее, чем в собственном C++-коде.

ну и, как всегда, YMMV:)
Если не секрет, использовали ли какой-нибудь фреймворк?
И очень интересно про шаблонизацию...

ps: я больше не верю в фреймворки...
Для C++ пробовал Wt, но штука своеобразная - по сути, event-driven ajax framework %)
То есть, внутри гораздо больше напоминает Qt (сигналы/слоты), чем привычные веб-фреймворки.
Мое имхо - если уж использовать C++, то писать все с нуля, и добиваться максимальной производительности, затачивая код под конкретный проект.
Из движков шаблонов смотрю в сторону teng, он отпарсенные темплейты компилит в свой хитрый байт-код, и еще и кэшировать умеет. Плюс к тому же работает с разными языками - то есть можно быстренько написать proof of concept и если все гут, то писать уже C++-версию.
Еще думаю про использование HAML - с ним верстать получается гораздо быстрее, и работать он умеет как отдельный парсер. Да и вообще думаю в сторону какого-нить libhaml, которого пока еще нет, но ведь можно сделать:)

а по поводу фреймворков - из них хороши только те, что предоставляют защиту от закона дырявых абстракций, иначе придется кучу времени убить на пляски с бубном, чтобы пробраться на более низкий уровень %)
Это что шутка?
JEE это уже индустриальный стандарт: Инфраструктура, устоявщиеся технологии, сообщества.

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

Примешивать сюда пхп с питоном, так же полнейшая глупость, их с JEE роднит только то что и то и другое для веба можно использовать. Совершенно различные весовые категории. JEE для крупных и средних корпоративных проектов. php для малых и средних.
UFO just landed and posted this here
Sign up to leave a comment.

Articles