LINUX.ORG.RU

Ответ на: комментарий от annonymous

>> Количество проектов на sourceforge.net на php 11623 на java 15933 >Каких проектов там 15933? jedit? UML? Обратимся к freshmeat.net, который даёт нормальную разбивку на категории: * Environment :: Eclipse :: Java/Swing (4 projects) * Programming Language :: Java (3739 projects) * Programming Language :: Java :: J2ME (59 projects) * Programming Language :: JavaScript (463 projects) * Topic :: Software Development :: Libraries :: Java Libraries (809 projects) Вычлени из них те, что касаются обсуждаемой темы.

И где ты в этой статистики привел язык на 3 буквы? И ещё раз повторяю для сержантов, security hopes учитывались на ВСЕ java приложения, которые данный сайт отслеживал, по этому сравнивать надо со всеми. Хотя, как показал расчет, даже если считать, что все эти приложения серверные(что не так, а в серверных дыр меньше на порядок) PHP в 10 раз дырявей чем java (реально же число где то между 30 и 40, но маленьких не обижаем, так что пусть будет 10).

можно ещё добавить сайты которые хостят opensource проекты можно взять в статистику tigris.org там java софта в два раза больше чем на php или apache.org, там, ты наверное сам понимаешь ;-)

Yilativs ★★★★
()
Ответ на: комментарий от annonymous

>почти никто не знает команду любителей музыки, поставивших дохлый сервачок на 1ГГц селероне с 256Мб рамы в одной из домашних сетей Москвы ;)

О том и речь, с ntv качает куча народу, сайт куда под большей нагрузкой, чем никому не известный сайт из чьей-то локалки. При этом он показывает результат в 3 раза лучший.

>При этом их сервачок всего вдвое отстаёт

Садись, двойка. 20 на 7 уже разделить не можешь.

Yilativs ★★★★
()
Ответ на: комментарий от male

> Поэтому я хочу чтобы обсуждалось отдельно: серверная ява и клинтская. Не нужно путать теплое с мягким.

Предлагаю заодно сразу разнести отдельно "ява как язык", и "ява как платформа", под последним имея в виду J2EE. Потому как ява как язык - это убожество, для осознания чего достаточно познакомиться с практически любым не-мэйнстрим ЯП (Eiffel, Smalltalk, Lisp - это так, навскидку), или даже просто серьезно поковыряться с плюсами (на boost хотя бы посмотреть, для начала). А вот то, что вокруг этого языка нагородили, хоть и имеет зачастую весьма бредовый и просто тошнотворный дизайн (тот же EJB - вы, кстати, видели, что из него старого осталось в новой версии?), однако же обкатанных аналогов на других языках нет и не предвидится. Т.е. это лучшее из того, что есть. Хотя все равно бяка =/

Вообще именно за это у меня в последнее время проявилась сильная антипатия к яве - то, что оно убого само по себе, это ладно; не нравится - не пользуй. Но вот то, что оно оттягивает львиную долю сил на реализацию всяких вкусных штук (тот же ORM, или навороченные IDE с рефакторингом) на себя... а ведь мог бы быть и нормальный аналог EJB под лисп...

int19h ★★★★
()
Ответ на: комментарий от int19h

Вобщем какое то странное понятие "убого", весьма субъективное и относительное.

Язык, платформа - разве это по большому счету имеет значение ? Давай оперировать терминами инструмент и эффективность.

Инструментом будем считать: язык + библиотеки + IDE + инфраструктуру + ...
Эффективность инструмента обратно пропорциональна издержкам (затраты, сроки, сопровождение, доработка, ...) при его применении для решения определенного класса задач.

Вобщем очевидно почему ява рулит, просто в целом, она очень эффективный инструмент для решения многих распространенных задач, а твои не-мэйнстрим ЯП тут отдыхают.

По поводу питона как язычок он конечно приятней (но только как язычок, хотя ruby еще приятней), но по мне java + навороченная IDE все равно эффективней, к тому же скоро выдет groovy.


> Но вот то, что оно оттягивает львиную долю сил на реализацию всяких вкусных штук
хм, блюда вкусные, а посуда в которой готовят не нравится 8) я думаю те кто готовят знают толк в посуде

> а ведь мог бы быть и нормальный аналог EJB под лисп...
а оно надо кому нибудь само по себе ? без нормального presentation layer-а и прочего, сила j2ee в том что это целостный комплекс стандартных средств.
Почему всего этого нет в лиспе сейчас отдельный вопрос, хотя во сколько раз java моложе.

> сильная антипатия к яве
и поэтому ты тут LAMP-ов подбадриваешь, может скажешь еще что тебе PHP нравится :)

ed ★★
()
Ответ на: комментарий от Yilativs

> И ещё раз повторяю для сержантов, security hopes учитывались на ВСЕ java приложения

...которые используются двумя-тремя человеками. Ну, уговорил - сотней ;)
Я про серверные продукты, заявленные на sourceforge. Ну, а теперь
приведи хоть что-то на jave так же распространённое, как phpMyAdmin,
SquirrelMail, phpNuke, phpBB и т.п. - продукты, установленные на десятках тысяч хостов в инете. Я хочу посмотреть на твой список, а потом
решить, кто дырявее.

annonymous ★★
()
Ответ на: комментарий от ed

> Язык, платформа - разве это по большому счету имеет значение ?

Имеет. Кривой язык отбивает напрочь все желание иметь дело с явой как платформой.

> а твои не-мэйнстрим ЯП тут отдыхают.

Ну сам же говорил, что речь идет - о связке язык+платформа. А потом опять скатился на языки...

> хм, блюда вкусные, а посуда в которой готовят не нравится 8)

Не посуда, а то, из чего готовят. Соя, млин =/

> я думаю те кто готовят знают толк в посуде

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

> а оно надо кому нибудь само по себе ? без нормального presentation layer-а и прочего, сила j2ee в том что это целостный комплекс стандартных средств.

Вот я и говорю - хреново, что этот целостный комплекс сделан на базе жабки, а не лиспа.

> и поэтому ты тут LAMP-ов подбадриваешь

Это где??

> может скажешь еще что тебе PHP нравится :)

А что там может нравиться? Язычок примитивный весьма, в последней версии местами только дополз до жабки. Как платформа - это вообще кошмар, достаточно взглянуть на стандартную библиотеку.

Если уж на то пошло, то по идеологии мне куда больше нравится Ruby on Rails. Но оно сыровато пока.

int19h ★★★★
()
Ответ на: комментарий от male

>По поводу php: - PHP = Personal Home Page. чего тут еще говорить. не предмет дискуссии вообще.

Mega LOL

ещё раз перднули в лужу :)

зачем так жестоко выставлять своё профанство? погуглили б для начала :)

PHP: Hypertext Preprocessor - PHP, что означает "PHP: Препроцессор Гипертекста", название - рекурсивный акроним

AcidumIrae2
()
Ответ на: комментарий от AcidumIrae2

> зачем так жестоко выставлять своё профанство? погуглили б для начала :)

Возвращаю тебе твой же совет. PHP - это изначально именно "Personal Home Page". Переименовали они его позднее, в третьей или четвертой версии, не помню уже. Однако ж как не назови, суть от этого не меняется...

int19h ★★★★
()
Ответ на: комментарий от int19h

Тебя тоже когда-то, наверное, звали Павлик? Вот и у PHP было хорошее,
счастливое детство ;)

annonymous ★★
()

Ну вот, опять превратили новость в перебранку.

А ведь суть новости в следующем.

На рынке для Java существует несколько хороших WEB-framework'ов: Struts, JSF, Tapestry etc. Struts и JSF - производитель Sun. Tapestry делает в основном один человек - Howard M. Lewis Ship. Struts стал стадтартом de-facto. JSF в основном существуют платные реализации от Sun, Oracle, Borland и др. На JSF переходят неохотно. Наверное поэтому Sun сделала свою Reference Implementation открытой, чтобы хоть как-то исправить положение.

Самый интересный framework - Tapestry, он не основан на JSP, у него свой движок. Приложения на нем пишутся очень быстро.

Какую WEB-framework выбирают в вашей компании?

Вот об этом хотелось бы поговорть, а не о Java vs PHP/Phyton.

es
()
Ответ на: комментарий от annonymous

> И ещё раз повторяю для сержантов, security hopes учитывались на ВСЕ java приложения

>...которые используются двумя-тремя человеками. Ну, уговорил - сотней

Будь реалистом, студент - сотней тысяч ;-)

Хотя конечно, я забыл, ты же опять начнешь ныть что мол сайтов на java меньше чем на PHP. Только вот Opel'ей в москве тоже меньше чем Жигулей, однако, что-то мне больше нравится Opel. А сайтов на plain html ещё больше чем на java + php + perl ;-)

>Я про серверные продукты, заявленные на sourceforge. Ну, а теперь приведи хоть что-то на jave так же распространённое, как phpMyAdmin, SquirrelMail, phpNuke, phpBB и т.п. - продукты, установленные на десятках тысяч хостов в инете. Я хочу посмотреть на твой список, а потом решить, кто дырявее.

Ну давай, cравним сравним JForum (0 дыр)и phpBB (около 45) на дырявость ;-) OpenExchange (0 дыр) и SquirrelMail (больше 20) JBOSS Portal (0 дыр)и phpNuke (всего 8 дыр)

Исходя из предложенного тобой способа считать дырявость, дырявость PHP стремится в бесконечность. Учи мат часть, студент.

Yilativs ★★★★
()
Ответ на: комментарий от AcidumIrae2

>>По поводу php: - PHP = Personal Home Page. чего тут еще говорить. не предмет дискуссии вообще.

>PHP: Hypertext Preprocessor - PHP, что означает "PHP: Препроцессор Гипертекста", название - рекурсивный акроним

Писал ты не мне, но уж больно ты меня насмешил, так что вот почитай историю:

Originally, PHP stood for "Personal Home Page". Today, the official meaning is the recursive acronym "PHP Hypertext Preprocessor".

Yilativs ★★★★
()
Ответ на: комментарий от int19h

>Возвращаю тебе твой же совет. PHP - это изначально именно "Personal Home Page".

>Писал ты не мне, но уж больно ты меня насмешил, так что вот почитай историю:

пеочитайте оба

http://ua.php.net/history

PHP/FI - a simple set of Perl scripts (Personal Home Page / Forms Interpreter)

PHP 3.0 was the first version that closely resembles PHP as we know it today. It was created by Andi Gutmans and Zeev Suraski in 1997 as a complete rewrite. It was named plain 'PHP', with the meaning being a recursive acronym - PHP: Hypertext Preprocessor.

Продолжайте меня смешить клоуны ;)

:)))))

Mega LOL^2

;)

AcidumIrae2
()
Ответ на: комментарий от Yilativs

читаем мой предвдущий пост у кирим историю

PHP/FI (PHP = Personal Home Page/Form Interpreter) = perl by Rasmus Lerdorf

PHP/FI 2.0 (PHP = Personal Home Page/Form Interpreter) = perl + С by Rasmus Lerdorf

PHP 3.0 (PHP = PHP Hypertext Preprocessor) = переписано на С by Andi Gutmans and Zeev Suraski, ребята поняли что PHP/FI 2.0 говно и написали своё ;)

непонятно? ещё разжевать? ;)

AcidumIrae2
()
Ответ на: комментарий от AcidumIrae2

>PHP 3.0 (PHP = PHP Hypertext Preprocessor) = переписано на С by Andi Gutmans and Zeev Suraski, ребята поняли что PHP/FI 2.0 говно и написали своё ;)

Так, тебе и сказали, что в начале это г stood for "Personal Home Page" теперь, когда ребята написали свое г оно получило the official meaning is the recursive acronym "PHP Hypertext Preprocessor". Как г не назови, медом не станет.

Yilativs ★★★★
()
Ответ на: комментарий от annonymous

Обалдеть! Ты меня уже разозлил.

# ab -t20 http://xxx/xxx/xxx.jsp
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking xxx (be patient)
Finished 2857 requests
Server Software:        xxx
Server Hostname:        xxx
Server Port:            80

Document Path:          /xxx/xxx.jsp
Document Length:        17293 bytes

Concurrency Level:      1
Time taken for tests:   20.000 seconds
Complete requests:      2857
Failed requests:        0
Broken pipe errors:     0
Total transferred:      50051909 bytes
HTML transferred:       49411717 bytes
Requests per second:    142.85 [#/sec] (mean)
Time per request:       7.00 [ms] (mean)
Time per request:       7.00 [ms] (mean, across all concurrent requests)
Transfer rate:          2502.60 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0     0    0.3      0    17
Processing:     4     6   65.3      4  3000
Waiting:        3     6   65.3      4  3000
Total:          4     6   65.3      4  3000

Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      4
  80%      4
  90%      5
  95%      6
  98%      6
  99%      8
 100%   3000 (last request)

Это при том, что сейчас там УЖЕ сидит 1441 ОДНОВРЕМЕННЫХ пользователя.
Слив защитан, красноглазик? Не пытайся засунуть пыхпыхпых везде.
Для каждого инструмента есть своя ниша.

P.S. Я сам к джаве относился крайне отрицательно(примерно также, как и ты),
потому-что ошибочно оценивал её производительность по десктопным аппликухам, которые еле работают.

Deleted
()
Ответ на: комментарий от Deleted

P.P.S. Я не программист, я админ(в основном)

Deleted
()
Ответ на: комментарий от es

Пробуем сейчас Tapestry 4 ( рассчёт на то, что к завершению проэкта уже будет релиз ), но очень много проблем с документацией. По моему, LHS просто не тянет в одиночку и фраймворк и его документирование. Да ещё и Hivemind на нём же висит :) А вообще он мужик - зверь.

alebu
()
Ответ на: комментарий от alebu

>Пробуем сейчас Tapestry 4 ( рассчёт на то, что к завершению проэкта уже будет релиз ), но очень много проблем с документацией.

Какие плюсы перед JSF?

Yilativs ★★★★
()
Ответ на: комментарий от int19h

> Про Amazon сказали внизу, а Google - поисковик на плюсах, все остальное (GMail, например) - на питоне.

http://www.google.com/apis/

Это так к сведению.

r ★★★★★
()
Ответ на: комментарий от es

>Какую WEB-framework выбирают в вашей компании?

Struts

JSF в текущей реализации не очень много дает плюсов, что бы на него переходить (ждем 1.2)

Yilativs ★★★★
()
Ответ на: комментарий от Yilativs

>>Самый интересный framework - Tapestry

>Чем он интересней JSF, Struts?

Хмм. А чем Spring Framework не устраивает. Моё ИМХО в его пользу.

Korwin ★★★
()
Ответ на: комментарий от nuBo

> это почему же perl не поддаётся рефакторингу ?

Года ты последний раз рефакторил проект на перле в 4 миллиона строк?

r ★★★★★
()
Ответ на: комментарий от Korwin

>Хмм. А чем Spring Framework не устраивает. Моё ИМХО в его пользу.

Решение требует кластеризации у некоторых заказчиков (мы не сайт разрабатываем, а workflow систему). У нас активно используются Stateless EJB + планируется переход на EJB3 (когда будет готов) с hibernate. Морда на Struts.

Yilativs ★★★★
()
Ответ на: комментарий от annonymous

> Давай. Вернёмся к CMS "Магнолия" ;) Так скока она выдаёт страниц в секунду?

По твоему это единственный критерий? Дык вот такие системы которые пишуться на Java на PHP не напишешь ВООБЩЕ НИКОГДА (по этим следует подразумевать разумные сроки, если вообще не практическую возможность), и потому вообще не сможешь сравнить скорость.

r ★★★★★
()
Ответ на: комментарий от es

> Tapestry делает в основном один человек - Howard M. Lewis Ship.

Мутант.

> Самый интересный framework - Tapestry, он не основан на JSP, у него свой движок.

Мутантский.

r ★★★★★
()
Ответ на: комментарий от Yilativs

>Решение требует кластеризации у некоторых заказчиков (мы не сайт
>разрабатываем, а workflow систему). У нас активно используются
>Stateless EJB + планируется переход на EJB3 (когда будет готов) с
>hibernate. Морда на Struts.

Хмм. А в чем проблема? Spring нормально кластеризуется, EJB очень эргономично вписываются в его концепцию. Работаешь с ними как с POJO (описание декларативным способом). С Hibernate также проблем никаких, впрочем как и с iBATIS и с JDBC.

"Морда на Struts" несколько странно звучит :) Наверное всё-таки она на JSP?

А вот MVC модель у Spring мне показалась гибче, проще и удобней в использовании.

А в качестве морды использую разное: JSP, FreeMarker смотря что за проект.

После Spring о Struts вспоминать не хочется - костыль на костыле, а не код получается %(

Korwin ★★★
()
Ответ на: комментарий от Korwin

>Хмм. А в чем проблема? Spring нормально кластеризуется, EJB очень эргономично вписываются в его концепцию.

Я не видел ещё проектов на Spring использующих кластеризацию, а пионером быть не хотелось (использовали j2ee по накатоной дороге)

>Работаешь с ними как с POJO (описание декларативным способом). С Hibernate также проблем никаких, впрочем как и с iBATIS и с JDBC.

Про hibernate я написал по тому, что на EJB3 хотим с него идти, тем более что реализацию для jboss делает автор hibernate (а hibernate он почти бросил, там за него щас 3 developer'a отдуваются) Хотя в ejb3 обещают вне контейнера, так что может и не будет проблем с spring. (кстати есть к spring annotations или xdoclets и если есть на сколько поспевают и прямо работают?)

>"Морда на Struts" несколько странно звучит :) Наверное всё-таки она на JSP?

Она на JSP custom tags от Struts. Struts -это MVC фреймфорк в котором view компонентов до кучи.

>А вот MVC модель у Spring мне показалась гибче, проще и удобней в использовании.

А как она VS JSF?

>После Spring о Struts вспоминать не хочется - костыль на костыле, а не код получается %(

У нас все довольно ровно вышло. Морда относительно простая, можно результат увидеть тут

http://wf.runa.ru/English/OnLineDemo/Online_demo.html

Yilativs ★★★★
()
Ответ на: комментарий от alebu

>относительно FreeMarker, как он в сравнении с Velocity?
Последние версии Velocity не видел, но раньше по скорости и функциональности FreeMarker делал Velocity как тузик грелку.
Из наиболее часто используемых фич:
* Namespaces
* XML processing (после ужаса XSLT одно удовольствие, зависит от пост. задачи)
* рекурсивные вызовы макросов
* возможность работы с JSP custom tag
* модульность шаблонов (описываешь компоненты и потом вызываешь одной строкой)
* лёгкость расширения базового функционала (свои теги, фильтры, трансформаторы и проч.)
* простая интеграция вместо JSP в любой MVC framework

Korwin ★★★
()
Ответ на: комментарий от Yilativs

2Yilativs:
Пионером быть хорошо если Just for Fun. Согласен :)

Annotations & XDoclet есть у spring, но не сильно пользовал не скажу насколько удобно, гибко.

Про то, что такое Struts я знаю :)

Java Server Faces можно исп. вместе со Spring, но лично дел не имел. Возможностей FreeMarker хватало пока полностью.

Лёгкие морды тоже на JSP, а вот сложные только на FreeMarker. Хотя последнее время практически JSP и не использую. Всё таки настоящий шаблонный язык для таких вещей удобней.

В версии 1.3 обещают поддержку Порталов. Можно сейчас уже протестировать. Работает хорошо, правда на сложных задачах не пользовал - нет времени протестировать.

Korwin ★★★
()
Ответ на: комментарий от Yilativs

>Какие плюсы перед JSF?

Год назад переходили со Struts на Tapestry.
Первое ощущение: теперь не надо писать aRequest.getWriter().println("<h1>"....) и т.д.
Практически ВЕСЬ КОД html теперь пишется нормально.


es
()
Ответ на: комментарий от es

>Год назад переходили со Struts на Tapestry. Первое ощущение: теперь не надо писать aRequest.getWriter().println("<h1>"....) и т.д.

Жуть какая ;-)

Никогда в Struts не писал aRequest.getWriter().println("<h1>"....)

если не хватает struts jsp custom tags, то делаешт свой тег и в нем ECS

http://jakarta.apache.org/ecs/

>Практически ВЕСЬ КОД html теперь пишется нормально.

Если это все достоинтво, то я пока посижу на Struts ;-)

Yilativs ★★★★
()
Ответ на: комментарий от Yilativs

>Так, тебе и сказали, что в начале это г stood for "Personal Home Page" теперь, когда ребята написали свое г оно получило the official meaning is the recursive acronym "PHP Hypertext Preprocessor". Как г не назови, медом не станет.

закрадывается подозрение в ментальных отклонениях у уважаемого ;)

PHP/FI != PHP

так легче или опять не доходит?

это разное и написано разными людьми

AcidumIrae2
()
Ответ на: комментарий от Korwin

FreeMarker ни разу не трогал. Можно коротко, чем оно лучше Velocitiy?

>В версии 1.3 обещают поддержку Порталов. Можно сейчас уже протестировать. Работает хорошо, правда на сложных задачах не пользовал - нет времени протестировать.

Это уже ко всем вопрос. Кто юзал порталы JSR 168 complaint ala liferay или jboss portal?

Делитесь впечатлениями!

Yilativs ★★★★
()
Ответ на: комментарий от es

Говард Люис Шип, Золотой Мальчик Апача (а как еще объяснить такую благосклонность к его _личным_ индивидуальным проектам) и пробитый эгоист (по всем его проектам он делает четкое разграничение в коде и архитектуре, что написал он-любимый, а что сделало комюнити), является первостатейным мутантом.

Аргумент могу привести только 1 а могу привести сотни(тапестри я изучил вдоль и поперек 3тью - 4твертую смысла смотреть невижу - там слишком много раковых опухолей патологического характера):

- Человек которы ставит зависимость обработки событий от месторасположения на странице, должен быть похоронен заживо, а не пущен на Apache, так как он не знает элементарных вещей типа Model-View-Separation. Но даже люди этого не знающие и то не додумались написать где нибудь даже на гребаном PHP рак типа этого. Расшифровываю: если в вебе делается серверными методами элементарный контрол например перекидывание между двумя табличками значений, а кнопки туда-обратно физически расположены между этими табличками: то в обработчике события этик кнопок _недоступны никакие данные_ из всех элементов, которые расположены ниже их по коду HTML. Потому как - архитектура...

r ★★★★★
()
Ответ на: комментарий от Yilativs

>Так, тебе и сказали, что в начале это г stood for "Personal Home Page" теперь, когда ребята написали свое г оно получило the official meaning is the recursive acronym "PHP Hypertext Preprocessor". Как г не назови, медом не станет.

вы уважаемый если сначала не читали не пердите в лужу пожалуйста

человек сказал:

>По поводу php: - PHP = Personal Home Page. чего тут еще говорить. не предмет дискуссии вообще.

я ему пояснил, что он не прав

и тут нашлась куча "умников" которые заявил что он так назывался

а им опять же пояснил, что так назывался не PHP, а PHP/FI, который тупо умер и был совершенно другим продуктом с другой архитектурой. Я не спорю что как называлось - читайте плз.

AcidumIrae2
()
Ответ на: комментарий от Yilativs

> FreeMarker ни разу не трогал. Можно коротко, чем оно лучше Velocitiy?
Возможно уже несколько устарело и Velocity стал лучше, но изначально у FreeMarker была более правильная структура, качество кода и заложенные идеи:
--- cut-n-paste ---
Feature comparison sheet

Here's a quick, non-comprehensive listing of things you can do with FreeMarker out of the box, and which you can not do with Velocity (or, you can but only with nontrivial workarounds). This list is originally based on a comparison with Velocity 1.2. Contact us for change suggestions.

Number and date support

* You can perform arithmetic calculations and comparisons on arbitrary number types, including the arbitrary-precision types, not just integers.
* You can compare and display (format) date/time values.

Internationalization:

* You can format numbers locale-sensitively, based on a variety of built-in and custom number-formatting patterns.
* You can format dates locale- and timezone-sensitively, based on variety of built-in and custom date-formatting patterns.
* Identifiers (variable names) can contain non-English letters like accented letters, Arabic letters, Chinese letters, etc.

Loop handling:

* You can break out of loops.
* You can access control variables of outer loops from bodies of inner loops.
* You can test whether you are in the last iteration of the loop.

Array handling on the template language level:

* You can access array elements, both primitive and non-primitive by index using the familiar [i] syntax.
* You can query the length of an array.

Macros:

* Macro invocations can pass parameters either by position or by name.
* Macro parameters can have default values which are effective when the parameter is omitted on invocation.
* Macro invocations can have a nested body (<@myMacro>body</@myMacro>) that can be called by the macro for processing.
* Macros are plain variables, so you can select the macro to execute based on an expression, or pass a macro to another macro as parameter.
* Invoke a macro that is defined later in the template.
* Local variables in macros, and recursive invocation of macros. In Velocity it is now possible with the currently (Feb. 2005) not officially documented #local function.

Name-spaces:

* You can use multiple name-spaces for variables. This is invaluable when you build "macro libraries", because you can prevent name collisions with application specific variables or with variables of other macro libraries.

Java-independent string, list, and map manipulations with built-in functions/operators:

* You can turn a string upper-, lower-, or title-case, turn upper-/lowercase only the first letter, convert (escape) the string to HTML, XML, or RTF, extract substrings, split strings, query string length, find/replace substring, ...etc.
* Access elements of lists by index, extract sublists, concatenate lists, query size of a lists, sort lists.
* Access map elements by variable key, check if the map is empty, obtain the key or value list.

Expose typos and other mistakes in template:

* When you try to access an undefined variable, FreeMarker will not accept that silently. You can configure FreeMarker to stop template rendering with an error message, or skip the wrong part. In either case, FreeMarker will log the problem, so it does not remain hidden.
* FreeMarker will throw an exception if you mistype a directive name, and will not print the statement silently to the output (unless you use the now deprecated non-strict syntax).

Advanced rendering control:

* You can enclose a block of template in a set of tags that will cause it to apply HTML escaping or XML escaping (or any other transformation you can express as a FreeMarker expression for that matter) on all interpolations (${foo}) in the block.
* FreeMarker has transforms, which are blocks of template that when rendered, go through a transforming filter. Built-in transforms include whitespace compressor, HTML and XML escaper. Best of all, you can implement your own transformers as well (i.e. if you generate Java source code, you can write a Java code pretty-printer transform and insert it into the template). Naturally, transforms can be nested.
* You can explicitly flush the output writer with a built-in flush-directive.
* You can stop the rendering with a built-in stop-directive.

Literals:

* Beside the usual string, number, and boolean literals you can define list and map literals as well inside templates.
* There is a support for all Java string literal escapes: \b, \t, \n, \f, \r, \", \', \\, also we support \xXXXX to specify characters with their UNICODE code.

Advanced white-space removal:

* FreeMarker consistently removes white-space (spaces, tabs and line-break) from lines that contain non-outputting FreeMarker tags only, thus eliminates most annoying, obviously superfluous white-space.
* There are directives to explicitly trim lines from needless white-space, just for the extreme cases, when white-space is a real problem.

Integration with other technologies:

* You can use JSP custom tag libraries in templates.
* You can work directly on Python objects.

Powerful XML transformation capabilities:

* As of version 2.3, FreeMarker has powerful new XML transformation capabilities that make it a viable replacement for XSLT. Though there have been some attempts to make Velocity more capable in this domain (i.e. DVSL) Velocity is not really competitive in this regard. In our view, it never will be unless certain improvements to the core engine are made, such as support for macro libraries mapped to namespaces, and local variables in macros.
* See here for a more detailed comparison of FreeMarker and XSLT.

Advanced template metaprogramming:

* You can capture the output of an arbitrary part of the template into a context variable.
* You can interpret arbitrary context variable as if it were a template definition.
* You can imagine what can you do when you combine the two...

--- cut-n-paste ---

еще:
http://www.theserverside.com/news/thread.tss?thread_id=27720

http://www.howardism.org/thoughts/001511.html
Velocity is simple &#8230; perhaps a bit too simple, and development on it seemed to wane at times. So, a couple of guys, Benjamin Geer and Mike Bayer, started work on a successor called Freemarker. They defined the basics and architecturethat was reworked by a larger group.


Korwin ★★★
()
Ответ на: комментарий от annonymous

>но меня мучает вопрос, как с ним работать на недорогом оборудовании,
>то бишь в условиях стандартного хостинга.

Тебе уже отвечали, что эта технология предназначено для КОРПОРАТИВНОГО УРОВНЯ. Забудь про стандартный хостинг и недорогое оборудование.
Хотя у меня в конторе крутится на третьем пне с гигом мозгов. JBOSS+PostgreSQL. Обслуживает не много, порядка сотни клиентов. Можно и так.

vada ★★★★★
()
Ответ на: комментарий от annonymous

Плохело раньше(из-за неправильной реализации приложения). Сейчас почти всё оттюнено

Deleted
()
Ответ на: комментарий от vada

>Тебе уже отвечали, что эта технология предназначено для КОРПОРАТИВНОГО УРОВНЯ. Забудь про стандартный хостинг и недорогое оборудование.

Дорогое оборудование под JAVA - МИФ

Я знаю контору где бегает больше 10 сайтов на tomcat вот один из них http://www.chinacom.ru

вся эта ерунда крутится на

P3 700 + 512Ram + RAID из IDE дисков, бюджетнее некуда ;-)

Писала это все девушка получающая за работу 600 $ (+ мои консультации) - это к вопросу о цене java разработчиков на простые проекты.

Yilativs ★★★★
()
Ответ на: комментарий от vada

> Тебе уже отвечали, что эта технология предназначено для КОРПОРАТИВНОГО УРОВНЯ.

Я был бы доволен, если бы точно так отвечали. Обычно сразу звучат гораздо
более обобщающие и бескомпромиссные лозунги в стиле "PHP - не язык".
Для чего не язык? - А для всего ;) Когда прижмёшь крикунов к стенке,
вот тогда они начинают вспоминать про то, что ты сказал - про
корпоративный уровень и проекты стоимостью в миллионы долларов.
Да и шут с ними. Проектов до миллиона долларов в миллион раз больше ;)

annonymous ★★
()
Ответ на: комментарий от Yilativs

> Писала это все девушка получающая за работу 600 $ (+ мои консультации)

Сколько лет писала (+чем с тобой расплачивалась)?

annonymous ★★
()
Ответ на: комментарий от Yilativs

> Ну давай, cравним сравним JForum (0 дыр)и phpBB (около 45) на дырявость ;-)

Для правпорщиков ещё раз: первым делом установи количество установок
того и другого и их соотношение. Дальше будем разговаривать.

annonymous ★★
()
Ответ на: комментарий от annonymous

>> Ну давай, cравним сравним JForum (0 дыр)и phpBB (около 45) на
>>дырявость ;-)

>Для правпорщиков ещё раз: первым делом установи количество установок
>того и другого и их соотношение. Дальше будем разговаривать.

А как можно разговаривать с человеком который: 1 - не умеет читать, 2 - не хочет думать.

Korwin ★★★
()
Ответ на: комментарий от Korwin

> А как можно разговаривать с человеком

Никак. Вопрос был не к тебе. Разрешается просто промолчать...

annonymous ★★
()
Ответ на: комментарий от Deleted

> # ab -t20 http://xxx/xxx/xxx.jsp
> Requests per second: 142.85 [#/sec] (mean)

Dimez, так не интересно. Дай-ка нам параметры железки и краткое описание
чего делает софтинка. Может я тебе что-то более интересное тогда покажу ;)

annonymous ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.