Вы находитесь на странице: 1из 19

1

Содержание

Введение 3
1.Разработка мессенджера на java 4
Заключение 18
Список литературы 19

2
Введение

В настоящее время стали популярны информационные технологий,


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

3
1.Разработка мессенджера на java

В Java самым важным является JVM(JavaVirtualMachine) Java.


JVM является программой, которая обрабатывает байтовые коды,
передающие в инструкции оборудования как интерпретатор. Программы
написанные с помощью Java могут быть исполняемы виртуальной машиной
Java (JVM). Плюсом JVM считается, полная независимость байтовых кодов
от ОС и оборудования, по этой причине данный продукт Java исполняется на
всяком устройстве, где присутствует соответствующая виртуальная машина.
Для разработки на языке Java существует огромное количество
интегрированных сред разработки. Примером являются:
1. Eclipse.
2.netbeans.
3. IntelliJ IDEA.
4. Jcreator.
Для разработки работы была избрана интегрированная среда
разработки Eclipse.
Платформа Eclipse в сочетании с JDT включает многие из
возможностей, которые включаются в коммерческие IDE: редактор с
подсветкой синтаксиса, инкрементальная компиляция кода,
потокобезопасный отладчик, навигатор по классам, менеджеры файлов и
проектов, а также интерфейсы к стандартным системам контроля исходных
текстов, таким как CVS и ClearCase.
Проект Eclipse представляет собой первую столь мощно
поддержанную мировым IT-сообществом попытку создания единой
открытой интегрированной платформы разработки приложений, обладающей
надежностью, функциональностью и уровнем качества коммерческого
продукта. Фактически данная платформа назначена для всего и ни для чего
конкретно: она представляет собой основу, которое имеет блочную
структуру и интегрирующую инструменты разработки ПО разных
4
производителей для создания приложений на любом языке, с применением
всяких технологий и для всякой программной платформы. Вокруг проекта
Eclipse в данное время сформировано сообщество крупнейших IT-компаний,
среди которых Borland, IBM, SAP AG, RedHat и другие.[2]
Также Eclipse предлагает множество уникальных возможностей,
например рефакторинг кода (http://www.refactoring.com) , автоматическое
обновление/установка кода (с помощью Менеджера Обновлений), список
текущих задач, отладку модулей с помощью JUnit (http://www.junit.org) и
интеграцию с инструментом компоновки Jakarta Ant
(http://jakarta.apache.org/ant/index.html).
Главные инструментальные средства Eclipse Java вводят в себя:
редактор исходного кода (создание и редактирование исходного текста
программ), средства отладки и интеграции с Ant.
В простейшем случае рабочее пространство (workspace) — это каталог
для проектов пользователя, в котором располагаются файлы проекта. Все,
что находится внутри этого каталога, считается частью рабочего
пространства.
Инструментальные средства Eclipse становятся доступны сразу после
запуска приложения. Это по существу сама платформа с набором разных
функциональных возможностей главного меню, где прежде всего выделяется
набор операций по управлению проектом. Фактическая обработка, как
правило, исполняется дополнениями (плагинами), например редактирование
и просмотр файлов проектов осуществляется JDT, и т. д.[3]
К инструментам (workbench) относится набор соответствующих
редакторов и представлений, размещенных в рабочей области Eclipse. Для
конкретной задачи определенный набор редакторов и представлений
называют перспективой или компоновкой.
Компоновка (perspective) — это набор представлений и редакторов,
расположенных в том порядке, который вам требуется. В каждой компоновке
присутствует свой набор инструментов, некоторые компоновки могут иметь
5
всеобщие наборы инструментов. В определенный момент времени активной
может быть только одна компоновка. Переключение между разными
компоновками осуществляется нажатием клавиш «Ctrl+F8» .
Применяя компоновки, можно настроить рабочее пространство под
определенный тип исполняемой задачи.
В Eclipse имеется также возможность создавать свои компоновки.
Открыть компоновку можно командой Window / Open Perspective.
Редакторы представляют собой программные средства, которые
позволяют осуществлять операции с файлами (создавать, открывать,
редактировать, сохранять и др.).
Представления по существу считаются дополнениями к редакторам,
где выводится информация сопроводительного или дополнительного
характера, как правило, о файле, находящемся в редакторе. Открыть
представления можно командой Window / Show View.
Проект (project) представляет собой набор файлов приложения и
сопутствующих дополнений. При работе с Java применяются в основном
файлы, которые имеютследующие расширения:. java,. jsp,. xml.
Дополнением (plug-in) называют приложение, которое дополнительно
может быть установлено в Eclipse. Примером дополнения может выступать
JDT.[4]
Мастер - это программное средство, которое помогает пользователю
в настройках и проведении сложной операции. В Eclipse имеется множество
разных мастеров, которые делают работу пользователя в системе удобной и
эффективной, беря часть рутинных операций на себя.
Системные требования
Eclipse разработана для широкого круга операционных систем, таких
как Linux, Microsoft Windows и Mac OS. Для ее запуска требуется JVM (Java
Virtual Machine) — виртуальная Java-машина, а также JDK (Java Development
Kit) — набор для Java-разработки.
Таблица 1 — Системные требования к среде разработки Eclipse
6
Требования Минимальное Рекомендуемое
значение значение
Версия Java 1.4.0 1.6.0 и выше
Оперативная память 128 Мб 1 Гб и выше
Свободное 300 Мб 1 ГБ и более
пространство на ЖД
Процессор 533 МГц 1,5 ГГц и более

Установка среды разработки Eclipse


На первой фазе происходит установка нужной версии библиотек
поддержки Java. Ее можно найти на eclipse.org.
После установки Java VM, переходим к установке Eclipse.
Переходим на страницу для скачивания файлов Eclipse
(http://www.eclipse.org/downloads/), затем выбираем последнюю готовую
(release) версию для нашей платформы. [1]
Поскольку Eclipse построен на Java, программное обеспечение
требует для выполнения Java Development Kit (JDK) — бесплатно
распространяемый компанией Oracle Corporation (ранее Sun Microsystems)
комплект разработчика приложений на языке Java, которое включает в себя
компилятор Java (javac), стандартные библиотеки классов Java, примеры,
документацию, разные утилиты и исполнительную систему Java (JRE). В
состав JDK не входит интегрированная среда разработки на Java, по этой
причине разработчик, использующий только JDK, вынужден применять
внешний текстовый редактор и компилировать свои программы, применяя
утилиты командной строки.
Рисунок 1 — Окно установки JDK
При первом запуске загрузчика Eclipse перед появлением самой среды
исполняется ряд завершающих установочных шагов (например, создание
директории workspace для хранения файлов проектов).
Рисунок 1.2 — Окно запуска Eclipse
7
Программы, которые разработаны на языке программирования Java,
можно разделить по своему назначению и функциональности на две большие
группы:
Самостоятельные программы (назовём их приложения Java),
работающие независимо на локальном компьютере.
Апплеты (applets), работающие в Internet.
Функциональные возможности языка JAVA
Кратко перечислим главные возможности языка Java.
Компоненты в окне аплета. В окне аплета можно размешать
следующие элементы управления Windows:
кнопки;
переключатели с независимой и зависимой фиксацией;
статические текстовые поля;
однострочные и многострочные поля редактирования текста;
списки;
полосы прокрутки.
Особенностью работы с элементами управления в Java считается то,
что их размещением в окне аплета занимается не программист, а специальная
настраиваемая система Layout Manager, для которой достаточно задать один
из пяти режимов работы.
1. Панели. В окне аплета можно создать несколько панелей на основе
класса Panel. При помощи этого можно организовать пользовательский
интерфейс, ввиду того, что объекты панели обладают уникальными
свойствами. Панель может содержать компоненты и иные панели, для всякой
панели можно определить свой режим размещения компонент.
2. Окна. Аплет Java может работать не только с собственным окном,
но также может создавать обыкновенные перекрывающиеся окна, которые
могут иметь меню, быть перемещаемыми и т. д. Можно создать два класса
окон: фреймы (обычные окна) и диалоговые окна.

8
3. Рисование в окне аплета. Аплет исполняет рисование в своём окне,
применяя методы класса Graphics, в котором целиком инкапсулированы
особенности аппаратной платформы. Для окна аплета создаётся объект
класса Graphics, ссылка на который передаётся методу Paint.
4. Растровые изображения. Рисование простых и анимированных
изображений считаетсяодним из самых распространённых применений
аплетов. Библиотеки классов Java содержат простые в применении средства,
которые предназначены для работы с растровыми изображениями форматов
GIF и JPEG: загрузки, масштабирования, создания на их базе анимационных
изображений.
5. Анимация. Аплеты Java предоставляют пользователю возможность
отображения небольших анимационных и видероликов на страницах Web —
сервера. Для этого нужно подготовить и разместить в каталогах Web сервера
файлы отдельных кадров фильма в формате GIF или JPEG. Аплет Java
загрузит эти изображения, после чего начнёт их поочерёдное отображение в
цикле. Данный цикл должен выполняться в отдельной задаче. [2]
6. Звук. Звуковые возможности аплетов Java ограничиваются
воспроизведением звуковых клипов, записанных только в файлах формата
AU (фирма Sun). Однако в Internet существует конвертеры для данного
формата (например, freeware программа GoldWave, доступная по адресу ftp.
winsite.com).
7. Взаимодействие между аплетами. Аплеты, которые расположены в
одном и том же документе HTML могут взаимодействовать между собой,
используя ссылки на иные аплеты, которые можно получить через интерфейс
AppletContext.
8. Обработка событий. Когда пользователь исполняет операции с
мышью или клавиатурой в окне аплета, возникают события, которые
передаются соответствующим методам класса Applet. Переопределяя эти
методы, можно организовать обработку событий, которые возникают в
процессе взаимодействия с мышью и клавиатурой [18, https://niscu.ru].
9
9. Реализация мультизадачности. Для создания мультизадачных
приложений Java необходимо использовать класс java. lang. Thread. В том
классе определены все методы, необходимые для создания задач, управления
их состоянием и синхронизации.
10. Работа с файлами. Хотя аплеты не имеют доступа к локальным
файлам, они могут обращаться к файлам, находящимся в каталогах WWW —
сервера. Библиотека классов языка Java содержит многочисленные средства,
которые предназначены для работы с файлами. Все взаимодействие
происходит через потоки следующих видов:[1]
стандартные потоки ввода и вывода,
потоки, которые связаны с локальными файлами,
потоки, которые связаны с файлами в оперативной памяти,
потоки, которые связаны с удалёнными файлами.
Сетевые приложения. Существует два аспекта сетевого
программирования на языке Java: доступ к файлам на WWW — серверах и
создание серверных и клиентских приложений с использованием сокетов.
Доступ к файлам осуществляет через потоки типа 7d и позволяет, например
пересылать необработанные данные с сервера на машину пользователя, а там
уже осуществлять их обработку и представление. Создание каналов между
приложениями Java с помощью сокетов открывает широкие возможности по
обработке информации по схеме клиент-сервер.
Описание классов и методов, использованных в программе
Класс ChatMessage
При установлении соединения через TCP фактически по сети
передаются байты.
Когда мы работаем между двумя приложениями Java, если оба имеют
доступ к тем же кодам, пересылаются объекты между двумя приложениями.
Serializable (cериализация) — это процесс сохранения состояния объекта в
последовательность байт; Deserializable (десериализация) — это процесс
восстановления объекта, из этих байт.
10
В данном приложении все сообщения, отправленные от сервера к
клиенту, имеют тип String, которая содержит само сообщение.
Класс Server
Класс Server отвечает за всю логику работы серверного приложения.
Можно запустить сервер введя: Java Server после предложения
консоли. Всё будет исполняться в консольном режиме и сервер будет ждать
соединения через порт 1500.
Для остановки сервера нужно использовать C.
Класс Client
Класс Client отвечает за всю логику работы клиентского приложения.
После запуска сервера можно запустить клиентское приложение,
введя:
Java Client на консольный порт. После этого запускается клиентское
приложение с именем пользователя Anonymous на локальном компьютере
через порт 880. Таким образом, команда эквивалентна;
Java Client Анонимные 880 локальный.
После того как приложение запустилось в консольном режиме можно
ввести:
Logout — выйти и закрыть соединение;
WHOISIN — чтобы получить список пользователей подключенных к
серверу;
Все остальное это сообщение, которое будет транслироваться, с
введённым именем пользователя, для всех клиентов чата.
Классы GUI
Для того, чтобы приложение выводилось на консоль, нужно три
класса. Остальные два класса (GUI) применяются в качестве дополнения, как
очень простой графический интерфейс пользователя.
GUI здесь простой графический интерфейс. Является как можно более
простым, без необычных шрифтов, цветов, иконок. Применяетеся класс
JTextArea.
11
Описание класса TextArea
С помощью класса TextArea можно создать многострочное поле
заданной ширины и высоты, снабженное полосами просмотра. Класс
TextArea создан на базе класса TextComponent, по этой причине для работы с
многострочными полями можно применять методы данного класса.
Краткое описание класса TextArea приведено ниже:
Конструкторы:
Создание поля без текста и без указания размеров public TextArea ();
Создание поля без текста с указанием размеров public TextArea (int
rows, int cols);
Создание поля с текстом без указания размеров public TextArea (String
text);
Создание поля с текстом и с указанием размеров public TextArea
(String text, int rows, int cols);
Создание поля TextArea.
Когда создается многострочное текстовое поле редактирования, то
можно употреблять конструктор, допускающий указание размеров поля в
строках и столбцах:
TextArea txt;
txt = new TextArea («Введите строку текста», 5, 35);
Созданное поле прибавляется в окно апплета методом add.
В классе TextArea есть методы для работы с блоками текста (вставка и
замена), а также методы, с помощью которых можно установить количество
строк и столбцов в поле редактирования.
Компонент JTextArea позволяет пользователям вводить и
редактировать несколько строк текста. Он прост в употреблении, но
позволяет работать только с неформатированными последовательностями
символов. Данный компонент не поддерживает стили, по умолчанию в нем
употребляется модель PlainDocument. Следовательно, данный компонент
ориентирован на обработку обыкновенного текста. JTextArea поддерживает
12
стандартные команды редактирования (конкретный набор команд зависит от
применяемого стиля).
Несмотря на то, что компонент JTextArea позволяет редактировать
текст, который состоит из нескольких строк, он не поддерживает прокрутку.
Если прокрутка необходима, следует поместить JTextArea в состав
JScrollPane. Именно в таком виде компонент JTextArea применяется в
большинстве приложений.[2]
Если не помещать текстовую область в состав панели с прокруткой,
необходимо указать при вызове конструктора число строк и столбцов. Если
компонент JTextArea включается в состав JScrollPane, размеры текстовой
области устанавливаются в соответствии с предпочтительными размерами
панели. При работе с компонентом JTextArea нужно учесть одну
особенность: если он используется без панели с прокруткой, то его размеры
будут увеличиваться с тем, чтобы в нем помещался весь введенный текст. В
результате возникнут проблемы с компоновкой. Это еще один аргумент в
пользу использования панели с прокруткой.
Компонент JTextArea не генерирует события действия. Набор
событий ограничивается теми, которые были унаследованы от
JTextComponent. В частности, при работе с данным компонентом возникают
события, связанные с текстовым курсором. Он также генерирует события
документа; это происходит при изменении модели. Для большинства
приложений достаточно обработчика событий текстового курсора. Более
того, работая с текстовой областью, можно вовсе отказаться от обработки
событий. Приложению достаточно извлекать текст по мере необходимости.
Подобно остальным текстовым компонентам, JTextArea считается
подклассом JTextComponent. Это обозначает, что при работе с данным
компонентом можно употреблять все методы, определенные в
JTextComponent. Можно извлечь содержимое текстовой области с помощью
метода getText (). Выделенный текст доступен посредством метода

13
getSelectedText (). Можно также выделять текст из программы, вызывая в
начале метод setCaretPosition (), а затем moveCaretPosition ().
Руководство пользователя
Запуск сервера
Начать нужно с запуска серверного приложения «Server» на одном из
компьютеров, подключенному к сети. Вводим номер порта 800 и нажимаем
кнопку «Start». Происходит подключение к серверу.
Рисунок 3.1 — Подключение сервера
Запуск клиентского приложения
После запуска серверного приложения запускаем клиентское «Client».
Вместо Anonymous прописывается имя пользователя, потом нажимаем
кнопку Login. О том, что подключение произошло будет выведена запись
типа: «Connection accepted localhost/127.0.0.1: 800» . [3]
Рисунок 3.2 — Подключение клиентского приложения
Запускаем следующее клиентское приложение от другого
пользователя. Посмотреть, кто подключён, можно при помощи кнопки «Who
is in». В текущих подключениях будет указанно число подключенных
пользователей, имя пользователей и время, дата их подключения.
Рисунок 3.3 — Текущие подключения
В итоге чат с сообщениями будет выглядеть приблизительно
следующим образом:
Рисунок 3.4 — Чат с обменом сообщениями
Выход из приложения осуществляется нажатием кнопки «Logout».
Появляется следующая запись: «Server has close the connection: java. io.
EOFException» .
Рисунок 3.5 — Выход из приложения
Для входа необходимо опять ввести имя пользователя и нажать
«Login» .
Функционал мессенджера для Андроид и iOS

14
Мессенджер (IM = Instant Messenger) - это программа, мобильное
приложение или веб-сервис для мгновенного обмена сообщениями.
Чаще всего под мессенджером понимают программу, в которую
пишут сообщения и где читают. Однако, за всякой такой программой стоит
сеть обмена сообщениями, которая тоже входит в понятие "мессенджер". Это
может быть сеть внутри вашей компании, а может быть глобальная сеть,
например Jabber.
По причине этого того, что этих сетей развелось довольно много,
отнюдь не все мессенджеры совместимы.
Нужно сказать, что понятие мессенджера уже давно не связывают
только с обменом текстовыми сообщениями. Сегодняшние мессенджеры уже
стали полноценными коммуникационными центрами, которые помимо
обмена сообщениями реализуют голосовую и видеосвязь, обмен файлами,
веб-конференции.
Наиболее знамениые мессенджеры - это WhatsApp, Viber, Facebook
Messenger, Skype, ICQ, Google Hangouts.
Для регистрации не применяется номер телефона.
При разработке регистрационного процесса мессенджера со всей
очевидностью стало понятно, что телефонный номер в качестве
идентификатора вообще не нужен и даже мешает.
Это приблизительно тоже самое чтобы делать так, чтобы какое-то
устройство поддерживало код Морзе, т. е. анахронизм в чистом виде.
Удивительно, но многие мессенджеры упорно продолжают
регистрировать по номеру телефона — видимо получить информацию о
владельце настолько значимо, что они мирятся со следующими проблемами:
Нет гарантированной доставки СМС по всем операторам.
Процент удачного приема СМС в среднем — 60-70% и это
неудивительно, т. к. имеется сотни стран, а в любой стране несколько
операторов и обеспечить работоспособность всякого роута достточно трудно.

15
Все крупные агрегаторы СМС (например Nexmo) вообще не
гарантируют доставку, а в такие страны как Афганистан например на
некоторых операторах вообще невозможно отправить СМС. На всякого
оператора у Nexmo несколько роутов и временами целые направления у
данногоагрегатора не работают неделями.
Таким образом, мессенджер не требует номера телефона владельца,
все что необходимо — выдумать логин, который проверяется на
уникальность и пароль.
Емайл при регистрации спрашивается только для того чтобы смогли
восстановить пароль. Т.е. если указывается неверный емайл или его не
подтвердить, то регистрация все равно произойдет, возможно восстановить
пароль если вы его забыли.
Мессенджер не требует доступа к записной книжке.
К сожалению, почти все знаменитые мессенджеры требуют доступ к
телефонной книге, одного номера телефона им недостаточно.
И люди не догадываются, насколько это может быть опасно.
Но недавний хайп вокруг приложения GetContact представляет что не
все так просто — уже слито более 2 млрд. номеров, причем слиты номера
тех, кто даже не устанавливал это приложение.
Стандартное шифрование
Мессенджер приеменяет стандартный протокол шифрования
TLS/SRTP. Шифруется все, в том числе аудио и видеозвонки.
В качестве простого независимого аудита можно сделать следующее
— включить параллельно аккаунту шлюз или IP телефон, который умеет
шифровать по TLS/SRTP и включить данную функцию — сервер поймет и
подхватит шифрование.
Безопасность и приватность.
Мессенджер получился более безопасный чем иные
разрекламированные мессенджеры, в главном благодаря той простой
причине, что мы не требуем номер и не требуем доступа к записной книжке.
16
Даже если представить гипотетический случай что удалась атака
MITM и удалось расшифровать сообщения, то будет совершенно непонятно
кому принадлежит переписка ибо нет самого главного — номера телефона и
нельзя идентифицировать стороны общения.
Общение только после одобрения запроса.
В мессенджере нельзя коммуницировать с пользователем, не отправив
запрос на начало общения и не получив разрешения у другой стороны.

17
Заключение

Java является современным языком для разработки приложений,


которая создается специально для распределенных сред. Java считается
простым объектно-ориентированным языком, которая не требует
длительного обучения программистов. Java считается знакомым языком
программирования, так как синтаксис Java во многом напоминает C++.
Средства безопасности, встроенные в Java, обеспечивают защиту как от
внешнего проникновения в файловую систему, так и от модификации кода
вирусами. Другими значимыми свойствами Java является независимость от
платформы, переносимость, многопоточность и динамическая сборка
программы.
В мессенджеры осуществлены все стандартные функции:
— текстовые чаты
— отправка аудио сообщений
— отправка файлов
— шеринг местоположения
— аудио/видео звонки
— групповые чаты без ограничения количества участников
Многопоточность встроена на уровень языковых примитивов.
Достаточно объявить некоторый метод синхронным, чтобы на время его
работы с объектами они автоматически блокировались. Снимается
блокировка также автоматически, независимо от того, нормально или
аварийно завершилась работа метода. Блокировки сделаны
реентерабельными, что исключает возможность зависания при повторном
блокировании объекта одним и тем же процессом.
В ходе выполнения работы был получен работающий программный
продукт, представляющий собой сетевое приложение — чат,
предназначенный для отправки, получения сообщений. Данное приложение
является очень простым в использовании.
18
Список литературы

1. Дейтел П., Дейтел Х., Уолд А. Android для разработчиков, 3-е


издание. Питер, 2019. – 512 с.
2. Джошуа Б. Java. Эффективное программирование. /
Издательство: Вильямс, 2019. – 464 с
3. Арнольд К., Д. Гослинг. Язык программирования Java;
4. Шилдт Г. – Java 8. Руководство для начинающих; М.,2020
5. Нотация Баркера. Теория экономических информационных
систем Игорь Викторович Миндалёв 2019 г. URL:
http://enisey.name/umk/teis.html ;

19