Java: руководство для начинающих (ЛП)
Java: руководство для начинающих (ЛП) читать книгу онлайн
"Java: руководство для начинающих"составлено Гербертом Шилдтом, автором популярных во всем мире книг по языкам программирования, таким образом, чтобы читатель смог быстро овладеть основными навыками программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с рассмотрения самых основ, включая компилирование и выполнение простых программ на Java. Затем в нем описываются ключевые слова и синтаксические конструкции, составляющие основу Java как языка программирования. Далее следует изложение самых передовых языковых средств Java, включая обобщения и многопоточное программирование. И завершается книга введением в библиотеку Swing. Представленный в книге учебный и справочный материал позволяет легко и быстро научиться программировать на Java. Для облегчения процесса изучения Java книга построена следующим образом: - Основные навыки и понятия. Каждая глава начинается с перечня основных навыков и понятий, которые предстоит усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даются полезные рекомендации в форме вопросов и ответов. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять приобретенные знания и навыки на практике. - Упражнения для самопроверки. В конце каждой главы приводятся контрольные вопросы и задания для проверки прочности усвоенного материала. - Подробные комментарии к примерам программ. Все примеры программ в этой книге снабжены подробными комментариями, описывающими демонстрируемые языковые средства и приемы программирования на Java. В этом учебном пособии для начинающих программировать на Java подробно рассмотрены все основные средства данного языка программирования: типы данных, операторы, циклы, классы, интерфейсы, методы, исключения, обобщения, пакеты, основные библиотеки классов, средства многопоточного программирования, потоки ввода-вывода, перечисления, апплеты и документирующие комментарии. Применение всех этих языковых средств Java на практике наглядно демонстрируется в небольших проектах для самостоятельного опробования. Книга снабжена массой полезных советов авторитетного автора и множеством примеров программ с подробными комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. А для проверки прочности приобретенных знаний и навыков в конце каждой главы приводятся контрольные вопросы и задания.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Учитывая сходство Java и С#, может возникнуть вопрос: “Заменит ли C# язык Java?” Ответ, безусловно, отрицательный. Java и C# оптимизированы для абсолютно разных типов вычислительных сред. Как и вместе с языком C++, Java будет мирно сосуществовать с языком C# еще многие годы.Вклад Java в развитие Интернета
Развитие Интернета послужило основной побудительной причиной для выхода Java на передний край программирования. В свою очередь, Java оказал благотворное влияние на развитие Интернета. Этот язык не только упростил веб-программирование, но и положил начало новой разновидности сетевых программ, называемых апплетами и полностью изменивших представление о содержимом веб. Java также позволил решить наиболее сложные задачи, возникающие при создании сетевых программ: обеспечение переносимости и безопасности. Рассмотрим подробнее апплеты и их основные свойства.Java-аппеты
Апплет — это специальная программа на Java, предназначенная для передачи поИнтернету и автоматического выполнения в среде, формируемой совместимым с Javaбраузером. Апплет загружается по требованию клиентской программы, а для его пере¬дачи по сети вмешательство пользователя не требуется. Если пользователь щелкает нассылке, указывающей на документ, который содержит апплет, последний будет автома¬тически скопирован и запущен браузером. Большинство апплетов невелики по разме¬рам. Обычно они служат для отображения информации, предоставляемой серверами,или поддержки ввода данных пользователем. Иногда с их помощью реализуются не¬сложные функции. Например, калькулятор удобнее разместить в виде апплета на сто¬роне клиента, чем выполнять вычисления на стороне сервера. Таким образом, апплетпозволяет переносить некоторые функции с сервера на машину клиента.
С появлением апплетов расширился круг объектов, пригодных для свободной передачи в сетевой среде. Существуют две категории объектов, которыми сервер может обмениваться с клиентом: статические, пассивные данные и исполняемые программы (динамические данные). Например, просматривая электронную почту, вы имеете дело со статическими данными. Даже если в почтовом отправлении пересылается программа, ее код не активизируется до тех пор, пока не получит управление. Апплет, напротив, является динамической, самостоятельно выполняющейся программой, для запуска которой не приходится принимать никаких мер. Такие программы выполняют роль активных агентов на клиентских машинах, но инициализируются сервером.
Несмотря на то что с помощью динамических программ можно реализовать полезные функции, они могут вызвать серьезные затруднения, имеющие отношение к безопасности и переносимости. Очевидно, что программа, которая загружается на машину клиента и автоматически запускается, не должна наносить вред клиентской системе. Кроме того, она должна допускать выполнение в разнотипных средах: на разных платформах под управлением различных операционных систем. Как будет показано далее, в Java эти затруднения изящно и эффективно преодолены.Безопасность
Как известно, запуск обычной программы, загруженной через Интернет, сопряжен с риском, поскольку она может быть заражена вирусом или служить своего рода “троянским конем” для злонамеренного проникновения в систему А злонамеренные действия такой программы возможны из-за того, что она получает несанкционированный доступ к системным ресурсам. Так, вирус, анализируя содержимое файловой системы локального компьютера, может собирать секретные сведения, например номера платежных карточек, сведения о банковских счетах и пароли. Для безопасной загрузки и запуска апплетов на клиентской машине необходимо устранить саму возможность атаки на систему со стороны апплета.
Защита от атак реализуется путем создания специальной среды для выполнения апплета, не позволяющей ему обращаться к ресурсам компьютера. При отсутствии такой среды апплет выполняться не может. (Далее будет показано, как решается подобная задача.) Возможность загружать апплет с уверенностью в том, что он не нанесет вреда системе, относится к одним из самых привлекательных особенностей Java.Переносимость
Переносимость является важным свойством сетевых программ. Она имеет большое значение потому, что в сети могут присутствовать разнотипные компьютеры, работающие под управлением различных операционных систем. Если программа на Java предназначена для выполнения на произвольном компьютере, подключенном к Интернету, то должны существовать способы обеспечения работы этой программы в различных системах. Например, один и тот же апплет должен работать на машинах с разнотипными процессорами, в разных операционных системах и с различными браузерами. Хранить разные версии апплета для разнотипных компьютеров слишком сложно, если вообще возможно. Один и тот же код должен работать на всех машинах. Таким образом, необходима поддержка процесса генерации переносимого исполняемого кода. Как станет ясно в дальнейшем, те же самые средства, которые обеспечивают безопасность, помогают добиться переносимости программ.Волшебный байт-код Java
Добиться безопасности и переносимости программ по сети позволяет генерируемый компилятором Java код, не являющийся исполняемым. Такой код называется байт-кодом. Это оптимизированный набор команд, предназначенных для выполнения в исполняющей системе Java, называемой виртуальной машиной Java (Java Virtual Machine — JVM). Виртуальная машина Java, по существу, представляет собой интерпретатор байт-кода. Такой подход может показаться не совсем обычным, поскольку для повышения производительности компиляторы большинства современных языков генерируют исполняемый код. Но выполнение программы под управлением виртуальной машины позволяет разрешить многие затруднения, возникающие в работе веб-приложений.
Преобразование исходного кода Java в байт-код существенно упрощает перенос программ из одной среды в другую, поскольку для обеспечения работоспособности кода достаточно реализовать на каждой платформе виртуальную машину. Если на компьютере присутствует пакет исполняющей системы, то на нем может работать любая программа, написанная на Java. Несмотря на то что виртуальные машины на различных платформах могут быть реализованы по-разному, они должны одинаково интерпретировать байт-код. Если бы исходный текст программы на Java компилировался в собственный код, для каждого типа процессора, взаимодействующего с Интернетом, необходимо было бы предусмотреть отдельную версию данной программы. Такое решение нельзя назвать приемлемым. Следовательно, выполнение байт-кода под управлением виртуальной машины — самый простой путь к обеспечению переносимости программ.
Выполнение программы под управлением виртуальной машины помогает также обеспечить безопасность. Виртуальная машина может запретить программе выполнять операции, побочные эффекты которых способны повлиять на ресурсы за пределами исполняющей системы. Кроме того, безопасность достигается посредством некоторых ограничений, предусмотренных в языке Java.
Как правило, интерпретируемая программа выполняется медленнее, чем скомпилированная в машинный код. Но для кода Java отличия в быстродействии не очень существенны. Ведь байт-код оптимизирован, и поэтому программа выполняется под управлением виртуальной машины значительно быстрее, чем следовало бы ожидать.
Несмотря на то что Java был задуман как интерпретируемый язык, ничто не мешает преобразовать байт-код по ходу компиляции в собственный для повышения производительности. С этой целью сразу же после первой реализации JVM компания Sun Microsystems начала работу над технологией HotSpot, в рамках которой был разработан динамический компилятор байт-кода. Если в состав виртуальной машины входит динамический компилятор, байт-код по частям преобразуется в собственный исполняемый код. Преобразовывать сразу всю программу на Java в исполняемый код нецелесообразно из-за разнообразных проверок, которые могут производиться только на этапе выполнения программы. Поэтому динамический компилятор выполняет преобразования кода частями по мере необходимости (отсюда и его другое название — JIT-компилятор, т.е. компилятор, вступающий в действие лишь в нужный момент времени). Более того, компиляции подвергаются не все фрагменты байт-кода, а лишь те, скорость выполнения которых можно повысить благодаря компиляции, а остальной код интерпретируется. Несмотря на все ограничения, присущие динамической компиляции, она, тем не менее, позволяет существенно повысить производительность программ. И невзирая на динамическое преобразование байт-кода в исполняемый код, переносимость и защита сохраняются, поскольку JVM по-прежнему участвует в процессе выполнения программ.Основные свойства Java
