вторник, 12 февраля 2013 г.

План изучения J2EE и веб программирования


26 января 2013 года состоялся вебинар "Пошаговый план изучения J2EE и веб программирования" Тимур Батыршинова. Я захотел посетить его с целью немного расширить кругозор и по возможности узнать ответы на некоторые свои вопросы. Так сказать взглянуть на свой прогресс со стороны. Предыдущий вебинар по Java был о настолько элементарных темах, что у меня заранее не было иллюзий получения ответы на все вопросы. Но даже если узнать немного "живой" информации, это уже хорошо. Поэтому я выделил время и теперь вкратце изложу суть презентации, прибавлю свои комментарии.

Это был мой второй вебинар посвященный Java. Я с удовольствием разместился в комнате чата, приготовил блокнот и ручку для заметок, налил кофе... В прошлый раз в комнате было около 100 человек, и за час до начала уже можно было пообщаться с коллегами по разным IT вопросам. Правда коллег было не так много, в основном все только начали программировать, поэтому часто беседы сваливались в очередной холивар android-iphone, win-lin, java-c#. Ну да все-равно было весело :). В этот раз в комнату пустили за 10 минут до начала презентации. Мы успели узнать что среди нас много начинающих разработчиков java, и тех кто еще только учится.

Темы, который Тимур объявил для вебинара:

  • что такое J2EE, из чего он состоит
  • какие знания нужны, чтобы начать изучать J2EE
  • что нужно изучать и в какой последовательности
  • какие современные технологии наиболее востребованы
  • что такое EJB
  • личный опыт применения J2EE и веб программирования
  • что такое сервера приложений, порталы
  • что такое JSF, Spring, Hibernate, Ajax
  • зачем нужны "облака" (Clouds)
  • и многое другое

По моему мнению, Тимур рассказал достаточно хорошо про сервера, про то зачем нужны те или иные технологии, про пошаговый план изучения J2EE и веб программирования. Меня больше всего интересовал Spring, поэтому я все пытался расспрашивать про него Тимура, но его ответы были всегда уклончивы и в конце он все-таки сказал: "Со спрингом я дела не имел, начал понемногу читать - довольно интересная технология".

Кстати, достаточно часто начинающие программисты не понимают что такое сервер. И на вебинаре об этом постоянно спрашивали. Объясню в двух словах.
Если одна программа посылает какой-то запрос другой программе и (возможно) получает ответ, то это клиент. Если программа ожидает поступающие запросы и (возможно) выдает ответы на них - это сервер. У программ есть возможность слушать порты операционной системы на предмет поступающих сообщений и передавать по ним ответы (или запросы). Портов много, программа может задействовать несколько портов. Благодаря сети, можно посылать сообщения на компьютеры, находящиеся в ней. Для этого указывают ip адрес и порт. Например 80.90.102.201:8080. Распространенный сервер - tomcat. Если его запустить, то мы сможем зайти на приложение, развернутое на этом сервере. Если эта информация показалась вам новой - скачайте tomcat, попробуйте написать простой html файл, и откройте его в браузере через сервер томката.

Вот план, по которому Тимур предлагает изучать веб программирование для Java.

  • ООП
  • JDBC
  • Архитектура J2EE
  • HTML
  • Запросы, протоколы
  • XML
  • CSS
  • Сервлеты
  • JSP
  • JSF
  • Facelets
  • ORM (JPA)
  • JavaScript, Ajax
  • EJB
  • JMS

Я не совсем понял, что имелось ввиду под знанием JDBC и Архитектурой J2EE. Сейчас я понимаю знание JDBC как умение приконнектиться к базе и получить данные. Соответственно  есть понятия пула соединений, транзакций, prepare statements и т.д. Про знание архитектуры J2EE вообще не могу ничего сказать - что под этим подразумевается? Двухзвенка, трехзвенка?

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

Далее идут базовые технологии для веб, но без определенного порядка. Эти технологии неразрывны друг с другом и изучать их надо сразу все, а не пытаться по одному что-то изучать с перерывом во времени. Тут нужно понимать, что конечный продукт для веба содержит HTML, CSS, JavaScript, какой-то серверный код, Ajax. Поэтому эффективно будет сразу написать маленькое приложение, используя сервлет. Хорошим первым приложением будет сайт, показывающий время до наступления нового года. Ajax-ом запрашивать время у сервлета и выводить его на html страницу.

Сервлеты - это самая базовая веб технология Java. В развитии Java появились JSP, потом появились JSF а затем Facelets. По крайней мере, JSP точно является эволюционным развитием сервлетов. Тимур говорил, что JSF и Facelets тоже являются ступенями эволюции.

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

Лично меня интересовало, в каком месте этого списка может стоять Spring, GWT и веб-сервисы, но ответа я не получил. Сам доклад был достаточно интересным, наглядным. После окончания вебинара Тимур рекламировал свои курсы. Наверное они и хороши, но у меня ощущение, что самостоятельно можно изучить Java за то же время. Поэтому лично в его курсах не вижу никакой пользы для себя.

Время, которое Тимур посчитал понадобиться на изучение этого списка, 2-3 месяца. Очень сомневаюсь в этой оценке. Что бы понять концепции веба нужно время, чтобы понять концепции и сферы применения технологий нужно время. Причем просто прочитать и узнать - это одно, а сделать эти знания "своими" - другое.

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

1 комментарий:

  1. Спасибо за статью, как раз записался на вебинар Тимура по J2EE в это воскресенье. Уже есть представление что на нем будет. Еще он проводит набора на свой тренинг по веб программированию на Java. Наверное луче все это самостоятельно изучить.

    ОтветитьУдалить