GeoSELECT.ru



Программирование / Реферат: Java технологія и основні риси та перспективи застосування (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Java технологія и основні риси та перспективи застосування (Программирование)



Java технологія. Основні риси та перспективи застосування.

Зміст.
|Походження Java. |2 |
|Безпечність. |2 |
|Ефективність. |3 |
|а) прозорість інтерфейсів; | |
|б) легкість програмування; | |
|Об’єктно-орієнтована спрямованість. |4 |
|Стійкість до помилок. |4 |
|Підтримка багатопоточності. |5 |
|Незалежність від архітектури. |5 |
|Переваги інтерпретованості в поєднанні з високою продуктивністю. |6 |
|Розподіленість. |6 |
|Доступність інструментарія. |7 |
|Перспективи застосування |7 |
|Резюме. |20 |
|Джерела інформації. |21 |

.


Походження Java.


Мова програмування Java зародилася в 1991р. в лабораторіях компанії
Sun Microsystems inc. Як не дивно, поштовхом для створення Java стала
зовсім не Internet. Головним мотивом була потреба в мові програмування, яка
не залежала б від платформи ( тобто від архітектури ) і яку можна було б
використовувати для створення програмного забезпечення, яке вбудовується в
різноманітні побутові електронні прилади, такі як мобільні засоби зв’язку,
пристрої дистанційного управління тощо. Розробка першої робочої версії
зайняла 18 місяців і вона мала назву «Oak», але 1995 р. проект був
перйменований на «Java».
Період становлення Java співпав за часом з розквітом міжнародної
інформаційної служби World Wide Web. Ця обставина відіграла вирішальну роль
в иайбутньому Java, оскільки Web теж вимагала переносимих програм. Як
наслідок, були зміщені акценти в розробці Sun з побутової електроніки на
програмування для Internet.


Безпечність.



World Wide Web висунула Java на передній край програмування, і Java,
в свою чергу, сильно вплинула і навіть змінила обличчя Internet, розширивши
спектр об’єктів, які можуть розповсюджуватись у кіберпросторі. Програми
нової форми - аплети - завантажуються з віддаленого сервера і можуть
запускатися динамічно, тобто без участі користувача. До появи Java такий
підхід був неприпустимий з міркувань безпеки та переносимості. В
архітектурі аплетів зроблено ряд штучних обмежень, які роблять їх цілком
безпечними. Перш за все, Java є інтерпретованою мовою і простір ресурсів
Java-програми обмежений так званою віртуальною Java-машиною (VJM), яка може
конторолювати поведінку програми і захищати систему від побічних ефектів,
які можуть виникати з вини аплета. Крім того, в мові Java є додаткові
обмеження, які не дозволять аплету стати «троянським конем». Зокрема, Java-
аплет не може отримати доступ до локального жорсткого диску. При такій
спробі генерується виключна ситуація.


Ефективність.


Оскільки аплети Java інтерпретуються, а не компілюються, то їх
виконання на різних платформах значно полегшується. В цьому випадку
достатньо створити для кожної платформи виконуючу Java-систему. Якщо існує
така система для даної операційної системи, то будь-яка Java-програма може
виконуватись в даному середовищі без додаткової компіляції на цій
платформі. Проте Java не є інтерпретованою мовою в чистому розумінні.
Програма на Java компілюється. Результатом роботи компілятора Java є
байткод (bytecode). Байткод - це оптимізований набір команд, призначений
для виконання уявним пристроєм - віртуальною Java-машиною. В такий спосіб
витрати на інтерпретацію зводяться до мінімуму, оскільки байкод вже є
оптимізованим, і досягається досить висока продуктивність Java-програм.
Наведені вище особливості дають підставу розглядати Java не як ще одну мову
програмування, а як окрему інформаційну технологію. Таким чином,
інтерпретація - це найлегший шлях до перенесення програм, реалізований в
Java технології. Незважаючи на те, що мова Java була розроблена в
розрахунку на інтерпретацію, технічно немає нічого такого, що б
перешкоджало компіляції байткоду в виконуваний код. До байткоду, який
пересилається по мережі, застосовується динамічна компіляція, але це ніяк
не впливає на переносимість та безпеку, оскільки роботу програми все ще
контролює виконуюча система. Такий підхід застосовано в багатьох виконуючих
системах Java, що забезпечує продуктивність на рівні оптимізованого коду
С++.
Мова Java є однією з наймолодших в сімействі мов програмуваня і була
розроблена з розрахунку на те, щоб професійний програміст міг легко її
опанувати та ефективно використовувати. За основу Java взятий синтаксис С++
- безсумнівно однієї з найбільш популярних мов програмування сучасності.
Проте, Java - це цілком самостійна мова програмування, і при її створенні
не йшлося про будь-яку сумісність з С++. Тому деякі механізми реалізовані в
Java інакше, а деякі зовсім відсутні. Ідеологічно ж Java побудована дещо
інакше ніж С++. Розробники Java грунтувалися на досвіді розробки програм на
С++ і прагнули позбутися можливостей, які зарекомендували себе непевними.
Так, в Java відсутня перегрузка операторів а також автоматичне приведення
несумісних типів - конструкції, які при неуважному використанні є джерелом
важких для виявлення помилок. Взагалі, інтерфейси Java більш прості та
прозорі для розуміння. Написати на Java програму з графічним інтерфейсом
значно легше. Звичайно, простота інтерфейсів компенсується меншою
гнучкістю, бібліотека Java не така багата, як стандартні бібліотеки С/С++.
Але згадаймо, що Java задуманий для використання на різних платформах і
тому реалізує в собі найбільш стандартні можливості задля легшої адаптації
під конкретне середовище.


Об’єктно-орієнтована спрямованість.


Від С++ Java успадкувала потужний механізм об’єктно-орієнтованого
програмування. Оскільки Java розроблювався «на пустому місці», тобто не
було потреби забезпечувати сумісність з попередніми версіями, розробники
мали повну свободу мислення. В результаті був сформований ясний і
прагматичний підхід до об’єктів. Вільно переймаючи ідеї, які
реалізовувалися протягом останніх десятирічь, мові Java вдалося знайти
рівновагу між парадигмою «все є об’єктом» і прагматичним підходом. Об’єктна
модель Java проста і легко розширюється, в той час як просі типи, як цілі,
зберігаються як дані, що не є об’єктами, що дозволяє значно підвищити
швидкість при їх обробці.


Стійкість до помилок.


Багатоплатформеність середовища Web висуває надзвичайно високі вимоги
до надійності програм. Як наслідок, при розробці Java приорітет був
відданий можливості створення стійких до помилок програм. Java звільняє
програміста від хвилювань з приводу багатьох поширених причин, які
викликають помилки програмування. Як вже згадувалося, Java є строго
типіованою мовою програмування. Ще виконуюча система Java бере на себе
«прибирання сміття», тобто автоматично звільняє пам’ять, яка була
розподілена динамічно. Звичайно, це дещо знижує ефективність коду, але
запобігає типових помилок, коли програміст забуває звільнити виділену
пам’ять, або, навпаки, звільняє пам’ять, яка ще використовується. Java
підтримує об’єктно-орієнтовану обробку виключних ситуацій подібно до С++.
Але на відміну від С++ в Java обробка виключних ситуацій є обов’язкувою.
Тобто неможливо скомпілювати програму, яка відкриває файл, не обробивши
можливі помилки типу «файл не знайдено», які виникають при цьому. Добре
написана Java-програма може сама обробляти всі помилки часу виконання.


Підтримка багатопоточності.


Java розробляялася з орієнтацією на вимоги до створення інтерактивних
програм, які працюють з мережею. З цією метою Java підтримує багатопоточне
програмування, яке дозволяє легко розробляти програми, що викинують багато
процесів одночасно. Виконання Java-програми засновано на елгантному, але в
той самий час високоорганізованому рішенні багатопроцесової синхронізації,
яке дозволяє вам створювати високоефективні інтерактивні системи.


Незалежність від архітектури.


Основним питанням для розробників Java стало питання довготривалості
та переносимості. Одна з головних проблем, із якою зустрілися програмісти,
полягала в відсутності гарантій того, що написана сьогодні програма завтра
працюватиме з тим же успіхом, причому на тій самій машині. Оновлення
операційної системи, модернізація процесора та зміна об’єму оперативної
пам’яті можуть призвести до збою програми. Рощзробники Java, прагнули
змінити цю ситуацію і прийняли декілька важких рішень відносно мови Java та
процесу виконання Java-програми. Їх мета полягала в тому, щоб «одного разу
написане працювало всюди, в любий час і завжди». Внаслідок цього Java є
системою, яка легко розширюється за рахунок створення нових стандартних
класів та бібліотек.


Переваги інтерпретованості в поєднанні з високою продуктивністю.


Як вже згадувалось, Java дозвляє створювати незалежні від платформи
програми шляхом компіляції в проміжне представлення, яке називається
байткодом. Багато попередніх спроб зпроб знати розв’язок проблеми
незалежності від платформи були зроблені за рахунок продуктивності.
Інтерпретуючі системи, подібні до BASIC, Perl, страждають на майже
неподоланний дефіцит продуктивності. Це було враховано при створенні Java..
Незважаючи на те, що Java є інтерпретованою мовою, генерація байткодів була
ретельно оптимізована в такий спосіб, щоб одержуваний байткод можна було
легко перекладати в машинний код, який працює з дуже високою
продуктивністю. Виконуючі системи такого роду не втрачають жодних переваг
переносимого коду.


Розподіленість.


Мова Java призначена для створення програм, які працюють в
розподіленому середовищі Internet на базі протоколів TCP/IP. Насправді
доступ до ресурсів за допомогою URL відрізняється від доступу к файлу. Крім
того в Java наявний засіб передачі повідомлень в межах внутрішнього
адресного простору. Це дозволяє забеспечити віддалене виконання процедур.
Ці інтерфкйси включені у пакет RMI (remote metod invocation). Цей засіб
привносить високий рівень абстракції в програмування дл я середовища
клієнт/сервер.
Java-програми несуть у собі значний обсяг інформації про типи часу
виконання (run-time type information), яка використовується для дозволу
доступу до об’єктів під час роботи програми. Це дозволяє забезпечити
безпечну та оптимальну динамічну компоновку. В такий спосіб досягається
захищеність середовища виконання аплетів.


Доступність інструментарію та ефективність розробок.


Зазначена вище простота програмування на Java є причиною того, що
розробки на Java коштуватимуть дешевше аналогічних на більш потужніх мовах
програмування. Цьому ж сприяє і переносимість програм на Java, оскільки
ліквідуються витрати пов’язані з адаптацією програми на конкретній
платформі. До того ж інтегровані програми-оболонки для розробки Java
програм коштують набагато дешевше ( 70-100$ ) ніж аналогічні продукти C++,
Delphi ( ~1000$). А набір інструментарію для пакетної компіляції Java
програм JDK (Java Development Kit) є взагалі freeware. Тому платформу Java
можна рекомендувати як ідеальну для створення некомерційних програмних
продуктів, зокрема для галузі освіти.


Перспективи застосування.


Програми на Java можуть знайти різне застосування в навчальному процесі:
інтерактивні навчаючі програми (HTML в поєднанні з Java), програми-тести і
особливо ділові ігри. Додаткові переваги можна отримати, якщо пистати ці
програми у вигляді аплетів, які ініціалізуються з Web сервера внутрішньої
мережі Intranet. В такий спосіб можна уникнути інсталяції програми на
багатьох комп’ютерах - користувач просто запускає Web-броузер і загружає
потрібну сторінку. Для тестових програм, написаних на Java з викориситанням
архітектури клієнт/сервер можна підвищити ступінь конфіденційності. База
даних тестових запитань знаходиться на сервері в каталозі з обмеженим
доступом. Коли користувач загружає аплет, він автоматично підключається до
програми-сервера, яка виконується на сервері і може видавати запитання з
бази даних у відповідь на запит користувача. В такий спосіб
унеможливлюється викрадення бази даних, за умови відсутності фізичного
доступу до серверу у користувачів.
Окреме питання - навчальні ділові ігри. Під такою грою розумітимем
гру, за участю кількох користувачів, в якій мається на увазі динамічний
обмін інформацією між ними. Система безпеки Java накладає обмеження,
внаслідок якого аплет може встановлювати з’єднання лише з хостом, з якого
він був загружений і ні з яким більше. Але це обмеження легко обходиться:
на сервері виконується програма-сервер, з якою з’єднуються усі клієнти і
через яку здійснюється обмін інформацією. Таким чином така програма повинна
мати архітектуру клієнт/сервер. В якості приклада наведу спрощену chat-
програму. В ній реалізовані базові засоби для створення ділової гри.
Серверна частина програми взята з книги Нотон П. Шилдт Г. «Полный
справочник по Java»:-Киев, «Диалектика», 1997 і є практично універсальною
для програм такого класу. Можливе легке доопрацювання цієї програми в бік
розширення кількості протокольних команд. Клієнтська частина була написана
мною. Програма працює наступним чином: користувач запускає аплет із
сервера, вводить свій ідентифікатор і бачить перелік ідентифікаторів
користувачів, які під’єднані до сервера. Після чого користувач має змогу
обмінюватись повідомленнями з іншими. Користувач одержує повідомлення в
разі під’єднання або від’єднання користувачів.
Програма складається з 4 класів: Server, ClientConnection, Client та
ServerConnection. Перші 2 класи відносяться до серверної частини, другі 2 -
до клієнтської.
Клас Server:
import java.net.*;
import java.io.*;
import java.util.*;

public class Server implements Runnable {
private int port = 6564;
private Hashtable idcon = new Hashtable();
private int id = 0;
static final String CRLF = "rn";

synchronized void addConnection(Socket s) {
ClientConnection con = new ClientConnection(this, s, id);
id++;
}

synchronized void set(String the_id, ClientConnection con) {
idcon.remove(the_id) ;
con.setBusy(false);
Enumeration e = idcon.keys();
while (e.hasMoreElements()) {
String id = (String)e.nextElement();
ClientConnection other = (ClientConnection) idcon.get(id);
if (!other.isBusy())
con.write("add " + other + CRLF);
}
idcon.put(the_id, con);
broadcast(the_id, "add " + con);
}

synchronized void sendto(String dest, String body) {
ClientConnection con = (ClientConnection)idcon.get(dest);
if (con != null) {
con.write(body + CRLF);
}
}

synchronized void broadcast(String exclude, String body) {
Enumeration e = idcon.keys();
while (e.hasMoreElements()) {
String id = (String)e.nextElement();
if (!exclude.equals(id)) {
ClientConnection con = (ClientConnection) idcon.get(id);
con.write(body + CRLF);
}
}
}

synchronized void delete(String the_id) {
broadcast(the_id, "delete " + the_id);
}

synchronized void kill(ClientConnection c) {
if (idcon.remove(c.getId()) == c) {
delete(c.getId());
}
}

public void run() {
try {
ServerSocket acceptSocket = new ServerSocket(port);
System.out.println("Server listening on port " + port);
while (true) {
Socket s = acceptSocket.accept();
addConnection(s);
}
} catch (IOException e) {
System.out.println("accept loop IOException: " + e);
}
}

public static void main(String args[]) {
new Thread(new Server()).start();
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
}
}
}

Цей невеликий клас реалізує програму-сервер. Точка вхолу програми - функція
main. В програмі створюється головний потік, в якому створюється об’єкт
стандартного класу ServerSocket. Цей об’єкт приєднується до певного порта і
в циклі здійснюється перевірка на підключення клієнта до порта. В разі
такого підключення створюється об’єкт типу ClientConnection, в якому
реалізований потік по опитуванню сокета, до якого підключений клієнт, та
обробка протокольних команд. Клас Server є універсальним і нічого не знає
про повідомлення, якими обмінюються гравці (клієнти). В ньому реалізоване
лише приєднання/від’єднання клієнтів, надсилання строки певному клієнту та
функція broadcast яка, як зрозуміло з назви, надсилає повідомлення усім
зареєстрованим клієнтам.
Клас ClientConnection:
import java.net.*;
import java.io.*;
import java.util.*;

class ClientConnection implements Runnable {
private Socket sock;
private DataInputStream in;
private OutputStream out;
private String host;
private Server server;
private static final int bufsize = 8192;
private byte buffer[] = new byte[bufsize];
private static final String CRLF = "rn";
private String name = null;
private String id;
private boolean busy = false;

public ClientConnection(Server srv, Socket s, int i) {
try {
server = srv;
sock = s;
in = new DataInputStream(s.getInputStream());
out = s.getOutputStream();
host = s.getInetAddress().getHostName();
id = "" + i;

// tell the new one who it is...
write("id " + id + CRLF);

new Thread(this).start();
} catch (IOException e) {
System.out.println("failed ClientConnection " + e);
}
}

public String toString() {
return id + " " + host + " " + name;
}

public String getHost() {
return host;
}

public String getId() {
return id;
}

public boolean isBusy() {
return busy;
}

public void setBusy(boolean b) {
busy = b;
}

public void close() {
server.kill(this);
try {
sock.close(); // closes in and out too.
} catch (IOException e) {
}
}

public void write(String s) {
byte buf[] = new byte[s.length()];
s.getBytes(0, buf.length, buf, 0);
try {
out.write(buf, 0, buf.length);
} catch (IOException e) {
close();
}
}

private String readline() {
try {
return in.readLine();
} catch (IOException e) {
return null;
}
}

static private final int NAME = 1;
static private final int QUIT = 2;
static private final int TO = 3;
static private final int DELETE = 4;

static private Hashtable keys = new Hashtable();
static private String keystrings[] = {
"", "name", "quit", "to", "delete"
};
static {
for (int i = 0; i < keystrings.length; i++)
keys.put(keystrings[i], new Integer(i));
}

private int lookup(String s) {
Integer i = (Integer) keys.get(s);
return i == null ? -1 : i.intValue();
}

public void run() {
String s;
StringTokenizer st;
out:
while ((s = readline()) != null) {
st = new StringTokenizer(s);
String keyword = st.nextToken();
switch (lookup(keyword)) {
default:
System.out.println("bogus keyword: " + keyword + "r");
break;
case NAME:
name = st.nextToken() +
(st.hasMoreTokens() ? " " + st.nextToken(CRLF) : "");
System.out.println("[" + new Date() + "] " + this + "r");
server.set(id, this);
break;
case QUIT:
break out;
case TO:
String dest = st.nextToken();
String body = st.nextToken(CRLF);
server.sendto(dest, body);
break;
case DELETE:
busy = true;
server.delete(id);
break;
}
}
close();
}
}

Клас ClientConnection реалізує обмін інформацією з конкретним клієнтом. В
ньому зберігається об’єкт класу Socket, до якого приєднаний цей клієнт, та
створюється потік, в якому здійснюється періодична спроба читати з сокета.
Якщо ця спроба завершується успіхом, тобто надійшло повідомлення від
клієнта, це повідомлення аналізується і здійснюється відповідна реакція.
Для здіснення цієї реакції викликаються методи класу Server, об’єкт якого
передається класу ClientConnection в якості параметра конструктора. Крім
того в цьому класі є метод, який здійснює безпосереднє надсилання
інформації до клієнта. Коли серверу потрібно надіслати інформацію
конкретному клієнтові, він викликає цей метод.
клас Client:

import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.applet.*;

public class Client extends Applet {
private ServerConnection server;
private String serverName;
private boolean single = false;
private boolean seen_pass = false;
private boolean name_set = false;
private String name;
private String others_name;
private Panel topPanel;
private Label prompt;
private TextField namefield;
private Button done;
private TextField chatfield;
private List idList;
private TextArea dialogArea;

public void init() {
setLayout( new BorderLayout() );
serverName = getCodeBase().getHost();
if (serverName.equals(""))
serverName = "localhost";
prompt = new Label("Enter id:");
namefield = new TextField(30);
topPanel = new Panel();
topPanel.setBackground(new Color(255, 255, 200));
topPanel.add(prompt);
topPanel.add(namefield);
add("North", topPanel);
idList = new List(10, false);
add("West", idList );
dialogArea = new TextArea();
dialogArea.setEditable( false );
add("Center", dialogArea );
}

public void start() {
try {
showStatus("Connecting to " + serverName);
server = new ServerConnection(this,serverName);
server.start();
showStatus("Connected: " + serverName);
} catch (Exception e) {
single = true;

}
}

public void stop() {
if (!single)
server.quit();
}

void add(String id, String hostname, String name) {
delete(id); // in case it is already there.
idList.addItem("(" + id + ") " + name + "@" + hostname);
}

void delete(String id) {
for (int i = 0; i < idList.countItems(); i++) {
String s = idList.getItem(i);
s = s.substring(s.indexOf("(") + 1, s.indexOf(")"));
if (s.equals(id)) {
idList.delItem(i);
break;
}
}
if (idList.countItems() == 0)
showStatus("Wait for other players to arrive.");
}
private String getName(String id) {
for (int i = 0; i < idList.countItems(); i++) {
String s = idList.getItem(i);
String id1 = s.substring(s.indexOf("(") + 1, s.indexOf(")"));
if (id1.equals(id)) {
return s.substring(s.indexOf(" ") + 3, s.indexOf("@"));
}
}
return null;
}


void chat(String id, String s) {
dialogArea.appendText(id + ": " + s+ "n");//append
showStatus(id + ": " + s);
}


void quit(String id) {
showStatus(id + " just quit.");
delete(id);
}

private void nameEntered(String s) {
if (s.equals(""))
return;
System.out.println(s);
name = s;
if( !single )
{
server.setName(name);
showStatus("Wait for other players to arrive.");
}
prompt.setText("You say:");
name_set = true;

}

public boolean action(Event evt, Object arg) {
System.out.println("a");
if(evt.id == Event.ACTION_EVENT)
if (evt.target == namefield){
if( name_set ){
dialogArea.appendText(name + ": " + namefield.getText()+"n");
if(!single)
server.sendTo((String)arg, idList.getSelectedItem());
}
else nameEntered((String)arg);
namefield.setText("");
}

return true;
}
}

Цей клас є розширенням класу Applet, отже є аплетом. В цьому класі
створюється об’єкт класу ServerConnection, через якій здійснюється обмін
інформацією з сервером. Графічний інтерфейс цього класу представляє 3
області: поле вводу, в яке спочатку вводиться ім’я користувача, а потім -
повідомлення, адресовані іншим клієнтам, список клієнтів, в якому треба
обирати адресата, та текстова область в якій відбивається текст діалога.
Метод action реалізує обробку події вводу тексту в область вводу. Методи
add, delete, chat, nameEntered, quit є реакцією на наступні події:
підключення нового клієнта, зникнення клієнта, надходження повідомлення від
клієнта, ідентифікація та вихід. Ці методи визиваються класом
ServerConnection при надходженні відповідних повідомлень, або ж всередині
аплета, якщо джерелом події є сам клієнт.

клас ServerConnection:
import java.io.*;
import java.net.*;
import java.util.*;

class ServerConnection implements Runnable {
void sendTo(String s, String id)
{
if( id!= null )
out.println("to "+id+" "+s);
}
private static final int port = 6564;
private static final String CRLF = "rn";
private DataInputStream in;
private PrintStream out;
private String id, toid = null;
private Client client;

public ServerConnection(Scrabblet sc, String site) throws IOException {

Socket server = new Socket(site, port);
in = new DataInputStream(server.getInputStream());
out = new PrintStream(server.getOutputStream(), true);
}
public ServerConnection( Client c,String site) throws IOException {
client = c;
Socket server = new Socket(site, port);
in = new DataInputStream(server.getInputStream());
out = new PrintStream(server.getOutputStream(), true);
}

private String readline() {
try {
return in.readLine();
} catch (IOException e) {
return null;
}
}

void setName(String s) {
out.println("name " + s);
}

void delete() {
out.println("delete " + id);
}

void setTo(String to) {
toid = to;
}

void send(String s) {
if (toid != null)
out.println("to " + toid + " " + s);
}

void chat(String s) {
send("chat " + id + " " + s);
}


void quit() {
send("quit " + id); // tell other player
out.println("quit");
stop();
}

private Thread t;

void start() {
t = new Thread(this);
t.start();
}

void stop() {
t.stop();
}

private static final int ID = 1;
private static final int ADD = 2;
private static final int DELETE = 3;
private static final int CHAT = 4;
private static final int QUIT = 5;
private static Hashtable keys = new Hashtable();
private static String keystrings[] = {
"", "id", "add", "delete","chat",
"quit"
};
static {
for (int i = 0; i < keystrings.length; i++)
keys.put(keystrings[i], new Integer(i));
}

private int lookup(String s) {
Integer i = (Integer) keys.get(s);
return i == null ? -1 : i.intValue();
}

public void run() {
String s;
StringTokenizer st;
while ((s = readline()) != null) {
st = new StringTokenizer(s);
String keyword = st.nextToken();
switch (lookup(keyword)) {
default:
System.out.println("bogus keyword: " + keyword + "r");
break;
case ID:
id = st.nextToken();
break;
case ADD: {
String id = st.nextToken();
String hostname = st.nextToken();
String name = st.nextToken(CRLF);
client.add(id, hostname, name);
}
break;
case CHAT: {
String from = st.nextToken();
client.chat(from, st.nextToken(CRLF));
}
break;
case QUIT: {
String from = st.nextToken();
client.quit(from);
}
break;
}
}
}
}

Цей клас є дзеркальним відображенням класу ClientConnection. Але він більш
тісно переплетений з класом Client. В ньому реалізований потік, який опитує
сокет, через який клієнт під’єднано до сервера, здійснює аналіз надходячих
повідомлень та викликає потрібні методи класу Client. Крім того в ньому є
методи, які викликаються класом Client для відсилання інформації на сервер.
Ця програма легко може бути модифікована в напрямку розширення
кількості протокольних команд та ускладнення клієнта за рахунок додавання
специфічних реакцій на нові команди. В класі ClientConnection може бути
ускладнена реакція на під’єднання клієнта. Наприклад, клієнту може
видаватися інформація про початкові умови гри. Таким чином наведена
програма може служити скелетом для створення більш складних. Можна дещо
урізати класи Client та ServerConnection, залишивши в них лише базові
функції з тим, щоб потім розширювати їх шляхом механізму об’єктного
успадкування.


Резюме.


Таким чином Java технологія є дуже перспективною для застосквання в
розробках неокомерційного спрямування. Обмеженість інструментарію Java не
проявляється в проектах невеликого обсягу і з лихвою компенсується
простотою програмування розподілених програм, які працюють з мережею
Internet/Intranet . Переносимість Java програм спрощує обмін навчальними
програмами між різними навчальними закладими, відкрииває можливість
сумісних розробок та створення стандартних навчальних програм, наприклад
для шкіл. Крім того, дуже привабливою з точки зору ефективності,
залишається ідея втілення в навчальних закладах мережевих комп’ютерів
(Network Computers), які працюють на базі Java, замість звичних
персональних комп’ютерів (Personal Computers). На останок можна згадати про
те що Java добре підтримує національні абетки, оскільки розроблялася для
інтернаціональної мережі Internet. Ця обставина теж є важливою рисою в
умовах України.



Джерела інформації:

1. http://www.sun.com/ Специфікація мови програмування Java.
2. Нотон Патрик, Шилдт Герберт. Полный справочник по Java.: Пер. с англ.: -
К.: Диалектика, 1997.
3. Страуструп Бьярн. Язык программирования С++.: Пер. с англ.: - К.:
ДиаСофт, 1993.
4. Магические зерна Sun. COMPUTER WORLD Киев, №29-30 (19 августа 1998)
с.10.
5. Ціни на програмні продукти. ( По матеріалам Hot-line).




Реферат на тему: Java-технологии, обзор инструментальных разработок и анализ рыночной ситуации
Уфимский государственный авиационный технический университет



Факультет ИРТ
Кафедра ПСИ



Реферат.
Тема:
Java-технологии. Обзор инструментальных разработок. Анализ рыночной
ситуации.



Проверила Кизина И.Д.
Выполнила Булатова Р.М.
Гр. САПР-506



Уфа-98

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

Приоритеты развития Java

Отправной точкой при создании очередного поколения программного
инструментария разработки на Java послужило представление в конце 1996г. и
окончательный выпуск компанией JavaSoft в начале февраля 1997г. новой
версии 1.1 базового средства – комплекта JDK (Java Development Kit). Этот
своего рода манифест партии Ява содержал обновлённую версию языка, которая
должна была упростить составление надёжных распределённых программ.
Основными новшествами в JDK 1.1 по сравнению с предыдущей версией оказались
средства работы с национальными кодировками, улучшенный оконный интерфейс,
интерфейс для взаимодействия с базами данными, средства связи с другими
языками и библиотека механизмов защиты. Названные усовершенствования, как
мы увидим далее, стали и указателями на приоритеты развития инструментов
Java.
Если, как это уже принято, разделить Java-разработчиков на Web-
мастеров, в основном использующих апплеты, и создателей профессиональных
программ на данном языке, то 1997 год принес больше новостей именно
последним. Уже в апреле на конференции JavaOne, своего рода съезде
сторонников Java, SunSoft анонсировала платформу Java Platform for
Enterprise, куда, помимо JDK 1.1, должны были войти ряд корпоративных
программных интерфейсов, а также расширенная специально для программ уровня
предприятия компонентная модель JaveBeans (под названием Enterprise Java
Beans). Кстати, ряд программных интерфейсов успел появиться в течение 1997
года. Концепция Java Beans как ключевой технологии многократного
использования кода при разработке полноценных программ на Java уделялось,
куда большее внимание, чем в 1996 году. Ведь именно эта концепция, а не
сам язык Java составляет конкуренцию знаменитой объектной концепции ActiveX
корпорации Microsoft. Летом 1997 года фирма Sunsoft представила первую
реализацию следующей версии JavaBeans под кодовым названием Glasgow. Данная
версия, также её прямая наследница - 3 версия, известная в настоящее время
как Edinburgh, по мнению экспертов, должны быть развиты до уровня модели
COM корпорации Microsoft.
Ещё один принципиальный вопрос, касающийся развития Java-технологий,- это
проблема «частной собственности » на Java. В целом резонные требования
Microsoft о передаче всех спецификаций независимой организации для
дальнейшего развития Java стали одной из причин очень серьёзного конфликта
между Sun и Microsoft, так или иначе затронувшего всех разработчиков. В
ноябре 1997г. страны – члены международной организации по стандартизации
(ISO), на плечи которой, по некоторым предположениям, и должна была лечь
дальнейшая забота о Java, проголосовали за предоставление компании JavaSoft
эксклюзивного контроля над Java.


Обзор конкретных инструментов


Поговорим о конкретных инструментах. Первое, что бросается
в глаза: практически весь инструментарий – это системы графического
программирования класса RAD. Указанная тенденция, наметившаяся ещё в 1996г.
с выходом Visual Cafe для Windows 95 и Windows NT, стала доминировать
абсолютно. Java, таким образом оказался значительно более RAD-восприимчивым
, чем его знаменитый прародитель С++. К числу лидеров в результате
субъективного анализа публикаций можно, скорее всего, отнести Visual J++,
Visual Cafe для Windows и Java Workshop для платформы Solaris. Кроме того,
по результатам исследования рынка, предпринятого Microsoft и
опубликованного в газете Computer Reseller News в апреле 1997г., из почти
400 тыс. человек, программирующих на Java (для сравнения: на С++
программируют около 1, млн., на Visual Basic – более 3 млн. человек), 27%
используют Java Workshop, 25% используют Visual J++ и 18% - Visual Cafe.
Заметной тенденцией 1997 г. вполне можно считать выпуск целой серии
специализированных продуктов, обеспечивающих доступ из Java-программ к
базам данных, что стало прямым следствием включением в JDK1.1 спецификации
JDBC. Характерно, что над соответствующими интерфейсами работали как
известные производители самих баз данных, так и фирмы, традиционно
занимающиеся созданием программного инструментария. Прежде всего, обратим
внимание на то, что все представленные инструменты в той или иной степени
содержат средства для работы с базами данных. К апрелю 1997 г. фирма Oracle
вместе с IBM и Tandem подготовили предварительную спецификацию J/SQL
ориентированную на достижение совместимости с языком структурированных
запросов SQL в программах для баз данных. Тем временем Informix
разрабатывала собственный API-интерфейс Universal Java, чтобы включить его
в свой инструментарий 4-го поколения под названием New Era, а также в
JWorks – новое ПО разработки на Java.
Вместе с тем содержащий достаточно мощные средства работы с БД пакет
Visual Cafe Pro, первые поставки которого относятся к началу 1997 г., к
осени вышел в новой редакции – Visual Cafe for Database Development
Edition, предназначенный для Java-программ реляционных баз данных. К числу
явно ориентированных на работу с БД Java-программ можно отнести и систему
Fresco фирмы Infoscape, к бета тестированию которой приступили в начале
1997 г. Наконец, в сентябре 1997 г. Sun анонсировала продукт Java Blend для
доступа к реляционным и объектно-ориентированным БД из Java-программ без
использования специальных языков типа SQL.
Однако наиболее существенным событием стало появление развитых
возможностей графического программирования доступа к БД в средствах
разработки, изначально ориентированных на создание крупных корпоративных
программ. К последним относятся Vibe Enterprise 1.0 фирмы Visix Software
или Apptivity Developer фирмы Apptivity, появившиеся в первой половине 1997
г. Оба продукта ценой в пределах нескольких тысячах долларов явно
свидетельствует об относительной зрелости Java-технологий уже на этот
момент. К «корпоративному» классу принадлежат также Visual Age for Java и,
конечно же, JBuilder.
Внимание, уделённое в спецификации JDK 1.1 безопасности при
построении коммерческих Java-программ, также не осталось без для
разработчиков формальным призывом. Многие компании откликнулись на него,
понимая, что ограничение записи на диск клиентской машины, заложенное в
саму идею построения Java, не есть решение проблемы. В марте 1997 г.
компания Data Security Dynamics предложила JSAFE – одно из первых средств
защищённых Java-программ в Интернете, использующие алгоритмы шифрования
данных с открытым ключом при передаче их по каналам Интернета. Средство
цифровой подписи, гарантирующее целостность данных при передаче, было
включено в Visual J++1.1. Наконец, на конференции JavaOne в апреле 1997г.
JavaSoft объявила о планах выпуска системы Cripto Toolkit, позволяющей с
помощью единого API строить защищённые программы. Кстати говоря, в
следующей версии JDK1.2 основное внимание, по утверждению JavaSoft, будет
уделено именно вопросам безопасности.
С решением проблемы построения пользовательского интерфейса
средствами высокого уровня, затронутой в спецификации JDK1.1, оказались
связаны две библиотеки Java-классов, выпущенные соответственно корпорацией
Microsoft и фирмой Sun в содружестве с Netscape Communications. Достаточно
лишь назвать эти компании, чтобы сразу стало понятным, что названные
инфраструктурные дополнения к средствам разработки, по всей видимости,
должны сыграть определяющую роль не только в технологическом, но и в
политическом противостоянии конкурентов, на примирение, которых пока нет
даже слабого намёка. Библиотека AFC, о готовности которой MicroSoft
сообщила весной 1997г. на выставке Software Developer West, содержит
средства, облегчающие создание профессионально оформленного графического
интерфейса пользователя и работу со средствами мультимедиа. По утверждению
Microsoft, эта библиотека полностью подготовлена на Java и способна
исполняться на любой платформе.
Ответом Sun и Netscape был выпуск осенью 1997 г. аналогичной
библиотеки JFC, вобравшей в себя достоинства соответствующих наборов Java-
классов IFC (Internet Foundation Classes) и AWT (Abstract Windows Toolkit),
уже имевшихся в арсенале двух фирм. Несмотря на то, что представители Sun
подчёркивают не стратегическое, а чисто утилитарное значение JFC, масса
аналитиков не без оснований отводит данной библиотеке решающую роль в битве
за контроль над Java-разработками. Microsoft уже успела заявить, что JFC не
поставляется и не будет поставляться вместе с Internet Explorer (IE) 4.0. А
это значит, что, хотя во многих продуктах 1997г. и предусмотрены средства
работы с AFC и JFC, могут возникнуть проблемы с выполнением распределённых
многоплатформных программ, составленных с использованием JFC.
Не которые фирмы начинают поставлять Java-инструментарий в комплексе
со средствами разработки на других языках под общей крышей единой
интегрированной среды. Классические примеры – главный инструментальный
пакет фирмы Microsoft 1997 г. Visual Studio 97, где с Java объединились
С++, Visual Basic 5.0, Fox Pro и некоторые другие продукты, а также пакет
CodeWarrior Gold 11 компании Metrowerks, в котором инструментальные
средства, по мнению некоторых пользователей ещё сильней интегрированы.
Примеры оказались заразительными. Осенью об аналогичном намерении объявила
Powersoft, имеющая теперь в своём арсенале, помимо Java-инструмента PowerJ,
прекрасно зарекомендовавший себя классический инструментарий. Примерно в то
же время фирма Haht Software приступила к бета-тестированию средства
разработки Hahtside, позволяющего работать с Java и Visual Basic в единой
среде.
Если для 1996г. было характерно появление Java-компиляторов для
различных платформ, то 1997г. ознаменовался выпуском всевозможных
конверторов исходного текста программ и специальных технологий, позволяющих
использовать в Java-программах наработки, составленные на других языках. В
качестве примера , Visual J++1.1 оснащён конвертором для преобразования
апплет в компоненты ActivX. На не раз уже упоминавшейся конференции JavaOne
были представлены по крайней мере два продукта, дающие разработчикам на
Visual Basic возможность переносить свои программы на язык Java. Было
объявлено, что средства конвертирования Applet Designer Visual Basic-to-
Java фирмы Tvobject, согласно договору с фирмой Asymetrix, будут
предлагаться в качестве дополнения к среде SuperCede Java/ ActivX Edition и
DataBase Edition. Фирма Halcyon сообщила о намерении выпустить продукт под
названием VBIX для преобразования программ на Visual Basic в двоичный Java-
код. На той же конференции фирма Roug Wave Software представила две
библиотеки – Serialize.h++1.0 и Jtools2.0 – C++ и Java-классов
соответственно. Они позволяют организовать двунаправленный обмен
вызовами из программ, составленных на С++ и Java. Ещё один заметный
продукт TwinPeaks, представленный совместно фирмами Sun и Ilog Software,
реализует технологию С++ Bridging, дающую разработчикам серверного ПО на
языке Java возможность использовать программы на С++, не переписывая
текста. Наконец, компания Futjitsu Software предложила разработчикам
компилятор NetCobol, автоматически транслирующий программы на Коболе в Java-
апплеты и приложения. По мнению специалистов, появлению таких продуктов
приведёт к скорейшей ассимиляции Java в сообществе программистов.

«Банда четырёх» против Microsoft

Средства разработки как таковые составляют лишь чисто техническое
наполнение программной индустрии, будучи необходимым инструментом, но уж
никак не определяющим фактором при оценке рыночных перспектив готовых
продуктов.
Наиболее важным событием 1997г. в политическом смысле стало
образование в марте на конференции Internet World альянса четырёх фирм –
IBM, Oracle, Netscape и Sun, назвавших себя «бандой четырёх» (The Gang of
Four). Компании объявили о совместной поддержке протокола Internet InterORB-
Protocol (IIOP), составляющего часть CORBA, в своих инструментальных
средствах разработки. Эта инициатива должна облегчить реселлерам построение
единых распределённых объектно- ориентированных программ инструментальными
средствами четырёх компаний. Ело в том, что, согласно заявлению JavaSoft, в
планируемом к выпуску в 1998 г. комплекте JDK1.2 низкоуровневый механизм
дистанционного вызова отдельных функций Java (под названием RMI – Remote
Method Invocation), включённый в ныне действующую спецификацию JDK1.1 будет
реализован поверх протокола CORBA/IIOP. Это означает, что JavaSoft
полностью отказывается от собственного метода создания посредника запросов
к объектам, на основе которого в настоящее время строится RMI, а будущие
распределённые Java-программы должны соответствовать спецификации
взаимодействия сетевых объектов CORBA. Данное объединение,
«антимайкрософтовской» направленности которого никто не скрывал, стало
планомерным и организованным выступлением против объектной технологии DCOM
корпорации Microsoft, что для 1996 г. было как раз нехарактерно. В 1997 г.
намеченные альянсом планы частично были выполнены.
Компания Oracle в 1997 г. превратилась, можно сказать, из нейтральной
по отношению к Java в его активную сторонницу. Одним из этапов её движения
в сторону Java стало лицензирование технологии Builder, включающей языком
С++ и Java, у фирмы Borland, причём решающий выбор именно в пользу Builder
был сделан якобы именно по причине её более полного соответствия концепции
JavaBeans. На конференции JavaOne фирма Oracle продемонстрировала пакет
Developer/2000 1.4, способный конвертировать разработанные в нём программы
в Java-апплеты. Сразу же после этого в начале мая 1997 г. она выпустила Web
Application Server, совместимый с протоколами CORBA и IIOP, - наиболее
важный компонент её межплатформенной архитектуры NCA (Networking Computing
Architecture). Позже на конференции Open World Oracle представила стратегию
выпуска средств разработки сетевых программ для Java. Эта стратегия, по
словам представителей фирмы, должна затронуть следующие версии
Developer/2000 и Designer/2000, а также некий новый инструмент,
предназначенный исключительно для разработки Java-программ и построенный
как раз на основе вышеупомянутой лицензии.
Самый крупный поставщик программного обеспечения на мировом рынке –
корпорация IBM, наиболее ревностно взявшаяся за поддержку Java ещё в1996
г., в течение 1997г. сохранила приверженность ему. В июле IBM выпустила на
рынок коммерческую версию пакета Visual Age for Java с мощными средствами
реализации JavaBeans, как раз и нацеленную на разработку будущих программ
на базе открытых стандартов, за которые так ратует союз четырёх. Кстати
говоря, уже в сентябре 1997 г. отделение IBM Восточная Европа/Азия начало
весьма активную работу по продвижению этого продукта на российский рынок.
Что касается весьма амбициозного проекта (San Francisco) формирования
библиотек Java-классов для самых разнообразных программ деловой сферы, над
которым IBM работает в союзе с несколькими десятками других фирм, то
информация о ходе его выполнения в течение 1997 г. была весьма скудной.
Однако известно, что работа над проектом продолжается.
Компания Netscape, тоже на конференции JavaOne, выступила в не совсем
привычной для себя роли, представив набор средств разработки, позволяющий
работать с апплетами Java, компонентами JavaBeans, объектами CORBA и
сценариями JavaScript.
Фирма Sun в начале 1997 г. выпустила Internet WorkShop – среду
разработки программ клиент- сервер для Интернета – и основанную на CORBA
среду подготовки распределённых объектов и управления ими NEO2.0. В
Internet Workshop входят, в частности, Java WorkShop и Visual WorkShop C++.
Весь этот инструментарий также служит вкладом в общее дело, затеянное
«бандой четырёх». Речь пока не идет о классических средствах разработки, но
может случиться так, что Sun, Netscape, IBM и Oracle действительно образуют
боевое каре и, шагая в ногу, начнут организованное наступление на
Microsoft.
Нельзя обойти вниманием и ещё две очень известные фирмы, вовлечённые
в Java-лихорадку в 1997 г. Это Powersoft и, в особенности, Borland. В 1996
г. они не принимали сколь-нибудь заметного участия в развитии данного
сектора рынка, если не считать выпуска небольшого расширения для Java-
программирования в Borland C++5.0. Зато в 1997 г. не только были выпущены
две версии JBuilder (Standard и Professional) , но и стало известно, что
данный продукт в дальнейшем будет объединен с вышеупомянутым проектом San
Francisco. Фирма Borland, лицензировала технологию Builder компании Oracle
и, в свою очередь, в начале 1997 г. приобрела лицензию на программу
посредник запросов к объектам VisiBroker for Java фирмы Visigenic (а в
ноябре и саму фирму), что позволит разработчикам Jbuilder связывать объекты
распределённых программ, используя протокол IIOP. Всё это свидетельствует,
что испытывающая трудности, но в то же время очень авторитетная компания,
специализирующаяся исключительно на средствах разработки, оказалась в 1998
г. в значительной степени привязана к идеологии построения программ,
проповедуемой «великолепной четвёркой».

Действия Microsoft
Ещё в декабре 1996 г. SunSoft заявила, что виртуальная машина Java,
разработанная Microsoft для Windows, не удовлетворяет соответствующей
спецификации. Выпуск Visual J++ в марте 1997г. в составе пакета Visual
Studio 97 в некотором роде усугубил ситуацию. Широко разрекламированная
способность данного продукта интегрировать технологии JavaBeans и ActiveX,
имеющаяся, казалось бы, и в других средствах разработки, была воспринята
основной частью компьютерного сообщества, как попытка искусственно
привязать Java к платформе Windows. Иными словами, получалось, получалось,
что Microsoft мошенничает, выпуская суррогат для Java, принимающий облик
Java лишь на платформе Windows. Ничего не подозревающие разработчики для
Windows, коих в мире множество должны были по замыслу Microsoft, создать
большое количество соответствующих программ, используя «фиктивный » Java,
прежде чем вскроются проблемы с его переносимостью на другие платформы.
Субъективное недоверие, сидящее в крови у многих профессионалов
компьютерного бизнеса, подкреплялось и объективными факторами.
Дело в том, что компания Билла Гейтса на протяжении 1997 г. так и не
присоединилась к программе сертификации 100% Pure Java фирмы JavaSoft,
позволяющей, по утверждению самой JavaSoft, гарантировать полную
межплатформенную переносимость. В интервью, данном одним из ведущих
менеджеров корпорации Microsoft журналу Communication Week ещё в начале
1997 г., говорилось, что все средства разработки, в том числе и JVM для
Windows, успешно прошли все тесты Sun на совместимость с Java. Было также
заявлено, что Microsoft просто не пригласили к участию в инициативе 100%
Pure Java, а отказ от участия в ней – выдумка Sun. Вместе с тем директор по
маркетингу продукции фирмы JavaSoft Дэвид Спенхофф на страницах газеты
LanTimes, назвав небезызвестную библиотеку классов AFC несоответствующей
Java-спецификации, недвусмысленно призывал Microsoft представить её на
тестирование по программе 100% Pure Java. Позже, однако, ответственные
работники Microsoft на страницах других изданий декларировали невозможность
присоединиться к Pure Java из-за того, что эта программа, целиком
контролируемая Sun, не может быть истинным стандартом.
В следующие месяцы ситуация не улучшалась. Объявленная в апреле 1997
г. предварительная 4-ая версия Java-машины никак не повлияла на развитие
конфликта. Летом Microsoft представила новую технологию J/Direct как
добавление к виртуальной машине Java, поставляемой вместе с IE4.0. данная
технология даёт возможность получать доступ из Java-программ напрямую к
функциям программного интерфейса Windows. Microsoft трактует её как некое
расширение, позволяющее свободно манипулировать вызовами функций, которые в
настоящее время отсутствуют в Java. Таким образом, если схематично
представить виртуальную машину в виде некоторого изолирующего слоя, то
J/Direct – не что иное, как дыра в этой изоляции.
Компьютерная пресса, ещё в начале года публиковавшая весьма
положительные отзывы о том же Visual J++, все чаще и откровенно начала
называть J/Direct и прочие приобретения Microsoft в отношении Java опасным
искушением для разработчиков. Редакция американские газеты PCWeek во второй
половине года весьма недвусмысленно призвала разработчиков никогда не
использовать различные расширения Java, предлагаемые Microsoft для Windows.
Тем временем конфликт усугубился и зашёл настолько далеко, насколько
это вообще возможно. Осенью 1997 г. Sun подала на Microsoft в суд.
Официальная претензия состояла в том, что IE4.0 не прошёл тестов на
совместимость, а следовательно, Microsoft не имеет никакого права на
использование логотипа Java/.
Тактической победой Microsoft в перманентной борьбе против
конкурентов в 1997 г. стало превращение день ото дня крепнущей компании
Apple в своего союзника. Ещё на конференции JavaOne в апреле фирмы
Microsoft и Metrowerks объявили о создании виртуальной Java-машины для
MacOS. Соглашение между двумя компаниями, состоявшееся в августе, помимо
покупки корпорацией Microsoft акций Apple на 150 млн. долл.,
предусматривало принятие последней IE в качестве стандартного броузера на
Macintosh, а также тесное сотрудничество в области Java-технологий,
предполагающее, в частности, поддержку библиотеки AFC для Macintosh/
соглашение, по мнению экспертов, вывело Apple из лагеря, руководимого Sun и
Netscape.
Тем не менее, не смотря на такие факторы, как возникшая и уже утихшая
эйфория по поводу Java, выпуск инструментария, успевшего менее чем за два
года выйти на самый «крутой » корпоративный уровень, способность этого
языка всколыхнуть самые высшие эшелоны компьютерного рынка, многие по
прежнему без всякой формальной оговорки называют Java – технологией во
младенчестве. Значит, надо полагать, что основные события впереди.
Основные средства разработки для Java, выпущенные в 1997 г.

|Продукт |Фирма-изгото|Платформа |Ключевые особенности |Месяц |Примерна|
| |витель |разработки | |выпуска |я цена |
|Visual J++ |Microsoft |Windows |Объединенная среда |Март |100$ |
| | | |разработки с Visual | | |
| | | |C++ 5.0 | | |
|Jbuilder |Borland |Windows |Мастер-функции для |Март, |100$ |
| | | |построения |ноябрь |800$ |
| | | |компонентов JavaBeans| |2500$ |
| | | | | | |
| | | |Мощные средства | | |
| | | |работы с БД | | |
|PowerJ |Sybase |Windows |Среда разработки |Сентябрь|2000$ |
| | | |унаследована от | | |
| | | |Optima ++ Возможность| | |
| | | |встраивания в | | |
| | | |программы компонентов| | |
| | | |JavaBeans и ActiveX | | |
|SuperCedeJava|Asymetrix |Windows |Возможность отладки |Январь |100$ |
| | | |программ без | | |
| | | |повторной компиляции | | |
|SuperCedeJava|Asymetrix |Windows |Конвертер Java-кода |Май |200$ |
|/ActiveX | | |Использование | | |
| | | |компонентов ActiveX | | |
|Visual Age |IBM |Windows, |Визуальный |Июль |1500$ |
|for Java | |OS/2 |построитель логики | |100$ |
| | | |программ | | |
| | | |Среда групповой | | |
| | | |разработки | | |
|Visual Cafe |Symantec |Macintosh |Мощная визуальная |Январь |200$ |
|for Macintosh| | |среда разработки. | | |
| | | |Среда drag-and-drop | | |
|Visual Cafe |Symantec |Windows |Мощные средства |Сентябрь|500$ |
|DataBase | | |работы с БД | | |
|Developer | | | | | |
|Edition | | | | | |
|Parts for |Object Share|Windows |Средства |Апрель |100$ |
|Java 2.0 | | |drag-and-drop и | | |
| | | |совместимость с | | |
| | | |технологией Cobra | | |
|Java WorkShop|Sun |Windows, |Мощные средства |Март |100$ |
|2.0 | |Solaris, |компиляции и | | |
| | |HP-UX, |оптимизации кода | | |
| | |UnixWare | | | |



Литература

1. PC Magazin/Russian Edition, 3/98
2. PC Magazin/ Russian Edition, 2/98
3. PCWeek/Russian Edition, 19/27
4. ComputerWeekly, 33/98




Новинки рефератов ::

Реферат: Международный коммерческий арбитражный суд (Право)


Реферат: Культура Галицько-Волинського князівство (История)


Реферат: Гладкий Лавров - учебник географии 10 класса - население - 30 тестов (География)


Реферат: Картофель (как важная кормовая и техническая культура) (Доклад) (Сельское хозяйство)


Реферат: "Career in hotel industry" (Иностранные языки)


Реферат: Мотив (Социология)


Реферат: Иностранная интервенция на Европейском Севере России (Государство и право)


Реферат: Ответы к государственным экзаменам для эколого-биологического факультета ПетрГУ (Биология)


Реферат: Владимиро-суздальское искусство (История)


Реферат: Менеджмент человеческих ресурсов (Менеджмент)


Реферат: Роль микроэлементов в обменных процессах растений и на накоплении ими биологически активных веществ (Реферат (обзор литературы) () WinWord 97) (Биология)


Реферат: Олимпийские игры 1908 года (Физкультура)


Реферат: Борис Чайковский - путь в искусстве (Искусство и культура)


Реферат: Оперативное запоминающее устройство (Программирование)


Реферат: Основні правила безпеки під час обслуговування електроустановок (Безопасность жизнедеятельности)


Реферат: Мое любимое время года в творчестве русских поэтов (Литература : русская)


Реферат: Витамины и питание (Спорт)


Реферат: Конфликты и методы их урегулирования (Психология)


Реферат: Технология работы социального педагога с семьёй (Педагогика)


Реферат: Холмогорская резьба по кости (Искусство и культура)



Copyright © GeoRUS, Геологические сайты альтруист