Интерактивный самоучитель по ява. Программирование с нуля: с чего начать? Как начать изучать программирование с нуля на языке Java? Java - безопасная платформа

В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке Delphi

Java для чайников. Урок 1. Программа Hello World!

Для начала я расскажу, что может Java. Во первых, на этом языке можно написать апплеты - программки, внедряемые в web- страницу сайта. Например, это может быть игра, система бизнес графики и многое другое. Во вторых, на Java можно писать и полноценные приложения, не обязательно связанные с Web. А можно и сервлеты - программы, которые в отличии от апплетов, выполняются не на стороне клиента, а на стороне сервера.

Начнем с самых самых основ. Отдадим дань традиции и напишем простейшую программу, которая выводит на экран приветствие Hello World. Если у вас нет Java, то ее можно скачать с официального сайта http://www.java.com/ru. Затем установите его.

Если Java у вас установлен, то наберите в каком нибудь редакторе вот такой текст:

Public class HellowWorld {

Public static void main ( String args ) {

System . out . print ( "Hellow , world!" );

}

}

И обязательно сохраните его под именем HellowWorld. java - имя исполняемого класса должно совпадать с именем файла. Для компиляции используйте программу javac.exe, входящую в стандартный пакет Java. Вот как может выглядеть батник компиляции этого java файла:

"c:\Program Files\Java\jdk1.7.0\bin\javac" HellowWorld.java

pause

Если при компиляции никаких ошибок не выскочило:

то, скорее всего, компиляция прошла успешно и у вас в том же каталоге, где лежал HellowWorld. java появился еще и HellowWorld .class:

Теперь запустим другой батник, который вызовет интерпретатор Java вместе с нашим скомпилированным файлом:

"c:\Program Files\Java\jdk1.7.0\bin\java" HellowWorld

pause

Если все сделано правильно, то у вас должен получиться вот такой результат:

Если вы его получили, то могу вас поздравить - вы написали свою первую программу на Java. В дальнейшем мы научимся писать Java- апплеты, и много другое. А сейчас несколько слов о самой программе. Как вы заметили, она начинается со слова public. Это модификатор, который обозначает, что мы объявляем что ли общедоступное: класс, метод класса или переменную. Бывают и другие модификаторы, например: private, protected, friendly, final, abstract, static. Некоторые из них можно комбинировать между собой. Например, private обозначает, что к переменная, которую мы хотим объявить, закрыта для других классов. Но до модификатор мы еще доберемся. А сейчас рассмотрим следующее ключевое слово class. Оно обозначает, что мы объявляем класс. В java все строиться на классах. Один из классов обязательно является базовым. И базовый класс обязательно должен быть public. В данном примере это класса HelloWord. Пока он у нас единственный.

Теперь попытаюсь объяснить простыми словами, что же такое класс и что такое объект .

Вспомним школьный курс зоологии. Как классифицируется живой мир? Сначала вводиться понятие «царство».

1. Царство одноклеточных,

2. Царство растения

3. Царство животные.

Возьмем животных. Их можно разделить по типам. Например:

1. Тип кишечнополостные.

2. Тип плоские черви.

3. Тип моллюски.

4. Тип хордовые.

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

В языке Java , можно, подобно классификации живого мира, классифицировать объекты (куски программы и данных). Для этого в нем есть классы.

Стоп стоп! – скажете Вы, - а зачем классифицировать эти объекты?

Представить себе, что Вы, подобно некому демиургу (творцу, богу), создаете жизнь на Земле. Сперва Вы разработали простейшие органические соединения. Так, ради эксперимента, что же получиться. Затем объединили их в сложные молекулы, из которых, как из кирпичиков, собрали простейшие микроорганизмы. Но Ваша конечная цель – создание разумной жизни. Поэтому вы не остановились на достигнутом, А сотворили многоклеточные организмы. Затем стали улучшать их, развивать. Некоторые виды оказались жизнеспособные, некоторые вымерли (динозавры). И вот наконец цель достигнута – появился Homo Sapiens – человек разумный.

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

А теперь представим, что атом – это простейшая команда программы или единица информации (что друг от друга, согласитесь, не отделимы, ибо программа работает с чем – правильно, с информацией).

Тогда молекула – это подпрограмма. Или объект.

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

Далее, птицы бывают разных видов. Но все они имеют какие общие признаки, унаследованные от понятия «Птицы». Так и в Java , от класса можно создать другой класс, который наследует его свойства и методы (признаки). Это называется наследование.

У разных птиц разный окрас перьев, форма клюва и крыльев. Так и у классов, при создании нового класса, унаследованные признаки можно менять. Это называется полиморфизм .

Так, с основными понятиями Java разобрались. Теперь пройдемся по программе.

Вот таким вот образом мы объявляем класс:

public class HellowWorld {

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

Базовый класс (HelloWorld )имеет базовый метод: main. Он у нас объявлен как public и static. Первый обозначает, что этот метод общедоступный. Если бы это было не так, то программа у нас просто не запустилась бы. Бывают еще и методы не общедоступные, но они мы поговорим в следующих уроках, пока просто запомните, что базовый метод (который у нас запускается при старте программы) должен быть public. И его имя должно быть main, что бы интерпретатор знал, с чего начать выполнения программы.

Теперь что такое static. Это модификатор, который показывает, что метод статический. Тоесть, он работает даже тогда, когда экземпляр класса (объект) не создан. Вообще, поля и методы с модификатором static являются общими для всех объектов класса. Об этом тоже поговорим в дальнейшем.

Каждый метод может иметь или не иметь возвращаемого значения. Если имеет, то это функция. Тип возвращаемого значения так же ставиться в объявлении метода. Если нет то ставиться void (как в нашем примере).

Обращение к полям и методам объекта идет через точку. Есть так же встроенные объекты, например, System, который мы и используем в нашем примере:

System . out . print ( "Hellow, world!" );

в данном случае мы обращаемся к полю out, которое тоже является объектом, предназначенным для вывода данных и вызываем его метод print, который выводить тектс на экран (как в старом добром Бэйсике команда PRINT).

(С) Шуравин Александр

Привет. Если ты читаешь эти строки, то подтверждаю, что это уроки Java. Курс просто напичкан практикой (1200+ практических задач) и рассчитан на взрослую аудиторию. Я ненавижу скучные лекции, поэтому JavaRush сделан в виде онлайн-игры (квеста).

Тебе приходилось играть и прокачивать персонажей? Иногда сам не замечаешь, как втягиваешься, да? Догадываешься, куда я клоню? В JavaRush тебе тоже придется прокачивать персонажа. С 1-го уровня до 40-го. Пройдешь весь курс - станешь крутым Java-программистом.

Пройдешь 40 уровней – сможешь устроиться на работу Java Junior. Хотя есть индивидуумы, которые уже на 20-м уровне нашли себе работу. Потому что в JavaRush много практических задач. Очень много.

События игры разворачиваются в далеком-далеком будущем, в 3017-ом году, где люди живут на Земле вместе с роботами, и любой может путешествовать по космосу.

Однажды один космический корабль разбился на неизвестной планете…

Предыстория

Команда Galactic Rush потерпела крушение на неизвестной планете. При падении корабль врезался в гору и оказался почти полностью засыпан обломками скалы. Несколько дней ушло на тщетные попытки освободить корабль. Экипаж потерял всякую надежду вернуться домой и начал обживаться на новом месте…

Неделю спустя Элли, штурман корабля, случайно обнаружила, что планета населена… тысячами диких роботов! Они бы могли помочь разобрать камни и освободить корабль. Но они очень примитивны и тупы - у них нет никаких навыков. Они даже камни таскать не умеют. Что было бы очень кстати.

Научный глава экспедиции, Профессор Нудлс, потом вспоминал:
- Через несколько дней я нашёл выход. Я додумался взять прошивку робота Диего, члена нашего экипажа, переделать её на прошивку каменщика и загрузить диким роботам.

Но неудачи, казалось, преследовали нас. После небольшого исследования выяснилось, что у роботов нет разъёма для загрузки прошивки. У них вообще не было никакого разъёма для перепрошивки!

Билаабо, единственный инопланетянин в составе экипажа, вспомнил, что когда-то на своей родной планете видел робота, который знал программирование. И не просто знал, а сам правил баги в своей собственной прошивке.

Именно в этот момент меня посетила гениальная идея. Ведь когда-то давно я научил одного способного робота программированию на Паскале.

Я приказал поймать самого талантливого молодого робота и обучить его программированию на Java. Умея программировать, он смог бы написать себе любую прошивку и помочь нам!

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

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

Диего потом напишет в своих мемуарах:

Я был возмущён таким неприкрытым грабежом моего собрата, но вся команда стала на сторону профессора и Риши. Конечно же, я согласился (для вида) и предложил помочь научить Амиго. Хе-хе! Тем более, что никто не может обучить робота лучше, чем другой робот.

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

Ты начинаешь с первого уровня. Твоя задача – прокачать Амиго до 40 уровня. Но давай начнем с малого. Для начала дойди до второго уровня . Может быть тебе так понравится, что ты не заметишь, как пройдешь курс и пойдешь работать;)

А теперь давай перейдем к обучению с нуля - жми на кнопку «Открыть следующую лекцию…» .

  • 2 месяца обучения Java EE (2 раза в неделю по 4 часа)
  • если результаты показываешь хорошие (защищаешь свой проект успешно, который пишешь эти два месяца), то тебе предлагают трудоустройство.
Компания очень хорошая, иностранная, известная, да и условия работы отличные - словом, хотел я туда куда больше, чем туда, где мне уже сделали предложение. Отбор на обучение у нее предполагал 3 этапа:
  1. Выполнение практических заданий дома.
  2. В случае успеха тебя приглашают на компьютерное тестирование в офисе.
  3. В случае успешного тестирования в этот же день с тобой проводят собеседование.
С практическими заданиями я справился без особых проблем - здесь огромное спасибо JavaRush и их задачкам, после которых эти задания показались достаточно простыми. Заданий было 3: на RegExp(гугл помог, ибо сам я их терпеть не мог и не помнил), на алгоритмы (довольно простая, на соображалку скорее) и на запись\чтение из файла (таких в курсе JavaRush очень много). Меня пригласили на компьютерное тестирование. К тестированию я готовился по сайту quizful . Эти тесты очень помогли, некоторые вопросы в итоге даже пересекались. Сделал тест успешно, меня начали собеседовать. Это собеседование я, наверное, не забуду никогда в жизни. Все, что хотел услышать от меня собеседующий меня человек - основы теории Java, как то:
  • чем отличаются checked exceptions от unchecked;
  • какие методы есть у класса Object и зачем они нужны;
  • какие бывают коллекции и зачем они;
  • и немного про многопоточность.
JavaRush - отличный курс, он научит вас решать задачки и программировать, но теорию (для собеседований) нужно подучивать отдельно, в чем я и убедился, плавая в этих вопросах, как рыба в аквариуме. Меня хотели завернуть. Я его понимаю - я не мог внятно почти ни на что ответить, все пытался рассказывать с точки зрения написания кода, а его интересовала теория. Но я твердо знал, что я очень хочу попасть на эту стажировку, и я знал, что если мне дадут время, я все это наверстаю и выучу несчастную теорию. Все это я ему так и сказал, и он пошел мне навстречу - предложил через неделю встретиться еще раз, а пока что дал список тем (примерно, как я описал сверху) и сказал, где их можно выучить - просто туториал оракла, в нем есть все: http://docs.oracle.com/javase/tutorial/ За неделю я основательно изучил этот туториал и пошел на повторное собеседование накануне дня, когда меня ждали на новой работе. Судя по всему, собеседовавшего меня человека больше всего зацепила именно моя целеустремленность (я знал, что если я поступлю на эту стажировку, дальнейшее зависит только от меня - за два месяца я бы разобрался со всем, чем надо). Как бы то ни было, я поступил на эту стажировку и отказался от выхода на работу на том месте, куда мне предлагали ранее. За 2 месяца нас познакомили с многими темами из Java EE, как то: Servlets, JSP, Hibernate JSF, Spring и многое-многое другое - по итогам стажировки мы были знакомы (примерное представление имели точно) об основном стеке технологий Java EE. Также на протяжении стажировки мы писали свой проект, который на выходе надо было успешно представить для трудоустройства. Я просто помню свои первые ощущения, когда был на первой лекции. Я смотрел на задание этого проекта (его выдали сразу на первой же лекции) и не понимал даже близко, с чего здесь начинать и как это делать. Также я помню, чего мне стоило успешно его сделать. Эти два месяца почти все мысли в моей голове были о том, что успешное трудоустройство и исполнение мечты - в моих руках и только. Больше ни от кого не зависело, смогу ли я его сделать. Только от меня. Я уже уволился с работы, сидел почти без денег, и это было действительно тяжело. Сидел с утра, сидел днем, сидел вечером, однако не уставал радоваться - я не помню, когда еще я с такой одержимостью посвящал себя чему-то. Это время лишний раз помогло мне осознать, насколько мне нравится программировать и насколько я бы хотел работать в этой области. На выпуске я представил свой проект. Защитил его действительно хорошо, судя по всему, значительно лучше, чем ожидалось, и в качестве исключения меня взяли не на начальную должность, а сразу на позицию Middle Java Developer. Это было 9 декабря 2014. Я не мог поверить этому, но предложение о работе было передо мной на моем мониторе. Инженер-программист. Это случилось. С 15 декабря я вышел на работу. Еще ни разу не возникала у меня мысль "блин, не хочу идти на работу". Каждый день, выходя с утра из дома, я знаю, зачем я иду работать, что я буду делать, и насколько я этого хочу. Это безумно радует. Это стоит и стоило той цены, которую пришлось заплатить за достижение своей мечты. Я желаю всем из вас, кто действительно хочет быть программистом, идти вперед в достижении своей цели. Она более чем реальна, она совсем рядом, но за нее нужно заплатить. Заплатить своим потраченным временем, нервами, ведь изучать что-то с нуля - действительно не самый легкий шаг. JavaRush помог мне сделать эти первые шаги с легкостью, и не я отвернулся от программирования в самом начале из-за кажущейся сложности и обилия теории. Таким образом я смог довести свою довольно безумную идею по кардинальной смене области профессиональной деятельности (еще и при отсутствии технического образования) до конца. И вы обязательно сможете.

Мы привыкли к быстрому доступу к информации и столь же быстрому её поглощению. Мы предпочитаем пятиминутные ролики глубоким лекциям и коротенькие статьи - книгам. Не буду утверждать, что хорошая книга по программированию заменит любую статью, это не так. И уж точно она не заменит практику. Тем не менее, лично ко мне настоящее понимание основ программирования пришло после того, как я, прорешав сотни задач на курсе программирования и прочитав тонну статей, начал параллельно изучать теорию по книгам и хорошо так в них углубился. Я довольно долго искал свой персональный «лучший учебник по Java для начинающих». Ниже - несколько книг, которые мне пригодились в большей или меньшей степени на разных этапах учёбы. «Для самых маленьких» Следующие две книги можно начинать читать на старте учёбы, параллельно с видео или, если учитесь на JavaRush, - вместе с первыми уровнями. Они, особенно первая, подходят людям с нулевым программистским прошлым.

Head First Java

Я начал с этой книги не потому, что она мне больше всего нравится, а потому, что она самая простая. Эта книга, по мнению очень многих программистов, - лучший самоучитель Java с нуля. Причём она по-настоящему и совсем «с нуля», то есть подходит тем, кто только-только начинает и не совсем понимает ещё, что за зверь такой - программирование. Ко мне она попала слишком поздно. Думаю, именно поэтому я не смог её оценить по достоинству. «Просто читать» её было очень приятно, а вот искать что-то конкретное в ней мне приходилось подолгу. Материал там подан живо, но довольно поверхностно (потому что с нуля!) и многих тем и нужных пояснений попросту нет. А вот мой друг, которому она ушла по наследству, был от нее в восторге и кричал, что это не просто лучший учебник по Java для начинающих, а прям мировой шедевр и именно так нужно подавать сложный материал. Достоинства: Недостатки:
  • Многовато «воды» для тех, кто уже въехал в тему;
  • Не всегда удачные паззлы и упражнения.

Герберт Шилдт. Java 8. Руководство для начинающих

Полистав этот учебник, я подумал, что он хорошо подойдёт тем, кому нравится более традиционное изложение материала, нежели в Headfirst, и при этом они ищут самоучитель «с нуля». Местами изложение в книге очень детальное, напоминает расширенную и переведённую документацию с хорошими наглядными примерами. Иногда, как по мне, автор переходит границу, и начинает слишком уж разжевывать, читать становиться скучновато… и вдруг - кульбит - и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил. Тем не менее, таких мест в книге не слишком много, и я знаю людей, которые считают, что «Руководство для начинающих» - лучший самоучитель Java для тех, кто ещё ничего не знает. Лично мне он показался не очень ровным. Скажем, начинаю разбирать коллекции, и вместо человеческого пояснения мне подсовывают задачу по самостоятельному созданию Set на основе массивов. Классная задача, но я бы хотел для начала лучше понять, что такое стандартные коллекции! Хотя эта книга, как и предыдущая, считается учебником для начинающих, мой опыт преподавателя подсказывает, что она хороша только в совокупности с другими материалами: гуманитарию-свитчеру будет не всё просто и понятно. Лучше всего "Руководство для начинающих" подойдёт тому, кто худо-бедно учил программирование (например, в универе), давным-давно на него забил, и при этом ему нравится стиль изложения автора. Достоинства:
  • Традиционное вдумчивое изложение основ;
  • Хорошие примеры.
Недостатки:
  • Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
  • Местами скучновато.
Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию - «Java 8. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим. Справочники и расширенные руководства Книги из этого раздела пригодятся тем, кто уже ввязался в по полной и ищет книги для лучшего понимания теории и практики.

Герберт Шилдт «Java 8. Полное руководство»

Эту книгу я решил загрузить из интернета, чтобы оценить, а потом - купить или не купить. Шутка ли, 1300 страниц текста! Ну и цена впечатляет не меньше объема. Точно так же я поступил и с двухтомником «Библиотека профессионала» Кея Хорстманна (о ней - ниже). Забегая наперед скажу, что я остановил свой выбор на второй. Почему? Потому что в книге «Java. Полное руководство» я узрел те же недостатки, что и в «Руководстве для начинающих». Иногда разжевано, иногда - скомкано, но при этом не просто скомкано, а как-то многословно скомкано. Вероятно, это - авторский стиль и, думаю, кому-то он будет по нраву, а точнее - по мышлению. В целом «Java 8. Полное руководство» - это неплохой справочник по Java. Но лично мне изложение тех же самых тем больше понравилось в другой книге. Достоинства:
  • Полное руководство. Кажется, там есть все темы, которые нужно знать новичку, и не только новичку.
  • Подробные пояснения.
Недостатки:
  • Много воды (но это кому-то может нравиться!);
  • Русский перевод не лучший.

Java. Библиотека профессионала, Кей С. Хорстманн, Гари Корнелл

Книги Шилдта и Хорстманна часто сравнивают друг с другом. И у той, и у другой есть преданные поклонники. Для меня именно двухтомник Хорстманна - лучший учебник по Java. Он же стал для меня настольной книгой на начальных и средних уровнях JavaRush. Когда я не понимал какую-то тему, в основном лез именно в Хорстманна, и тот многое прояснял. В книге рассматривается всё - от синтаксиса до многопоточного программирования, локализации приложений и работы с XML. И пусть вас не пугает название «Библиотека профессионала» (меня именно оно и отпугнуло), основы тут разобраны довольно хорошо. Кроме того, её полезно периодически перечитывать, чтобы освежить и упорядочить знания. Говорят, даже профессионалы находят в ней что-то полезное для себя… Не знаю. Стану профессионалом - расскажу! Достоинства:
  • При впечатляющем количестве страниц - мало воды (в отличие от Шилдта).
  • Содержит всё, что нужно новичкам.
  • Раскрывает Java 8.
  • Хорошая подача тем по коллекциям и дженерикам.
  • Очень хорошо сочетается с JavaRush. Доходите до темы, решаете задачки, в какой-то момент что-то не понимаете - смотрите Хорстманна, пробуете снова.
Недостатки:
  • Кому-то может показаться, что книга суховата;
  • Нет практики;
  • Русский перевод с ляпами.

«Java. Методы программирования». Блинов, Романчик

Когда-то я вычитал на форуме, что есть такая книга «Промышленное программирование», и в ней неплохие задачи. Оказалось - не соврали. Я нашёл её копию в PDF на сайте белорусского EPAM’а. Там издание не самое новое (по Java 6), а написана книга как основательный университетский учебник, то есть местами изложение несколько тяжеловесное, академическое. НО! Там действительно очень хороший сборник задач по программированию на Java, а также тестовые задания. Говорят, по этой книге учатся стажёры EPAM, а также её взяли на вооружение многие оффлайновые курсы по Java.

Там подход к задачам немного не такой, как у JavaRush, то есть, в среднем тут задачи чуть сложнее и каждая из них - что-то вроде… не мини, но микро-проекта. Так что рекомендую даже студентам JavaRush, так как недостатком практической стороны курса я считаю то, что все задачи в нём уже полностью спроектированы и есть слишком много подсказок. Скажем, задачи на ООП из этого сборника помогли мне очень неплохо разобраться в этом самом ООП наряду с книгами «неувядающей классики», о которых я пишу ниже. Книга написана как бы для будущих «гребцов», поэтому в ней описаны технологии Hibernate для разработки распределённых систем, а также основы HTML, XML, JavaScript. «Промышленное программирование» - если не лучший самоучитель Java, то очень неплохое учебное пособие. Но к ней нужно приходить уже подготовленным. Скажем, после десятка-другого уровней JavaRush. Позднее я обнаружил её более новое и переработанное издание, уже под именем «Java. Методы программирования ».

Достоинства:
  • Отличная подборка задач и тестовых заданий;
  • Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
  • Сравнение с С++.
  • Возможность понять, что проходят на стажировке EPAM.
Недостатки:
  • Слишком фундаментальное изложение. Но для повторения с практикой - подойдёт.
  • Нет Java 8.
Неувядающая классика Книги, о которых я пишу ниже можно назвать священными текстами для начинающих и продолжающих «джавистов».

Effective Java, Джошуа Блох

Это просто сокровище, а не книга, и посвящена она базовым принципам языка от одного из его авторов Джошуа Блоха. Скорее всего, вы уже пользовались его библиотеками (в Java Collection, например). Сразу оговорюсь: полнейшим новичкам, кроме каких-нибудь вундеркиндов-спидлёрнеров книга Effective Java не нужна. Сначала лучше усвоить синтаксис, и получить хоть какую-то практику программирования, так сказать, «набить шишки», а затем уже - браться за творение Джошуа Блоха. Книга пригодится тем, кто хочет по-настоящему понимать Java, сформировать правильный подход при программировании на этом языке, понять не только как нужно делать, но прочему нужно делать именно так. А ещё тем, кто хочет глубоко познать ООП (в принципе, это взаимосвязанные вещи). Эта книга - лучший учебник по Java в разрезе объектно-ориентированного подхода к программированию. Достоинства
  • Блестящее изложение материала по теме ООП.
  • Приведены лучшие практики программирования.
  • Автор очень хорошо знает Java изнутри.
Недостатки
  • Пока что отсутствует перевод самого нового издания книги (третьего).

Философия Java, Брюс Эккель

Название этой книги говорит само за себя. Это ещё одна «альфа и омега» для всех, кто хочет знать Java! В этой книге вы найдёте хорошие и внятные примеры, и из них будет понятно, как работает Java. Мне сложно сказать, какая из двух книг - «Философия Java» или «Эффективное программирование» - лучше. Я бы сказал, что Эккель несколько лояльнее к новичкам, в то время как Блох требует какого-никакого опыта. Впервые я прочитал главу из «Философии Java», когда только начинал учиться на JavaRush (кажется, на одном из ранних уровней она значилась в рекомендованных). Тогда она мне не пошла. Зато после 10 или 12 уровня - это была песня! И, я скажу, очень полезная песня. Я возвращался к ней и позже, уже когда пришёл к «Эффективному программированию». Скажу так: Блох и Эккель пускай говорят об одном и том же, но по-разному, и примеры приводят разные. Достоинства
  • Глубокое изложение принципов Java от профессионала;
  • Хорошо зайдет тем, кто переходит с других языков - много сравнений с С++, например.
  • Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля - чуть позднее.
Недостатки
  • Очень неудачные русские переводы;
  • Отсутствие нового издания книги на русском.

Краткие выводы

  1. Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает - Head First Java;
  2. Лучший справочник-учебник по Java и настольная книга - «Библиотека профессионала». И, конечно, документация Oracle.
  3. Лучший сборник задач по программированию на Java - JavaRush. Ну а среди книг - «Java. Методы программирования».
  4. Лучшая неувядающая классика - «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
  5. Дополнительный вывод: есть возможность - читайте на английском. Русские переводы в основном очень слабые.

Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения

  • www.javable.com - сайт со статьями и tutorial"ом по Java. Все в основном на русском.
  • www.exampledepot.com - очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com - без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial"ов на все возможные темы.

Основные Java пакеты

Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по JavaDoc"ам , так и с помощью www.exampledepot.com . Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:
  1. java.lang - основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.
  2. java.io - ни одна программа не может обойтись без операций с вводом-выводом.
  3. java.util - пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т.д. и т.п.
  4. java.net - содержит основные классы для работы с сетью.
  5. java.text - все необходимое для форматирования текста
  6. java.lang.reflect - Java не была бы Java"ой если бы не Reflection. Reflection стирает грань между данными и кодом.
  7. javax.sql - все необходимое по работе с базами данных
  8. javax.xml.* , org.w3c.dom.* , org.xml.sax.* - без этих пакетов работа с XML просто немыслима

Ресурсы для расширения кругозора

  • onjava.com - рано или поздно все новости мира Java попадают сюда
  • www.javaspecialists.eu - ресурс полезен как новичкам, так и продвинутым программистам, так как содержит много статей о тонкостях работы с Java.
  • www.theserverside.com - рекомендуется подписаться на RSS, так как часто проскакивают весьма интересные вещи по Java.

Java Библитеки, которые должны знать все

Java не заканчивается знаниями лишь о возможностях JSDK. Чтобы чувствовать себя комфортно необходимо знать еще десятка два сторонних библиотек, используемых Java программистами повсеместно. Итак, начнем с основных:
  • Commons Lang - то что «забыли» включить в JDK
  • Commons Math - отличное дополнение для java.math
  • Commons Logging - логирование должно быть грамотным. За System.out.println для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.