Разное

Java для начинающих курс – Самоучитель по Java с нуля • Vertex Academy

Содержание

С чего начать изучение Java программирования

Язык Java

Java — не просто язык программирования, а целая программная платформа с широкими возможностями. Основными составляющими блоками этой платформы являются:
  • Базовые инструменты для написания и запуска программ на Java.
  • Библиотеки и классы — ядро языка. Они обеспечивают основные функциональные возможности программирования на Java: обработку исключений, многопоточность, коллекции, логирование, рефлексию, безопасность, работу с сетью, работу с XML, сериализацию, регулярные выражения.
  • Инструменты для развертывания и автоматического запуска приложений.
  • Инструменты для создания фронтенда (GUI, интерфейса пользователя). Это классы библиотек JavaFX, Swing и Java2D.
  • Библиотеки, для работы с базами данных, удаленно по сети, такие как JDBC, JNDI, RMI и Java RMI-IIOP.
Если вы хотите узнать больше о классах и инструментах Java, прочтите документацию Oracle — там есть всё. Первая версия Java JDK 1.0 включала «всего лишь» несколько сотен классов. Зато в настоящее время их число увеличилось до нескольких тысяч. За время жизни языка авторы внесли огромное количество изменений, которые повышают его безопасность, функциональность и переносимость. Благодаря постоянному совершенствованию и поддержке языка со стороны его разработчиков, Java всегда шла в ногу с развитием IT-технологий. Так что в настоящее время перед нами — современный язык, основными характеристиками которого являются:
  • Невысокий порог вхождения.
    Изучать Java проще, чем большинство языков с Си-подобным синтаксисом.

  • Объектно-ориентированность.
    Программы в Java строятся на основании объектов и их взаимодействии, что позволяет задействовать все преимущества ООП.

  • Переносимость.
    Благодаря использованию интерпретатора — виртуальной машины Java, — программы переносятся на различные платформы и устройства.

  • Платформенная независимость
    Программа, написанная на Java для одной платформы, компилируется в промежуточный байт-код, который может запускаться на других платформах благодаря интерпретации с помощью JVM под каждую платформу.

  • Развитая многопоточность.
    Средства Java позволяют управлять выполнением нескольких потоков, что позволяет создавать многопоточные приложения.

  • Безопасность.
    Благодаря встроенной в JVM верификации байт-кода, отсутствии в Java ручного управления памятью, слежением за переполнением стека, а также наличию различных API, которые позволяют контролировать безопасность, на этом языке можно создавать действительно безопасные приложения.

  • Отказоустойчивость.
    Механизм исключений как при компиляции, так и во время непосредственного выполнения повышает отказоустойчивость программ и снижает количество ошибок.

  • Интерпретируемость.
    Java-интерпретатор может выполнять байт-коды Java на любой машине, на которой имеется JVM и JRE.

  • Распределенность.
    У Java есть инструменты для создания распределенных приложений.

  • Производительность.
    Использование JIT (Just-in-time)-компилятора обеспечивает высокую скорость работу приложений, сопоставимую по скорости с языками С и С++.

Как начать программировать на Java?

Чтобы начать изучение Java с нуля, желательно разобраться с основными понятиями: что включает в себя язык Java, что такое программа на Java и как происходит ее выполнение. Затем — переходить к синтаксису языка, его основам, изучению библиотек. После прочтения пары статей о языке Java, можно браться за его основы.

Последовательность шагов наглядно демонстрирует эта схема эта блок-схема:

Что нужно для программирования на Java?

Для начала вам нужно установить программное обеспечение для разработки и запуска программ — JDK (Java Development Kit). После этого настройте JDK на компьютере, скачайте и установите одну из IDE (Integrated Development Environment) — это среда для разработки программного обеспечения. Самая популярная IDE — IntelliJ IDEA. Альтернативы — Eclipse, NetBeans, JCreator и даже обычный блокнот.

Установка Java на компьютер

Как мы уже выяснили, когда мы изучаем Java с нуля, первый шаг — это установка
JDK
. Для этого вам потребуется проделать несколько простых операций:
  1. Перейти на сайт Oracle.
  2. Выбрать и скачать установочный файл в зависимости от вашей операционной системы.
  3. Выполнить установку, следуя рекомендациям программы-установщика.
  4. Настроить переменную окружения, если вы используете Windows.
Вот, например, описание установки JDK и переменной окружения для операционной системы Windows.

Основные определения

Если вы только начали изучать Java, непременно встретите следующие термины: JVM (Java Virtual Machine) — виртуальная машина Java. Это программный модуль, зависящий от платформы, который служит для интерпретации исходного байт-кода в машинный код и его исполнения. JRE (Java Runtime Environment) — среда выполнения Java. Включает в себя реализацию JVM для конкретной платформы и набор библиотек, необходимых для выполнения программ на Java.
JDK
(Java Development Kit) — набор инструментов разработчика, необходимых для написания программ на Java. Включает в себя компилятор, JRE, набор стандартных библиотек Java, документацию, различные утилиты. Исходный код — текстовый файл на языке Java, имеющий расширение .java Байт-код — машинно-независимый низкоуровневый код, представляющий собой набор инструкций для JVM. Машинный код — набор машинных инструкций в двоичном формате, которые непосредственно выполняются процессором. Компиляция — преобразование исходного кода в байт-код. Интерпретация — преобразование байт-кода в машинный код. Платформа — программно-аппаратная среда, в которой происходит выполнение программ и приложений. Наиболее популярными платформами являются Microsoft Windows, Linux, ОС Solaris и Mac OS. Эта схема поможет лучше ориентироваться в понятиях JVM, JRE и JDK:

Жизненный цикл программы

Жизненный цикл программы на языке Java начинается с написания исходного кода в текстовом формате. Обычно для этого используются специальные среды для разработки — Integrated Development Environment (IDE), но простые программы можно набирать и в текстовом редакторе, даже в Notepad, который поставляется с любой редакцией ОС Windows. Исходный код необходимо сохранить в файл, имеющий расширение .java. Пример программы HelloWorld.java:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("This is my first program");
    }
}
Прежде, чем выполнить этот исходный код, его необходимо скомпилировать в байт-код с помощью компилятора. Компилятор — это утилита, которая является частью JDK. В результате его работы мы получим файл с расширением .class. Он содержит байт-код — инструкции для JVM, формат которых напоминает язык ассемблер. Наша программа HelloWorld.java будет скомпилирована в файл HelloWorld.class. Платформа Java не предусматривает инструментов для редактирования байт-кода, но возможность просмотреть его все же есть. Чтобы посмотреть, что представляет собой байт-код программы на Java, можно воспользоваться утилитой дизасcемблера javap, которая входит в состав JDK. HelloWorld. class будет содержать такой байт-код:
Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); Code: 0: aload_0 1: invokespecial #1 4: return public static void main(java.lang.String[]); Code: 0: getstatic #2 3: ldc #3 5:invokevirtual#4 8: return }
Теперь наша программа хранится в скомпилированном виде в файле HelloWorld.class. Для ее выполнения на любой из платформ необходима установленная JRE. Возможность переносимости Java-программ на любую платформу обеспечивается за счет использования JVM. Исполнение программы — это выполнение байт-кода виртуальной машиной Java. Выполнение программ производит утилита java, которой необходимо указать имя скомпилированного файла. Выполнение происходит в следующей последовательности:
  1. В оперативной памяти компьютера запускается JVM. По сути это программа, которая служит для выполнения написанных нами Java-программ.
  2. С помощью начального загрузчика классов JVM загружает и инициализирует наш класс в памяти компьютера. В нашем примере это класс HelloWorld.
  3. Далее в нашем классе JVM ищет метод public static void main(String[]).
  4. Выполняется код метода main. Если это необходимо для выполнения программы, производиться загрузка и инициализация других классов.
  5. После выполнения кода производится уборка мусора — очистка памяти и закрытие программы JVM.
При выполнении всех этих действий JVM интерпретирует (преобразовывает) байт-код в машинную инструкцию для процессора с учетом операционной системы, на которой она выполняется. Схематично жизненный цикл Java-программы можно представить так:

Выбор и установка среды разработки

Чтобы быстро и эффективно программировать на Java, вам понадобится среда разработки — приложение для написания программ на Java. Наиболее популярными IDE среди разработчиков на Java являются:
  • IntelliJ IDEA
  • Eclipse
  • NetBeans
Согласно обзору популярности инструментов Java-разработки, который подготовила компания RebelLabs, в 2017 году лидером стал IntelliJ IDEA, второе место занимает Eclipse, а на третьем месте со значительным отставанием от пары лидеров расположился NetBeans. Доля остальных IDE невелика и не превышает в общем объеме 3%. Хороший сравнительный обзор этих IDE можно посмотреть здесь. Для новичков вполне достаточно установить IntelliJ IDEA Community Edition. Во-первых, вы получите все плюсы современной IDE, такие как: подсказки, проверка кода, возможность отладки кода, удобная интеграция с БД, серверами и поддержка многих инструментов и технологий разработки. Во-вторых, вы сделаете первый шаг в освоении профессионального инструмента разработки, используемого большинством разработчиков. Инструкция по установке IntelliJ IDEA приводится в начале третьего уровня обучающего онлайн-курса JavaRush.

За сколько можно выучить Java?

На изучение основ Java и выработку навыка программирования, скорее всего, уйдет от 6 до 12 месяцев, в зависимости от интенсивности вашего обучения. Чтобы сделать этот процесс систематическим, составьте план обучения, соберите необходимые источники и выделяйте несколько часов в день на занятия. Не забывайте о том, что ключевое в обучении программированию — это практика.

Заключение

Когда мы изучаем Java самостоятельно, на деле это оказывается проще, чем в теории. Для этого вполне достаточно знаний на уровне пользователя персонального компьютера. Чтобы эффективно начать изучать Java, проделайте несколько простых шагов:
  1. Установите Java на компьютер
  2. Изучите основные понятия
  3. Установите среду разработки
  4. Напишите и запустите свою первую программу.

javarush.ru

Видео уроки java для начинающих

Если вы уже подписались на онлайн-курс программирования JavaRush, для изучения Java с нуля видеокурс не слишком-то и нужен… Или всё-таки нужен? Я придерживаюсь мнения, что хороших источников должно быть много! Восприятие у всех разное, и кому-то подойдёт одно объяснение, а кому-то — совсем другое.
В этом топике собраны ссылки на несколько удачных русскоязычных YouTube-каналов, которые содержат качественные видеоуроки по Java для начинающих программистов (от начала учёбы до уровня Junior).

Golovach Courses

Вероятно, самые известные видеоуроки по Java на русском языке. Иван Головач, разработчик и преподаватель программирования из Харькова, выложил на своём YouTube-канале записи курсов, которые он вёл в разное время. Здесь вы найдёте очень много полезного материала по Java Core, многопоточному программированию, работе с базами данных в Java-среде (JDBC, реляционная алгебра) … и многое другое. Сотни часов видео, если не тысячи. Особенности: информации очень много, преподаватель пишет на доске маркерами, местами есть повторы, но изложение толковое и профессиональное. Многие темы по Java на русском YouTube можно найти только здесь. Если вы сейчас учите потоки на JavaRush и они никак не идут, заходите к Ивану на канал, скорее всего, теорию он вам разжует. На канале Юрия Ткача «Онлайн уроки по Java» также можно найти уйму материалов для начинающих. Очень полезные для изучения Java видеоуроки спрятаны в плейлисте «Java для тестировщиков», информация подана очень просто. А закрепить изученное можно, просмотрев видеоуроки «Java практика». Большинство зрителей отмечает, что стиль у автора не слишком академический и весьма доходчивый. То есть засыпать, как часто бывает на реальных занятиях в университетах, вы не будете. Главное — следите за ходом мысли. Если вам понравилось, как Юрий ведёт лекции, вы уже продвинулись в изучении Java Core и готовы приступить к фреймворку Spring, попробуйте оценить самые новые на сегодняшний день ролики канала Spring Framework – the Basics. Тут, правда, уже не лекции перед аудиторией, как в случае с «Java практика» и «Java для тестировщиков», а специально снятые обучающие видео. Много чрезвычайно полезных и основательных уроков для изучающих программирование, Java-видео от признанного ИТ-преподавателя Якова Файна. Даже не просто ИТ-преподавателя, а самого настоящего Java-чемпиона (это специальное звание, носят его лишь немногие специалисты по языку) и сооснователя компаний Farata Systems и SuranceBay. Обратите внимание: на канале есть видео и на английском, и на русском (Яков Файн уже много лет живет в США). И, главное, автор умеет объяснять материал на очень разных уровнях. Скажем, у него есть книга «Программирование на Java для детей, родителей, бабушек и дедушек», рассчитанная в первую очередь на детскую аудиторию.

javaRussia

Этот канал не так раскручен, как те, что вы видели выше, но однозначно стоит упоминания. Автор — Наиль Алишев — составил очень неплохие короткие видеоуроки программирования Java, в которых максимально доступно изложены базовые принципы языка. Роликов не очень много, около 50, длительность каждого из них — от 7 минут до получаса. Это — самые основы (идентичны квестам Java Syntax и Java Core), изложены лаконично и понятно, приведены неплохие примеры, понятные новичкам. Затрагиваемые темы: синтаксис, ООП, установка рабочего окружения, исключения, параметризация, класс Object, вложенные и абстрактные классы, сериализация. А некоторое время назад автор создал уже платный видеокурс по Java на платформе Udemy, в котором подробно объясняет такие темы как Java Collections, регулярные выражения, многопоточность и лямбда-выражения.

Кладезь интересной информации от Roman Brovko

Мне сложно сказать, насколько «законны» подборки курсов, собранные на этом канале. Они взяты с разных курсов (например, Stepic). Тем не менее, размещу их здесь — я находила в них много полезного, и искренне надеюсь, что канал не прикроют. Роман собрал на своём канале курсы для начинающих, подготовленные специально для онлайн-обучения, а также записи с «живых» лекций и выступлений. Темы: основы Java, ООП, GUI, паттерны, Java EE, Spring, Java + JDBC + Hibernate + Spring Data JPA, разработка веб-сервиса на Java и даже микросервиса.

Что дальше?

Многие разработчики убедились на собственном опыте: изучить язык программирования Java видеоуроки с Youtube (особенно качественные) помогут. Только вот практику никогда не заменят. Так что комбинируйте источники, как угодно, но не забывайте решать практические задачи, желательно — каждый день! В следующей части статьи я расскажу о полезных англоязычных каналах, которые содержат видеуроки по java.

javarush.ru

1000+ часов видео по Java на русском / GolovachCourses corporate blog / Habr

Добрый день.
Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
  1. Java Core
  2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
  3. Multicore programming in Java.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег.

(GolovachCourses.com)

Здесь собраны несколько вариантов записи моего курса Java Core.
Модуль #1 (Procedural Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3, #4.

Модуль #2 (Exceptions in Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4, #5 (???)
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3.
Модуль #3 (Java I/O):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #0 (???), #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4, #5
Набор январь 2013: #1, #2, #3, #4
Набор октябрь 2012: #1, #2, #3, #4, #5.
Модуль #4 (Multithreading in Java):
Набор июль 2013: #1, #2, #3, #4
Набор апрель 2013: #1, #2, #3, #4
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3
Набор октябрь 2012: #1, #2, #3.
Модуль #5 (Collections API, java.util.*):
Набор апрель 2013: #1, #2, #3, #4, #5
Набор февраль 2013: #1, #2, #3, #4
Набор январь 2013: #1, #2, #3, #4, #5
Набор октябрь 2012: #1, #2, #3, #4, #5.
Модуль #6 (Java OOP):
Набор апрель 2013: #1, #2, #3, #4.
Набор февраль 2013: #1, #2, #3, #4.
Набор январь 2013: #1, #2, #3, #4.
Набор октябрь 2012: #1, #2, #3, #4.
Summary:
Набор январь 2013: итоговая лекция
Набор октябрь 2012: итоговая лекция
Юрий Ткач

Курс «Java для тестировщиков» (видео на youtube.com + скачать c rutracker.org).
Курс учит базовому программированию на языке Java, объясняет основные понятия, знакомит с наиболее популярными библиотеками и средствами, которые могут пригодиться тестировщикам. Курс расcчитан на слушателей, которые слабо подготовлены в программировании.
Программа, расположенная тут, не соответствует наименованию лекций
Урок 1 — Введение
Урок 2 — Синтаксис языка
Урок 3 — ООП
Урок 4 — ООП
Урок 5 — ООП
Урок 6 — ООП
Урок 7 — Enum, Number, String
Урок 8 — Eclipse IDE
Урок 9 — Exceptions
Урок 10 — Generics, Collections
Урок 11 — Annotations, I/O, Properties
Урок 12 — Threads
Урок 13 — Swing
Урок 14 — Swing
Урок 15 — JDBC
Урок 16 — JUnit
Урок 17 — Spring
Урок 18 — EasyMock
Урок 19 — Ant и Maven

Курс «Java практика» (видео на youtube.com).
Данный курс уделяет основное внимание практическому применению языка Java и основывается на предыдущем курсе Java для тестировщиков, который имел теоретическую направленность. В этом курсе рассматриваются различные прикладные задачи, а также проводится их решение с помощью Java. В конце каждого занятия озвучивается задание для самостоятельной работы. Курс расчитан на слушателей, которые слабо подготовлены в программировании.
Занятие 1. «Синтаксис и конструкции языка».
Занятие 2. «Функции (методы)».
Занятие 3. «ООП, классы и объекты».
Занятие 4. «ООП, наследование, классы».
Занятие 5. «Коллекции».
Занятие 6. «ООП, интерфейсы».
Занятие 7. «Файлы, ввод/вывод».
Занятие 8. «XML».
Занятие 9. «Ant».

Курс «Advanced Java» (видео на youtube.com + описание от автора).
1. Concurrency
— Deadlock
— Неблокирующая синхронизация
— Сервис запуска потоков
— Синхронизаторы
— ThreadLocal
2. Collections
— HashSet и TreeSet
— Реализации интерфейса Map
— Queue и приоритетная очередь
— Многопоточные коллекции
— Блокирующая очередь
3. Generics
— Сырые типы
— Наследование и расширители обобщений
— Рекурсивное расширение типа
4. Annotations/Reflection
— Создание собственных аннотаций
— Использование Reflection API

Курс «Технологии проектирования программных систем» (видео на youtube.com).
Юрий Ткач: «Работая преподавателем в Черниговском государственном технологическом университете на кафедре Информационных и компьютерных систем, я читал курс лекций по предмету ТППС (Технологии проектирования программных систем). В основном я старался делать упор на проектирование систем, рассказывая про разные шаблоны, подходы, многослойную архитектуру и т.п. Материал свой я основывал на замечательной книге Мартина Фаулера „Архитектура корпоративных программных приложений“. Однако, без рассказа о технологиях, которые применяются для создания систем уровня предприятия, этот курс был бы не таким интересным. Весь курс основывался на технологиях J2EE и связанными с ними, и поэтому включал в себя такие темы как Spring, AOP, JPA, Hibernate, JSF.»
Лекция 5. Слой сервисов
Лекция 6. Spring
Лекция 7. АОП.
Лекция 8. Слой интеграции.
Лекция 9. JPA Введение.
Лекция 10. JPA. Связи и наследование.
Лекция 11. JPA. Состояния и запросы.
Лекция 12. JPA. DAO.
Лекция 13. JPA. Транзакции.
Лекция 14. Слой представления.
Лекция 15. JSF. Введение.
Лекция 16. JSF. Навигация и beans.
Лекция 17. JSF. H-library and templates.
Лекция 18. JSF. Tables, Spring connect.
Лекция 19. JSF. Validators and Converters.
Лекция 20. JSF. Собственные компоненты.
Слой сервисов с JPA и Spring.
Программирование и тестирование слоя сервисов.
Facelets Templates — создание страниц в JSF.

Игорь Мирончик

Курс Основы Java (30 часов) (на канале youtube.com/MironchikVideo):
1. «Основы программирования на языке Java» [1-1]
2. «Основы программирования на языке Java» [1-2]
3. «Основы программирования на языке Java» [2]
4. «Основы программирования на языке Java» [3]
5. «Основы программирования на языке Java» [4]
6. «Основы программирования на языке Java» [5]

Курс Oracle Java, разработка приложений JEE (34 часа).
Курс был прочитан для группы разработчиков с серьезным опытом работы в технологиях .Net, MIDAS, в среде Delphi, МVC. Задачей курса был обзор технологий, входящих в состав платформы JEE, работающие на базе Oracle Weblogic сервер.:
1. «Разработка приложений в технологии JEE» [1-1]
2. «Разработка приложений в технологии JEE» [1-2]
3. «Разработка приложений в технологии JEE» [2]
4. «Разработка приложений в технологии JEE» [3]
5. «Разработка приложений в технологии JEE» [4]
6. «Разработка приложений в технологии JEE» [5]

Алексей Владыкин

Лекция 1 «Знакомство с языком и интрументами» (история и эволюция Java, особенности Java, разновидности Java, экосистема Java, неформальное знакомство с языком, стандартные инструменты JDK) + презентация
Лекция 2 «Примитивные и ссылочные типы» (примитивные и ссылочные типы, тип boolean, тип char, целочисленные типы, вещественные типы, преобразование типов) + презентация
Лекция 3 «Массивы и строки в Java» (Массивы: объявление, создание, инициализация, индексация, одномерные и многомерные, представление в памяти, java.util.Arrays. Строки: строковые литералы, операции со строками, StringBuilder, поддержка различных кодировок, регулярные выражения) + презентация
Лекция 4 «Объекты, классы и пакеты в Java» (основы ООП, объявление класса, использование класса, наследование, пакеты, модификаторы доступа, вложенные классы) + презентация
Лекция 5 «Управляющие конструкции и исключения в JAVA» + презентация + презентация (условные операторы (if, switch), циклы (for, while, do), операторы break и continue, метки, исключения, типы исключений, конструкция try/catch/finally, try с ресурсами, multicatch)
Лекция 6 «Java I/O, Java NIO, File» (Доступ к файловой системе: java.io.File и java.nio.file.*, потоки байт: InputStream, OutputStream, потоки символов: Reader, Writer, java.io.StreamTokenizer и java.util.Scanner) + презентация
Лекция 7 «Стандартная библиотека: java.util» (Collections Framework, списки, множества, ассоциативные массивы, generics) + презентация
Лекция 8 «Стандартная библиотека: java.lang, reflect, Reflection API» + презентация
Лекция 9 ««Разработка многопоточных приложений на Java, часть 1»» (общие сведения о параллелизме, управление потоками, синхронизация потоков, модель памяти) + презентация
Лекция 10 ««Разработка многопоточных приложений на Java, часть 2» (атомарные типы, примитивы синхронизации, коллекции, ExecutorService, ForkJoinPool) + презентация
Лекция 11 «Модульное тестирование на Java» (основные идеи, JUnit, Mockito, Java Logging API) + презентация
Лекция 12 «Разработка сетевых приложений на Java» (cокеты, URI и URL, библиотека Netty) + презентация
Георгий Корнеев

Найдено на Лекториум, Computer Science Center, rutracker.
Также есть страница автора и библиография/ссылки от автора.
Лекция 1 «Введение в Java»
Лекция 2 «Введение в ООП на Java (1)»
Лекция 3 «Введение в ООП на Java (2)»
Лекция 4 «Обработка ошибок и исключения»
Лекция 5 «Синтаксис Java»
Лекция 6 «Ввод-вывод»
Лекция 7 «Collections Framework»
Лекция 8 «Новые возможности Java 5»
Лекция 9 «Reflection»
Лекция 10 «Введение в многопоточное программирование»
Лекция 11 «Задачи и средства многопоточного программирования»
Продвинутый материал

Глеб Смирнов, «Расчленяя многопоточность».
Алексей Шипилёв, «О чём молчат Heap Dump-ы»
Роман Елизаров, «Факты и заблуждения о Java-сериализации»
Алексей Шипилёв, «Прагматика Java Memory Model»
Сергей Куксенко, «JDK8: Stream style»
Владимир Иванов, «Invokedynamic: роскошь или необходимость?»
Алексей Шипилёв, «ForkJoinPool в Java 8»
Дмитрий Чуйко, «Новинки в java.util.concurrent»
Андрей Паньгин, «Java Runtime: повседневные обязанности виртуальной машины Java»
Александр Макаров, «Исследование возможностей и ограничений JVM по оптимизации памяти»
Руслан Черёмин, «Модель памяти Java: близкие контакты третьей степени»
Сергей Куксенко, «Quantum Performance Effects»
Алексей Шипилёв, Сергей Куксенко «Оптимизация производительности Java-приложений: теория»
Алексей Шипилёв, Сергей Куксенко, «Оптимизация производительности Java-приложений: детали»
Алексей Шипилёв, Сергей Куксенко, «Оптимизация производительности Java-приложений: ещё детали»
… и много других «вкусностей» канала youtube.com/JUGRuVideo
Заключение

Я не буду давать никаких комментариев относительно качества материала по той простой причине, что сотни часов чужих материалов не просматриваю. Надеюсь что те, кто смотрел, смогут охарактеризовать в комментариях.

От имени всех коллег, которые занимаются преподаванием и выкладывают видео бесплатно, прошу простить нас за естественные «дефекты», возникающие при 3-4 часах преподавания в день: оговорки, неправильное произношение, не всегда удачные импровизации.

В описаниях курсов использованы оригинальные описания от авторов.

Контакты

Я занимаюсь онлайн обучением Java (вот курсы программирования) и публикую часть учебных материалов в рамках переработки курса Java Core. Видеозаписи лекций в аудитории Вы можете увидеть на youtube-канале, возможно, видео канала лучше систематизировано в этой статье.

skype: GolovachCourses
email: [email protected]

habr.com

Путь к Java Junior Developer / Habr

Здравствуйте.
Меня зовут Кислин Григорий. В начале ноября в Санкт-Петербурге закончился первый обучающий семинар «Java. Базовый курс», сейчас переименнованый в «Java. Junior Developer. Интенсив». Хочу поделиться с Вами полученным при его проведении опытом на тему обучения Java а также своим опытом трудоустройства на позицию Java разработчика.

Изучаем Java

Изучить Java — понятие абстрактное. Необходимо уточнение. Изучить все классы Java — нереально, точно так же, как и наиболее востребованные библиотеки для Java. Изучить синтаксис Java — проще. Достаточно прочитать книги по Java, например, классиков:
  • Брюсь Эккель «Философия Java»
  • Герберт Шилдт «Java. Руководство для начинающих»
  • Кея Хорстманна «Java 2»
  • Кен Арнолд, Джеймс Гослинг, Дэвид Холмс «Язык программирования Java»
  • Джошуа Блох. «Java. Эффективное программирование»

Также есть много онлайн курсов:
Особое внимание необходимо обратить на такие вещи, как внутренние статические и обычные классы, анонимные классы, параметризация, коллекции и многопоточность.

Вторая вещь после синтаксиса языка — наиболее часто используемые API. На начальном этапе это сервлеты, JSP, JDBC, JUnit.

Затем идет вещь, нужная любому программисту (не только Java) — кругозор. Сюда относится SQL, XML (xsd, xslt, XPath), HTML, JavaScript, Unix shell и пр.

Наконец, инструменты разработки. Общие: отладка в браузере (например firebug для FF), системы багтрекинга и контроля версий, СУБД, инструменты CI и Java: Ant / Maven, веб-контейнеры/серверы приложений.

И, как говорится, last but not least — IDE: создание проекта, кодирование, рефакторинг, дебаг, деплой, тестирование. Насколько вы им владеете, настолько быстрее, проще и качественнее будет ваш проект. По IDEA рекомендую познакомится с роликом Эффективная работа с кодом в IntelliJ IDEA.

Практика

Хорошо учится язык в процессе написания приложения среднего объема. Особенно если стараться писать его правильно- т.е. ~70% времени гуглить на тему лучшего решения каждой локальной проблемы и лучшего варианта кода. Для поиска особенно рекомендую ресурс stackoverflow.com, в ответах которого нужно будет отделить зерна от плевел. Особенно хорошо, если это не абстрактное приложение, а что-то нужное. Или, например, тестовое задание на работу. Вам круто повезет, если Вы знаете предметную область, хороший программист и Вас готовы взять на работу без опыта в Java — тогда Вы получаете опыт а вам еще за это платят. Здесь интересная классификация работы, зарплаты и получаемого опыта. Я бы только не стал сводить все к деньгам и карьере. Когда наберетесь опыта и будет возможность выбирать, можно кодировать для себя, для удовольствия. Ну и выгодно продать себя — это тоже часть игры в программирование, мера вашего профессионализма.
Собеседование

Совсем недавно на Хабре опубликовали хорошую статью про собеседование с позиции работадателя. Там тоже люди:) и чем более человеческие отношения у вас сложаться с собеседующим — тем больше шансов на успех. Ну и вообще — останется приятный осадок. Однако есть и такие собеседования, с которых я бы ушел с чувством, что мы мало подходим друг другу и хорошо, что мне не придется работать с таким начальником. Наконец, как только почувствуете достаточную уверенность, ходите на собеседования! (для людей с опытом, я бы еще добавил исследование рынка с позиции архитектуры, решений и технологий, с частотой пару раз в год и на позиции которые действительно интересны). Причем старайтесь из каждого вынести максимум. Если не знаете — не стесняйтесь поинтересоваться правильным ответом.
После собеседования сразу садитесь за гугл до полной ясности и не сидете сложа руки, ожидая результата. Продолжайте заниматься тем же, что и до него: обучаться и ходить на следующие интерью. Относитесь к этому как к процессу. В случае, если ответа не дали в означенный срок, не стесняйтесь позвонить и поинтересоваться результатом. В случае, если у Вас есть email собеседующего (например вам прислали тестовое задание), и вразумительного ответа от HR не дождаться, можно поинтересоваться результатом напрямую. Разумный срок для пингования — раз в неделю. Я где-то полтора месяца, ничего особенного не ожидая, раз в неделю сначала звонил, а потом переписывался с Yota. В результате меня передали в другой отдел, где условия оказались лучше тех, куда я изначально собеседовался.
При этом, все таки, основа любого собеседования на позицию Java-разработчика это ваши знания: общее понимание сути программирования вообще, java в частности и специфические вещи java. Например: «Сколько экземпляров синглетона может быть в одной JVM?» (необходимо произнести ключевую фразу- зависит от ClassLoader). Вот пример вопросов на собеседовании по коллекциям. Причем это далеко не все вопросы. Меня, например, спросили- почему берется не просто хэш ключа, а в нем еще перемешиваются байты? Вопрос скорее на общее понимание работы HashMap и сообразительность, ответ можно посмотреть в реализации HashMap. Конечно, все вышеперечисленное не потребуют от Junior. Но чем больше знаний у Вас будет — тем выше Ваши шансы.
Итоги

Путь в тысячу миль начинается с одного шага
Если временем не ограничены, можно пробовать освоить все самостоятельно. Если нет, встает вопрос — как получит за минимальное время максимальное количество знаний? Можно поискать индивидуальное репетиторство (особенно если пробелы в чем-то конкретном) или закончить Java курсы с максимально широким и глубоким вхождением в тему. Я бы выделил следующие критерии отбора:
  • Преподает программист. С вопросами и задачами из собеседований и знанием Java не только по книжкам.
  • Практика. Лучше всего, когда на протяжении курса разбор теории идет вместе с разрабатываемым приложением.
  • Работа в IDE (пишу, потому что видел на YouTube курсы java в notepad).
  • Охват. Максимальное количество тем за отведенные часы (кроме собственно Java выделю важные темы: работа с XML, SQL/JDBC, сервлеты/JSP, JUnit). Конечно, не в ущерб пониманию.
    Для этого чаcть несложного материала (синтаксис, операции, типы, управляющие конструкции) слушатели изучают самостоятельно (и бесплатно).

Очень важен на курсе (по отзывам слушателей) баланс между практикой, когда на занятии разработка приложения идет вместе со студентами, и когда идет только демонстрация разработки. Если весь код программировать вместе, пройдем где-то половину программы, при этом внимание сосредотачивается не на содержимом, а на том, чтобы успесть записать код. Если идет только демонстрация, слушатели не смогут работать с проектом самостоятельно, несмотря на имеющийся код. И особенно важны домашние задания, когда происходит усвоение пройденного материала.

Если Вы собираетесь (или продолжаете) изучать Java, то надеюсь, что Вам было небезинтересно:).
Спасибо.

PS: Перепост из песочницы, куда я попал за ссылку на курс. Отдельное спасибо пользователю Хабра, возвратившему мне инвайт.

habr.com

Бесплатные курсы по изучению Java

Уникальные видеоуроки для быстого изучения языка программирования Java. Пройдите путь от начинающего до профессионального программиста и создавайте свои уникальные приложения на Java.

1. Бесплатный видеокурс по основам Java и ООП

Самый первый бесплатный курс для новичков, с которого стартуют все. Как создавать проекты, работать с объектами, использовать IntelliJ IDEA…

Скачать курс

2. Бесплатный курс по трудоустройству

Вводная часть с первыми уроками для всех новичков Java, кто хочет найти работу программистом. С чего начать, на что обращать внимание.

Скачать курс

3. Бесплатный курс по Веб сервисам в Java

Основы SOAP и RESTful сервисов на несложных примерах, чтобы мог разобраться любой новичок.

Скачать курс

4. Бесплатный курс по Веб программированию на Java

Основы веб разработки на Java — создание несложного проекта на JSP и сервлетах, подключение БД.

Скачать курс

5. Бесплатный курс по Spring Framework

Самый популярный Java фреймворк. Все основные компоненты создания Spring приложения.

Скачать курс

6. Бесплатный курс по Шаблонам проектирования Java

Углубленное изучение ООП и шаблонов проектирования Java. Профессиональное проектирование и программирование.

Скачать курс

7. Бесплатный курс по Базам данных в Java

Создание структур таблиц, оптимизация, SQL запросы. JPA, Hibernate, JDBC

Скачать курс

Бесплатный курс по Android

Разработка Android приложений и их монетизация. Продажи на Android Market, заказчикам.

Скачать курс

Запись опубликована в Java для начинающих.

pro-java.ru

Курсы программирования на Java

Опыт разработки
современных
web-приложений

Востребованный
у работодателей
стек технологий

Собственный выпускной проект на используемом в проекте стеке

Проверка
домашних
заданий

Оплачиваемые стажировки в
ведущих компаниях

Пройди путь от новичка до профессионала вместе
с успешным Java-архитектором

ГРИГОРИЙ
КИСЛИН

Автор и ведущий обучающих курсов по Java Web и Enterprise-технологиям. В программировании с 1989г. Имеет знания и опыт практически во всех технологиях Java EE.
Java-тренер с 2013 года

Индивидуальные
комментарии
вашего наставника

Бесплатный ключ на полгода для Intellij IDEA Ultimate

ЧТО ВЫ ПОЛУЧИТЕ НА КУРСАХ

Количество мест на потоке ограничено! Успейте забронировать место. Предоплата не требуется

Spring, Hibernate, Maven, Git, JUnit, PostgreSQL, REST, Bootstrap, jQuery, Java 8 Stream and Time API, Java EE

Помощь
в трудоустройстве

topjava.ru

Основы Java для начинающих — Эффективное изучение Java

“До прохождения тренинга Тимура по ООП я работал несколько лет с объектной моделью, где каждый объект обладал заранее определённыи методами.
Всё это время я полагал, что ООП именно в этом и состоит — про наследование, полиморфизм и композицию не имел никакого понятия (это было невостребовано).
Когда читал об этих принципах в Википедии, возникало ощущение, как в знаменитой песне — «всё понятно — но что конкретно?».
Пытался читать литературу по Java и NetBeans. Вся она грешит какой-то мелочностью, за которой сути не увидишь. А если долго не видеть сути — разве хочется продолжать обучение? К тому же чтение теории практики не заменяет.
С помощью серии видеоуроков от Тимура Батыршинова у меня получилось разобраться с принципами ООП и NetBeans и получить практические навыки программирования на Java. Видеоуроки достаточно сжатые (не расятнуты). В них доступно преподносится новый материал.
Это сочетается домашними заданиями, в которых есть вопросы, побуждающие что-то додумывать в процессе выполнении практических заданий.
Таким образом изложенный материал закрепляется гораздо лучше. Все, что непонято, можно выяснить на вебинарах, получив ответы от Тимура или других учащихся.
В общем, просто, удобно, понятно, быстро. Тимур, спасибо большое!”

Шлемов МаксимРуководитель проекта NetWizard

“Я пытался изучить этот язык самостоятельно, но особо не преуспел, так как информация в большинстве случаев раздроблена и при объяснении каких-то аспектов языка, не хватает хороших примеров.
Я нашел в Интернете объявление про бесплатный вебинар, посвященный проекту, который проводил Тимур, прослушал его и записался на его тренинг. Последним остался полностью доволен.
Курс был очень интенсивный, но оптимально построен, нечего лишнего. Тимур все доступно объясняет, использует прекрасные примеры, графики. Появилось большее понимание при чтении литературы по JAVA, больше уверенности при написании кода.”

Евгений Дымовг.Южноукраинск

“Я прошел базовый курс от Тимура, и поэтому решил сделать свой маленький отзыв.На самом деле я до этого проходил еще в Минске такие курсы для новичков по JAVA и мне есть с чем сравнивать. Те курсы, конечно, они дали какие-то результаты, но я бы их оценил – нормальные такие курсы по знаниям.
Складывалось такое ощущение, что какие-то дыры есть, возможно, что нормально просто казалось, а именно на курсах у Тимура было ощущение, что собран костяк, самые необходимые знания, самые нужные для начала, которые нужно точно и конкретно знать, чтобы продвигаться в дальнейшем.Просто сказать, что курсы Тимура более такие конкретные, которые дают самую необходимую информацию.
Нет нечего лишнего, все только самое нужное и Тимур все это очень хорошо сложил воедино и по порядочку сформировал, то есть надо, в начале, проектирование сделать и т.д., то есть он способствует развитию программиста, как стать непросто программистом, а стать хорошим программистом, писать качественно код.
За это ему, конечно, спасибо. Он молодец, что так проанализировал и собрал всю информацию, и предлагает на своих курсах ученикам.”

Стрельчёнок Дмитрийг.Минск

“Хочу сказать, что довольно давно я хотел понять, что такое объектно-ориентированное программирование.
Со временем мне пришлось программировать на простом языке, на Бейсике, когда я писал свою научную работу. Довольно большая была программа, но это было очень давно.
А объектно-ориентированное программирование для меня было, как загадка, то есть что это такое, не понятно. Вроде все понятно, но суть не ясна. В принципе, я получил все, что хотел. Спасибо Тимуру за такой курс. Я думаю, что я буду продолжать обучение у него.”

Пятин Андрей Александрович49 лет, г.Киров

“Хочу поделиться первыми успехами по Java. Сдавала собеседование, и 13 человек взяли 3, в том числе и меня. Стоит учесть, что Java для меня первый язык программирования и образование экономическое, а кромеменя сдавали собеседование те, кто учится на программистов, или уже знают другие языки.
Все это благодаря тренингу Тимура. Всем очень понравились мои ответы (особенно про разницу между абстрактным классом и интерфейсом, композицией и агрегацией, использование коллекций и другие). Сказали, что есть понимание того, о чем говорю, а не просто заученный книжный текст.
Всем рекомендую пройти этот курс, Тимур учит ПОНИМАТЬ Java и как учить Java, а не просто учит как и что писать в коде. Тимур, спасибо большое за вашу работу!!”

Татьяна ГавриловаРуководитель отделения Университетское Ивано-Франковского филиала ПриватБанка

“Я удовлетворен тем высоким уровнем преподавания и изложения информации, которым владеет Тимур, и не жалею средств, которые были вложены в этот курс.Все это сполна окупается и более того.
Итак, что важно отметить?Мы, наша группа, прошли базовые блоки по ООП и по GUI, и уже сейчас я могу сказать о первых результатах.До курсов у меня были какие-то знания в JAVA, но была очень сильная неуверенность в этих знаниях. Даже если бы изначальных знаний не было, я бы сполна получил их с уроков Тимура.хочу сказать об уверенности, которую я начал ощущать, как начинающий программист, после прохождения первых блоков.
Этот курс, этот тренинг, полностью оправдывает мои ожидания.
Да, я продолжаю работу с Тимуром в следующем блоке по БД.В заключении хочу отметить, что мне особенно понравилось в этих курсах.
Во-первых, это качественный авторский подход. В этом я имею ввиду, что Тимур классный молодой человек, продвинутый, с которым легко работать. Он находиться на современной волне преподавания, что очень важно для учащихся.Во-вторых, мне лично очень нравиться структура изложения информации.
Все доступно и последовательно.
В-третьих, Тимур всегда вам сможет ответить на любые ваши вопросы на вебинарах.
Спасибо тебе, Тимур, за твою работу.Желаю тебе всего хорошего, а всем добра.”

Юрий Берещак

javabegin.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *