Программирование на java с нуля. Обучение программированию на языке JAVA

Программирую на 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 для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.

Java считается одним из самых значительных и широко распространенных языков программирования, поскольку ему принадлежит исключительная роль в разработке приложений для Интернета.
Цель этой книги - обучить вас, читатель, основам программирования на языке Java. В ней применяется поэтапный подход к освоению языковых средств на многочисленных примерах, упражнениях на самопроверку и несложных проектах. Для изучения Java по этой книге не обязательно иметь какой-то опыт программирования. Книга начинается с самых основных понятий, включая компилирование и выполнение программ на Java. Затем речь пойдет о ключевых словах и языковых средствах и конструкциях, составляющих основу Java. После этого рассматриваются более сложные языковые средства Java, в том числе многопоточное программирование и обобщения. И завершается книга введением в библиотеку Swing. Все это позволит вам получить ясное представление об основах программирования на Java.

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

Язык Java был задуман в 1991 году сотрудниками компании Sun Microsystems Джеймсом Гослингом (James Gosling), Патриком Нотоном (Patrick Naughton), Крисом Уортом (Chris Warth), Эдом Фрэнком (Ed Frank) и Майком Шериданом (Mike Sheridan). Сначала этот язык получил имя Oak, но в 1995 году он был переименован в Java. Как ни странно, разработчики языка первоначально не предназначали его для разработки интернет-приложений. Они стремились создать платформенно-независимый язык, на котором можно было бы создавать встраиваемое программное обеспечение для различной бытовой аппаратуры с микропроцессорным управлением, в том числе тостеров, микроволновых печей и пультов дистанционного управления. В таких устройствах применялись контроллеры на микропроцессорах разной архитектуры, а исполняемый код, генерируемый компиляторами большинства существовавших в то время языков программирования, был ориентирован на конкретный процессор. Характерным тому примером может служить язык C++.

Оглавление
Введение
Глава 1. Основы Java
Глава 2. Введение в типы данных и операторы
Глава 3. Управляющие операторы
Глава 4. Введение в классы, объекты и методы
Глава 5. Дополнительные сведения о типах данных и операторах
Глава 6. Дополнительные сведения о методах и классах
Глава 7. Наследование
Глава 8. Пакеты и интерфейсы
Глава 9. Обработка исключений
Глава 10. Ввод-вывод данных
Глава 11. Многопоточное программирование
Глава 12. Перечисления, автоупаковка, статический импорт и аннотации
Глава 13. Обобщения
Глава 14. Апплеты, события и прочее
Глава 15. Введение в Swing
Приложение А. Ответы на вопросы для самопроверки
Приложение Б. Применение документирующих комментариев в Java Предметный указатель.

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Java, Руководство для начинающих, Шилдт Герберт, 2012 - fileskachat.com, быстрое и бесплатное скачивание.

В этой статье я постараюсь максимально просто и понятно изложить основы программирования на языке 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).

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

  • 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. Курс просто напичкан практикой (1200+ практических задач) и рассчитан на взрослую аудиторию. Я ненавижу скучные лекции, поэтому JavaRush сделан в виде онлайн-игры (квеста).

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

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

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

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

Предыстория

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

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

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

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

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

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

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

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

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

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

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

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

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

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