как правило вопросы скорости решают пересмотром кода, применением оптимизации и возможно апгрейдом железа. Что бы SUN выпустила подобный native компилятор? да никогда!
>вопросы скорости решают пересмотром кода,
>применением оптимизации и возможно апгрейдом
>железа.
К программам на жабе применимо скорее последнее.
Конечно, кодировать и на ней можно хрен знает
как, но это уж совсем стыдно... Сложных алгорит-
мов на жабе не часто пишут, а интерфейсы и
обработку данных из БД оптимизировать сложно...
Погоняйте арифметику на Java, да? Примитивный тест на десять миллиардов операций умножения и сложения. Найти время, за которое этот цикл пройдет. Сравнить с аналогичным кодом на C. Что может быть проще?
Неправда. Пересмотр и оптимизация кода - дело важное. Оптимизировать можно сетевые протоколы (которые очень даже пишут на жабе), state-machines, parsers, compilers, DOM etc. И даже GUI. Много сложных жабских проектов (см. в инете) борются за скорость (пример про GUI - jEdit, NetBeans, ...).
Это я вам как Brainbench MVP for Java 1 говорю:)))
> ...Много сложных жабских проектов (см. в инете) борются за скорость (пример про GUI - jEdit, NetBeans, ...).
Из последнего, с чем сталкивался, очень приятное впечатление скоростью GUI (и не только) произвела среда разработки IntelliJ IDEA 2.5 (http://www.intellij.com), к сожалению не фришная... А вообще в версии J2SDK 1.4 скорость 2D-графики подтянули, а все остальное в Java давно на уровне.
> Это я вам как Brainbench MVP for Java 1 говорю:)))
Присоединяюсь как Sun Certified Programmer for Java[tm] 2 Platform :)))
кому не нравится не пишите на Java
у Java есть множество приемуществ например давайте раскажиет мне о технологии подобной J2EE (я о всем EJB , JMS ......) и что бы это было переносимо с одной платформы на другую ?
>А говорят "ИЛ-2 Штурмовик" большей частью написан на java?!
"Говорят, шпиёны воду отравили самогоном, ну а хлеб теперь из рыбной чешуи" (с) В.С. Высоцкий.
2anonymous (*) (2002-01-23 21:08:14.0) "гм.. А эмулятор спектрума на Java - Jasper?" - Во. Еще одного уродца вспомнили. Никак, бедный, не может нормально на скорость нормальную настроиться. ~200% и не меньше, хоть тресни. Я уж молчу про то, что звука нэт и все остальное. У.Б.О.Ж.И.Щ.Е.
А о чем такой тест будет свидетельствовать? О том, что ява медленнее С? Это не новость. И возможностей явы как языка прикладного программирования это не умаляет.
2Полуденный Бес
>>>>
А о чем такой тест будет свидетельствовать? О том, что ява медленнее С? Это не новость. И возможностей явы как языка прикладного программирования это не умаляет.
>>>>
Ну насчет языка прикладного программирования
это слишком круто сказано.
Мне кажется такой язык должен быть простым,чего не скжешь о яве.
Ибо по сложности ява чуть проще чем С++, а это вроде называют языками третьего поколения.
Мое отношение к ява - это просто модный и хорошо раскрученый язык.
Его бесспорное достоинство - это то что он слегка "размочил" монополию разработки компонентов от MS. На этом сообственно все.
Остальное умеют или умели делать другие языки и тоже кроссплатформенные.
А вот финансовых вливаний в аппаратную платформу использование Явы требует однозначно.
( И не говорите мне что память дешевая )
Java рулит. Память и вправду дешевая.
Да явя медленнее С и С++, но зато я пишу программу и мне пофиг, под чем ее писать и под чем она будет работать. И не надо ее перекомпиллировать под каждую платформу.
За удобство надо платить, в данном случае расплачиваются мощным железом.
Я считаю самым сложным языком, с которым мне приходилось столкнуться - Progress (ver 8.2 A). 4GL - исключительно прикладного назначения язык. Количество служебных слов превосходит все мыслимое, - на сотни счет идет. А в чем сложность явы? Много проще С++. Несомненно, то, что он размочил Visual C, - это достоинство, но стратегического порядка. У него много других достоинств, связанных с самим языком и его реализацией.
Насчет вливаний в железо(я так понял, что для работы ява-приложений, а не в Java-процессор?). У меня 256M RAM, не много для нынешнего дня. ОС Win 2000. Работают - Tomcat 3.3 - 2 шт, Forte 3 for Java - 1 шт, IIS - 1 шт. Аутлуки, эксплореры, файл браузеры - не считаю. Свопа нет. Дома RH7.2 PII 200 64M RAM, там да, Forte уже запускать смысла нет. Но нельзя же ориентироваться на эту конфигурацию?
Мораль в том, что на таких задачах скорость на нормальной JVM от С будет отличаться всего на 10%, может 20.
В жабе гуи притормаживают, да и new не стоит сильно увлекаться.
Я как-то писал прогу, которая интенсивно шарилась по сети, парсила инфу и складывала в базу.
На фре с jdk 1.1.8 прога ела 20% процессора, MySQL - 50%
Конечно, на яве писать надо со вниманием, с повторным использованием объектов, крепко подумав, нужен ли Vector или ArrayList(разница в примитивных тестах этак до 40%), избегать лишних перераспределений памяти и т.д и т.п.
Недовольство вызывает, наверное, то, что на С/С++ можно писать практически всегда "от вольного" и практически всегда получишь удовлетворительный по ресурсам результат, а на яве этого добиться труднее, мозгой больше шевелить надо над оптимизаций кода, а не только алгоритма.
Я тоже пишу проги на Яве и как бы мне хотелось native compiler - то есть я хотел бы иметь язык, такой же простой как Ява (точнее с синтаксисом и библиотеками Ява) и которая могла бы компиляться в executable файл.
Ну как Си, например - можно писать на Си под что угодно - под Линукс, под Виндоуз,..
2Полуденный Бес.
Дело в том, что на C ты пишешь _не_всегда_ под Windows, или под Linux. Есть большой круг задач, когда хватает стандартных библиотек или тех которые на них основанны, плюс, возможно, либы доступа к ДБ и т.д. Если ужо нужно интерфейс, то и морду можно взять интернациональную (хоть TK на первой). Так что если писать с осознанием необходимости крос-платформенности, то на C можно делать достаточно спокойно (все зависит от специфики приложения).
Спокойствие в кроссплатформенности на С обеспечивается либо "оборачиванием" системных вызовов, либо дерективами условной компиляции, что, вообще говоря, то же "оборачивание". И в том и в другом случае ты выполняешь часть работы дважды.
Возможно, в самых тривиальных случаях, и можно обойтись printf и т.д., но что-то я с трудом представляю такое приложение(не про "Hellow World" же мы говорим?). А как только появляются потоки - все, никакими стандартными библиотеками не обойтись.
Спокойствие в кроссплатформенности на С обеспечивается либо "оборачиванием" системных вызовов, либо дерективами условной компиляции, что, вообще говоря, то же "оборачивание". И в том и в другом случае ты выполняешь часть работы дважды.
Возможно, в самых тривиальных случаях, и можно обойтись printf и т.д., но что-то я с трудом представляю такое приложение(не про "Hellow World" же мы говорим?). А как только появляются потоки - все, никакими стандартными библиотеками не обойтись.
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>
А JVM случайно не является такой же оберткой к системным библиотекам?
Как и любой интерпретатор? Например тот же Python.
Насчет быстродействия:
Где-то в доке по JAVA проскакивало, что если ваше приложениет требует повышеной производительности используйте naitive методы ( проще говоря вызов С-функций )
Насчет вливаний в железо(я так понял, что для работы ява-приложений, а не в Java-процессор?). У меня 256M RAM, не много для нынешнего дня. ОС Win 2000. Работают - Tomcat 3.3 - 2 шт, Forte 3 for Java - 1 шт, IIS - 1 шт. Аутлуки, эксплореры, файл браузеры - не считаю. Свопа нет. Дома RH7.2 PII 200 64M RAM, там да, Forte уже запускать смысла нет. Но нельзя же ориентироваться на эту конфигурацию?
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>
Все это вы красиво говорите, но вот когда доходит дело до эксплуатации приложений то мне по вашемо на 200 пользователей сколько памяти надо ?
256*200 = 51200 Мб( конечно это утрировано, но суть понятно).
Не слабо да?
Так вот еще раз про дешевую память.
Server-side приложения требуют много памяти и процессоров,а следовательно это уже серверы SUN, Alpha и т.д.
А кто знает сколько модулек 256Mb дополнительно купить для Sun или Alpha стоит?
А сколько стоит процессор добавить ?
То-то и оно что мы сначала софт пишем а потом "бабки" считаем.
У нас используется Oracle application server (тот который на базе апача ),
Так пока Java не отключили система ели дергалась, а после отключения все стало на свои места.
Сервер достаточно не слабый 2 Xeon-а( 1Ghz) - 2Gb памяти.
Вот такая вот музыка.
Ну, с некоторой натяжкой можно сказать, что - да, является оберткой. Но ведь, я-то об этом не знаю и знать не хочу. От меня все скрыто. И системные вызовы, и работа с потоками. Никаких #IFDEF'ов. Это же благо для кроссплатформенной разработки - не думать, как и что от тебя скрыто. И ява это делает и делает хорошо.
А под повышенной производительностью что надо понимать? Я же не предлагаю писать на яве СУБД или драйверы? В таком софте - да, нужны будут вызовы натурально скомпилированных библиотек. Но само написание такого софта на яве - уже ошибка.
"...200 пользователей сколько памяти надо... ?" - совершенно непонятно, - откуда такая калькуляция? Почему 200x256M? С чего вдруг?
Я намекал на CGI и другие сервер-сайд приложения + чисто расчетные задачи или обработка текстовых массивов. Для этих целей у C есть и кросс-платформенность и скорость.
Конечно существуют задачи, где для обеспечения преносимости на уровне исходного текста требуются какие-то мизерные телодвижения. Но число их невелико.
Но вот у меня совершеннейший сервер-сайд, потоков хренова туча, заранее даже сказать нельзя - сколько их будет. И как мне это портить? Писать wrapper'ы для общения с потоками?
Есть еще одно преимущество явы, о котором так давно говорили Питеры Нортоны, - отсутствие работы с памятью напрямую. Это значительно снижает цену ошибки. Пример - extended stored procedure. Если падает С'шная, то она может всю СУДБ с собой прихватить, если явская - то и хрен с ней - рукой можно помахать. Пустячок, а приятно.
2Полуденный Бес.
<<<<
"...200 пользователей сколько памяти надо... ?" - совершенно непонятно, - откуда такая калькуляция? Почему 200x256M? С чего вдруг?
>>>>
Это конечно сказано утрировано.
Но если точно то можно суда глянуть http://technet.oracle.com/docs/products/ias/pdf/http_perf_guide_linux1022.pdf
Страница 41.
Думаю там вполне хорошо написано.
Я просто подвожу к мысли, что такое же приложение написанное на другом языке( не обязательно на С, это может быть и Perl,и Python,и так далее) будет потреблять меньше памяти,следовательно возможно обслуживать больше пользователей на той же самой аппаратной конфигурации хоста.
Ну конечно же это не так. То есть, в каком-то частном случае это может оказаться верным, но в общем - нет.
Если пишется сервер, то количество ресурсов, которое он затрачивает для работы с одним соединением совершенно не зависит от средства, с помощью которого этот сервер реализован. Ну это же очевидно!
Оракловые буквари говорят, что на одного клиента Оракл тратит от 1.5М до 4М памяти(ничего себе - разброс данных для оценки, правда?). Это же не значит, что ЛЮБОЕ серверное приложение, написанное на С, будет затрачивать такие же средства на работу с соединением?
2Полуденный Бес
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>
Ну конечно же это не так. То есть, в каком-то частном случае это может оказаться верным, но в общем - нет.
Если пишется сервер, то количество ресурсов, которое он затрачивает для работы с одним соединением совершенно не зависит от средства, с помощью которого этот сервер реализован. Ну это же очевидно!
Оракловые буквари говорят, что на одного клиента Оракл тратит от 1.5М до 4М памяти(ничего себе - разброс данных для оценки, правда?). Это же не значит, что ЛЮБОЕ серверное приложение, написанное на С, будет затрачивать такие же средства на работу с соединением?
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>
Ну если все так,как вы говорите у меня сервер приложений с влюченной явой просто должен летать. Однако у меня миражи и средняя загрузка OC
в 5 ед. , а после отключения JAVA модулей 0.5 .
2Странник: >Все это вы красиво говорите, но вот когда доходит дело до >эксплуатации приложений то мне по вашемо на 200 пользователей сколько >памяти надо ? 256*200 = 51200 Мб( конечно это утрировано, но суть >понятно). Не слабо да?
такие мысли уважаемый говорят о том что вы слабо разбираетесь в
вопросе - почитайте умные книги про устройство современных OC и организацию работы процессов в памяти.
Пример! Игровой сайт(название не привожу дабы не выглядело рекламой).
2-ух процессорная тачка, 512m, FreeBSD, Java 1.1.8. Работают несколько десятков java процессов(сервера для каждой из игр) которые легко держат нагрузку 300-400 человек в online, при этом же на машине еще крутится Apache в связке с Tomcat, CPU нагрузка дай бог 20%. При этом заметьте софт весь этот free, что само по себе уже большой плюс!
Господа ! А вот если брать server-side java (JSP или типа того, я в java не спец) в сравнении с php ? При этом речь идет о разработках сайтов среднего и крупного масштаба - большие корпоративные сайты (но поменьше M$ и RH), информационные порталы, типа www.e1.ru, то как бы тут сравнить - что лучше ?
Лично я вот уже не один год работаю на php и в принципе доволен, но чем крупнее разработка, тем больше вокруг нее появляется дополнительных задач, для котороых php мягко говоря не приспособлен. Поначалу я писал на php как на shell, теперь вот думаю уже перейти на C для этих дел. Но с другой стороны есть java, на которой тоже все это можно делать (и сайты и серверные дела) ...
Есть советы/идеи/пожелания ?
IMHO, Java сервлеты и JSP самое лучшее решение для server-side programming.
2 Anton_Khalikov >
Прочитай про JSP (да и вообще про технологию Java Servlets & JSP) - Думаю тебе понравится :)
PS. Все равно хочу язык с синтаксисом и возможностями Java, и главное, чтобы он компилялся в native код - Вот такой я вредный :)
А вообще сделали бы так, чтобы мона было бы скомпилять и байт-код и native executable: хочу кросс-платформенности - компиляю в байт-код, хочу на какую-нить платформу онли - компиляю в native exe.
2cyberian
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>
Пример! Игровой сайт(название не привожу дабы не выглядело рекламой).
2-ух процессорная тачка, 512m, FreeBSD, Java 1.1.8. Работают несколько десятков java процессов(сервера для каждой из игр) которые легко держат нагрузку 300-400 человек в online, при этом же на машине еще крутится Apache в связке с Tomcat, CPU нагрузка дай бог 20%. При этом заметьте софт весь этот free, что само по себе уже большой плюс!
>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >
Я не против free софта,я только за, но и здравый смысл мне не чужд.
Я тоже не буду называть один популярный сайт у которого многое сделано на JAVA ( А точнее было ). Так в ихнем чате постоянно тормозухи и глюки. А потом через время смотришь и ссылках уже мелькают перловые модули к чему бы это.
Ну и что доказывает ваш пример? А было бы это написано например на Perl - держало бы и 1000 человек, я больше про это говорю.
То что написать можно все на JAVA и что оно будет работать я не сомневаюсь.
СтранниК
Под работой с шаблонами я понмаю следующее: у меня при создании сайтов имеется некий движок, который занимается логикой сайта и шаблоны страниц, которые "парсятся" этим самым движком и получается html.
Короче говоря, можно все конечно привести к xml, а можно и через работу со строками (рег. выражения и т.д.) Так вот, есть ли это в java ? И еще - php vs java по производительности и ресурсоемкости как ?
Сайты на php уверенно "держат" по 5-10 тысяч посетителей в день. Сможет ли java похвастаться тем же на том же железе ?
Психи. JSP для нормального сайта? Вы что, хотите разрешить наборщикам править что-то, где есть исполняемый код? Я не говорю о сменах дизайна, скиновании и т.д. То же касается обычного применения PHP. Дизайн надо отделять от логики.
А пятьдесят гигов для двухсот клиентов на Java --- это тоже несуразица. Конечно, при определенной кривизне рук и известной степени отсутствия мозгов можно и сто гигов захотеть... На Перле как-то крутился мой скриптик, интенсивно взаимодействуюжий с MySQL, обслуживающий до 400 000 пользователей в час. Думается мне, это требовало не менее, чем 200 пользователей Java :)
Cyberian, что за сайт? Хотя бы в общих чертах. Давно ищу приличную MMORPG для Линуха (UO не предлагать)...
Народ, есть хорошо написанные приложения, есть - написанные плохо. И те, и другие можно писать на разных языках. А бодаться - ява плохая, потому, что я видел тормозной софт, написанный на ней - это несерьезно.
Для примера, про тормознутость явы в Oracle App. Server. Я сравнивал возможности нескольких движков сервлетов. Был написан сервлет,
который формирует HTML страницу(~50K) и отдает ее клиенту. Условия опыта были таковы, что задержка ответа сервера более чем на 10 сек - штрафное очко. OAS без напряжения держал 200 HTTP подключений на PIII 500, 128M RAM, WinNT 4. Тест, камерный, конечно, но повод для размышления дает.
2 coder
Я слышал про нативные компиляторы для явы под Windows. У Borlanda, кажется, есть. Но специально не интересовался.
2 Anton_Khalikov
Насколько я понимаю, скрипты на PHP - не реентерабельны. Т.е. скрипт поднимается с диска по запросу клиента и движок его выполняет. Скрипт не сохраняет свое состояние или для этого нужны дополнительные ухищрения. Сервлет - специфическая программа, запущенная в контексте сервера приложений, со всеми свойствами устойчивого процесса. Например, сервлет может открыть соединение с СУБД(или их пул) и не тратиться на установления соединения для каждого запроса, очень просто отслеживаются зависимости между запросами(и между сервлетами).
А что до обработки шаблонов - тут дело личное, писать самому, пользоваться регулярками, которые у Джакарты есть, или JSP.
Но это частности.
Вообще говоря, с точки зрения проекта, ява удобна своей универсальностью. В ней хорошо проработано применение на стороне сервера(сервлеты, JSP), несколько хуже, но тоже ничего, использование на клиенте, спасибо MS, (апплеты не жалую, кстати). Можно писать приличные stand-alone приложения. Горячие головы аж 3D в нее впихнули, но это изврат. Все это большой гуд, если пишется что-то корпоративное в интранете - есть возможность избежать разнородности средств разработки, это очень уменьшает хлопоты. А то получается - этот модуль на С, эти на Perl, эту апликуху на Delphi ваяли, там VB. Только Sega Mega Drive не хватает.
Java, разумеется, заведомо производительнее PHP, причем на порядки. По требованиям к железу ничего сказать не могу, но из общих соображений кажется, что с ресурсами тоже должно быть все в порядке. Java, говорят, хорошо работает с XML, но библиотек для работы с регулярными выражениями в ней я просто не видел, а они для меня часто бывают критичны.
А насчет 3D, то явой просто накрыли вызовы OpenGL, в лучшем варианте, можно поискать на java.sun.com, точнее не скажу, - не помню. И в самом jdk есть примеры java 3D. Они помедленнее, само собой.