Технологии объектно-ориентированного языка программирования - Java

Автор работы: Пользователь скрыл имя, 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 файл

GPT KURSA4.docx

— 1.40 Мб (Скачать файл)

 

1.2 Программное  обеспечение Распределенных систем.

 

  Java — объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем, приобретённой компанией Oracle). Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска —23 мая 1995 года.

  Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинство подобного способа  выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

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

  • применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
  • широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
  • аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

  По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

Идеи, заложенные в концепцию  и различные реализации среды  виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине.[21] Эти идеи нашли также выражение в спецификации общеязыковой инфраструктурыCLI, заложенной в основу платформы .NET компанией Microsoft.

  .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].

Ввиду небольшой мощности источников питания мобильных устройств, хранение и передача приложений должна осуществляться серверами, тогда как на тот момент практически вся пользовательская информация и ПО хранились на стационарных компьютерах локально. Тогда идея перехода к «сервероцентрической» модели имела крепкую поддержку среди руководителей крупнейших IT-компаний. Так, например, Скотт МакНилли, глава Sun Microsystems объявил о приобретении компании офисного ПО, конкурировавшего с Microsoft Office, для перехода к сервер-клиентскому ПО[2].

У Microsoft на тот момент было множество причин перехода к новой стратегии.     Компания доминировала на рынке операционных систем и веб-браузеров, обладала множеством наработок в области ПО для Интернета, включая порталы MSN и WebTV, а также имела долю в компаниях, занимавшихся предоставлением ПО в прокат через Интернет. Кроме того, как позднее вспоминал Андерс Хейлсберг, у корпорации имелось множество различных (и зачастую несовместимых между собой) сред и технологий программирования, поскольку разработка инструментов для программистов была языкоориентированной, то есть для Visual Basic существовал свой набор приложений, а дляC++ — свой. Поэтому одной из целей разработки новой платформы, было объединение всех наиболее удачных наработок в рамках единой платформы и их унификация. Кроме того, ставилась задача следования всем актуальным тенденциям в области программирования на тот момент. Так, например, новая платформа должна была напрямую поддерживать объектно-ориентированность, безопасность типов, сборку мусора и структурную обработку исключений. Кроме того, корпорации необходимо было предоставить свой ответ набиравшей популярность платформе Java от Sun[3].

  Согласно озвученным на тот момент планам, в них входила разработка новой версии операционной системы, а также новой версии среды разработки для программистов, которая была бы предназначена для разработки веб-ориентированных приложений. Кроме того, переведён на новую платформу должен был быть и Microsoft Office. Пол Моритц, вице-президент Microsoft, в качестве одной из будущих служб новой стратегии привёл в пример службу Passport, представлявшую собой электронный бумажник, позволяющий пользователям зарегистрировавшись однажды совершать онлайн-покупки без необходимости ввода на различных сайтах номеров кредитных карт и персональных данных. Тогда же, на конференции, Балмер привёл пример реализации новой стратегии, которая позволит пациентам решать множество их проблем через Интернет начиная чтением их медицинской карты и заканчивая оплатой счетов от врачей.

  По словам Моритца, основой для новой стратегии компании послужила разработка Windows DNA 2000, представленная в сентябре 1999 года. Windows DNA 2000 объединила в себе новую версию СУБД SQL Server и новые программные инструменты для облегчения разработки веб-приложений.

1.3 Сетевые средства.

 

   Java поддерживает протокол TCP/IP, во-первых, расширяя свой интерфейс потоков ввода-вывода, описанного в предыдущей главе, и во вторых, добавляя возможности, необходимые для построения объектов ввода-вывода при работе в сети.

  InetAddress.

  Java поддерживает адреса абонентов, принятые в Internet, с помощью класса InetAddress. Для адресации в Internet используются служебные функции, работающие с обычными, легко запоминающимися символическими именами, эти функции преобразуют символические имена в 32-битные адреса.

 

  Дейтаграммы.

  Дейтаграммы, или пакеты протокола UDP (User Datagram Protocol) — это пакеты информации, пересылаемые в сети по принципу “fire-and-forget” (выстрелил и забыл). Если вам надо добиться оптимальной производительности, и вы в состоянии минимизировать затраты на проверку целостности информации, пакеты UDP могут оказаться весьма полезными.

UDP не предусматривает  проверок и подтверждений при  передаче информации. При передаче  пакета UDP по какому-либо адресу  нет никакой гарантии того, что  он будет принят, и даже того, что по этому адресу вообще есть кому принимать такие пакеты. Аналогично, когда вы получаете дейтаграмму, у вас нет никаких гарантий, что она не была повреждена в пути или что ее отправитель все еще ждет от вас подтверждения ее получения.

  Java реализует дейтаграммы на базе протокола UDP, используя для этого два класса. Объекты классаDatagramPacket представляют собой контейнеры с данными, a DatagramSocket — это механизм, используемый при передаче и получении объектов DatagramPacket.

 

  Сокеты “для клиентов”.

 

  TCP/IP-сокеты используются для реализации надежных двунаправленных, ориентированных на работу с потоками соединений точка-точка между узлами Internet. Сокеты можно использовать для соединения системы ввода-вывода Java с программами, которые могут выполняться либо на локальной машине, либо на любом другом узле Internet. В отличие от класса DatagramSocket, объекты класса Socket реализуют высоконадежные устойчивые соединения между клиентом и сервером.

  В пакете java.net классы Socket и ServerSocket сильно отличаются друг от друга. Первое отличие в том, что ServerSocket ждет, пока клиент не установит с ним соединение, в то время, как обычный Socket трактует недоступность чего-либо, с чем он хочет соединиться, как ошибку. Одновременно с созданием объекта Socket устанавливается соединение между узлами Internet. Для создания сокетов вы можете использовать два конструктора:

  • Socket(String host, int port) устанавливает соединение между локальной машиной и указанным портом узла Internet, имя которого было передано конструктору. Этот конструктор может возбуждать исключения UnknownHostException и IOException.
  • Socket(InetAddress address, int port) выполняет ту же работу, что и первый конструктор, но узел, с которым требуется установить соединение, задается не строкой, а объектом InetAddress. Этот конструктор может возбуждать только IOException.

  Из объекта Socket в любое время можно извлечь информацию об адресе Internet и номере порта, с которым он соединен. Для этого служат следующие методы:

  • getInetAddressQ возвращает объект InetAddress, связанный с данным объектом Socket.
  • getPort() возвращает номер порта на удаленном узле, с которым установлено соединение.
  • getLocalPort() возвращает номер локального порта, к которому присоединен данный объект.

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

  • getInputStream() возвращает InputStream, связанный с данным объектом.
  • getOutputStream() возвращает OutputStream, связанный с данным объектом.
  • close() закрывает входной и выходной потоки объекта Socket.

Приведенный ниже очень  простой пример открывает соединение с портом 880 сервера “timehost” и выводит полученные от него данные.

 

  Сокеты “для серверов”

 

Как уже упоминалось  ранее, Java поддерживает сокеты серверов. Для создания серверов Internet надо использовать объекты класса ServerSocket. Когда вы создаете объект ServerSocket, он регистрирует себя в системе, говоря о том, что он готов обслуживать соединения клиентов. У этого класса есть один дополнительный метод accept(), вызов которого блокирует подпроцесс до тех пор, пока какой-нибудь клиент не установит соединение по соответствующему порту. После того, как соединение установлено, методaccept() возвращает вызвавшему его подпроцессу обычный объект Socket.

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

  • ServerSocket(int port) создает сокет сервера для заданного порта.
  • ServerSocket(int port, int count) создает сокет сервера для заданного порта. Если этот порт занят, метод будет ждать его освобождения максимум count миллисекунд.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.getLocalHost(), portnumber);

                                    } catch (IOException ex) {

            }

         System.out.println("Клиентский сокет создан " + client);

 // Создание выходного потока для клиентского сокета

 OutputStream clientOut = client.getOutputStream();

                //Создание входного потока для клиентского сокета

  InputStream clientIn = client.getInputStream();

 outputStream = new ObjectOutputStream(client.getOutputStream());

//Добавление нового объекта  к массиву

      if(!vect1.contains(je.getText())){

                     vect1.add(je.getText());

Информация о работе Технологии объектно-ориентированного языка программирования - Java