Pull to refresh

Мой отчет по годовому изучению платформы Java EE

Reading time 6 min
Views 119K
Этот пост – отчет по результатам годового изучения платформы Java EE.
Он будет полезен мне своей отчетностью. Может быть пост будет полезен тем читателям хабра, которые задумали учить Джаву.


Итак. В ноябре 08 года я решил научиться программировать на Java.
Исходные данные:
  • опыт работы в телекоме,
  • небольшой опыт программирования на php.
Цель: стать веб-разработчиком на Java.

Перый этап – знакомство.


После непродолжительного гугления на тему решил начать изучение с Википедии.

Статьи дали мне представление о языке и платформе в первом приближении. Почти всё, кроме общих фраз, было мне не понятно.

Второй этап – выбор книг для обучения Java SE.


В качестве учебника я решил выбрать Thinking in Java, Fourth Edition by Bruce Eckel. О выборе книги не пожалел. Книга очень легко читается, к ней можно возвращаться не один раз, все более углубляясь в язык. Я завел большую тетрадь и стал выписывть в нее куски кода, определения, ошибки, с которыми сталкивался во время изучения языка.

Среда разработки
-Добрый день. Подскажите пожалуйста хорошую среду разработки для Java.
-Среда на следующей неделе будет очень хорошей для разработки на Java.

Первые несколько месяцев я, следуя совету Брюса Эккеля, не использовал никаких IDE. После того, как уже набил руку, печатая public static void main(String args[]),
я решил поставить Eclipse. Мелочиться не стал – скачал сразу ЕЕ-сборку (Eclipse IDE for Java EE Developers).

Третий этап – программы «Hello world».


Подойдя к изучению стандартных библиотек я понял, что мне скучно набивать примеры из учебника, нужно набросать себе несколько задач, которые я уже смогу решить средствами Java SE. Мои выполненные задачи:
0. Написать пятнашки. (Вдохновился на сайте www.javenue.info/post/42)
1. Создать утилиту Pinger – мониторит состояние доступности узлов сети. Выводит таблицу доступности.
2. Создать утилиту Chrome Bookmarks Reader – для простого импорта вкладок из Хрома во внешний xml-файл.

Варианты задач:


Стоит отметить, что на данном этапе я стал искать другие ресурсы для продолжения обучения. Глоток свежего воздуха мне дал сайт Антона Сабурова — java-course.ru. Он позволил систематизировать уже имеющиеся сведения о Java SE.

Четвертый этап – знакомство с web.


В качестве ресурса для знакомства с web-программировнием на Java я решил выбрать материалы javapassion.com. Эти онлайн-курсы ведет кореец Sang Shin, работающий в компании Sun. На сайте имеются расписания курсов, их содержание, домашние задания. Помимо знаний, дополнительный мотиватор к прохождению курса – «сертификат выпускника», который Санг Шин вывешивает у себя на сайте.

Пятый этап (текущий) – опять программы «Hello world».


Имея ворох не слишком систематизированных знаний по базовым технологиям платформы EE я решил их упорядочить, применив на практике. Придумал себе задачу:schaanCMS на платформе Java EE.

Базовая CMS:
  1. Система авторизации.
  2. CMS-каркас.
  3. Управление меню.
  4. Разделы разной степени вложенности
  5. Редактор статей
  6. Модуль mini-nagios (мониторинг устройств и сервисов)
  7. Модуль тикетов (обработка заявок клиентов)
  8. Модуль заступления в дежурство (график работы сисадминов)
  9. Поверх CMS – справочный раздел (для сисадминов)


Систему планирую внедрить на работе для использования в повседневной жизни.
Хочу сделать функционал для мониторинга активного сетевого оборудования и сервисов сети (mini-nagios), модуль тикетов для обработки заявок отдела работы с клиентами, справочный раздел для дежурных администраторов.

Шестой этап – работа.


Если на этапе разработки и тестирования система schaanCMS докажет свою необходимость, будем ее внедрять на работе.

Выводы:


  1. Частные. Я смог освоить базовые технологии платформы Java для того, чтобы начать разработку.
  2. Общие. В Гугле достаточно информации для самостоятельного изучения веб-технологий. (:


На этом пока все. Желаю всем успехов в своих начинаниях!

Несколько замечаний:


  1. Стоит отметить, что на протяжении всего обучения я старался активно использовать официальную документацию по JDK, SDK. При возникновении проблем я сначала пытался решить ее прочтением спецификаций к API, а лишь потом лезть в Гугл.
  2. В начале обучения я стал жертвой рекламы и купил «книгу известного гуру в области программирования», Герберта ШилдтаПолный справочник по Java, 7-е издание. Как по мне, книга отличается плохим переводом и недостаточно яркими примерами. Ну а как справочник лучше уж использовать официальную документацию. Так-то.
  3. У меня бывали моменты, когда мне казалось, что я выбрал неправильный путь и что Джава слишком запутана и сложна. Я банально терял интерес к обучению. Тогда мне на помощь приходили замечательные видео-курсы Стэнфордского университета CS106A (видео лежит на youtube). Курсы ведет такой заводной мужик, что хочется забыть о сложностях программирования. Подсказка от кэпа: SUN == Stanford University Network.
  4. Для изучения Spring решил читать — vaannila.com. Просто и понятно.
  5. Для окончательной и бесповоротной систематизации языка я решил через пару месяцев сдать экзамен на сертификат SCJP.
    Цель: знать язык в совершенстве.
    Мотивация к изучению: красивый сертификат.
    Мотивация к качественному изучению: придется зубрить много материала, так как провалить экзамен, стоящий $300, не хочется.


Замечания хабрапользователей:


  1. Для подготовки к SCJP и для систематизации знаний в SE можно использовать бесплатный и в то же время качественный симулятор от ExamLab.
  2. Помимо свободных сред разработки NetBeans и Eclipse хабрапользователи рекомендуют присмотреться к коммерческой IntelliJ IDEA. Она бесплатная для разработки на Java SE и за нее нужно платить денюжку, если хочешь работать с EE (хотя в данном случае могут быть нюансы).

    «IDEA, в отличие от остальных, построена не как «tool for geeks», не заставляет вас думать «куда бы тут ткнуть», подсказывает как сделать лучше. Новички учатся значительно, в разы, быстрее именно с ней». (#)

    «Eclipse принято советовать новичкам, поскольку он бесплатен. В нем все супер до тех пор, пока вы имеете дело с «чистым» джава-кодом, отладкой его и всем, что не выходит за рамки запуска единственного проекта с main(). Как только вы пытаетесь запустить произвольный сервер приложений, или хотите для фреймворка ХХХ пользоваться мастером (тем более, производить рефакторинг кода, написанного с использованием такого фреймворка), начинается геморрой, поскольку плагины либо написаны криворукими бесплатными разработчиками, либо плохо совместимы с текущей сборкой, либо не работают друг с другом и так далее и тому подобное. Мой опыт говорит, что чем потом терять в производительности, лучше сразу переучиться на IDEA. Достичь ее пределов довольно сложно, а глюки, если они и бывают, некритичны и исправляются быстро». (#)
  3. Очень хорошие и доступно написанные статьи для начинающих Java-разработчиков живут по адресу skipy.ru
  4. По поводу разработки своей CMS. Высказаны мнения, что объем работ по её написанию достаточно большой, а в выборе верной архитектуры очень легко ошибиться (ввиду отсутствия опыта). Поэтому вопрос разработки CMS остается открытым. Возможно я ограничусь написанием небольших веб-ориентированных утилит, каждая из которых будет использовать ту или иную технологию и выполнять несложную задачу.
  5. По поводу устройства на работу и знания фреймворков. Более опытные камрады говорят, что не стоит углубляться в веб-фреймворки для Джавы. Стоит знать в общих чертах, что из себя представляют JSF, Struts, Spring, Hibernate и для каких целей используются. Упор в подготовке лучше сделать на детальное изучение сервлет-контейнеров (Tomcat, Jetty) и веб-сервисов.
  6. Касаемо знания вспомогательных технологий и инструментов.
    «Проект на Джаве – это, чаще всего, не один человек и даже иногда не одна команда. Я всегда обращаю внимание на то, упомянуты ли в резюме «инфраструктурные» инструменты — особенно Maven (или, хуже, Ant), умеет ли товарищ писать тесты, понимает ли, как произвести нагрузочное тестирование и как сделать из него правильные выводы, знаком ли с инструментами ведения проекта, например, багтрекером JIRA, знает ли SVN (попадаются и незнающие), может ли пользоваться Линуксом (хотя бы перезапустить Томкет и посмотреть, не кончилось ли место на диске). Очень хорошо посвятить некоторое время изучению java reflection (потому что это один из ключей к пониманию того, как jvm работает). На мой взгляд, тонкости владения языком совершенно не важны, если конечный продукт не умеет собираться с консоли или вы не можете обеспечить работу среды, в которой он будет выполняться. Использование правильных инструментов — это половина успеха, другая половина — это опыт. Нюансы, касающиеся именно программирования (некритичные для работоспособности, типа, как покрасивее написать) вообще не важны». (#)

Спасибо всем учавствовавшим в обсуждении статьи. Ваши комментарии очень ценны для меня и для остальных таких новичков, как я.
Tags:
Hubs:
+72
Comments 139
Comments Comments 139

Articles