develNotes

/*айтишные заметки*/

12.08.2014

Java: Аспектно-ориентированное программирование с помощью Spring Framework.

АОП - парадигма программирования, которая расширяет возможности существующих концепций, конкретнее - ООП. Она служит для удобной и четкой реализации сквозной функциональности в программе. Сквозная функциональность - это то, что происходит во всей программе в различных местах - в методах, конструкторах класса и т.п., что-то такое что можно было бы логически выделить в одну "сущность", но сделать это с помощью обычных средств ООП сложно, а то и вовсе невозможно. Не смотря на то, что программа всегда разбита на какие-то модули - классы, методы классов и т.п., случается, что в каждом из этих мест нужно выполнять схожие действия. И используя традиционный подход к проектированию, получаются весьма запутанные и сложные для поддержки и отладки конструкции. АОП предлагает некоторые концепции проектирования приложений, с помощью которых можно такие конструкции превратить в простые, стройные и удобные для поддержки и отладки. На первый взгляд, идея АОП может показаться слишком сложной и запутанной, но достаточно понять идею и использовать АОП будет очень просто - особенно с помощью Spring Framework. Spring предлагает ограниченную поддержку АОП в Java, но этого достаточно для множество задач, к тому же преимуществом использования Spring для АОП является простота. Сначала я хотел бы привести несколько ключевых терминов из концепции АОП, а потом рассмотреть простой, но очень детальный пример реализации АОП с помощью Spring.
Теги: programming javaEE java     Далее

09.11.2013

Рефлексия в Java - несколько примеров.

Как сообщает Википедия, рефлексия - это процесс во время которого программа может отслеживать и модифицировать свою структуру во время выполнения. Можно сказать, что программа "сама пишет" часть кода себя, прямо во время ее выполнения. Рефлексия - один из подвидов метапрограммирования - создание программ, которые в процессе своего выполнения порождают другие программы. В данном случае, какая-то часть (ну или вся) программы проектируется так, чтобы программа сама создавала во время выполнения некоторую логику, которую при "обычном" подходе создает программист. Для чего? Все очень просто - иногда некоторые данные, которые жизненно необходимы для создания алгоритма, недоступны на этапе разработки программы. Например: известно, что нужно будет вызывать определенные методы объекта, но какие именно - будет понятно только во время выполнения. Вот здесь на помощь приходит рефлексия. Впрочем, я хотел бы привести несколько самых простых примеров реализации рефлексии в Java. Давайте посмотрим на них -  станет более ясно, когда можно использовать рефлексию для какой-то конкретной ситуации.
Теги: java programming     Далее

21.06.2013

Java web frameworks. JSF vs Spring MVC.

Мне хотелось сделать обобщенный и краткий обзор недостатков и плюсов фреймворков для разработки веб-приложений на Java, на примере JSF и Spring MVC. А если точнее - обзор двух концептуально разных подходов к разработке, на примере вышеуказанных фреймворков. Я выбрал Java Server Faces потому что это в своем роде "официальный" стандарт для разработки веб-приложений на Java, и потому что я уже существенное время имею дело именно с этим фреймворком. Spring MVC - исключительно потому что я с ним знаком. И наконец, краткий и обобщенный - потому что это очень обширная и многогранная тема, на которую можно смотреть с разных сторон, оценивать преимущества того или иного фреймворка по очень разным критериям, зачастую субъективно и в зависимости от области использования. В принципе можно было назвать пост "почему JSF не лучший выбор", так как я считаю, что концепция JSF сама по себе не самая удачная, мне видится в ней больше минусов, чем плюсов. Возможно в других фреймворках, ориентированных на работу с компонентами, эта идея реализована удачнее, но из-за того, что я знаком с JSF - я буду говорить о нем.
Теги: java javaEE     Далее

05.05.2013

Пример: Ajax с помощью JQuery в Spring MVC.

Для реализации Ajax в Spring MVC не принципиально, какую JavaScript библиотеку использовать, наверное самый распространенный способ - использование JQuery для создания Ajax запроса и обработки ответа от сервера. Посмотрим на простой пример, как можно это сделать. Сначала создаем простое веб-приложение Spring MVC, в данном случае используем Spring Tool SuiteДля того чтобы создать необходимый шаблонный веб-проект, нужно выбрать File > New > Spring Template Project > Spring MVC Project. После этого у нас есть полноценный проект, со всеми включенными зависимостями, которыми управляет Maven. STS автоматически создал необходимые файлы конфигурации, менять которые пока не нужно. Кроме того, у нас есть один контроллер - HomeController.java и домашняя страница - home.jsp. Для начала приступим к изменению контроллера:
@Controller
public class HomeController { 
 
 @RequestMapping(value = "/getCharNum", method = RequestMethod.GET)
 public @ResponseBody Response getCharNum(@RequestParam String text) { 
 
  Response result = new Response();

  if (text != null) {
   result.setText(text);
   result.setCount(text.length());
  }
  
  return result;
 }
 
 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String home(Locale locale, Model model) {
  return "home";
 }
}
Теги: javaEE Spring     Далее

03.04.2013

Связывание XML данных с помощью Castor.

В Java для связывания данных с их XML представлением существует несколько способов (например JAXB: использование JAXB, автоматизация JAXB маппинга). Хотелось бы рассказать про использование одного из них - Castor. Castor это фреймворк, обеспечивающий связывание Java объектов с их XML представлением или с представлением в реляционных базах данных. Использование JAXB подходит во многих случаях, но маппинг XML/Java с помощью Castor обеспечивает большую гибкость. Он позволяет использовать несколько режимов связывания - как простой, так и более сложные, в которых доступно множество возможностей для тонокой настройки формата связываемых данных. Итак, давайте посмотрим, какие это режимы, как и когда их лучше использовать, а также как упростить процесс связывания.
Теги: xml java     Далее

15.03.2013

Coursera.org для программистов.

На coursera.org доступно множество курсов, по разным дисциплинам, в том числе от университетов с мировым именем. Для программистов там определенно много полезных обучающих курсов. Хочу кратко описать те курсы, с которыми я ознакомился. Первый курс, который на данный момент заканчивается, - Algorithms, Part I. Видеолекции читает профессор Принстонского университета - Роберт Седжвик.
Теги: programming     Далее