Автор работы: Пользователь скрыл имя, 10 Октября 2013 в 11:12, курсовая работа
В данном проекте рассмотрены технологии объектно-ориентированного языка программирования - Java и распределенной базы данных на Access ,а также Сетевые средства Java (протокол TCP/IP, InetAddress, дейтаграммы и
Клиентские и серверные сокеты ServerSocket и CliebtSocket которые были использованы для написания приложения на Java).
В практической части приведены примеры:
1) Пример Создание графического приложения « клиент-сервер » на Java.
2) Пример Взаимодействия распределенной базы данных на Access и Java.
Введение……………………………………………………………………………..2
1. Распределенные системы……………………………………………………….3
1.1 Промежуточная среда………………………………………………………….6
1.2 Программное обеспечение Распределенных систем……………………….7
1.3 Сетевые средства……………………………………………………………..10
2. Практическая часть…………………………………………………………….13
2.1 Описание……………………………………………………………………….13
2.2 Структура проекта…………………………………………………………13
2.2.1 Клиентская часть (файл SimplestAppClient.java)………………………13
2.2.2 Серверная часть (файл SimplestAppServer.java)……………………….18
2.3 Пользовательский интерфейс …………………………………………….21
3. Распределенные базы данных………………………………………………….22
3.1 Распределенная база данных на Access и Java……………………………….24
Заключение………………………………………………………………………….27
Список используемой литературы…………………………………
1.2 Программное
обеспечение Распределенных
Java — объектно-
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.
Идеи, заложенные в концепцию
и различные реализации среды
виртуальной машины Java, вдохновили
множество энтузиастов на расширение
перечня языков, которые могли бы быть
использованы для создания программ, исполняемых
на виртуальной машине.[21] Эти идеи нашли также выражение
в спецификации общеязыковой инфраструктурыCLI, заложенной в основу платформы .NET компанией Micro
.NET — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является исполняющая среда Common Language Runtime (CLR), способная выполнять как обычные программы, так и серверные веб-приложения. NET Framework поддерживает создание программ, написанных на разных языках программирования.
Считается, что платформа .NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит Oracle).
Хотя .NET является патентованной технологией корпорации Microsoft и официально рассчитана на работу под операционными системами семейства Microsoft Windows, но существуют независимые проекты (прежде всего это Mono и Portable.NET), позволяющие запускать программы .NET на многих других операционных системах.
Во время проходящей в тот день пресс-конференции Балмер заявил, что несмотря на огромные возможности домашних компьютеров, корпорация считает важным обеспечение гарантированной работы служб нового поколения и на устройствах, отличных от ПК. Что касается Гейтса, то аналитик компании Patricia Seybold Group Энн Томас Мейнс, проанализировав его слова, заявила о том, что компании будет полезен отход от ориентации исключительно на стационарные компьютеры и переход к разработке под мобильные устройства. По её оценке Гейтс провозгласил курс на переход к новой эре работы с компьютером, которая не будет жёстко привязана к Windows[2].
Ввиду небольшой мощности источников
питания мобильных устройств, хранение
и передача приложений должна осуществляться
серверами, тогда как на тот момент
практически вся
У Microsoft на тот момент было множество причин перехода к новой стратегии. Компания доминировала на рынке операционных систем и веб-браузеров, обладала множеством наработок в области ПО для Интернета, включая порталы MSN и WebTV, а также имела долю в компаниях, занимавшихся предоставлением ПО в прокат через Интернет. Кроме того, как позднее вспоминал Андерс Хейлсберг, у корпорации имелось множество различных (и зачастую несовместимых между собой) сред и технологий программирования, поскольку разработка инструментов для программистов была языкоориентированной, то есть для Visual Basic существовал свой набор приложений, а дляC++ — свой. Поэтому одной из целей разработки новой платформы, было объединение всех наиболее удачных наработок в рамках единой платформы и их унификация. Кроме того, ставилась задача следования всем актуальным тенденциям в области программирования на тот момент. Так, например, новая платформа должна была напрямую поддерживать объектно-ориентированность, безопасность типов, сборку мусора и структурную обработку исключений. Кроме того, корпорации необходимо было предоставить свой ответ набиравшей популярность платформе Java от Sun[3].
Согласно озвученным на тот момент планам, в них входила разработка новой версии операционной системы, а также новой версии среды разработки для программистов, которая была бы предназначена для разработки веб-ориентированных приложений. Кроме того, переведён на новую платформу должен был быть и Microsoft Office. Пол Моритц, вице-президент Microsoft, в качестве одной из будущих служб новой стратегии привёл в пример службу Passport, представлявшую собой электронный бумажник, позволяющий пользователям зарегистрировавшись однажды совершать онлайн-покупки без необходимости ввода на различных сайтах номеров кредитных карт и персональных данных. Тогда же, на конференции, Балмер привёл пример реализации новой стратегии, которая позволит пациентам решать множество их проблем через Интернет начиная чтением их медицинской карты и заканчивая оплатой счетов от врачей.
По словам Моритца, основой для новой стратегии компании послужила разработка Windows DNA 2000, представленная в сентябре 1999 года. Windows DNA 2000 объединила в себе новую версию СУБД SQL Server и новые программные инструменты для облегчения разработки веб-приложений.
Java поддерживает протокол TCP/IP, во-первых, расширяя свой интерфейс потоков ввода-вывода, описанного в предыдущей главе, и во вторых, добавляя возможности, необходимые для построения объектов ввода-вывода при работе в сети.
InetAddress.
Java поддерживает адреса абонентов, принятые в Internet, с помощью класса InetAddress. Для адресации в Internet используются служебные функции, работающие с обычными, легко запоминающимися символическими именами, эти функции преобразуют символические имена в 32-битные адреса.
Дейтаграммы.
Дейтаграммы, или пакеты протокола UDP (User Datagram Protocol) — это пакеты информации, пересылаемые в сети по принципу “fire-and-forget” (выстрелил и забыл). Если вам надо добиться оптимальной производительности, и вы в состоянии минимизировать затраты на проверку целостности информации, пакеты UDP могут оказаться весьма полезными.
UDP не предусматривает проверок и подтверждений при передаче информации. При передаче пакета UDP по какому-либо адресу нет никакой гарантии того, что он будет принят, и даже того, что по этому адресу вообще есть кому принимать такие пакеты. Аналогично, когда вы получаете дейтаграмму, у вас нет никаких гарантий, что она не была повреждена в пути или что ее отправитель все еще ждет от вас подтверждения ее получения.
Java реализует дейтаграммы
на базе протокола UDP, используя для этого
два класса. Объекты классаDatagramPacket представл
Сокеты “для клиентов”.
TCP/IP-сокеты используются для реализации надежных двунаправленных, ориентированных на работу с потоками соединений точка-точка между узлами Internet. Сокеты можно использовать для соединения системы ввода-вывода Java с программами, которые могут выполняться либо на локальной машине, либо на любом другом узле Internet. В отличие от класса DatagramSocket, объекты класса Socket реализуют высоконадежные устойчивые соединения между клиентом и сервером.
В пакете java.net классы Socket и ServerSocket сильно отличаются друг от друга. Первое отличие в том, что ServerSocket ждет, пока клиент не установит с ним соединение, в то время, как обычный Socket трактует недоступность чего-либо, с чем он хочет соединиться, как ошибку. Одновременно с созданием объекта Socket устанавливается соединение между узлами Internet. Для создания сокетов вы можете использовать два конструктора:
Из объекта Socket в любое время можно извлечь информацию об адресе Internet и номере порта, с которым он соединен. Для этого служат следующие методы:
После того, как объект Socket создан, им можно воспользоваться для того, чтобы получить доступ к связанным с ним входному и выходному потокам. Эти потоки используются для приема и передачи данных точно так же, как и обычные потоки ввода-вывода, которые мы видели в предыдущей главе:
Приведенный ниже очень простой пример открывает соединение с портом 880 сервера “timehost” и выводит полученные от него данные.
Сокеты “для серверов”
Как уже упоминалось ранее, Java поддерживает сокеты серверов. Для создания серверов Internet надо использовать объекты класса ServerSocket. Когда вы создаете объект ServerSocket, он регистрирует себя в системе, говоря о том, что он готов обслуживать соединения клиентов. У этого класса есть один дополнительный метод accept(), вызов которого блокирует подпроцесс до тех пор, пока какой-нибудь клиент не установит соединение по соответствующему порту. После того, как соединение установлено, методaccept() возвращает вызвавшему его подпроцессу обычный объект Socket.
Два конструктора класса ServerSocket позволяют задать, по какому порту вы хотите соединяться с клиентами, и (необязательный параметр) как долго вы готовы ждать, пока этот порт не освободится.
2. Практическая часть
Пример 1.
Создание графического приложения « клиент-сервер » на Java.
2.1 Описание:
В данном приложении было рассмотрено создание двух графических интерфейсов пользовательского и клиентского на основе сокетов Socket(InetAddress. getLocalHost(), portnumber), с помощью которых можно обмениваться сообщениями.
Для обмена сообщениями пользователь вводит сообщение в специальное поле и нажимает кнопку отправить и сервер получает сообщение, также можно выполнить аналогичные действия и на сервере.
2.2 Структура проекта:
2.2.1 Клиентская часть (файл SimplestAppClient.java)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.AbstractButton;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
public class simplestAppClient {
static JButton jb=new JButton("Новый элемент");
//Вектор которым обмениваются клиент и сервер
static Vector vect1 =new Vector();
static JEditorPane je=new JEditorPane();
public static class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
jb = (JButton)evt.getSource();
Socket client = null;
ObjectOutputStream outputStream = null;
ObjectInputStream inputStream = null;
int portnumber = 1213;
for (int i=0; i < 13; i++) {
try {
try {
// Создание клиентского сокета
client = new Socket(InetAddress.
}
System.out.println("Клиентский сокет создан " + client);
// Создание выходного потока для клиентского сокета
OutputStream clientOut = client.getOutputStream();
//Создание входного потока для клиентского сокета
InputStream clientIn = client.getInputStream();
outputStream = new ObjectOutputStream(client.
//Добавление нового объекта к массиву
if(!vect1.contains(je.getText(
vect1.add(je.getText());
Информация о работе Технологии объектно-ориентированного языка программирования - Java