ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ "ОСОБЕННОСТИ ЯЗЫКА ПЛАТФОРМЫ JAVA" - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ "ОСОБЕННОСТИ ЯЗЫКА ПЛАТФОРМЫ JAVA"

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ОСОБЕННОСТИ ЯЗЫКА И ПЛАТФОРМЫ JAVA.

Долгое время трудно было представить себе компьютерный журнал без статьи, посвященной языку Java. О нем писали даже такие популярные газеты и журналы, как The New York Times, The Washington Post и Business Week.

Невозможно припомнить, чтобы национальное общественное радио (National Public Radio) когда-либо посвящало языку программирования десятиминутную передачу. Хорошо это или плохо, зависит от точки зрения. А инвестиции объемом 100 миллионов долларов, вложенные в производство программного обеспечения, создаваемого с помощью конкретного языка программирования?! Телекомпании CNN, CNBC и другие средства массовой информации только и говорили, да и сейчас говорят, о том, как язык Java и то сможет, и это сделает.

1.1 Язык Java как средство программирования.

Как язык программирования Java перевыполнил свои рекламные обещания. Несомненно, это один из лучших языков, доступных серьезным программистам. Потенциально Java имеет все предпосылки, чтобы стать великим языком программирования, однако, вероятно, сейчас уже слишком поздно. Когда появляется новый язык программирования, немедленно возникает неприятная проблема его совместимости с программным обеспечением, созданным ранее. Более того, даже если изменения в эти программы можно внести без вмешательства в их текст, создателям языка, который так горячо приветствовался публикой, как, например, язык Java, сложно прямо сказать: "Да, возможно мы ошиблись при разработке версии X, но версия Y будет лучше". В итоге, ожидая появления дальнейших улучшений, мы должны констатировать, что структура языка Java в ближайшем будущем существенно не изменится.

Компания Microsoft выпустила в свет свой собственный продукт под названием J++, имеющий отношение к языку Java. Язык J++ интерпретируется виртуальной машиной, совместимой с виртуальной машиной языка Java (Java Virtual Machine) при выполнении байт-кода, но интерфейсы с внешними кодами у этих языков значительно различаются. Языки J++ и Java имеют практически одинаковый синтаксис. Однако компания Microsoft создала дополнительные языковые конструкции. Все они имеют довольно сомнительную ценность, за исключением интерфейса Windows API. Помимо того, что у этих языков одинаковый синтаксис, их основные библиотеки (строки, утилиты, средства сетевого программирования, средства поддержки многопоточности, математические библиотеки и т.п.), по существу, также совпадают.

1.2 Преимущества языка Java

1) Одно из основных преимуществ языка Java — независимость от платформы, на которой выполняются программы: один и тот же код можно запускать под управлением операционных систем Windows, Solaris, Linux, Machintosh и др. Это действительно необходимо, когда программы загружаются через Интернет для последующего выполнения под управлением разных операционных систем.

2) Другое преимущество заключается в том, что синтаксис языка Java похож на синтаксис языка C++, и программистам, знающим языки С и C++, его изучение не составляет труда. Правда, для программистов, владеющих языком Visual Basic, этот синтаксис, возможно, будет непривычен.

Если вы никогда не программировали на языке C++, некоторые термины, использованные в этом разделе, будут вам непонятны. В этом случае можете пропустить его. Пока вы доберетесь до конца главы 6, эти термины станут для вас привычными.

3) Кроме того, Java — полностью объектно-ориентированный язык, даже в большей степени, чем C++. Все сущности в языке Java являются объектами, за исключением немногих основных типов (primitive types), например чисел. (Поскольку с помощью объектно-ориентированного программирования легко разрабатывать сложные проекты, оно заменило собой более древнее структурное программирование. Если вы не знакомы с объектно-ориентированным программированием, главы 3-6 предоставят вам все необходимые сведения о нем.)

1.3 Характерные особенности языка Java.

  • Простой

  • Интерпретируемый

  • Распределенный

  • Надежный

  • Безопасный

  • Машинонезависимый

  • Объектно-ориентированный

  • Не зависящий от архитектуры компьютера

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

1.4 Объектно-ориентированный

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

1.5 Распределенный

Java обладает большой библиотекой программ для передачи данных на основе таких протоколов TCP/IP (Transmission Control Protocol/Internet Protocol-протокол управления передачей/Интернет-протокол), как HTTP (Hypertext Transfer Protocol - протокол передачи гипертекстов) или FTP (File Transfer Protocol-протокол передачи файлов). Приложения, написанные на языке Java, могут открывать объекты и получать к ним доступ через сеть с помощью иURL-адресов (Uniform Resource Location - универсальный адрес ресурса) так желегко, как авлокальной сети.

Язык Java предоставляет мощные и удобные средства для работы в сети. Каждый, кто когда-либо пытался писать программы для работы в Интернет на других языках, будет приятно удивлен тем, как легко решаются на языке Java самые трудные задачи, например, открытие сетевых соединений (sockets connection). Элегантный механизм, состоящий из так называемых сервлетов (servlets), делает работу на сервере чрезвычайно эффективной.

1.6 Надежный

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

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

1.7 Язык Java и Интернет.

Идея проста— пользователи загружают байт-коды языка Java из Интернет и выполняют их на своих машинах. Программы Java, работающие под управлением Web-броузеров, называются апплетами. Для использования апплета нужен Web-броузер, поддерживающий язык Java и способный интерпретировать байт-коды. Лицензия на исходные коды языка Java принадлежит компании Sun, настаивающей на неизменности как самого языка, так и структуры его основных библиотек. К сожалению, в реальности все не так. Разные версии броузеров Netscape и Internet Explorer поддерживают разные версии языка Java, причем некоторые из этих версий значительно устарели. Эта достойная сожаления ситуация создает все больше препятствий при разработке апплетов, позволяющих использовать преимущества последней версии языка Java. Чтобы решить эту проблему, компания Sun разработала программу Java Plug-in, позволяющую создавать наиболее современную среду для запуска программ на языке Java на основе броузеров Netscape и Internet Explorer.

2. ПЛАТФОРМА ДЛЯ РАЗРАБОТКИ RIAs- ПРИЛОЖЕНИЙ (JAVAFX).

Архитектурно, Titanuim достаточно близкий аналог AIR-а. Основой всего является движок рендеринга Webkit (версия от 16 марта), который дополнен флеш-плагином. Вокруг этого есть прослойка фреймворка, предоставляющего API для приложений, пока доступно три языка на выбор (и это уникальная «фича») — JavaScript, Ruby и Python. При этом в одном приложении можно смешивать языки, что позволяет получить достаточную гибкость. Кстати, сама платформа также расширяемая и использует Ruby или Python для написания модулей (можно посмотреть скринкаст о написании модулей), однако часть из компонент написаны на С/С++. Пока не ясно, можно ли получить из JS-кода доступ к модулям, написанных на других языках.

Стандартом для RIA-платформ является предоставление программам расширенного API и специфических компонент, ненужных для обычных веб-страниц. Впервые это попробовала сделать Google с плагином Gears, теперь этот функционал считается базовым для всех платформ. Titanium предоставляет встроенную базу данных, традиционно это SQLite, что уже приближает то, что обычные браузеры получат массово ещё через пару лет после полной поддержки HTML5 (хотя некоторые уже сейчас это поддерживают). В текущем релизе в Titanium-е используется тот же модуль, что и в самом движке Webkit, однако разработчики обещают в будущем расширить его поддержку и добавить новую функциональность.

Веб-приложение всегда было ограничено в доступе к файловой системе компьютера пользователя, а точнее — вообще не знало о ее существовании. Это было приемлемым для веб-страниц, но RIA-приложения, в погоне за схожестью с их настольными собратьям, сильно нуждались в тех же возможностях по работе с локальными файлами. В Titanuimе есть встроенные классы для работы с файловой системой, при этом функционал их достаточно развит, чтобы облегчить разработчику его нелегкую жизнь. Кроме этого, предоставляется интерфейс FileStream, позволяющий напрямую читать и писать любой указанный файл. Теперь уже можно вполне писать приложения, ни чем не ограничивающие пользователя и обрабатывающие не только загруженные на сервер файлы, но и данные из любого указанного места.

Мультимедийные возможности Titanium пока отстают от AIR, хотя это вряд ли станет препятствием для серьезных приложений — необходимый минимум в виде работы с системным динамиком (тем самым биппером) и проигрывание MP3 в нем все же есть, остальное уже придется реализовать самостоятельно или через внешние библиотеки, ну или все тем же незаменимым Flash.

Отдельно следует сказать о самих приложениях. Если в AIR-е приложение (пакет.air) содержит только код вашего приложения, который при установке развертывается внутри среды исполнения, которая общая для всех, то подход Titanium-а кардинально другой. При создании пакета (что в терминах проекта и является конечным приложением, распространяемым среди пользователей) вы гибко настраиваете среду, выбирая только те компоненты платформы, которые вам нужны. Например, если в вашем приложении не используются скрипты на Ruby или Python, просто исключите их, и они не попадут в дистрибутив. Недостающие части могут также загружаться из сети, экономя на объеме дистрибутива. После этого Titanium, используя сервисы сборки на серверах компании, создает упакованные дистрибутивы вашего приложения, для выбранных платформ. В результаты вы получаете родной исполняемый файл, например,.exe, который содержит кастомизированную под ваши нужды саму платформу Titanium и файлы вашей разработки. Устанавливается такое приложение как и обычное, а если вы хотите использовать их несколько сразу, то каждая программа использует свой экземпляр платформы Titanium, не конкурируя за ресурсы (кроме системных). По моему, единственный минус, хоть и небольшой, это увеличение размера инсталляционного пакета — это уже не сотни Кб для AIR-пакета, а 10−30 Мб, хотя сегодня такие размеры уже никого не удивляют. Кстати, внутри это обычный самораспаковывающийся Zip-архив, да и некоторые компоненты дублируются, поэтому в будущем есть еще большой потенциал для уменьшения объема. Но такой подход избавил разработчиков думать о распространенности платформы среди пользователей, это вообще не нужно, важно только занять нишу разработчиков, что не в пример проще.

Разработчики встроили в Titatuim собственную среду распространения приложений. После сборки, ваша программа получает свою страницу на серверах компании, где пользователь может выбрать нужную ему версию, прочитать сопроводительную информацию и узнать больше о самой платформе. Вы же можете следить за статистикой загрузок для каждой платформы, оценивая востребованность той или иной сборки. Конечно, если не хочется светить свое творение, можно сделать его приватным и никто не узнает, пока вы сами не расскажите. Ну, а пока другие загружают и исследуют ваше творение, вы можете посмотреть каталог уже готовых приложений, проголосовать за них или подсмотреть, над чем же работают коллеги — пока самым скачиваемым приложением является Raviex Videosдля поиска и просмотра видеороликов с популярных сайтов, вторым идет небольшая утилита, интегрирующая в трей переводчик, использующий Google Language API.

В завершении стоит отметить еще две особенности Titanium-а. Одна будет не самой приятной — в настоящее время, похоже, ни один из популярных AJAX-фреймворков не знает о такой платформе, хотя это и понятно, всего-то третья версия и то в статусе превью. Но сам Титан знает об Ajax, а конструктор приложения позволяет одним кликом выбрать нужные вам библиотеки и включить их в скелет приложения (на выбор есть Dojo, jQuery, Prototype, Mootools, YUI и другие). Для разработчика, который хочет просто «поиграть», без особого желания создавать целое приложение, есть простая песочница, где можно накидать код, обычно не длиннее пары десятков строк, и сразу же просмотреть его в действии.

Titanium это не просто разработка еще одной платформы для запуска веб-приложений в изолированной среде. Это больше применимо к его конкуренту от Adobe, хотя, если присмотреться, то и не конкурент вовсе, слишком уж разные подходы. Titanium это модульная среда исполнения RIA-приложений, построенная вокруг движка Webkit, интерпретаторов JavaScript, Ruby и Python. Titanium это полностью открытая платформа, исходные коды для сборки доступны всем желающим. Titanium это специальная среда для разработчика, где можно по-быстрому проверить код в песочнице, создать общую структуру приложения и управлять своими проектами, автоматизировать сборку для различных платформ. Titanium это инфраструктурные сервисы, которые упрощают сборку проекта, хостинг, собирают статистику загрузок, а также комьюнити разработчиков, которое всегда доступно через встроенный в среду IRC-чат. В конце-концов, Titanium это возможность создавать RIA-приложения полностью независимые от среды, ведь инсталляционный пакет включает саму платформу, а значит для работы ему не надо быть столь же популярным, как AIR, для пользователей это просто ещё одно приложение.

И хотя сейчас мы видим только версию 0.3, платформа активно развивается и следует ожидать, что может вполне занять свое место в мире RIA-технологий, и отнюдь не последнее. Но Titanium это только кирпичик, пусть и большой, в общей архитектуре RIA-приложений от компании Appcelerator. Если посмотреть на из веб-сайте, обнаружится много чего интересного, вроде ajax-фреймворка Entourage, который сам по себе заслуживает отдельного материала.

3. ПРАКТИЧЕСКОЕ ЗАДАНИЕ

1. Создадим оконное приложение при помощи jFrame.

Для начала создадим проект приложения Java (рис. 1), снимем галочку с пункта «Создать главный класс» и укажем для проекта имя «Reshenie» (рис. 2).

Рис. 1 – Окно создания проекта.

Рис. 2 – Окно создания проекта.

Добавим к проекту пакет Java (рис. 3) и для него укажем имя «reshenie».

Рис. 3 – Процесс добавления пакета к проекту

Затем к проекту добавим форму JFrame (рис. 4) с именем JFrame.

Рис. 4 – Процесс добавления формы к проекту

2. Создадим новый класс с именем NewPanel (рис. 5).

3. Сделаем его наследником класса Panel, создадим поля, отвечающие за размеры геометрических фигур (по заданию, рис. 6), произведём инкапсуляцию полей, а также переопределим метод paint() в соответствии с заданием (рис. 6).

Рис. 6 – Индивидуально задание

Рис. 7 – Код класса Panel

extends Panel – строка кода, которая указывает, что класс NewPanel теперь является наследником класса Panel.

private и public – модификаторы доступа.

4. Добавим контейнер с собственной панелью на фреймовое окно.

Рис. 8 – Код формы

На рисунке 8 объявляем переменную класса NewPanel, которая будет содержать ссылку на объект класса. Строкой this.add(mypanel) добавляем объект на форму и методами setLocation и setSize определяем положение объекта на форме и его размер.

5. Реализуем блок прослушивания события нажатия на клавиатуру.

Рис. 9 – Список событий формы JFrame

6. Реализуем движение геометрических фигур при нажатии на клавиатуру и ограничим движение геометрических фигур фреймовым окном (рис. 10).

Рис. 10 – Код метода, который обрабатывает событие нажатие на клавиатуру.

7. На рисунке 11 представлен результат работы.

Рис. 11 – Окно программы

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Блюмин А. М. Мировые информационные ресурсы: учебное пособие/А. М. Блюмин, Н. А. Феоктистов. – М.: Дашков и К0, 2012. – 296 с.

  2. Информационные технологии управления: учебное пособие/ М. А. Венделеева, Ю. В. Вертакова. – М.: Юрайт, 2012. – 464 с.

  3. Информационные технологии управления / под редакцией Титоренко Г. А. – М.: ЮНИТИ – ДАНА, 2008. – 440 с.

  4. Селетков С.Н. Объектно-ориентированное программирование /С. Н. Селетков, А. В. Хорошилов. – СПб. Питер, 2007.

  5. www.yandex.ru – поисковая система

  6. www.infostat.ru – федеральная служба государственной статистики

  7. www.gsnti.ru – государственная служба научно-технической информации

Просмотров работы: 829