Аннотации имеют свое использование, но они не одна серебряная пуля для уничтожения конфигурации XML. Я рекомендую смешать два!
, Например, при использовании Spring, это совершенно интуитивно для использования XML для части внедрения зависимости приложения. Это получает зависимости кода далеко от кода, который будет использовать его, в отличие от этого, с помощью своего рода аннотации в коде, для которого нужны зависимости, делает код, знающий об этой автоматической конфигурации.
Однако вместо того, чтобы использовать XML для транзакционного управления, отмечая метод как транзакционный с аннотацией имеет смысл, так как это - информация, которую программист, вероятно, хотел бы знать. Но что интерфейс будет введенным, поскольку SubtypeY вместо SubtypeX не должен быть включен в класс, потому что, если теперь Вы хотите ввести SubtypeX, необходимо изменить код, тогда как у Вас был интерфейсный контракт прежде так или иначе, таким образом, с XML, необходимо будет просто изменить отображения XML, и это является довольно быстрым и безболезненным, чтобы сделать так.
я не использовал аннотации JPA, таким образом, я не знаю, насколько хороший они, но я утверждал бы, что отъезд отображения бобов к базе данных в XML также хорош, поскольку объект не должен заботиться, куда его информация прибыла из, это должно просто заботиться о том, что это может сделать с его информацией. Но если Вам нравится JPA (у меня нет опыта с ним), любой ценой, пойдите для него.
В целом: Если аннотация обеспечивает функциональность и действует как комментарий в и себя и не привязывает код к некоторому определенному процессу для функционирования обычно без этой аннотации, то пойдите для аннотаций. Например, транзакционный метод, отмеченный как являющийся транзакционным, не уничтожает свою операционную логику и служит хорошим комментарием уровня кода также. Иначе эта информация, вероятно, лучше всего выражается как XML, потому что, хотя это будет в конечном счете влиять, как код работает, он не изменит основную функциональность кода и следовательно не принадлежит исходных файлов.
Racket имеет все, что вам нужно. См. Руководство по веб-серверу Racket , а затем документацию . Веб-сервер существует уже некоторое время и имеет множество функций. Вероятно, единственное, что не включено, это интерфейс mysql, но он существует в виде пакета на PLaneT (инструмент распространения пакетов Racket).
ОБНОВЛЕНИЕ: Racket теперь поддерживает БД, работает с несколькими БД включая mysql.
Возможно, это то, что вы ищете.
Пол Грэм (и его друзья) сделали шепелявый диалект специально для написания базовых веб-приложений. Он называется Arc, и вы можете получить его на arclanguage.org .
Он, вероятно, не подходит для действительно больших сложных веб-сайтов, и я не уверен, в каком состоянии находится поддержка баз данных, но Пол Грэм знает , как писать веб-приложения на лиспе , чтобы Arc упростил вам работу с HTTP / HTML, пока вы тратите большую часть своих мозговых циклов на изучение лиспа.
Я использую свою собственную адаптированную версию Scheme, производную от MzScheme. Он имеет новую простую структуру веб-приложений, встроенный веб-сервер (не тот, который поставляется с MzScheme) и библиотеки ODBC. ( http://spark-scheme.wikispot.org/Web_applications ). Документация не может быть исчерпывающей, поскольку это скорее личный инструмент. Но в репозитории кода есть множество примеров кода.
Вы можете посмотреть Clojure :
Clojure - это язык динамического программирования, предназначенный для виртуальной машины Java. [...] Clojure обеспечивает легкий доступ к фреймворкам Java, с необязательными подсказками типов и выводом типов, чтобы гарантировать, что вызовы Java могут избежать отражения.
Clojure является диалектом Lisp и разделяет с Lisp код как -data философия и мощная макросистема.
Взаимодействие с Java в Clojure является простым, поэтому вы можете повторно использовать любые существующие библиотеки Java по мере необходимости. Я уверен, что есть много полезных для веб-разработки.
clojure-contrib имеет SQL API, а также ClojureQL , который должен удовлетворить ваши потребности в доступе к БД.
В разработке находится веб-фреймворк для Clojure под названием Compojure . Могут быть и другие.
Исходный код Clojure доступен на github под EPL . Запустить его в Linux очень просто; Я просто клонирую репозиторий git и запускаю ant
.
Clojure идеально подходит для этого. С помощью очень короткого и чистого кода вы можете реализовать очень сложные приложения, такие как блоги или форумы.
Схема Гамбита также имеет собственное решение для веб-приложений. Он использует структуру Spork , основанную на модульной системе Black Hole (оба - Per Eckerdal).
У Эндрю Уэйли есть начальное руководство о том, как получить Gambit, Black Hole и Spork, запускающие веб-приложение под Apache, используя mod_proxy. Возможно, вы захотите взглянуть на это.
В (возможно) связанном примечании, Gambit также скомпилирует ваш материал в C, а затем в исполняемый файл, если вы так сочтете нужным.
Weblocks - хороший инструмент для создания веб-приложений на Common Lisp, но для меня он слишком тяжелый.
Мы используем следующий стек:
OpenMCL (Lisp с открытым исходным кодом, очень хорошо)
Portable Allegroserve (веб-сервер, генератор HTML)
Наши собственные инструменты, подобные Rails, для работы с Ajaxy (обновление: теперь это открытый исходный код WuWei )
Если вас интересует Common Lisp, а точнее, и вы не хотите идти по маршруту веб-блокировок, я бы порекомендовал следующую настройку:
Обратите внимание, что все вышеперечисленное находится под GPL или аналогичной лицензией (которая больше подходит для программ lisp)