Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Архитектурная нейтральность. Интерпретируемость и высокая производительность. Распределенность. Динамический характер. Обзор языка Java




Архитектурная нейтральность

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

Интерпретируемость и высокая производительность

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

Распределенность

Язык Java предназначен для распределенной среды Internet, поскольку он поддерживает протоколы семейства TCP/IP. Фактически обращение к ресурсу через URL-адрес не очень отличается от обращения к файлу. Java поддерживает также удаленный вызов методов (Remote Method Invocation – RMI). Это свойство позволяет программам вызывать методы по сети.

Динамический характер

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

Обзор языка Java

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

Объектно-ориентированное программирование

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

Все компьютерные программы состоят из двух элементов: кода и данных. Более того, концептуально программа может быть организована вокруг своего кода или вокруг своих данных. То есть организация некоторых программ определяется тем “что происходит”, а других – тем, “на что оказывается влияние”. Существуют две концепции создания программы. Первый способ называют моделью, ориентированной на процессы. Этот подход характеризует программу в виде последовательностей линейных шагов (т. е. кода).

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

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

Абстракция

Важный элемент объектно-ориентированного программирования – абстракция.

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

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

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

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...