Файл: История возникновения и развития языка программирования Си (С++) и Java..pdf
Добавлен: 31.03.2023
Просмотров: 288
Скачиваний: 2
После проведения всех подготовительных работ была организована конференция SunWorld. Предполагалось, что это будет короткое информационное объявление, так как главная цель этого мероприятия – UNIX-системы. Однако все произошло не так, как планировалось.
Известно, что в день конференции, после длинных и сложных переговоров, Sun подписывает важнейшее соглашение. Вторая сторона – компания Netscape, основанная в апреле 1994 года Джеймсом Кларком (он уже сыграл роль в судьбе OaK два года назад, когда перехватил предложение от Time Warner) и Марком Андриссеном (создателем NCSA Mosaic). Эта компания стала лидером рынка браузеров после того, как в декабре 1994 года вышла первая версия Netscape Navigator, которая была открыта для бесплатного некоммерческого использования, что позволило занять на тот момент 75% рынка.
23 мая 1995 года технологии Java и HotJava были официально объявлены Sun и тогда же представители компании сообщили, что новая версия самого популярного браузера Netscape Navigator 2.0 будет поддерживать новую технологию. По сути, это означало, что отныне Java становится такой же неотъемлемой частью WWW, как и HTML. Уже второй раз презентация закончилась овацией - победное шествие Java началось.[25]
Итак, как мы знаем, Java имеет несколько версий. Первую версию языка Java компания Sun выпустила в начале 1995 года. Через несколько месяцев после нее появилась версия Java 1.02. Но эта версия оказалась «сырая», быстро поняли, что версия Java 1.02 не подходит для разработки серьезных приложений. Следующая версия Java 1.1, устранила большинство недочётов, намного улучшив возможность отражения и добавив новую модель событий для программирования графического пользовательского интерфейса. Несмотря на это, она все еще была довольно ограниченной. Выпуск версии Java 1.2 стал основной новостью в 1998 году. В новой версии слабые средства для создания графического пользовательского интерфейса и графических приложений были заменены сложным и масштабным инструментарием. Версии 1.3 и 1.4 стандартного издания пакета инструментальных средств намного совершеннее первоначального выпуска языка Java. Они обладают новыми возможностями и, разумеется, содержат намного меньше ошибок. В таблице (приложение 2) показан стремительный рост объема библиотеки API по мере появления новых версий стандартного издания пакета SDK.
Таким образом, язык Java является объектно-ориентированным и поставляется с достаточно объемной библиотекой классов. Библиотеки классов Java значительно упрощают разработку приложений, представляя в распоряжение программиста мощные средства решения распространенных задач. Поэтому программист может больше внимания уделить решению прикладных задач.
Следует различать языки Java Script и Java.
Общие свойства Java Script и Java:
- легкость в освоении. По этому параметру Java Script сравнивают с Visual Basic - чтобы использовать эти языки, опыт программирования не требуется;
- кроссплатформенность. Код Java Script выполняется браузером. Подразумевается, что браузеры на разных платформах должны обеспечивать одинаковую функциональность для страниц, использующих язык сценариев. Однако это выполняется примерно в той же степени, что и поддержка самого HTML, – различий все же очень много;
- открытость; спецификация языка открыта для использования и обсуждения сообществом разработчиков;
- все перечисленные свойства позволяют утверждать, что Java Script хорошо приспособлен для Internet-программирования;
- синтаксисы языков Java Script и Java очень похожи. Впрочем, они также довольно сильно напоминают язык С;
- язык Java Script не объектно-ориентированный (хотя некоторые аспекты объектно-ориентированного подхода поддерживаются), но позволяет использовать различные объекты, предоставляемые браузером. [26]
Оба языка были объявлены компаниями Sun и Netscape с интервалом в несколько месяцев. Вышедший вскоре после этого Netscape Navigator 2.0 поддерживал обе новые технологии. Возможно, само название Java Script было дано для того, чтобы воспользоваться популярностью Java, либо для того, чтобы еще больше расширить понятие «платформа Java».
Несмотря на большое количество схожих характеристик, Java и Java Script – совершенно различные языки, и в первую очередь – по назначению. Если изначально Java позиционировался как язык для создания Internet-приложений (апплетов), то сейчас уже очевидно, что Java – это полноценный язык программирования. Что касается Java Script, то он полностью оправдывает свое название языка сценариев, оставаясь расширением HTML.[27]
2.2 Базовые понятия языка
В настоящее время работа Java поддерживается всеми основными компьютерными платформами. Самостоятельное приложение, предназначенное для автономной работы, компилируется и выполняется на локальной машине под управлением системы времени выполнения Java.
Программирование на Java (он является компилирующим языком) имеет то преимущество, что код, написанный на данном языке программирования, переводится с помощью соответствующей программы-транслятора в так называемый байт-код, а он, в свою очередь, – в машинный код с помощью виртуальной машины Java (Java Virtual Machine). Поэтому написанная на Java программа выполняема на любом компьютере с любой системой, лишь бы на нем была установлена виртуальная машина Java. Таким образом и обеспечивается одно из главных преимуществ языка Java – переносимость создаваемых на нем программ на компьютеры разных типов.[28]
Программы, разработанные на языке программирования Java, можно разделить по своему назначению и функциональности на две большие группы[29]:
К первой группе относятся приложения Java, предназначенные для автономной работы под управлением специальной интерпретирующей машины Java. Реализации этой машины созданы для всех основных компьютерных платформ.
Вторая группа – это так называемые аплеты (applets). Аплеты представляют собой разновидность приложений Java, которые интерпретируются виртуальной машиной Java, встроенной практически во все современные браузеры.
Апплеты, которые и обеспечивают этому языку его популярность, представляют собой разновидность приложений Java, которые интерпретируются Виртуальной Машиной Java, встроенной практически во все современные браузеры.
Каждый апплет – это небольшая программа, динамически загружаемая по сети с Web сервера при открытии в браузере HTML страницы, в которой имеется ссылка на апплет – точно так же, как картинка, звуковой файл или элемент мультипликации. Главная особенность апплетов заключается в том, что они являются настоящими программами, а не очередным форматом файлов для хранения мультфильмов или какой-либо другой информации.
Поскольку к Интернет подключались компьютеры с различной архитектурой, различными процессорами и операционными системами, то практически было невозможно создать программу, совместную со всеми средами. Аплеты Java легко решили все эти проблемы. Использование аплетов позволило легко добавлять динамичные фрагменты в ранее статичный мир HTML.[30]
Апплет не просто проигрывает один и тот же сценарий, а реагирует на действия пользователя и может динамически менять свое поведение. С помощью апплетов вы можете сделать страницы сервера Web динамичными и интерактивными. Апплеты позволяют выполнять сложную локальную обработку данных, полученных от сервера Web или введенных пользователем с клавиатуры. Для повышения производительности апплетов в браузерах используется компиляция «на лету» – Just-In-Time compilation. При первой загрузке аплета его код транслируется в обычную исполнимую программу, которая сохраняется на диске и запускается. В результате общая скорость выполнения аплета Java увеличивается в несколько раз. Из соображений безопасности апплеты (в отличие от обычных приложений Java) не имеют никакого доступа к файловой системе локального компьютера. Все данные для обработки они могут получить только от сервера Web.
Одной из значительных задач, стоящих перед разработчиками объектно-ориентированных языков программирования, является дилемма выбора в пользу объектов или простых типов. В Java эта проблема решена следующим образом: существуют восемь простых типов (byte, short, int, long, char, float, double, boolean). Переменные такого типа обрабатываться процессором непосредственно, без дополнительного расхода ресурсов. Простые типы Java работают быстро и эффективно. Поэтому циклы с использованием простых типов выполняются с максимально возможной скоростью. В Java обращение ко всем объектам производится при помощи ссылок, а не напрямую. Поэтому в программе нет непосредственного управления объектами.[31]
Таким образом, в языке Java каждая переменная имеет тип. При объявлении переменной сначала указывается ее тип, а затем — ее имя.
Например: double salary;
int vacationDays;
long earthPopulation;
char yesChar;
boolean done.
Имя переменной должно начинаться с буквы и представлять собой комбинацию букв и цифр. Термины «буквы» и «цифры» в языке Java имеют более широкое значение, чем в большинстве других языков программирования. Буквами считаются символы "а1—'Z', 'a'—"z1,'' и любой символ в кодировке Unicode. Аналогично цифрами считаются как обычные десятичные цифры '0' - '9', так и любые символы в кодировке Unicode, использующиеся для обозначения цифры в каком-либо языке. Символы наподобие '+' или '©', а также пробел нельзя использовать в именах переменных. Все символы в имени переменной важны. Длина имени переменной практически не ограничена. [32]
Конечно, можно отметить ещё много аспектов языка. Такой язык программирования, как Java постоянно эволюционирует и приспосабливается. С самого начала Java революционизировал среду программирования, и эта революция продолжается до сих пор. Java и сейчас находится на передовой линии разработки языков программирования.
2.3 Различия между Java и С++
Синтаксис Java близок к синтаксису языка C++. Унаследовав самое лучшее от языка программирования C++, язык Java при этом избавился от некоторых недостатков C++, в результате чего на нем стало проще программировать.
Огромное преимущество Java заключается в том, что на этом языке можно создавать приложения, способные работать на различных платформах. К сети Internet подключены компьютеры самых разных типов - Pentium PC, Macintosh, рабочие станции Sun и так далее. Даже в рамках компьютеров, созданных на базе процессоров Intel, существует несколько платформ, например, MicrosoftWindows версии 3.1, Windows 95, Windows NT, OS/2, Solaris, различные разновидности операционной системы UNIX с графической оболочкой X¬Windows. Между тем, создавая сервер Web в сети Internet, хотелось бы, чтобы им могло пользоваться как можно большее число людей. В этом случае выручают приложения Java, предназначенные для работы на различных платформах и не зависящие от конкретного типа процессора и операционной системы
Может сложиться впечатление, что различия между языками C++ и Java носят чисто внешний, косметический характер. На самом деле это не так. Чем глубже проникать в концепцию технологии Java, тем отчетливее будет вырисовываться непохожесть Java и C++. Первое проявление непохожести языков можно увидеть среди массивов. В отличие от языка C++ в Java все массивы являются динамическими с автоматической проверкой ситуации выхода за пределы массива. Поэтому если известно имя массива, можно достаточно просто узнать его размер. Более того, в Java существенно переработана концепция указателей. [33]
Внешний эффект связан с тем, что в Java указатели как таковые отсутствуют, хотя пытливый ум заметит их неявное присутствие. Например, в С++ имя массива является указателем на его первую ячейку. В Java имя массива является переменной, которая фактически служит ссылкой на массив. То есть, по большому счету, это тот же указатель, только надежно спрятанный от программиста. Таким образом, в Java переменная массива и сам массив — далеко не одно и то же. И хотя может показаться, что это неудобно, на практике все выглядит иначе. Вот самые простые примеры выгоды от такого подхода: в Java одной переменной массива можно присвоить значение другой переменной массива. При этом размеры соответствующих массивов могут и не совпадать — достаточно, чтобы совпадали размерности и тип. Нечто похожее можно сделать и в С++, но для этого придется немного потрудиться.
Аналогичная ситуация имеет место с объектами. Все объекты в Java создаются динамически, и объектная переменная является ссылкой на объект. Поэтому при присваивании объектов ссылка с одного объекта «перебрасывается» на другой объект. Данное обстоятельство постоянно следует иметь в виду при работе с объектами.[34]
Благодаря специальным классам в Java намного удобнее работать с текстом, хотя это субъективная точка зрения автора, и читатель с ней может не согласиться.
Неприятным сюрпризом для поклонников С++ может стать невозможность перегрузки операторов в Java. Эта красивая и эффективная концепция, реализованная в С++, разработчиками Java была проигнорирована. Хотя с точки зрения стабильности программного кода это можно было бы и оправдать, с хорошими игрушками расставаться обидно.
В то же время утверждать, что С++ и Java – языки абсолютно разные, было бы некоторым преувеличением. Безусловно, для тех, кто знаком с С++, освоить Java особого труда не составит. Знание С++ является несомненным преимуществом, просто нужно иметь в виду упомянутые особенности языка Java.