| |
|
Независимость от архитектуры
|
Компилятор генерирует объектный файл, формат которого не зависит от архитектуры компьютера. В данном случае скомпилированная программа может выполняться на любых процессорах под управлением системы выполнения программ языка Java.
Для этого компилятор языка Java генерирует команды байт-кода, не зависящие от конкретной архитектуры компьютера. Байт-код разработан таким образом, чтобы на любой машине его можно было легко интерпретировать либо на лету перевести в машиннозависимый код.
Но эту идею нельзя назвать революционной. Еще в 70-е годы в системе реализации языка Pascal, разработанной Никлаусом Виртом (Niclaus Wirth) и в системе UCSD Pascal применялась та же самая технология.
Использование байт-кодов дает большой выигрыш при выполнении программы (хотя в некоторых случаях синхронная компиляция его компенсирует). Разработчики языка Java прекрасно справились с разработкой набора команд байт-кода, которые отлично работают на большинстве современных компьютеров, легко транслируясь в реальные машинные команды.
Машиннонезависимый
В отличие от языков С и С++, в спецификации Java нет аспектов, зависящих от системы реализации. И размер основных типов данных и арифметические операции над ними имеют точное определение.
К примеру, тип int в языке Java всегда означает 32-разрядное целое число. В языках С и С++ тип int может означать как 16-разрядное, так и 32-разрядное целое число произвольного размера в зависимости от разработчика конкретного компилятора.
Единственное ограничение - размер типа int не может быть меньше размера типа short int и больше размера типа long int. Подобный фиксированный размер числовых типов позволяет избежать многих неприятностей, которые связаны с выполнением программ на разных компьютерах.
Бинарные данные хранятся и передаются в фиксированном формате, что также позволяет избежать недоразумений, связанных с разным порядком записи байтов на разных платформах (конфликт типа "big endian/little endian"). Строки хранятся в стандартном формате Unicode.
Библиотеки, представляющие собой часть системы, определяют машиннонезависимый интерфейс. К примеру, в языке предусмотрен абстрактный класс Window и его реализация для операционных систем UNIX, Windows и Macintosh.
Каждый из программистов, кто когда-либо пытался написать программу, которая одинаково хорошо работала бы под управлением операционных систем Windows, Macintosh и десятков разновидностей системы UNIX, знает, что это практически нереализуемая задача.
Версия Java 1.0 предприняла попытку решить эту проблему, предоставив простой инструментарный набор, адаптирующий обычные элементы пользовательского интерфейса к большому количеству программных платформ.
Во многих приложениях машинная независимость намного важнее изысканности графического интерфейса. Именно эти приложения выиграли от появления версии Java 1.0.
В наши дни инструментальный набор для создания графического пользовательского интерфейса полностью переработан и больше не зависит от интерфейса пользователя.
|
|
Для наших любимых посетителей:
|
|
|
|
Мы рекомендуем вам ознакомиться со следующими материалами на тему:
|
|
|
|
Информация для интересующихся веб-дизайном и программированием:
|
|
|
|
|