Софт-Архив

Java Учебник img-1

Java Учебник

Рейтинг: 4.6/5.0 (1884 проголосовавших)

Описание

Скачать бесплатно - скачать java книги - Сьерра, Бейтс - Изучаем Java - учебник

Скачать бесплатно скачать java книги > Сьерра, Бейтс > Изучаем Java > учебник

Сайт http://usemind.org/ представляет из себя портал, на котором расположены документальные фильмы. видеоуроки и мультфильмы (Вы можете скачать видео бесплатно или посмотреть онлайн); расширения для CMS Joomla ; программы ; приложения для андроид ; книги ; различные статьи. Все это доступно абсолютно бесплатно, также Вы можете качать файлы по прямым ссылкам и минимумом рекламы. Без смс и регистрации. Нашли то, что нужно - скачали в два клика. Помните, что наш сервер поддерживает докачку файлов, это не торрент-трекер, а простой файловый сервер. НО! Качать файлы нужно только в браузере, а не программами типа Download Master .

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

Наш сервер позволяет просматривать видео онлайн в хорошем качестве и при этом Вы можете мотать его, как на компьютере или на популярных видео-хранилищах (youtube.com, vimeo.com и т.п.).

Все видео доступно здесь. Наш сайт может позиционировать себя, как онлайн кинотеатр. Формат видеофайлов - mp4, звук - aac, что дает возможность просматривать его на бытовых плеерах и телефонах (смартфонах, типа iPhone, HTC, Nokia, Sony, LG, Lenovo, Samsung, Acer и т.п.).

Мы предлагаем Вам скачать файлы по прямым ссылкам и не используем такие популярные сервисы хранения фалов, как depositfiles или letitbit и прочие. На сайте присутствует материалы для лиц старше 18 лет. Не оставляйте детей без присмотра перед компьютером.

Другие статьи, обзоры программ, новости

Программирование на языке Java Учебник

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

Java - язык, который допускает произвольное форматирование текста программ. Для того, чтобы программа работала нормально, нет никакой необходимости выравнивать ее текст специальным образом. Например, класс HelloWorld можно было записать в двух строках или любым другим способом, который придется вам по душе. И он будет работать точно так же при условии, что между отдельными лексемами (между которыми нет операторов или разделителей) имеется по крайней мере по одному пробелу, символу табуляции или символу перевода строки.

Комментарии

Хотя комментарии никак не влияют на исполняемый код программы, при правильном использовании они оказываются весьма существенной частью исходного текста. Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках и, наконец, комментарии для документирования. Комментарии, занимающие одну строку, начинаются с символов // и заканчиваются в конце строки. Такой стиль комментирования полезен для размещения кратких пояснений к отдельным строкам кода:

а = 42; // если 42 - ответ, то каков же был вопрос?

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

* Этот код несколько замысловат.

* Попробую объяснить:

Третья, особая форма комментариев, предназначена для сервисной программы javadoc, которая использует компоненты Java-транслятора для автоматической генерации документации по интерфейсам классов. Соглашение, используемое для комментариев этого вида, таково: для того, чтобы разместить перед объявлением открытого (public) класса, метода или переменной документирующий комментарий, нужно начать его с символов

/** (косая черта и две звездочки). Заканчивается такой комментарий точно так же, как и обычный комментарий - символами */.

Программа javadoc умеет различать в документирующих комментариях некоторые специальные переменные, имена которых начинаются с символа @.

Зарезервированные ключевые слова

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

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

Идентификаторы

Идентификаторы используются для именования классов, методов и переменных. В качестве идентификатора может использоваться любая последовательность строчных и прописных букв, цифр и символов _ (подчеркивание) и $ (доллар). Идентификаторы не должны начинаться с цифры, чтобы транслятор не перепутал их с числовыми литеральными константами, которые будут описаны ниже. Java - язык, чувствительный к регистру букв. Это означает, что, к примеру, Value и VALUE - различные идентификаторы.

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

Целые литералы

Целые числа - это тип, используемый в обычных программах наиболее часто. Любое целочисленное значение, например, 1, 2, 3, 42 - это целый литерал. В данном примере приведены десятичные числа, то есть числа с основанием 10 - именно те, которые мы повседневно используем вне мира компьютеров. Кроме десятичных, в качестве целых литералов могут использоваться также числа с основанием 8 и 16 - восьмеричные и шестнадцатиричные. Java распознает восьмеричные числа по стоящему впереди нулю. Нормальные десятичные числа не могут начинаться с нуля, так что использование в программе внешне допустимого числа 09 приведет к сообщению об ошибке при трансляции, поскольку 9 не входит в диапазон 0. 7, допустимый для знаков восьмеричного числа. Шестнадцатиричная константа различается по стоящим впереди символам нуль-х (0х или 0Х). Диапазон значений шестнадцатиричной цифры - 0. 15, причем в качестве цифр для значений 10. 15 используются буквы от А до F (или от а до f). С помощью шестнадцатиричных чисел вы можете в краткой и ясной форме представить значения, ориентированные на использование в компьютере, например, написав Oxffff вместо 65535.

Целые литералы являются значениями типа int, которое в Java хранится в 32-битовом слове. Если вам требуется значение, которое по модулю больше, чем приблизительно 2 миллиарда, необходимо воспользоваться константой типа long. При этом число будет храниться в 64-битовом слове. К числам с любым из названных выше оснований вы можете приписать справа строчную или прописную букву L, указав таким образом, что данное число относится к типу long. Например, Ox7ffffffffffffffL или 9223372036854775807L - это значение, наибольшее для числа типа long.

Литералы с плавающей точкой

Числа с плавающей точкой представляют десятичные значения, у которых есть дробная часть. Их можно записывать либо в обычном, либо экспоненциальном форматах. В обычном формате число состоит из некоторого количества десятичных цифр, стоящей после них десятичной точки, и следующих за ней десятичных цифр дробной части. Например, 2.0, 3.14159 и .6667 - это допустимые значения чисел с плавающей точкой, записанных в стандартном формате. В экспоненциальном формате после перечисленных элементов дополнительно указывается десятичный порядок. Порядок определяется положительным или отрицательным десятичным числом, следующим за символом Е или е. Примеры чисел в экспоненциальном формате: 6.022е23, 314159Е-05, 2е+100. В Java числа с плавающей точкой по умолчанию рассматриваются, как значения типа double. Если вам требуется константа типа float, справа к литералу надо приписать символ F или f. Если вы любитель избыточных определений - можете добавлять к литералам типа double символ D или d. Значения используемого по умолчанию типа double хранятся в 64-битовом слове, менее точные значения типа float - в 32-битовых.

Логические литералы

У логической переменной может быть лишь два значения - true (истина) и false (ложь). Логические значения true и false не преобразуются ни в какое числовое представление. Ключевое слово true в Java не равно 1, a false не равно 0. В Java эти значения могут присваиваться только переменным типа boolean либо использоваться в выражениях с логическими операторами.

Символьные литералы

Символы в Java - это индексы в таблице символов UNICODE. Они представляют собой 16-битовые значения, которые можно преобразовать в целые числа и к которым можно применять операторы целочисленной арифметики, например, операторы сложения и вычитания. Символьные литералы помещаются внутри пары апострофов (' '). Все видимые символы таблицы ASCII можно прямо вставлять внутрь пары апострофов: - 'a', 'z', '@'. Для символов, которые невозможно ввести непосредственно, предусмотрено несколько управляющих последовательностей (таблица 2).

Строчные литералы

Строчные литералы в Java выглядят точно также, как и во многих других языках - это произвольный текст, заключенный в пару двойных кавычек (""). Хотя строчные литералы в Java реализованы весьма своеобразно (Java создает объект для каждой строки), внешне это никак не проявляется. Примеры строчных литералов: "Hello World!"; "две\строки; \ А это в кавычках\"". Все управляющие последовательности и восьмеричные / шестнадцатиричные формы записи, которые определены для символьных литералов, работают точно так же и в строках. Строчные литералы в Java должны начинаться и заканчиваться в одной и той же строке исходного кода. В этом языке, в отличие от многих других, нет управляющей последовательности для продолжения строкового литерала на новой строке.

Разделители

Лишь несколько групп символов, которые могут появляться в синтаксически правильной Java-программе, все еще остались неназванными. Это - простые разделители, которые влияют на внешний вид и функциональность программного кода (таблица 3).

Переменные

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

Объявление переменной

Основная форма объявления переменной такова:

тип идентификатор [ = значение] [, идентификатор [ = значение ];

Тип - это либо один из встроенных типов, то есть, byte, short, int, long, char, float, double, boolean, либо имя класса или интерфейса. В таблице 4 приведено несколько примеров объявления переменных различных типов. Обратите внимание на то, что некоторые примеры включают в себя инициализацию начального значения. Переменные, для которых начальные значения не указаны, автоматически инициализируются нулем (таблица 5).

Значения по умолчанию примитивных членов

Когда примитивные типы данных являются членами класса, они гарантировано получают значения по умолчанию (таблица 5). если вы их не инициализировали:

Обратите внимание, что значение по умолчанию Java гарантирует тогда, когда переменная используется как член класса. Это означает, что переменные-члены примитивных типов всегда будут инициализированы (кое-что C++ не делает), что подавляет источник ошибок. Однако это начальное значение может быть некорректным или неразрешенным для написанных вами программ. Так что лучше всегда явно инициализировать ваши переменные.

Эта гарантия не применяется к "локальным" переменным, которые не являются полями класса. Так что, если в пределах определения функции вы имеете:

Затем x получит произвольное значение (как и в C, и в C++); она не будет автоматически инициализирована нулем. Вы несете ответственность за присвоение и соответствие значения прежде, чем вы будете использовать x. Если вы забудете, Java определенно лучше C++: вы получите ошибку времени компиляции, которая скажет вам, что переменная возможно не инициализирована. (Многие C++ компиляторы предупредят вас об отсутствии инициализации переменной, но в Java - это ошибка.)

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

Ограничивание

Большинство процедурных языков имеют концепцию границ. Они определяют и видимость, и время жизни имен, определенных в таких границах. В C, C++ и Java границы определяются расстановкой фигурных скобок <>. Так, например:

Базовые понятия языка Java Учебник

Ответ Для работы с графическими файлами используется класс Image.

" Во-первых, нужно объявить переменную:

Image pict;

" во-вторых, загрузить картинку из файла:

pict=getImage(getCodeBase(),"example.gif");

" в-третьих, вывести картинку на экран с помощью графического контекста:

gr.drawImage(pict,80,90,this);

Вопрос Как можно вывести в оконное приложение картинку из графического файла?

Ответ Это производится с помощью класса Image, как и в случае апплета. Особенность состоит в том, что в отличие от класса Applet, в котором реализован метод getImage, позволяющий загрузить изображение из заданного файла, классы Frame или Window таких методов не имеют. Эту задачу можно решить с помощью объекта класса Toolkit (инструментальное окружение).

Toolkit toolkit=Toolkit.getDefaultTookit();

После этого можно загружать изображение из заданного файла, например, так:

Image im=toolkit.getImage("example.gif");

Полученный объект im теперь можно загружать в канву для дальнейшего помещения в окно. Кстати, при размещении канвы с использованием менеджера раскладок BorderLayout канва должна быть размещена в центре. В противном случае канва не будет видна в окне.

Вопрос Как избежать "мелькания" при частой перерисовке изображения в апплете?

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

" Подключаем нужный пакет

import java.awt.image.BufferedImage;

" В класс-апплет вводим новые переменные:

BufferedImage image; // виртуальное окно

Graphics imageGr; // совместимый графический контекст

" В методе init апплета требуется создать виртуальное окно и совместимый графический контекст:

image=new BufferedImage(width, height,

BufferedImage.TYPE_BYTE_INDEXED);

imageGr=image.getGraphics();

" Далее весь вывод производится в контекст imageGr, например,

imageGr.setColor(Color.red);

imageGr.fillRect(100,100,200,200);

" В момент, когда потребуется перенести содержимое виртуального окна в реальное окно, вызывается следующая функция для контекста реального окна в методе paint апплета

public void paint(Graphics g)

Вопрос: Как сделать так, чтобы сервлеты и JSP-сценарии корректно генерировали HTML-код, содержащий русские буквы?

Скачать DjVu, Java, учебники, программирование, информатика, обучение, самоучитель

Скачать книгу Васильев А.Н. - Самоучитель Java с примерами и программами. Книга + CD

Издательство: Наука и техника

Серия: Самоучитель

Год издания: 2011

Страниц: 352

ISBN: 978-5-94387-665-3

Формат: DjVu + rar

Размер: 504 Мб

Качество: отличное

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

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

К книге прилагается CD с программными кодами, дистрибутивом Java, средой разработки программ на Java (NetBeans ), примерами и многими дополнительными материалами.

Содержание:

О книге, языке и программном обеспечении

Введение в программирование на языке Java - Программные продукты

Введение в программирование на языке Java Оглавление О данном руководстве О чем данное руководство?

Данное руководство знакомит вас с объектно-ориентированным программированием (ООП) с использованием языка Java. Платформа Java - это очень обширная тема, поэтому здесь мы не будем рассматривать ее полностью, но дадим достаточно информации для начала работы с ней. Последующее руководство предоставит дополнительную информацию для работы с Java.

Язык Java, естественно, имеет как сторонников, так и противников, но его влияние на индустрию разработки программного обеспечения неоспоримо. Положительная сторона Java состоит в том, что он дает программистам меньше шансов сделать ошибку, чем C++. В нем отсутствуют некоторые наиболее обременительные задачи программирования, например, явное управление памятью, что позволяет программистам сфокусироваться на бизнес-логике. Отрицательная сторона - по канонам ООП язык Java имеет слишком много не объектно-ориентированных элементов, для того чтобы быть хорошим инструментом. Однако, независимо от вашей позиции, знание того, как использовать Java в тех случаях, когда он подходит для выполнения работы, является большим преимуществом.

Нужно ли мне это руководство?

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

В данном руководстве будет рассмотрена установка Java-платформы на вашей машине, установка и использование Eclipse, свободно распространяемой интегрированной среды разработки (integrated development environment - IDE), для написания Java-кода. Вы изучите основы программирования на языке Java (в том числе ООП-парадигму и ее применение в Java), синтаксис и использование Java, создание объектов и добавление поведения, работу с коллекциями и обработку ошибок, советы по улучшению кода. К концу руководства вы станете Java-программистом - начинающим, но, тем не мене, Java-программистом.

Требования к программному обеспечению

Для выполнения примеров из данного руководства необходимо наличие установленных Java 2 Platform Standard Edition (J2SE) версии 1.4.2 или выше и Eclipse IDE. Не беспокойтесь, если вы еще не установили эти пакеты - мы покажем вам, как это сделать в разделе "Начало работы ". Все примеры кода из данного руководства были протестированы с J2SE 1.4.2 на Windows XP. Однако одной из великолепных возможностей платформы Eclipse является то, что она работает практически на всех операционных системах, которые вы можете использовать, в том числе Windows 98/ME/2000/XP, Linux, Solaris, AIX, HP-UX и даже Mac OS X.

Начало работы Указания по установке

В следующих нескольких разделах я в пошаговом режиме рассмотрю процедуру загрузки и установки Java 2 Platform Standard Edition (J2SE) версии 1.4.2 и Eclipse IDE. Первая система дает вам возможность компилировать и выполнять Java-программы. Вторая предоставляет мощную и дружественную среду для написания кода на языке программирования Java. Если Java SDK и Eclipse у вас уже установлены, можете сразу перейти к разделу "Краткая экскурсия по Eclipse " или к разделу "Концепции ООП ".

Установка Java SDK

Первоначальной целью языка Java являлось предоставление возможности для программистов писать одну программу, которая могла бы работать на любой платформе. Эту цель можно выразить афоризмом "Write Once, Run Anywhere" (написать один раз, выполнять везде) (WORA). В действительности все не так просто, но все идет именно к этому. Поддерживают эту цель различные компоненты технологии Java. Платформа Java поставляется в трех редакциях: Standard, Enterprise и Mobile (последние две предназначены для разработки мобильных устройств). Мы буди работать с J2SE, в которую входят все основные библиотеки Java. Все что вам нужно - загрузить и установить ее.

Чтобы загрузить J2SE SDK (software development kit - комплект для разработки программного обеспечения), выполните следующие действия:

  1. Откройте браузер и перейдите на страницу Java Technology. В верхней средней части страницы вы увидите ссылки на различные предметные области Java-технологии. Выберите J2SE (Core/Desktop).
  2. В списке текущих версий J2SE выберите J2SE 1.4.2.
  3. В левой навигационной панели появившейся страницы выберите Downloads.
  4. На данной странице имеется несколько загружаемых пакетов. Найдите и выберите ссылку Download J2SE SDK.
  5. Подтвердите условия лицензии и нажмите Continue.
  6. Вы увидите список загружаемых пакетов для различных платформ. Выберите соответствующий пакет для вашей системы.
  7. Сохраните файл на ваш жесткий диск.
  8. После завершения загрузки запустите программу установки SDK на ваш жесткий диск, желательно в какую-либо папку с удобным названием в корне диска.

Все! Теперь у вас есть Java-среда. Следующий шаг - установка интегрированной среды разработки (integrated development environment - IDE).

Установка Eclipse

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

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

Загрузить и установить Eclipse просто. Выполните следующие действия:

  1. Откройте браузер и перейдите на Web-сайт Eclipse.
  2. Нажмите ссылку Downloads в левой части страницы.
  3. Нажмите ссылку Main Eclipse Download Site для перехода на страницу загрузки проекта Eclipse.
  4. Вы увидите список типов и названий версий компоновки. Нажмите ссылку 3.0.
  5. В средней части страницы вы увидите список Eclipse SDK для различных платформ; выберите соответствующую вашей платформе версию.
  6. Сохраните файл на ваш жесткий диск.
  7. После завершения загрузки запустите программу установки и установите Eclipse на вашем жестком диске, желательно в каталоге с удобным названием в корне диска.

Все, что осталось - это настроить IDE.

Настройка Eclipse

Для использования Eclipse при написании Java-кода вы должны указать Eclipse, где на вашей машине расположена платформа Java. Выполните следующие действия:

  1. Запустите Eclipse, выполнив двойной щелчок мышкой на файле eclipse.exe или на эквивалентном файле для вашей платформы.
  2. Когда появится экран Welcome, нажмите ссылку Go To The Workbench. Это приведет вас в так называемую перспективу Resource (более подробно об этом далее).
  3. Выберите Window>Preferences>Installed JREs. что позволит вам указать месторасположение вашей Java-среды, установленной в системе (см. рисунок 1).

Рис. 1. Настройки Eclipse

  • Eclipse найдет установленные Java Runtime Environment (JRE), но вы должны явно указать одну из них, установленную в разделе "Установка Java SDK ". Это можно сделать в диалоговом окне Preferences. Если Eclipse выводит существующую JRE, выберите ее и нажмите Edit ; в противном случае нажмите Add.
  • Укажите путь к папке JRE JDK, который вы установили в разделе "Установка Java SDK ".
  • Нажмите OK .
  • Теперь Eclipse настроен на компилирование и запуск Java-кода. В следующем разделе мы совершим краткую экскурсию по среде Eclipse, для того чтобы вы познакомились с этой программой.

    Краткая экскурсия по Eclipse

    Работа с Eclipse - это обширная тема, и она, в основном, выходит за рамки данной статьи. Здесь же мы рассмотрим только самое необходимое для знакомства с работой среды Eclipse и ее использованием для Java-разработки.

    Запустив Eclipse, вы попадаете в перспективу Resource (Eclipse предлагает набор перспектив для вашего кода). Перспектива Resource показывает вашу файловую систему в используемом вами рабочем пространстве Eclipse. В рабочем пространстве хранятся все файлы, относящиеся к Eclipse-разработке. В данное время в вашем рабочем пространстве еще нет ничего, о чем вам нужно беспокоиться.

    Вообще говоря, Eclipse имеет перспективы, содержащие виды (view). В перспективе Resource вы увидите вид Navigator, вид Outline и др. Вы можете по желанию перемещать эти виды в любую позицию на экране. Eclipse - это неограниченно настраиваемая среда, хотя пока для работы нам достаточно размещения по умолчанию. Но то, что мы видим, не позволяет нам сделать то, что мы хотим. Первым шагом для написания Java-кода в Eclipse является создание Java-проекта. Это не конструкция языка Java; это просто конструкция Eclipse, которая дает возможность организовать ваш Java-код. Для создания Java-проекта выполните следующие действия:

    1. Выберите File>New>Project для отображения мастера New Project (рисунок 2). Это на самом деле "мастер мастеров"; другими словами, - это мастер, позволяющий вам выбрать мастера для использования (мастер New Project, мастер New File и т.д.).

    Рис. 2. Мастер New project

  • Выберите Java Project и нажмите Next.
  • Введите какое-либо название проекта (например, "Intro"), оставьте выбранными все настройки по умолчанию и нажмите Finish.
  • Сейчас Eclipse должен спросить вас, желаете ли вы переключиться в перспективу Java. Нажмите No .
  • Вы только что создали Java-проект с названием Intro, который вы должны увидеть в виде Navigator в верхнем левом углу экрана. Мы не переключились в перспективу Java после создания проекта потому, что существует более подходящая перспектива для наших текущих целей. Нажмите кнопку Open Perspective в панели в верхнем правом углу окна, затем выберите перспективу Java Browsing. Эта перспектива показывает все, что необходимо для легкого создания Java-программ. При создании Java-кода мы рассмотрим дополнительные функциональные возможности Eclipse для создания, изменения и управления вашим кодом. Но перед этим необходимо рассмотреть некоторые основные концепции объектно-ориентированного программирования, что мы и сделаем в следующем разделе. А сейчас завершим этот раздел рассмотрением интерактивной документации по Java.

    Интерактивная справка по Java API

    Интерфейс прикладного программирования (application programming interface - API) Java очень объемен, поэтому важно уметь находить нужную информацию. Платформа Java достаточно большая и предоставляет вам практически любое инструментальное средство, в котором вы нуждаетесь как программист. Изучение способов использования этих возможностей может потребовать стольких же усилий, что и изучение механизмов языка программирования.

    Если вы перейдете на страницу документации по Java фирмы Sun (ссылка приведена в разделе "Ресурсы "), то увидите ссылку на документацию по API для каждой версии SDK. Выберите версию 1.4.2 для просмотра документации.

    Вы увидите в вашем браузере три фрейма:

    • Список встроенных пакетов в левом верхнем фрейме
    • Список всех классов в нижнем левом фрейме
    • Подробная информация по выбранной теме в правом фрейме

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

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

    Концепции ООП Что такое объект?

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

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

    Когда один объект вызывает метод другого объекта, это называется передачей сообщения. Эта фраза соответствует ОО-терминологии, но чаще всего в Java-мире люди говорят "Вызвать этот метод", а не "Передать это сообщение". В следующем разделе мы рассмотрим концептуальный пример, который должен прояснить все это.

    Концептуальный пример объекта

    Предположим, что мы имеем объект Человек. Каждый объект Человек имеет имя, возраст, национальность и пол. Каждый объект Человек знает, как говорить и ходить. Один объект может спросить у другого о его возрасте, или может cказать, чтобы другой объект начал (или закончил) перемещение. В терминах программирования вы можете создать объект Person и назначить ему некоторые переменные (например, имя и возраст). Если вы создали второй объект Person, он может спросить у первого его возраст или сказать ему начать перемещение. Он может сделать это путем вызова методов первого объекта Person. Когда мы начнем писать код на языке Java, вы увидите, как язык реализует концепцию объекта.

    Обычно концепция объекта остается неизменной и в языке Java и в других объектно-ориентированных языках программирования, хотя реализуют они ее по-разному. Эта концепция универсальна. По этой причине объектно-ориентированные программисты, независимо от применяемого ими языка, общаются не так, как процедурные программисты. Процедурные программисты часто говорят о функциях и модулях. Объектно-ориентированные программисты говорят об объектах и часто говорят о них, используя личные местоимения. Вы часто можете услышать, как один ОО-программист говорит другому: "Этот объект Supervisor говорит здесь объекту Employee "Дай мне свой ID", поскольку он должен назначить задания для Employee".

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

    Фундаментальные принципы ООП

    Естественно, концепция объекта является критичным понятием для ООП, как идея о том, что объекты общаются между собой при помощи сообщений. Но существуют также три других фундаментальных принципа, которые вы должны понимать.

    Вы можете запомнить три фундаментальных принципа ООП при помощи акронима PIE (ПНИ):

    • P olymorphism (Полиморфизм)
    • I nheritance (Наследование)
    • E ncapsulation (Инкапсуляция)

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

    Инкапсуляция

    Вспомните, что объект является самодостаточной сущностью, содержащей элементы данных и действия, которые он может выполнить с этими элементами. Это реализация принципа, известного под названием сокрытие информации. Идея заключается в следующем. Объект знает о себе. Если другой объект хочет узнать информацию о другом объекте, он должен спросить о ней. В терминах ООП он должен послать сообщение объекту, например, для запроса информации о его возрасте. В терминах Java он должен вызвать метод объекта, который возвращает возраст.

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

    Наследование

    При вашем рождении, говоря с биологической точки зрения, вы являлись комбинацией ДНК ваших родителей. Вы не были точной копией ни одного из них, но были похожи на обоих. ОО использует для объектов этот же принцип. Представьте опять объект Человек. Вспомните, что каждый этот объект имеет национальность. Не все эти объекты имеют одинаковую национальность, но не являются ли они похожими? Конечно! Это не Лошади, или Шимпанзе, или Киты. Это объект Человек. Все объекты Человек имеют определенные общие признаки, отличающие их от животных других типов. Но они немного отличаются друг от друга. Похож ли Ребенок на Подростка? Нет. Они двигаются и говорят по-разному. Но Ребенок определенно является Человеком.

    В терминах ООП Человек и Ребенок являются классами в одной иерархии и (вероятнее всего) Ребенок наследует характеристики и поведение от своего родителя. Мы говорим, что конкретный Ребенок имеет тип Человек, или что этот Ребенок наследуется из объекта Человек. Это не срабатывает в обратную сторону - Человек не обязательно Ребенок. Каждый объект Ребенок является экземпляром класса Ребенок, и когда мы создаем объект Ребенок, мы создаем его экземпляр. Представляйте класс как шаблон для экземпляров этого класса. Обычно то, что может делать объект, зависит от типа объекта или, другими словами, от того, экземпляром какого класса он является. И Ребенок, и Подросток имеют тип Человек, но один может работать, а другой нет.

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

    Теперь, подумайте, что значит для объекта Ребенок действие "говорить". Мы рассмотрим смысл этого в следующем разделе.

    Полиморфизм

    "Говорит" ли Ребенок также как Подросток? Конечно же, нет. Ребенок издает шум, который не всегда является распознаваемыми словами, которые используют объекты Подросток. Поэтому, когда я создаю экземпляр объекта Ребенок (высказывание "создать экземпляр Ребенка" означает то же самое - слово "объект" подразумевается) и указываю ему "говорить", он может ворковать или булькать. Ожидается, что Подросток будет более внятен.

    В иерархии человечества мы имеем класс Человек на вершине иерархии и классы Ребенок и Подросток ниже, в качестве подклассов. Все объекты Человек могут говорить, поэтому объекты Ребенок и Подросток тоже могут, но делают это по-разному. Ребенок булькает и издает простейшие звуки. Подросток произносит слова. Вот что означает полиморфизм: объекты делают вещи по-разному.

    В чем состоит (и в чем нет) объектно-ориентированность языка Java

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

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

    Хотя многие ярые сторонники объектно-ориентированного подхода справедливо спорят о том, является ли язык Java объектно-ориентированным или нет, это на самом деле не так уж и важно. Платформа Java появилась, чтобы остаться. Научитесь применять ООП с Java там, где это возможно, и оставьте аргументы о чистоте другим. Язык Java позволит вам писать понятные, относительно лаконичные и управляемые программы, которые достаточно хороши для большинства профессиональных ситуаций.

    Язык Java изнутри Как работает платформа Java

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

    С точки зрения файловой системы при написании кода вы создаете файл с расширением .java. После компилирования этого файла компилятор Java создает файл с расширением .class, который содержит байт-коды. JVM читает и интерпретирует этот файл во время исполнения, и то, как она делает это, зависит от платформы, на которой вы работаете. Для работы на других платформах вы должны откомпилировать ваш исходный код с библиотеками, специфичными для этой платформы. Как вы понимаете, обещание "Write Once, Run Anywhere" (написать один раз, запускать везде) превращается в высказывание "Write Once, Test Anywhere" (написать один раз, проверить везде). Существуют тонкие (или не такие тонкие) отличия платформ, которые могут вызвать различное выполнение вашего кода на различных платформах.

    Сборка мусора

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

    Если вы писали какие-либо программы на языке программирования C++, который тоже является (вероятно) объектно-ориентированным, то знаете, что как программист вы должны распределять и освобождать память для ваших объектов явно при помощи функций malloc() и free(). Для программистов это обременительная задача. Она также и опасна, поскольку может привести к утечкам памяти в ваших программах. Утечка памяти - это ничто иное, как ваша программа, поглощающая оперативную память с угрожающей скоростью, что нагружает процессор машины, на которой работает ваша программа. Java-платформа освобождает вас от каких-либо беспокойств по этому поводу, поскольку она имеет так называемый сборщик мусора .

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

    IDE против инструментов командной строки

    Как мы уже отмечали ранее, Java-платформа поставляется с инструментами командной строки, которые позволяют компилировать ( javac ) и запускать ( java ) Java-программы. Так зачем же тогда использовать такую IDE как Eclipse? Причина этого заключается в том, что использование инструментов командной строки может стать головной болью для работы с программами любой сложности. Они имеются под рукой, когда необходимы, но использование IDE в большинстве ситуаций является более мудрым решением.

    Главной причиной использования IDE является управление файлами и путями в самой IDE и наличие мастеров, помогающих вам при необходимости изменить вашу среды времени исполнения. Если я хочу откомпилировать Java-программу при помощи инструмента командной строки javac. то должен заранее побеспокоиться об установке переменной среды CLASSPATH. для того чтобы JRE смог найти мои классы, либо я должен установить эту переменную во время компилирования. В такой IDE как Eclipse все, что я должен сделать - это указать Eclipse, где найти мою JRE. Если мой код использует классы, которые я не написал, все что я должен сделать - это указать Eclipse библиотеки, на которые ссылается мой код, и их месторасположение. Это намного проще, чем использование командной строки для ввода ужасно длинных строк, указывающих classpath.

    Если вы хотите или вынуждены использовать инструменты командной строки, то можете найти дополнительную информацию по их использованию на Web-сайте Sun по Java-технологии.

    ООП с использованием Java-технологии

    Java-технология охватывает большую область, но язык сам по себе не является очень большим. Однако описать его - не простая задача. Данный раздел руководства не рассматривает язык полностью. Вместо этого будет рассмотрено все, что вам необходимо знать для начала работы с языком, и то, с чем вы наиболее вероятно столкнетесь как начинающий программист. В других учебниках рассмотрены различные аспекты языка Java, дополнительные полезные библиотеки фирмы Sun (и других источников) и даже разные IDE.

    Мы приведем здесь достаточно информации с пояснениями и примерами кода, для того чтобы вы смогли начать написание Java-программ и научиться правильно применять ООП в среде Java. Сейчас это зависит только от практики и обучения.

    Большинство руководств для начинающих читаются как справочные книги по спецификации языка. Сначала вы видите все синтаксические правила, затем некоторые примеры использования, затем более сложные темы, например, объекты. Мы не будем придерживаться этой схемы. Мы поступаем так потому, что главной причиной плохого объектно-ориентированного кода в программах на Java является отсутствие погруженности начинающих программистов в объекты с самого начала обучения. Объекты рассматриваются как дополнительная возможность, или вспомогательная тема. Вместо этого мы совместим изучение синтаксиса Java с изучением Java OO. Таким образом, в конце обучения вы будете иметь цельную картину использования языка в контексте объектно-ориентированного подхода.

    Структура Java-объекта

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