Пара других примеров декларативного программирования:
Декларативное программирование хорошо, потому что оно может помочь , упрощают Вашу умственную модель * кода, и потому что это могло бы в конечном счете быть более масштабируемо.
, Например, скажем, у Вас есть функция, которая делает что-то к каждому элементу в массиве или списке. Традиционный код был бы похож на это:
foreach (object item in MyList)
{
DoSomething(item);
}
Никакое грандиозное предприятие там. Но что, если Вы используете более - декларативный синтаксис и вместо этого определяете DoSomething () как Действие? Тогда можно сказать это этот путь:
MyList.ForEach(DoSometing);
Это, конечно, более кратко. Но я уверен, что у Вас есть больше проблем, чем просто сохранение двух строк кода тут и там. Производительность, например. Старый путь, обрабатывая должен был быть сделан в последовательности. Что, если.ForEach () метод имел способ для Вас сигнализировать, что это могло обработать обработку параллельно, автоматически? Теперь внезапно Вы сделали свой код многопоточным очень безопасным способом и только изменили одну строку кода. И, на самом деле, существует расширение для.Net, который позволяет Вам сделать просто это.
Для веб-разработки я использую (и рекомендую) следующее:
Что касается ресурсов, все эти технологии хорошо документированы на соответствующих сайтах, за исключением XHTML и CSS, для которых я бы предложил http://www.alistapart.com .
] Что касается редакторов, как у IntelliJ, так и (я считаю) Eclipse есть очень хорошие редакторы HTML, CSS, JSP и JavaScript.
Также используйте Firefox (как предложил Брайан) как с плагином Web Developer, так и с Firebug - оба они незаменим.
Tomcat и Jetty являются хорошо известными / поддерживаемыми контейнерами сервлетов. Если вы создаете развертываемую версию для клиентов, вы можете захотеть протестировать на обоих, если вы не контролируете развертывание.
Для тестирования проверьте (вместе с вашими обычными средами модульного тестирования JUnit / TestNG) Watij и / или HtmlUnit . Это позволит вам автоматизировать фактическое взаимодействие с веб-браузером и в долгосрочной перспективе избавит вас от лишних хлопот. Обратной стороной является то, что вам придется потратить некоторое время на настройку ваших тестов.
Что касается автоматизированных тестов, я думаю, вам нужна автоматизированная система сборки / непрерывной интеграции. В мире Java их предостаточно. Двумя общими являются CruiseControl и Hudson .
Для многих из вышеперечисленных применяются стандартные инструменты Java / разработки, например, «стандартные» IDE (Netbeans / Eclipse / Intellij - за Intellij стоит платить, кстати). То же самое относится и к CMS, и на этом веб-сайте есть много ресурсов о плюсах и минусах SVN / Git / Mercurial и т. Д. Стоит убедиться, что выбранная вами CMS интегрируется с вашей IDE.
Я бы посмотрел Firebug для упрощения разработки (в Firefox). Это значительно упрощает фронтенд-разработку. LiveHttpHeaders упрощает диагностику проблем, связанных с передачей HTTP.
Стоит проверить, интегрируется ли выбранная вами CMS с вашей IDE.Я бы посмотрел Firebug для упрощения разработки (в Firefox). Это значительно упрощает фронтенд-разработку. LiveHttpHeaders упрощает диагностику проблем, связанных с передачей HTTP.
Стоит проверить, интегрируется ли выбранная вами CMS с вашей IDE.Я бы посмотрел Firebug для упрощения разработки (в Firefox). Это значительно упрощает фронтенд-разработку. LiveHttpHeaders упрощает диагностику проблем, связанных с передачей HTTP.
CMS
- Tortoise SVN
Редактор / IDE
- eclipse
Общие инструменты / утилиты
- Maven (инструмент для сборки и развертывания)
- Круиз-контроль
- GWT / ext-GWT / ICEFaces - технология веб-компонентов
- Spring - среда внедрения зависимостей
- Hibernate - ORM
- Комплект для разработки веб-сервисов Axis 2.0
- Jboss
Направленные (специальные) инструменты / утилиты
- log5j - для ведения журнала
Инструменты / утилиты / методы тестирования и обеспечения качества
- Watij
- Firebug
- QTP for automated testing
- Junit Perf (Junit test cases for performance testing.)
Справочные материалы (как в режиме онлайн, так и в автономном режиме)
- Документация Java по каждой из технологий
- Google, конечно:)
Первый абзац отредактирован по просьбе slashmais: Этот ответ на самом деле не совпадает с другими и перефразированным вопросом. Это скорее дополнение к другим ответам. Я считаю, что личные предпочтения действительно важны при выборе между технологиями. Я вижу это как (не) симпатию к некоторым вещам и выбор соответствующих технологий . В оставшейся части ответа приводятся примеры:
Например, я считаю, что действия разработчика должны проверяться в режиме реального времени в максимально возможной степени, чтобы получать немедленную обратную связь, а также, если возможно, завершение, и Избегайте стольких ошибок на раннем этапе. Это (неприязнь) определяет некоторые предпочтения:
Другой пример, предположим, я сильно предпочитаю " Соглашение о конфигурации ". То есть, я согласен следовать строгим правилам в моем проекте, избавляясь от необходимости выполнять вручную (поскольку значения по умолчанию подходят):
Другой пример, предположим, я так сильно верю в Model-View-Controller разделение, для ясности и повторного использования, я хочу его немного растянуть. Я мог бы использовать: