Автор: Пользователь скрыл имя, 12 Декабря 2011 в 09:30, реферат
В декабре 1990 года из компании Sun Mycrosystems 25-летний хорошо зарекомендовавший себя программист Патрик Нотон (Patrick Naughton), проработав три года, объявил о своем уходе в компанию NeXT. Фирма Sun Microsystems, занимающая значительную долю рынка серверов и высокопроизводительных станций, не могла предложить ничего интересного для обычных пользователей персональных компьютеров.
Каким же образом можно "сгладить" различия и многообразие операционных систем? Способ не новый, но эффективный - с помощью виртуальной машины. Приложения на языке Java исполняются в специальной, универсальной среде, которая называется Java Virtual Machine. JVM - это программа, которая пишется специально для каждой реальной платформы, чтобы, с одной стороны, скрыть все ее особенности, а с другой - предоставить единую среду исполнения для Java -приложений. Фирма Sun и ее партнеры создали JVM практически для всех современных операционных систем. Когда речь идет о браузере или устройстве с поддержкой Java , подразумевается, что в нем имеется встроенная виртуальная машина. Существует знаменитый девиз для Java-приложений "Write once, run everywhere" ("Написано однажды, работает везде").
Кроме
очевидных удобств, это начинание
было с большим энтузиазмом
Синтаксис языка Java, по существу, представляет собой очищенный вариант синтаксиса языка С++. В этом языке нет заголовочных файлов, указателей, структур, объединений, перегрузки операторов и т.п.
Разработчики языка Java долго размышляли о том, отчего программы, написанные на языке С++, так подвержены ошибкам. Они снабдили язык Java средствами позволяющими исключить саму возможность создавать программы, в которых были бы скрыты наиболее распространенные ошибки. Для этого в языке Java сделано следующее:
Свойства – преимущества языка Java:
1. Объектно-ориентированный.
Объектно–ориентированные особенности языка Java сравнимы с языком С++. Основное различие между ними заключается в механизме множественного наследования, для которого в языке Java найдено лучшее решение, а также в модели метаклассов языка Java. Механизмы отражения и сериализации объектов позволяют реализовать устойчивые объекты и средства для создания графических пользовательских интерфейсов на основе готовых компонентов.
2. Распределенный.
Язык Java предоставляет мощные и удобные средства для работы в сети. На Java легко решаются самые трудные задачи, например, открытие сетевых соединений. Элегантный механизм, состоящий из так называемых сервлетов (servlets), делает работу на сервере чрезвычайно эффективной. Сервлеты поддерживаются многими популярными Web серверами. Связь между распределенными объектами в языке Java обеспечивается механизмом вызова удаленных методов.
3. Надежный.
Компилятор языка Java выявляет такие ошибки, которые в других языках обнаруживаются только на этапе выполнения программы. Программист на языке Java навсегда избавлен от неверных указателей, неправильного распределения и утечки памяти.
4. Безопасный
Группа разработчиков языка Java заявила о своей полной нетерпимости к любым ошибкам в системе защиты и немедленно приступает к исправлению всех проблем, обнаруженных в механизме безопасности. В любом случае обмануть систему защиты языка Java чрезвычайно трудно. Обнаруженные до сих пор ошибки были исправлены в следующих версиях, к тому же их количество (относительно) невелико.
5. Не зависящий от архитектуры
Использование байт.кодов дает большой выигрыш при выполнении программы Разработчики языка Java прекрасно справились с разработкой набора команд байт кода, которые отлично работают на большинстве современных компьютеров, легко транслируясь в реальные машинные команды.
6. Машинонезависимый
Например, тип int в языке Java всегда означает 32.разрядное целое число. В языках С и С++ тип int может означать как 16 разрядное, так и 32 разрядное целое число, а также целое число произвольного размера, по выбору разработчика конкретного компилятора. Единственное ограничение заключается в том, что размер типа int не может быть меньше размера типа short int и больше размера типа long int. Фиксированный размер числовых типов позволяет избежать многих неприятностей, связанных с выполнением программ на разных компьютерах. Строки сохраняются в стандартном формате Unicode.
7. Интерпретируемый
Это
дает преимущество при разработке приложений,
однако это преимущество преувеличено.
Скорость перекомпиляции — это всего
лишь один из факторов, характеризующих
эффективность среды
8. Высокопроизводительный
Если для выполнения байт кодов применяется интерпретатор, не следует употреблять словосочетание “высокая производительность”. Однако на многих платформах возможен другой вид компиляции, обеспечиваемый синхронными компиляторами (just in time compilers — JIT). Они транслируют байт код в машинозависимый код, сохраняют результат в памяти, а затем вызывают его при необходимости. Поскольку при этом интерпретация выполняется только один раз, этот подход во много раз уве личивает скорость работы. Несмотря на то что синхронные компиляторы все равно медлительнее, чем машинозависимые компиляторы, они во всяком случае работают намного быстрее интерпретаторов, обеспечивая для некоторых программ 10 и даже 20 кратное ускорение. Эта технология постоянно совершенствуется и в конце концов может достичь той скорости, которую никогда не превзойдут традиционные компиляторы. Например, синхронный компилятор может определить, какой фрагмент кода выполняется чаще, и оптимизировать его по скорости выполнения.
9. Многопоточный
Потоки в языке Java могут использовать преимущества многопроцессорных систем, если операционная система позволяет это сделать. К сожалению, реализации потоков на большинстве платформ сильно отличаются друг от друга. Только код для вызова потоков остается одинаковым для всех машин; язык Java перекладывает реализацию многопоточности на базовую операционную систему или библиотеку потоков.
10. Динамичный
Это очень важно в тех случаях, когда требуется добавить код в уже выполняемую программу. Это весьма ценно для систем, которые должны анализировать объекты в ходе выполнения программы. К таким системам относятся средства создания графического пользовательского интерфейса, интеллектуальные отладчики, сменные компоненты и объектные базы данных.