Содержание

Уроки по основам языка программирования JAVA для начинающих — Fandroid.info

5 812

Механизм обратного вызова(callbacks) широко распространен в программировании. При обратном вызове программист задает действия, которые должны

1 616

Рассмотрим, что такое интерфейсы в языке программирования java, а также поговорим о множественном наследовании

1 180

Продолжаем курс по основам языка программирования java, и сегодня речь пойдет об абстрактных классах

1 394

<<Предыдущий урок   Список уроков   Следующий урок>> Что такое исключения (Exception) в языке

1 774

<<Предыдущий урок   Список уроков   Следующий урок>> Наследование в java Наследование в Java

startandroid, стартандроид, конструкторы в Java, объекты в java, java, eclipse, IntellijIdea, java программирование, видео уроки java, программирование на java, java android, как стать java программистом, приложения на java, программирование java для чайников, разработка java, java для начинающих, java для чайников

4 349

<<Предыдущий урок   Список уроков   Следующий урок>> Компиляция и выполнение java программы Продолжаем

www.fandroid.info

Является ли Java лучшим языком программирования для начинающих? / Habr

Привет, Хабр! Представляю вашему вниманию перевод статьи «Is Java The Best Programming language to Learn First?» автора Javin Paul.

image

Часто получаю вопросы, вроде: «Какой язык программирования изучить первым?», «Java-тот самый язык программирования, на котором стоит начать писать?», «Насколько Java хорош в качестве первого языка программирования?», «Который из языков программирования самый подходящий для начинающих?» или «Начать с Java или Python?».

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

По моему мнению, самая веская причина начала программирования на Java или выбора его в качестве первого языка – Java освоить проще.

Некоторые могут утверждать, что Python ещё проще Java и даже не требует компиляции, но лично я нахожу Java языком, понимать и читать на котором много легче (много лёгким для чтения и понимания).

Последнее поколение программистов начинало учиться писать код с Бейсика и только потом переходило на C и C++ с Java в качестве своего второго или третьего языка программирования.
Одной из причин для этого может быть то, что C и C++ были более востребованными в те дни в отличие от Java. Но действительная причина в том, что учебная программа была построена так, что нас обучали C и C++, поскольку тогда ещё не было Python, по крайней мере, в нашем колледже.

И правда, часто нам не приходится выбирать, и мы изучаем в школе или колледже программирование как часть учебной программы. В моё время C был первым языком программирования в нашем инженерном колледже, потом мы изучали C++, VB, VC++, и, наконец, Java.

Сейчас я говорю о том, что Java проще и легче освоить, но помню, как отметил, что он сложнее по синтаксису по сравнению с C++, поскольку мне приходилось прописывать System.out.println() вместо короткой формы записи cout для того, чтобы вывести сообщение на экран, однако это просто кратковременное неудобство.

Когда я начал писать и поддерживать большие программы, я нашёл код на Java более читабельным, и вы можете понять, что делает код. В Java отладка и поиск ошибок были много более удобные, чем в C++ или C.

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

Java – язык программирования, с которого стоит начать?


Несколько причин, почему я считаю Java подходящим языком программирования, чтобы на нём учиться писать код:

  1. Java проще, синтаксис гораздо более читабельный, чем синтаксис C, C++ или другого языка.
  2. Язык Java хорош для изучения объектно-ориентированного программирования, но не для процедурного, где он уступает C. ООП или Объектно-Ориентированное Программирование является полезным навыком, потому что оно достаточно хорошо справляется со сложностью реального приложения. Проще думать с точки зрения класса и объектов.
  3. Java имеет богатый API, и вы можете делать очень много в Java, например, работать с графикой, звуком и, что всего вероятнее, писать небольшие игры, такие как Крестики-Нолики, Тетрис и др. Не то, что вы не можете сделать это на других языках, но тогда вам придётся часто загружать и устанавливать различные программы и библиотеки, что для начинающего программиста работа непростая. Когда вы устанавливаете Java, большая часть всего необходимого для работы устанавливается уже в процессе установки языка.
  4. Java имеет сильную поддержку сообщества, неважно, какого рода вопросы, сомнения или проблемы у вас возникли, Google сможет найти ответы. Если не Google, то есть Stack Overflow, форумы Java и множество других сообществ, которые вам помогут. Это действительно самая главная причина, почему я советую начинающим учиться писать код на Java, поскольку, когда вы начнёте учиться программировать, вы столкнётесь с множеством различных проблем, прежде чем начать понимать основы программирования и сам Java. Поскольку Java-разработчиков насчитывается несколько миллионов и оказывается поддержка сообщества, всего вероятнее вы быстро отыщите ответы без каких-либо разочарований и недовольств.
  5. Java – строго типизированный язык, который исправляет множество ошибок, допущенных начинающими программистами. Также, в меньшей мере, подходит для статической типизации. Это ещё одна причина, по которой я предлагаю начинающим изучать сначала Java, а не Python, потому что Python – язык с динамической типизацией, и вам не нужно определять типы, что обычно запутывает.
  6. Java устанавливается со встроенным Garbage collection (автоматическое управление памятью, что занимают неиспользуемые объекты), что является большим плюсом для абсолютных новичков. Управление памятью – это большое дело в начале обучения программированию.

Это те несколько причин, почему я считаю, что начинающим следует сначала освоить Java и только потом любой другой язык программирования. Я могу быть предвзятым, потому что я Java-программист, но я также знаю Python и я также занимался профессиональным программированием на C и C++.

Исходя из этого опыта, я могу сказать, что Java, несомненно, является одним из лучших языков программирования для начинающих, и вы определённо можете выбрать Java в качестве первого языка программирования для изучения программирования.

Достаточно ли Java для успешной карьеры программиста?


Вопрос не в различии языков программирования, нет. Как программист, вы должны знать много вещей, таких как структура данных, алгоритмы, управление памятью, объектно-ориентированное программирование, скрипты и так далее. А другой язык учит вас другому.

Как только вам будет легко работать с Java, вы можете перейти на другие языки программирования, такие как Scala, JavaScript или выбрать скриптовые языки, например, Python, которые не нужно компилировать.

Самая большая проблема в этой сфере — нужно продолжать учиться и развиваться, чтобы построить успешную карьеру программиста. Если вы любите программирование и осваиваете новые технологии и языки программирования, то эта сфера для вас.

Для того, чтобы быть успешным программистом, также важно развивать навык отладки программ, который основан на умении логически мыслить.

Если вы дружите с логикой и можете сделать вывод, основанный на ограниченной доступной информации, тогда вам не составит труда устранять проблемы и находить ошибки в коде.
Хороший опыт работы с такими интегрированными средами разработки (IDE), как Eclipse, NetBeans или IntelliJ IDEA и действительно отличные инструменты Java также помогут вам в написании кода и его отладке.

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

Вкратце, вы определённо можете выбрать Java в качестве своего первого языка программирования, и, когда вы его освоите, попробуйте выучить ещё парочку языков, например, JavaScript или Python.

image

habr.com

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 за 1 год / Habr

Здравствуй, дорогой читатель. Давно хотел написать подобную статью, но либо не хватало времени, либо мешала предательская лень. Но, как бы там ни было, все-таки у меня получилось собраться с мыслями, чтобы написать то, что принесет вам, я надеюсь, какую нибудь пользу. С радостью поделюсь своими знаниями и опытом, в ответ с вас причитается время и внимание. По моему мнению, данная публикация хорошо подойдет для тех, кто готов определиться в своих интересах и хочет связать свою жизнь с IT — тем или иным образом. Итак, поехали!

Выбор языка программирования

Публикация начинает выглядеть как многие подобные материалы. По закону жанра я должен буду написать название пары тройки языков программирования, назвать парочку плюсов и минусов и, в итоге, так и не ответив на вопрос, перейти к следующей части. Отчасти в этом есть доля правды, ведь каждый выбирает для себя тот язык, который ему ближе, исходя из того, разработкой какого вида продуктов он хочет заниматься в будущем. Большинство из вас изучали в школе Turbo Pascal и вряд ли для вас будет новостью, что на этом языке сейчас уже практически ничего не пишут. Так и в данном случае, выбирать язык надо грамотно, хотя много знаний никогда не бывает, но если вы хотите за короткий промежуток времени эффективно влиться в ряды программистов, к выбору языка надо подходить с умом. В самом начале запомните: хороший программист никогда не останется голодным, а в большинстве случаев сможет купить себе много икры (это определение подойдет для любой специальности, но ни одна специальность не даст вам такой свободы выбора места работы, как в плане компаний, так и стран — программист он и в Индии программист).

Логично, что чем популярнее язык и востребованность, тем больше шансов будет найти  работу в будущем, при этом язык должен быть несложным в освоении. Потому что хотя на C++ и пишут большое количество игр и получают за это хорошие деньги, новичку, тем более не знакомому с ООП (объектно-ориентированное программирование)  лучше отложить на некоторое время этот язык куда подальше. Далее по ссылке предоставлен список самых популярный языков  программирования 2014 года, и как видно, на первом месте стоит Java, далее идут C языки, затем Phyton, JavaScript, PHP, Ruby и т.д. Если самим поискать подобные статистики, то вы увидите, что в разных источниках места заняты по разному, но в целом первые 10 мест по содержанию везде будут совпадать.

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

Исходя из этих двух источников мы уже можем себе представить, какие языки программирования сейчас «в моде». Как видно по названию, автор статьи выбрал для себя Java. Хотя я считаю его лучшим для изучения ООП, найдется много людей, которые не согласятся со мной, и это логично — сколько людей, столько и  мнений. Тут мы встаем на небольшое перепутье дорог: выбирать Java, С# (очень похож на Java), Phyton, если мы хотим работать с начинками программ и приложений (back-end) или же PHP, JavaScript, HTML, если хотим заниматься веб-разработкой (front-end). В первом случае я бы свой выбор остановил на Java, а во втором — на PHP, хотя опять же, тут больше по вкусу, надо уже самому искать информацию о различных языках и вообще понимать, чем ты хочешь заниматься. Для размышлений вот подборка языков, которые используются в крупнейших интернет компаниях мира.

Есть 2 основных причины, почему бы я выбрал либо Java, либо PHP. Первая — это очень популярные языки и найти соотвествующую работу не составит труда, а вторая — в том, что ни по каким другом языкам вы не найдете столько обучающего материала как по этим двум, причем как на русском, так и на английском.

Обучение

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

Вообще, у меня есть своя теория, не раз подтвержденная мною же на практике: абсолютно всему можно научиться за  1 год. . Поверьте мне, это сущая правда, кому-то даже понадобиться меньше времени, но если человек не перестает сдаваться и в течение года с умом подходит к обучение, то практически невозможно, чтобы он не научился. Это не только в программировании, абсолютно в любой сфере: хочешь играть на гитаре — без проблем (у меня это заняло не так уж много времени и сил), научиться аргентинскому танго, кататься на серфе — на все это хватит одного года. Главное — учитесь!

В данном случае я буду рассматривать язык Java, так как он мне все таки ближе. Благо в интернете полно людей, которые безвозмездно помогают другим в обучение, поэтому найти подходящий для вас материал не составит труда. Здесь выложены более 1000 часов лекций по Java, которые можно с пером и бумагой просматривать в стенах свою уютной квартиры (пока только на русском языке). Для тех, кто привык вчитываться в проходимый материал, опять же интернет предоставляет большие возможности и это только один из всевозможных сайтов с уроками по Java. Теории хоть отбавляй, но не могу сказать про такой обучающий сайт, как Coursera.org, где вы сможете найти обучающие курсы на различных языках и по различным областям, в том числе и программированию — опять же все абсолютно бесплатно. Таких сайтов не один и не два, стоит всего лишь поискать.

Но как бы не была познавательной теория, в программирование без практики не обойтись. Но даже тут за нас уже сделали пол дела и не надо искать различные задачи, чтобы улучшать свои навыки, такой сервис как JavaRush очень в этом поможет. В целом данный сайт дает как теорию, так и практику, начиная просто с дублирования кода с экрана и заканчивая комплексными задачками, а в перерывах даже предлагает расслабиться и  посмотреть небезызвестный мультсериал. По заверениям авторов, достигшие 20 уровня в сервисе будут иметь достаточные знания, чтобы уже устраиваться в IT компанию.

Ну и конечно, кто-то спросит, а как же книга? Разве не надо их читать, а если надо — то что? На это я отвечу, что от чтения книг еще никто глупее не становился. Книг тоже очень много, но я перечислю только небольшую часть из них:

Помощь в практике

Как уже упоминалось, практика — это неотъемлемая часть в любом обучение, особенно в программировании. Тут вам придется кодить и кодить, вплоть до мышечной памяти пальцев. Это, конечно, немного утрировано, но на первых порах придется и вправду много бить по клавишам, чтобы запоминать значения различных конструкций, чтобы в будущем использовать практически на автомате.

У многих начинающих программистов на первых порах возникает большое количество вопросов, особенно когда нужно выполнять самостоятельное задание. Это нормально. Но в таких ситуациях надо понимать, что практически на любой возникший у вас вопрос можно найти ответ в интернете. Вряд ли вы первый, кто с ней сталкивается, поэтому не торопитесь сражу же задавать вопросы на различные форумы программистов (о которых я напишу чуть позже). Посидите минутку, правильно сформулируйте проблему у себя в голове и смело ищите её в поисковике. Наверняка большинство будут искать на русском языке, но не забывайте, что язык программистов — это английский, поэтому, если вы не нашли ответ на великом и могучем, стоит поискать на языке, который в школе вроде бы все учили, но так и не выучили. Но если даже и в этом случае оказалось, что на ваш вопрос нигде нет ответа, в бой вступают лучшие форумы интернета:

  • Cyberforum — по моему мнению, самый популярный русскоязычный форум ITшников, тут можно найти ответы на вопросы, при чем и не только в области программирования;
  • Programmers forum — крупный русскоязычный форум;
  • Searchengines — небезызвестный форум, но специализируется больше в веб- программирование;
  • Stack overflow — а это уже, не побоюсь этих слов, самый популярный во всем мире IT-форум, ответы практически на все свои вопросы вы найдете именно здесь;
  • Dev shed — тоже крупный англоязычный форум;
  • Quora — форум прямо не специализирующийся на программировании, но зато большая вероятность, что вы получите ответ от настоящего профессионала.

Форумы — это, конечно, не единственный способ получить ответы на интересующие вопросы. В своей практике программисты повсеместно работают с официальной документацией языка, на котором они пишут. Там описываются, как работают те или иные классы и интерфейсы, порой документация является единственным источником, который может помочь в разрешение вопросов, ведь это только на начальном этапе у всех схожие вопросы и без проблем можно найти готовые решения, но чем дальше вы забираетесь в дебри, тем сложнее и сложнее находить ответы, поэтому приходиться уповать на свою, я надеюсь, уже умную голову.

Компилируем код

Довольно много я уже написал, конечно, сложно охватить такую большую тему в рамках одной статьи, но, думаю, первые шаги уже сделаны и вызвать у вас соответсвующие мысли они должны. Думаю, это только первая статья из серии «Как стать программистом» и, соответственно «зачем?», если вы стоите на перепутье дорог и пока не знаете, какой выбрать путь. В следующий раз я затрону более интересные в материальном плане вещи, ведь не секрет, что программисты люди не бедные, а уж где и сколько они получают, посмотрим в следующий раз.

Наконец, для тех, кто хочет действительно стать программистом, желаю взять быка за рога, собрать всю волю в кулак и делать то, что вам нравится. До меня уже тысячи раз говорили, но я повторюсь, главное — желание и труд. Тогда все у вас получится. Запомните самое главное: воспринимайте изучение языков программирования и различных технологий не как цель, а как СРЕДСТВО. Только представьте, какие возможности перед вами открываются. Может быть, именно вы станете одним из тех, кто меняет мир в режиме реального времени. Так что удачи и спасибо за внимание!

Видео-бонус

habr.com

Java-самоучитель для начинающих

Основы программирования на языке Java

Общие сведения о программировании

Программирование— это процесс создания кода на каком-либо языке программирования, переводимого в файлы разных типов с помощью особой программы — транслятора. Существуют два типа трансляторов: компиляторы и интерпретаторы. Компилятор— это программа, переводящая текст, написанный на языке программирования, в какой-либо файл. Интерпретатор — это программа, способная переводить текст какой-либо программы в машинный код и одновременно выполнять ее.

 

Программирование на Java (он является компилирующим языком) имеет то преимущество, что код, написанный на данном языке программирования, переводится с помощью соответствующей программы-транслятора в так называемый байт-код, а он, в свою очередь, — в машинный код с помощью виртуальной машины Java (Java Virtual Machine, или просто JVM). Поэтому написанная на Java программа выполняема на любом компьютере с любой системой, лишь бы на нем была установлена виртуальная машина Java. Таким образом и обеспечивается одно из главных преимуществ языка Java — переносимость создаваемых на нем программ на компьютеры разных типов.

 

Программирование бывает двух типов: системное и прикладное.
Системное программирование позволяет нам программировать в системе, например в Windows, с целью решения глобальных задач.
Прикладное программирование направлено на создание прикладных программ, т.е. программ, выполняющих какую-то определенную функцию, например Microsoft Word, WordPad, Calculator и т.д. В этой книге мы будем заниматься прикладным программированием.

 

Онлайн-университет от Mailru с гарантированным трудоустройством

 

Основы программирования

Введение. Что такое JDK?

Введение. Что такое JRE?

Введение. Как установить JDK?

Введение. Как использовать JDK?

 

ОБУЧАЮЩИЙ ВЕБИНАР: рассчитан на новичков в web-разработке. После вебинара вы научитесь создавать сайты с помощью Java + Spring Boot — перейти

 

1. Типы программирования. Первые листинги.

2. Переменные и идентификаторы

3. Переменные и константы в Java

4. Литералы в Java

Все курсы программирования

 

5. Изучаем типы данных

6. Преобразовываем типы данных

7. Какие бывают операторы в языке Java

8. Массивы в Java

9. Управляющие структуры. Общие сведения о циклах

10. Конструкции выбора в языке Java

Обучение: СПЕЦИАЛИСТ ПО ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ

11. Инструкции выхода в Java

12. ООП, создание объектов

13. Конструкторы и блоки инициализации

14. Методы в Java

15. Наследование в Java

16. Интерфейсы

17. Вложенные классы и вопросы

18. Исключения в Java

19. Документирование кода

20. Полезные методы и контрольные вопросы

21. Пакеты в Java

22. Пакет java.lang

23. Пакет Java.util и вопросы

 

Поступить на факультет «Java-разработки»

 

24. Знакомимся с JBuilder

25. Настраиваем параметры программы

26. Создаем сами аплет на Java

27. Работа с палитрой компонентов в JBuilder 2005

28. Класс JButton из пакета javax. swing

29. Создание меню с помощью пакета java

30. Компоненты для работы с текстом в Java

31. Ползунок JSIider и индикатор в Java

32. Списки в Java

33. Работаем в в JBuilder 2005: компонент JScrollPane

34. Компонент JSplitPane и JTabbedPane

35. Формы и диалоговые окна в Java

36. Компоновки в Java и создание сервлетов

37. Мастера в JBuilder, а также вопросы к теме

38. Немного об HTML

ОбучАЕМ на ТЕСТИРОВЩИКА

39. Основы языка программирования JavaScript 1.5

40. Синтаксис языка JavaScript 1.5

41. Цикл for…in и функции в JavaScript

42. Работа с объектами в JavaScript

43. Встроенные объекты JavaScript

44. Подобъекты объекта document

45. Математический объект Math

46. Рисунки в HTML

47. Таблицы в HTML

48.Слои в HTML

49. Таблицы стилей CSS

Полезные сайты для java-программиста

www.java-study.ru

Путь к 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, а также затронем темы ООП и построения графического дизайна (интерфейса программы).

По состоянию на сегодняшний день Java – это самый известный и популярный среди всех языков программирования. Начал существовать с 1996 года, изначально разрабатывался в компании Sun Microsystems. Со временем её поглотила корпорация Oracle. Разработчики планировали сделать из Java универсальный язык, применимый практически для всех задач. 

За прошедшие 23 года Java сильно расширился и улучшился. На сегодня актуальная версия – Java 11, выпущенная в сентябре прошлого года. За это время Java стала больше, чем языком универсального предназначения. Её можно назвать полноценной платформой, которая обладает собственной экосистемой. Сегодня язык действительно может использоваться для чего угодно: от создания мелких программ до интернет-порталов колоссальных объёмов. Часто применяется для разработки ПО под все известные компьютеры, смартфоны и умную технику. Большая часть всех приложений на Android написана на Java.


Особенности Java

У Java много особенностей, но ключевой можно назвать принцип трансляции кода в особый байт-код, что не привязан к платформе. Впоследствии данный байт-код обрабатывается на JVM. Этот фактор отличает Java от прочих интерпретируемых языков наподобие Perl, PHP и пр. В них код сразу поступает на интерпретатор. С другой стороны, Java также не относится к исключительно компилируемым языкам (вроде C-подобных).

За счёт необычной архитектуры достигается кроссплатформенность и переносимость приложений, основанных на Java. Такие продукты можно выполнять на Windows, Linux, Mac OS и для этого даже не нужна перекомпиляция кода. Реализация JVM на всех платформах может отличаться, но принцип и ход выполнения остаётся таким же.

Java по синтаксису приближена к языкам C, очень напоминаем C# и C++. Если есть познания в одном из Си-подобных языков, разобраться в Java не составит большого труда. 

Следующая важная особенность языка – он автоматически собирает весь мусор и удаляет его из памяти. На практике это значит, что Java без дополнительных команд удаляет из памяти не использующиеся и устаревшие объекты. В других языках это приходится делать вручную, периодически прописывая соответствующие команды. 

Java причисляется к объектно-ориентированным языкам. Есть поддержка наследования, полиморфизма и прочего. Такой подход помогает создавать крупные проекты, которые легко масштабировать, расширять и редактировать. 

Это относительно простой язык, который можно довольно быстро выучить. За счёт фреймворков на нём можно в пару команд создавать стандартный функционал для сайтов, игр и приложений на ПК и смартфоны, не связываясь с низкоуровневым кодом. 

Хоть Java и является универсальным языком, но нужно заранее подобрать ту отрасль, в которой есть желание продолжать работать. Всё дело в том, что у языка очень много библиотек, изучить все просто нереально. Лучше определиться с целевой сферой и заняться изучением подходящий библиотек.

Дополнительные курсы

Если хотите получить более углубленные знания по языку Java, то также советуем наш видео курс по изучению Java на профессиональном уровне:Java для профессионаловДополнительные библиотеки и курсы по Java вы можете просмотреть и изучить на этой странице.

Также советуем пройти наш курс по Java Android.

Java для профессионалов

itproger.com