Комментарии 53
В сравнении сказать не могу, на C++ опыта нет, но на Java делать серьезные веб-приложения - очень удобно. Много различных и качественных фреймворков (советую JBoss Seam), наличие таких штук как Spring(or Guice), Hibernate, EJB3, очень облегчает жизнь.
PS: делаем давно, продуктивно и мощно :)
PS: делаем давно, продуктивно и мощно :)
Да, в Java привлекает то, что это сильно "коммерциализированная" технология, которую активно продвигают монстры индустрии, причем продвигают и как web-платформу. То есть кучи фреймворков, крутых решений и. т. д.
С++ в этом плане видимо немного отстает. И порог вхождения у C++ под web - выше. Но думаю что в C++ тоже все есть. Ну и конечно производительность...
Еще многие пугают некоей "низкоуровневостью" C++, сборкой мусора и т.д.. Склоняюсь к мнению, что в крупных проектах скорость разработки с использованием обоих технологий будет примерно одинаковая...
Хотя требования к специалистам C++ безусловно выше. Но зато этот язык часто выбирают настоящие маньяки :)
С++ в этом плане видимо немного отстает. И порог вхождения у C++ под web - выше. Но думаю что в C++ тоже все есть. Ну и конечно производительность...
Еще многие пугают некоей "низкоуровневостью" C++, сборкой мусора и т.д.. Склоняюсь к мнению, что в крупных проектах скорость разработки с использованием обоих технологий будет примерно одинаковая...
Хотя требования к специалистам C++ безусловно выше. Но зато этот язык часто выбирают настоящие маньяки :)
1. Производительность java выше, чем многие думают. При правильном (не виртуозном, а просто не-ламерском) написании, разница с с++ будет небольшой.
2. Как только звучит слово "кластер", java выигрывает еще больше. Там (в j2ee) это все прозрачно, удобно, надежно и производительно.
3. Найти хорошую комманду с++шников - сложно. Реально сложно. Как и любую хорошую комманду, в принципе. Но в мире java больше народу. И грамотного народу тоже - больше :)
2. Как только звучит слово "кластер", java выигрывает еще больше. Там (в j2ee) это все прозрачно, удобно, надежно и производительно.
3. Найти хорошую комманду с++шников - сложно. Реально сложно. Как и любую хорошую комманду, в принципе. Но в мире java больше народу. И грамотного народу тоже - больше :)
как показывает опыт - главное верно оценить загрузку создаваемого программного комплекса
при большой загрузке приложение, написанное на Java, будет вылетать из-за проблем Java-машины. На С++ подобных проблем нет
с точки зрения удобства разработки, то тут однозначно лидирует Java из-за обилия серъезных фреймворков и просто наборов классов.
при большой загрузке приложение, написанное на Java, будет вылетать из-за проблем Java-машины. На С++ подобных проблем нет
с точки зрения удобства разработки, то тут однозначно лидирует Java из-за обилия серъезных фреймворков и просто наборов классов.
да, насчет фреймворков - видимо Java лидирует...
О каких проблемах java hotspot вы говорите?
при большой загрузке приложение, написанное на Java, будет вылетать из-за проблем Java-машины. На С++ подобных проблем нет
Расскажите подробнее о этих проблемах. Мне вот интересно, что за проблемы.
мне тоже очень интересно..
первый раз о таком слышу, хотя работаю в конторе которая девелопит веб-платформу на джаве в промышленных масштабах
первый раз о таком слышу, хотя работаю в конторе которая девелопит веб-платформу на джаве в промышленных масштабах
Не хочу в холеваре учавствовать. Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч... Java не такая уж и быстрая, как многие про неё говорят. Если создаётся огромное количество маленьких объектов, и к работе приступает сборщик мусора...
Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч...
А зачем вы используете java в realtime ?
Java не такая уж и быстрая, как многие про неё говорят.
Java является довольно быстрым языком.
Если создаётся огромное количество маленьких объектов, и к работе приступает сборщик мусора...
Что имеет отношение к реализации виртуальной машины, но никак не к языку.
Немного не понял смысла фразы "Java является довольно быстрым языком", что значит быстрый язык?
Я немного не в курсе, но разве GB не является частью Java, и от него можно отказаться? Разве можно самому убить нужный объект в GB не запуская его? IMHO единственное, что можно, это принудительно заставить GB собрать мусор. Вот тут и встаёт проблема, если в приложении создалось огромное количество объектов.
Что имеет отношение к реализации виртуальной машины, но никак не к языку.
Я немного не в курсе, но разве 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 - где бОльшую часть времени занимают операции ввода/вывода, java не может проиграть c++ (ну, по крайней мере, при обозримой загрузке сервера).
google на java не напишеш, также как и не получится написать, скажем, производительный движок рендера 3d изображений. а вот для web - это очень хорошее решение, масштабируемое и расчитанное на широкий круг задач.
Но все мы помним покойного робота Томми работавшего на java, который влетел в бетонную стену на 70 миль/ч...
Но только не помните, что проблемы там были вовсе не в Java.
Еще один довод в пользу Java, а точнее J2EE для подобных проектов, это относительное изобилие специалистов. На C++ наверняка можно поднять тяжелый веб проект, и видимо можно найти какие-то доступные и работающие фреймворки, но специалистов знакомым с этим делом заметно меньше чем для мира веб приложений на java. Да и вообще, из моей практики, достойного програмиста на java найти легче чем на C++.
Насчет специалистов видимо вы правы. Но с другой стороны - найти специалиста по PHP проще, чем по Java (хотя шлака там ооочень много :)
В общем согласен, но меня этот фактор пока не пугает... (может и зря - ну да время покажет)
В общем согласен, но меня этот фактор пока не пугает... (может и зря - ну да время покажет)
Я просил уже вас на rpod'е, и Повторяю тут свою просьбу. Порасскажите о Java for Web. Тем более, вас слушает такое количество php-шников, которых не любит (окей, развел на флейм) ваш коллега bobuk. Вот и просветили бы, надеюсь, многим будет интересно.
сам прогаю на java и мне очень нравится, поэтому я бы порекомендовал ее..
Если хотите большой и хороший проект - spring/hibernate нужно знать обязательно (опционально можно прикрутить 5ый tapestry), ну и не забываем про jakarta commons. Как показывает практика, при таких раскладах к j2ee можно не прикасаться (это хорошо!).
Кстати удивило сравнение джавы и плюсов, обычно ее сравнивают с шарпом.
p.s. А про ruby - зря вы так. Присмотритесь к рельсам - очень прогрессивная вещь.
Если хотите большой и хороший проект - spring/hibernate нужно знать обязательно (опционально можно прикрутить 5ый tapestry), ну и не забываем про jakarta commons. Как показывает практика, при таких раскладах к j2ee можно не прикасаться (это хорошо!).
Кстати удивило сравнение джавы и плюсов, обычно ее сравнивают с шарпом.
p.s. А про ruby - зря вы так. Присмотритесь к рельсам - очень прогрессивная вещь.
Как можно считать Java и C++ одинаковыми языками?
Да хотя бы потому, что в Java есть GC, а в C++ его вообще нет и быть не может.
Да хотя бы потому, что в Java есть GC, а в C++ его вообще нет и быть не может.
Простите, уважаемые, хабра-люди, но то, чот вы говорите - бред сивой кобылы. Простите, ещё раз.
С одной стороны вы говорите, что Java - лидирующий фрэймворк. Тогда возникает вопрос, что такое за C++ за страшный фрэмворк?
С другой стороны как можно сравнивать кроссплатформенную Java с C++?
Вообщем, это называется так: "Какай хороший язык Java".:)
p.s. Автор случайно не из Единой России? Уж очень похож подчерк :)
С одной стороны вы говорите, что Java - лидирующий фрэймворк. Тогда возникает вопрос, что такое за C++ за страшный фрэмворк?
С другой стороны как можно сравнивать кроссплатформенную Java с C++?
Вообщем, это называется так: "Какай хороший язык Java".:)
p.s. Автор случайно не из Единой России? Уж очень похож подчерк :)
хорошая мысль, только хочу немного поправить: java - это не фреймворк
p.s. ПО поводу ЕР - а что у вас на Украине они тоже отжигают?
p.s. ПО поводу ЕР - а что у вас на Украине они тоже отжигают?
Какой еще фреймворк?
И при чем тут кросс-платформенность? Мы вроде не софт для мобильников обсуждаем, а серьезную серверную разработку, причем строго под никсы.
p.s. руки прочь от автора, автор - наш человек, я его лично знаю :)
И при чем тут кросс-платформенность? Мы вроде не софт для мобильников обсуждаем, а серьезную серверную разработку, причем строго под никсы.
p.s. руки прочь от автора, автор - наш человек, я его лично знаю :)
Берите Java ! :) Сравнение Java и С++ для веб разработок - эксклюзив в общей сложности. Единственное что я могу сказать по сути вопроса - eBay мигрирует с ISAPI на С++ к Java, если верить этому.
C C++ проблем будет куда больше (на истину в последней инстанции я не претендую).
А почему так сразу отметаются Perl и Python ? Под mod_perl и mod_python можно писать (хендлеры для апача) и получить неплохие результаты. На С можно делать тоже самое, только это решение может оказаться "золотым".
C C++ проблем будет куда больше (на истину в последней инстанции я не претендую).
А почему так сразу отметаются Perl и Python ? Под mod_perl и mod_python можно писать (хендлеры для апача) и получить неплохие результаты. На С можно делать тоже самое, только это решение может оказаться "золотым".
Обсуждаем Java и C++. Perl и Python - это иное...
...дабы не плодить излишних холиваров...
ОК. Попробуйте найти реализованный на C++ ORM фреймворк, MVC фреймворк и движок шаблонов. Очень полезные вещи в народном хозяйстве.
По-моему, это дискуссия того же плана, что "php vs не-php", лучшая серверная ОС и т.д. Автору нужно немного конкретизировать задачу.
Дело не только в том, кто быстрее, стабильнее, и более стильно собирает мусор, но и в сложности/дороговизне поддержки, лёгкости нахождения специалистов и т.п.
Дело не только в том, кто быстрее, стабильнее, и более стильно собирает мусор, но и в сложности/дороговизне поддержки, лёгкости нахождения специалистов и т.п.
Ну... блин, дожились! Теперь у нас С++ и Java - инструменты одного класса... :\
У меня в городе знаю с десяток контор, которые пишут под j2ee, не только веб, но в основном конечно он самый. Есть .NET, но его не рассматриваем. Не знаю ниодного человека который бы учавствовал в разработке чего-то под веб на С++. Исключениями в этой области могут послужить разве что какие-то поисковые машины или другие масштабные системы. Но и в масштабируемости думаю Java на голову выше C++, благодаря готовым наработкам.
К тому же и сам язык в разы удобнее и безопаснее, и набор инструментов такой, что удовлетворит любые потребности.
Так что лично для меня выбор очевиден :)
BTW, про PHP: друг фрилансер недавно сказал что нашёл одного буржуя, который хотел веб-проект небольшой(!), в принципе, если проект маленький, то можно использовать и PHP не особо напрягясь. Да и человека действительно легче найти и можно меньше заплатить. Так вот этот заказчик поставил сразу условие: "только не PHP".
К тому же и сам язык в разы удобнее и безопаснее, и набор инструментов такой, что удовлетворит любые потребности.
Так что лично для меня выбор очевиден :)
BTW, про PHP: друг фрилансер недавно сказал что нашёл одного буржуя, который хотел веб-проект небольшой(!), в принципе, если проект маленький, то можно использовать и PHP не особо напрягясь. Да и человека действительно легче найти и можно меньше заплатить. Так вот этот заказчик поставил сразу условие: "только не PHP".
Накидайте плз ссылок на фреймворки на С++ для девелопинга под веб...
Wt
Блин! а говорили можно использовать тэги.
http://ajaxian.com/archives/wt-c-ajax-fr…
http://ajaxian.com/archives/wt-c-ajax-fr…
Тут еще можете уточнить:
http://bacek.livejournal.com/281100.html
http://bacek.livejournal.com/281100.html
Добрый день
Спору нет, на С++ сложно девелопить вообще.
Но почему его всё ещё используют, и не собираются отказываться?
Грамотная комбинация инструментов gcc,gdb,make,cvs,...
тщательный подход к сбору логов, статистики, профилированию, возможности отката ситуации,
Наличие стандартной библиотеки STL, наличие огромного количества исходников, которые можно заюзать в проекта,
делает этот язык, технологию вполне пригодным и перспективным для веб разработок, с учётом увеличения трафика (возможности оптимизации почти бесконечны).
Так же, в отличие от пыхала, гораздо проше писать код для многократного применения, да и вообще создавать новые технологии, но это имхо.
а если следовать unix away то можно легко строить большие проекты, используя связки различных технологий (языки), чему весьма способствует веб.
Ни кто не запрещает скриптовыми языками создавать прототипы, а на плюсы уже переносить готовые решения.
Спору нет, на С++ сложно девелопить вообще.
Но почему его всё ещё используют, и не собираются отказываться?
Грамотная комбинация инструментов 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:)
О сложности использования.
Не так давно пробовал, насколько просто можно писать под 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: я больше не верю в фреймворки...
И очень интересно про шаблонизацию...
ps: я больше не верю в фреймворки...
Для C++ пробовал Wt, но штука своеобразная - по сути, event-driven ajax framework %)
То есть, внутри гораздо больше напоминает Qt (сигналы/слоты), чем привычные веб-фреймворки.
Мое имхо - если уж использовать C++, то писать все с нуля, и добиваться максимальной производительности, затачивая код под конкретный проект.
Из движков шаблонов смотрю в сторону teng, он отпарсенные темплейты компилит в свой хитрый байт-код, и еще и кэшировать умеет. Плюс к тому же работает с разными языками - то есть можно быстренько написать proof of concept и если все гут, то писать уже C++-версию.
Еще думаю про использование HAML - с ним верстать получается гораздо быстрее, и работать он умеет как отдельный парсер. Да и вообще думаю в сторону какого-нить libhaml, которого пока еще нет, но ведь можно сделать:)
а по поводу фреймворков - из них хороши только те, что предоставляют защиту от закона дырявых абстракций, иначе придется кучу времени убить на пляски с бубном, чтобы пробраться на более низкий уровень %)
То есть, внутри гораздо больше напоминает Qt (сигналы/слоты), чем привычные веб-фреймворки.
Мое имхо - если уж использовать C++, то писать все с нуля, и добиваться максимальной производительности, затачивая код под конкретный проект.
Из движков шаблонов смотрю в сторону teng, он отпарсенные темплейты компилит в свой хитрый байт-код, и еще и кэшировать умеет. Плюс к тому же работает с разными языками - то есть можно быстренько написать proof of concept и если все гут, то писать уже C++-версию.
Еще думаю про использование HAML - с ним верстать получается гораздо быстрее, и работать он умеет как отдельный парсер. Да и вообще думаю в сторону какого-нить libhaml, которого пока еще нет, но ведь можно сделать:)
а по поводу фреймворков - из них хороши только те, что предоставляют защиту от закона дырявых абстракций, иначе придется кучу времени убить на пляски с бубном, чтобы пробраться на более низкий уровень %)
Это что шутка?
JEE это уже индустриальный стандарт: Инфраструктура, устоявщиеся технологии, сообщества.
В данном контексте с++ и JEE - это соврешенно разные и несопоставимые вещи.
C++ бесспорно можно использовать но исключительно в единичный и уникальных бекендах где потребуется сверхвысокая производительность.
Примешивать сюда пхп с питоном, так же полнейшая глупость, их с JEE роднит только то что и то и другое для веба можно использовать. Совершенно различные весовые категории. JEE для крупных и средних корпоративных проектов. php для малых и средних.
JEE это уже индустриальный стандарт: Инфраструктура, устоявщиеся технологии, сообщества.
В данном контексте с++ и JEE - это соврешенно разные и несопоставимые вещи.
C++ бесспорно можно использовать но исключительно в единичный и уникальных бекендах где потребуется сверхвысокая производительность.
Примешивать сюда пхп с питоном, так же полнейшая глупость, их с JEE роднит только то что и то и другое для веба можно использовать. Совершенно различные весовые категории. JEE для крупных и средних корпоративных проектов. php для малых и средних.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Web-разработка: Java vs C++