Первая чашка крепкого Java. Какая она на вкус? У каждого она своя, кому-то она может показаться горькой, приторной, я расскажу в этом "руководстве" (сильное слово, для коротенькой статьи) какой была моя первая чашка, и что бы я изменил, выпивая эту чашку снова…
Помню, слышал слова: "прочти эту и эту книгу, и ты все поймешь", тебе откроется истина, но сделав это, я понял, что на самом деле процесс познания языка Java, как, в принципе, и любого другого — это непрерывный и долгий процесс, помимо синтаксиса языка, нужны структуры данных, среда разработки, система сборки, всевозможные фреймворки и т.д. и т.д. и все это ты постепенно узнаешь в процессе работы. В этой статье я постараюсь обобщить свои шаги.
От того как ты стартанешь будет зависеть твоя мотивация, если ты сможешь практически сразу увидеть и оценить свой прогресс — мотивация будет расти. Человеческому мозгу нужен результат, ты сразу захочешь увидеть свой успех, понять, что ты сделал. Поэтому я рекомендую НИ в коем случае не начинать писать программы в блокноте, прутиком на песке, читать огромные и толстые книги с отрывом от практики, с моей точки зрения от этого занятия не будет много прока. Язык — это инструмент — инструмент, который необходимо применять на практике изо дня в день, чтобы оттачивать мастерство владения им. Без практики теоретические знания полезны, но бессмысленны. Ознакомившись с одним или другим аспектом языка, фреймворка, среды разработки, обязательно примените полученные знания на практике, это позволит мозгу качественно усваивать информацию. Любой человек по своей природе ленив, лень — это защитный механизм мозга, для того чтобы не тратить силы на бесполезные дела. Всегда "обманывайте" мозг, ищите реальное применение своим знаниям, занимайтесь соим тестовым проектом (халтура или хобби) на котором можно всласть понабивать шишки и закрепить различные подходы и тем самым натренировать свой мозг.
а) Качай IntelliJ IDEA для работы. Есть специальная Community версия, которая абсолютно бесплатна и прекрасно подойдет для быстрого старта. Для скачивания и установки есть специальная платформа-независимая программа.
б) Ты скачал, открыл и застыл в изумлении… что дальше? Из шагов могу выделить следующие: общий синтаксис языка: что такое класс, переменная и т.д., структуры данных — тут я могу сразу тебе рекомендовать не читать старые книжки, чтобы не погружаться в дебри былого, читай актуальную информацию про Java 8, где введены лямбда-выражения, улучшены коллекции и появились стримы, для легкой манипуляции над объектами, также можно почитать "Java 8 & 9 in Action".
в) Если ты еще не написал ни строчки кода на java, то может быть стоит пройти несколько уроков на javarush.ru. У ребят есть также плагин для IntelliJ IDEA, который облегчит процесс изучения языка.
г) Старайся день ото дня читать всевозможные паблики и блоги, которые будут двигать тебя вперёд, например про IDEA или блог компании Zeroturnaround. У них есть отличные шпаргалки, для того чтобы не забыть аспекты языка и инструменты связанные с ним.
д) Здесь стоит отметить тот факт, что если ты всерьез решил заниматься программированием, необходимо уделять время английскому языку. Знание английского позволит получать самую актуальную информацию, двигаться по карьерной лестнице, даст отличный шанс поработать за границей и, возможно, спасёт тебя от Альцгеймера.
Учить язык стоит на курсах, можно, читая книги, каждый день понемногу, из личного опыта могу порекомендовать серии книг Oxford Bookworms Library или Macmillan.
е) Полезно также скачать специальный плагин для ознакомления с горячими клавишами в IntelliJ IDEA, IDE Features Trainer и почитать про него.
ё) Из фреймворков без которых сейчас вообще никуда — я могу отметить Spring. Также на спринге есть много гайдов, которые довольно актуальны,
и там есть программный код, чтобы сразу скачать и запустить программу. Для начала лучше сразу запустить несколько примеров.
ж) Заведи себе аккаунт на GitHub, если ты этого еще не сделал. Создавай там свои тестовые проекты, форкай уже существующие, изучай что делают другие люди.
Немного про четыре столпа, которые необходимы всегда: это собственно IDE для разработки (априори это всегда IntelliJ IDEA), есть еще конечно eclipse или netbeans =) Я не хочу устраивать здесь холивар на тему какая IDE лучше, для этого уже существуют отдельные топики на habrahabr, я очень комфортно чувствую себя используя для работы IntelliJ IDEA.
Второй столп — это система контроля версий. Любой проект имеет смысл хранить в системе контроля версий. Есть еще много других, например svn, но git — дефолтный.
Третий столп — это система сборки проекта. На сегодняшний день это либо Maven [шпаргалка], либо Gradle, ну и конечно же сама java — так называемая JDК, которая ставится отдельно на машину для компиляции и запуска java-программ — качай последнюю версию.
Быстрый старт для ленивых:
1) Качаем JDK для запуска java-программ (в IDEA есть предустановленная по умолчанию)
2) Качаем тулу для установки IDEA
3) Качаем через тулу Идею
4) Устанавливаем git для работы с репозиторием
5) Устанавливаем Maven для сборки проектов
6) Ты готов начать писать шедевры!
И только после этих 6 шагов можно начинать читать про java, если по каким-то причинам шаги, описанные выше, ты выполнить не смог, хмм… может и не стоит тогда заниматься программированием. Ну а если ты уже продвинутый проггер, советую почитать статью про HotSwap. Спасибо за ваши комментарии.
Комментарии (38)
Akdmeh
30.06.2017 08:55-3Расскажите, что такого есть для новичка в продуктах JetBrains (которые немало стоят, вы ведь не поощряете пиратство?), чего нет в NetBeans? Я бы вообще советовал для начала попользоваться Notepad++ и консольными командами, чтобы лучше понимать, что происходит в IDE под капотом. А уже когда будет идти речь об огромном проекте и денежной прибыли — думать о IDE
AlexPadalka
30.06.2017 09:34+3Есть еще бесплатная Community Edition
Akdmeh
30.06.2017 09:40-1Да, я понимаю, но у нее есть ограничения по применению (только студентам или для Open Source), если я не ошибаюсь.
Разговор только о том, что начинать изучение языка с довольно полновесной IDE — излишне.poxvuibr
30.06.2017 09:47+6Да, я понимаю, но у нее есть ограничения по применению (только студентам или для Open Source)
Нет, на Community Edition таких ограничений нет. Бери программируй, открывай стартап, зарабатывай миллионы, единственное что сделает Jet Brains, так это будет ставить тебя всем в пример.
Разговор только о том, что начинать изучение языка с довольно полновесной IDE — излишне.
Только так и можно начинать. Непосредсвенно с того, чтобы писать код, а не с того, чтобы ковыряться в консоли.
nonnenmacher
30.06.2017 12:15Насколько помню, с Community Edition нельзя в Java EE
senia
30.06.2017 12:48+1Можно. Просто поддержки Java EE там нет, так что всё сам.
Еще там нет поддержки баз данных. И вообще много чего. Но работать вполне можно.
AstarothAst
30.06.2017 10:14+2Начинать с консоли и блокнота — лучший способ угробить весь интерес еще на старте.
Free_ze
30.06.2017 15:26Набрасывать контролы на формы — лучший способ понять через пару месяцев насколько это не твое, борясь с тем, что туториалы заточены под конкретные IDE. Если еще раньше не наскучит вездесущий ClassNotFoundException, конечно.
Maccimo
30.06.2017 16:52Ерунда.
Если консоль и редактор могут угоробить интерес, то этого интереса на самом деле и не было.
Лично начинал с Far Manager, Colorer и javac, с интересом всё замечательно.
А вот перспектива разбираться с GUI, придуманным сумрачным гением, действительно демотивирует.poxvuibr
30.06.2017 17:03Если консоль и редактор могут угоробить интерес, то этого интереса на самом деле и не было.
Интереса к редактору и консоли, то есть :).
Лично начинал с Far Manager, Colorer и javac, с интересом всё замечательно.
Я с вима и линуксовой консоли, но я смотрю на окружающих и понимаю, что, если интереса к консоли нет, то это лучший способ убить любовь. Кроме того, IDE всё равно нужен, так зачем откладывать?
Inine
30.06.2017 11:26+2Частично соглашусь. На хабре есть отличная статья про то, как писать на Java в блокноте. ИМХО, каждому новичку надо обязательно прочитать эту статью и сделать все примеры. Но потом надо сразу поставить IDE и не выделываться.
Что касается других инструментов, о которых говорит автор, то git чем раньше освоишь, тем лучше, т.к. он простой и полезный. А вот зачем новичку maven… ну разве что зависимости выкачивать, да и то перебор.poxvuibr
30.06.2017 11:57ИМХО, каждому новичку надо обязательно прочитать эту статью и сделать все примеры.
Только после того, как он полгода в IDE проведёт.
Inine
30.06.2017 12:01+1Может и так. Например, в этой статье есть такие понятия как дебаг и тесты, а они легче воспринимаются, если впервые сталкиваешься с ними в IDE.
grossws
30.06.2017 15:57Maven таки полезен, хотя новичку, скорее, будет проще с gradle. И пользоваться нормальной системой сборки со старта куда лучше, чем размножать непереносимые ide-зависимые проекты, плодить Ant'овские
build.xml
или того хуже криво написанныеMakefile
.poxvuibr
30.06.2017 16:04Тысячу раз да! Я тем, кто раньше джаву не видел, сначала рассказываю про Идею, а потом про мавен. Наличие системы сборки сразу решает кучу проблем.
Inine
30.06.2017 16:20Статья то явно не мигрантов с других языков/платформ рассчитана, а на новичков. Допустим, человек писал код на уровне лаб в вузе, и решил таки изучить что-то серьезное: взялся за java. Для начала изучает core, жует Эккеля какого-нибудь. Какие проблемы ему поможет решить система сборки на данном этапе?
poxvuibr
30.06.2017 17:00Для начала изучает core, жует Эккеля какого-нибудь. Какие проблемы ему поможет решить система сборки на данном этапе?
Я считаю, то лучше организовывать обучение по другому. В первую очередь определить область, в которой хочешь работать. Допустим, веб-разработка.
Тогда нужен spring boot, pom.xml для которого делается на start.spring.io. Но чтобы воспользоваться этим файлом неплохо бы вкратце знать что такое мавен. Не сильно много. Так, чуть-чуть.
Надо показать человеку, как вывести текст в браузере и потом грузить его упражнениями. Core пусть изучает на них, Эккеля пусть читает, после упражнений будет понятно что Эккель вообще хочет сказать.
hibissscus
30.06.2017 10:30-3Это сделано для того, чтобы убрать лишние рамки и сосредоточиться на изложении
nonnenmacher
30.06.2017 10:58+1Старт по спринга и т.д. — ИМХО путь в программисты-фреймворкщики. Сегодня спринг, а завтра что-то ещё. Чтение «толстой скучной книги», как раз, позволяет более глубоко вникнуть в основы. А иначе будете потом хапать проблемы в неожиданных местах.
На спрингбуте можно за полчаса CRUD-сервис наваять, а толку-то.poxvuibr
30.06.2017 11:04На спрингбуте можно за полчаса CRUD-сервис наваять, а толку-то.
Устроиться на работу, получать за неё деньги, иметь возможность расти дальше, тесно общаться с другими программистами?
Да не, фигня какая-то :)
nonnenmacher
30.06.2017 11:14В том-то и дело, что на работу с этими знаниями будет не устроиться.
poxvuibr
30.06.2017 11:44+3Нет, работу человеку, который может собрать CRUD на спринге найти можно. Низкооплачиваемую, но тем не менее. Путь в тысячу ли начинается с первого шага.
Maccimo
30.06.2017 17:04Быстрый старт для ленивых:
1) Качаем тулу для установки IDEA
2) Качаем через тулу Идею
…
И только после этих 6 шагов можно начинать читать про javaА потом на StackOverflow пачками появляются вопросы а-ля «как мне сделать в эклипсе/идее ...».
Смотришь, а там элементарнейшие вопросы по Java, ни к какой IDE вообще никак не привязанные.
Pycz
30.06.2017 19:07А что делать, если собираешься на Java заниматься Android-разработкой?
hibissscus
30.06.2017 19:11Для этой цели отлично подойдет Android Studio, которая базируется на сурскоде IntelliJ IDEA.
Andronas
30.06.2017 19:14-2Почему всюду манн и градле? Чем плох старый добрый ант?
hibissscus
30.06.2017 19:46+3Он ничем не плох, просто на большинстве работ придется столкнуться именно с Maven.
lukdiman
Коллекции появились только в Java 8 оказывается. А чем я пользовался до этого? :)
hibissscus
Спасибо вам за сарказм, поправил. Это абзац не призывает к холивару, это просто совет читать свежую информацию по Java.
newpy
Справедливости ради автор статьи не говорил что коллекции появились в Java 8. Это вы невнимательно читаете.
lukdiman
Я читаю как раз внимательно. Если Вы прочитаете комментарий выше от автора, то увидите, что он поменял текст статьи.
newpy
Извините, в момент когда я писал, автор уже поправил статью, а его комментария выше еще не было. Правда. Поэтому прошу прощения.
asm0dey
Вот она, одна из самых сложных проблем в Java — многопоточность. У вас вот race condition случился…
newpy
Читаете мои мысли, думал именно про гонку в тот момент :). Лично я во избежание этой сложной проблемы в Java — выбрал Clojure. Счастлив как никогда.