Автор: Пользователь скрыл имя, 17 Декабря 2012 в 23:56, диссертация
Постановка задачи: Создать клиент-серверное приложение для обмена сообщениями в реальном времени.
Детальное описание: Клиентская часть должна быть реализована в графическом варианте. После запуска клиент пытается установить соединение с сервером, получает список всех доступных для общения пользователей, которым может отправлять/получать сообщения. Необходимо оповещать клиента об изменение в доступном списке контактов.
Проект Jabber был основан Джереми Миллером в начале 1998 года с разработки сервера jabberd[5]. Первое сообщение о проекте появилось 4 января 1999 года на сайте Slashdot[6]. Эту дату принято считать днем рождения технологии[5]. Вскоре после этого к проекту присоединилось несколько основных разработчиков, которые стали работать над сервером jabberd, клиентами для Windows и GNU/Linux, а также шлюзами в основные системы IM (AIM, ICQ, MSN, и Yahoo). Позже, в 1999 году, Webb Interactive Services начало спонсировать основных разработчиков, что ускорило процесс создания проекта. В то время появилась основа протокола Jabber, а также сервер jabberd и ранние клиенты, такие, как WinJab (устарел и получил своё развитие в Exodus) и Gabber. Этот ранний период постоянных изменений закончился в мае 2000 года с выпуском jabberd 1.0.
Рис. 1.9. Главное окно комнаты в клиенте Pidgin.
Ранний протокол Jabber сформировал основы для стандарта XMPP, опубликованного как RFC 3920. Часто этот момент рассматривается как начало соперничества с SIMPLE, основанным на протоколе SIP, как стандартного протокола для мгновенного обмена сообщениями и информацией о присутствии.
С августа 2001 года протокол Jabber переходит под контроль Jabber Software Foundation (16 января 2007 года Jabber Software Foundation была переименована в XMPP Standards Foundation[8]), для более точного описания своей работы развития расширений собственно протокола, в отличие от линии развития программы с одноименным названием.
Jabber, Inc. занимается развитием двух проектов — Jabber Extensible Communications Platform (Jabber XCP) и JabberNow. Первый является фреймворком, а второй — программно-аппаратное решение (специально собранный и настроенный компьютер). Сайт jabber.org все ещё функционирует. Инвесторами проекта Jabber являются Jona, Inc., France Telecom, Intel Capital, и Webb Interactive Services, Inc.[1]
В августе 2005 года Google представил сервис Google Talk — комбинацию VoIP и клиента для обмена сообщениями, использующий XMPP для функций переписки, а также как основу для передачи голоса и файлов. Первоначальный запуск сервиса от Google не включал межсерверного общения, но к 17 января 2006 года такая возможность была добавлена.
Рис. 1.10. Схема устройства работы XMPP.
Семейство протоколов XMPP принято как стандарт RFC. Стандартный порт для XMPP — 5222. Также возможно использовать порт 80 и/или 443, если возникают проблемы с файрволом.
Каждый пользователь в сети Jabber имеет уникальный идентификатор — Jabber ID (сокращенно JID). Адрес JID, подобно адресу электронной почты, содержит имя пользователя и доменное имя сервера, на котором зарегистрирован пользователь, разделённые знаком “@”. Например, пользователь user, зарегистрированный на сервере example.com, будет иметь адрес: user@example.com.
Пользователь может иметь одновременно несколько подключений, для различения которых используется дополнительное значение JID, называемое ресурсом и добавляемое через слэш в конец адреса. К примеру, пусть полный адрес пользователя будет user@example.com/work, тогда сообщения, посланные на адрес user@example.com, дойдут на указанный адрес вне зависимости от имени ресурса, но сообщения для user@example.com/work дойдут на указанный адрес только при соответствующем подключенном ресурсе.
Адреса JID могут также использоваться без явного указания имени пользователя (с указанием имени ресурса или без такового) для системных сообщений и для контроля специальных возможностей на сервере.
AOL Instant Messenger (AIM) — программа мгновенного обмена сообщениями, предлагаемая фирмой AOL (America OnLine). Она появилась в мае 1997 года. Последняя версия AIM Triton обладает возможностями IP-телефонии, поддержки универсальной адресной книжки Plaxo, отправкой SMS через компьютер (при условии установки соответствующих плагинов) и многими другими улучшениями.
Рис. 1.11. Логотип AIM клиента.
Skype[9] — бесплатное проприетарное программное обеспечение с закрытым кодом, обеспечивающее шифрованную голосовую связь и видеосвязь через Интернет между компьютерами (VoIP), а также платные услуги для звонков на мобильные и стационарные телефоны.
Рис. 1.12. Логотип продукта Skype.
Программа также позволяет совершать конференц-звонки (до 25 голосовых абонентов, включая инициатора), видеозвонки (в том числе видеоконференции до 10 абонентов), а также обеспечивает передачу текстовых сообщений (чат) и передачу файлов. Есть возможность вместо изображения с веб-камеры передавать изображение с экрана монитора.
В отличие от многих других программ IP-телефонии, для передачи данных Skype использует P2P-архитектуру. Каталог пользователей Skype распределён по компьютерам пользователей сети Skype, что позволяет сети легко масштабироваться до очень больших размеров (в данный момент более 100 миллионов пользователей, 15—25 миллионов онлайн) без дорогой инфраструктуры централизованных серверов.
Кроме того, Skype может маршрутизировать звонки через компьютеры других пользователей. Это позволяет соединяться друг с другом пользователям, находящимся за NAT или брандмауэром, однако создаёт дополнительную нагрузку на компьютеры и каналы пользователей, подключённых к Интернету напрямую.
Единственным центральным
Skype позволяет пользователям
Skype-чат позволяет
Рис. 1.13. Главное меню программы Skype.
Мail.Ru Агент — бесплатная программа для быстрого обмена сообщениями через Интернет, разработанная компанией Mail.ru в 2003 году.
Рис. 1.14. Логоти программы Mail.ru Агент.
Помимо быстрого обмена сообщениями, программа поддерживает также возможности IP-телефонии, видеозвонки и бесплатную отправку SMS, а также уведомляет о новой почте, пришедшей по email. Внутренний протокол обмена данными Mail.Ru Агента является частично открытым. В частности, в документации протокола нет описания VoIP-звонков и игр. К тому же, описание протокола не обновляется в соответствии с действующей версией протокола между официальным серверным и клиентским ПО.
В настоящее время уже
Для создания системы обмена мгновенными сообщениями было принято использовать язык программирования Java, для написания клиент-серверного приложения. Хранение истории переписки, информация о пользователях будет хранится в таблицах реляционной модели базы данных SQL сервера Oracle. Отправляемые сообщения будут формироваться в виде XML – пакетов, а подключение двух и более клиентов реализовано с помощью многопоточности, средствами языка Java.
Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) вне зависимости от компьютерной архитектуры.
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
Часто к
недостаткам концепции
1. применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
2. широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
3. аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.
Идеи, заложенные
в концепцию и различные
Программное обеспечение было реализовано в версии Java 7.
Релиз версии состоялся 28 июля 2011 года. В финальную версию Java SE 7 не были включены все ранее запланированные изменения. Согласно плану развития (план «Б»), включение нововведений будет разбито на две части: Java SE 7 (без лямбд, проекта Jigsaw, и части улучшений Coin) и Java SE 8 (все остальное), намеченный на конец 2012 года.
В новой версии, получившей название Java SE 7 (Java Platform, Standard Edition 7), помимо исправления большого количества ошибок были представлено несколько новшеств. Так, например, в качестве эталонной реализации Java SE 7 использован не проприетарный пакет JDK, а его открытая реализация OpenJDK, а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP (Java Community Process) и сообществом OpenJDK. Все поставляемые Oracle бинарные файлы эталонной реализации Java SE 7 собраны на основе кодовой базы OpenJDK, сама эталонная реализация полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких как Ruby, Python и JavaScript, поддержка загрузки классов по URL, обновленный XML-стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие.
За 5 дней до выхода релиза Java SE 7 было обнаружено несколько серьёзных ошибок в горячей оптимизации циклов, которая включена по умолчанию и приводит виртуальную машину Java к краху. Специалисты Oracle найденные ошибки за столь короткий срок исправить не могли, но пообещали, что они будут исправлены во втором обновлении (Java 7 Update 2) и частично в первом.
Список нововведений:
Информация о работе Создание системы обмена мгновенными сообщениями