Java и Java Script. Отличия Java от Java Script
Java
Java - объектно ориентированный язык программирования, разработанный компанией Sun Microsistems. Приложения Java обычно компилируются в социальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры. Дата официального выпуска- 23 мая 1995 года
Основные особенности языка
Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java- программой, обрабатывающей байт-код и передающий инструкции оборудованию как интерпретатор, но с тем отличием, что байтовый код, в отличие от текста, обрабатывается значительно быстрее. Достоинство подобного способа выполнения программ-в полной независимости байт-кода от интерационой системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение програмы полностью контролируется виртуальной машиной. Любые операци, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. Данное утверждение было справедливо для первых версий виртуальной машины Java, однако в последнее время оно практически потеряло актуальность. Этому способствовал ряд усовершенствований:- применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде
- широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках
- аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM)
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.
История версий
Java 1.0
Разработка Java началась в 1990 году, первая официальная версия — Java 1.0, — была выпущена только в 1996 году.
Java 1.2
К 1998 году была разработана обновлённая спецификация JDK 1.2, вышедшая под наименованием
Java 2
Язык практически не изменился — было добавлено одно ключевое слово strictfp. Платформа получила следующие дополнения:
- Библиотека Swing для создания графического интерфейса пользователя
- Коллекции
- Поддержка файлов Policy и цифровых сертификатов пользователя
- Библиотека Accessibility
- Java 2D
- Поддержка технологии drag-and-drop
- Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках
- Поддержка воспроизведения аудиофайлов нескольких популярных форматов
- Полная поддержка технологии CORBA
- JIT-компилятор, улучшенная производительность
- Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ
Java 5
Спецификация Java 5 была выпущена в сентябре 2004 года. В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:
- Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
- Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные
- Перечисление может реализовывать интерфейсы
- Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым
- Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода
- Средства обобщённого программирования (generics) — механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java
- Методы с неопределённым числом параметров
- Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-врапперами (например, между int — Integer). Наличие такой возможности сокращает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях
- Разрешён импорт статических полей и методов
- В язык введён цикл по коллекции объектов (итератор, foreach)
- Было введено использование Javadoc-комментариев, которые используются для автоматического оформления документации по комментариям в исходном коде