Использование программ и их переносимость

Изначально программа, созданная на любом языке, представляет собой текстовый файл (или их группу) с набором команд соответствующего языка. Содержание такого файла называется исходным кодом программы. Он понятен любому разработчику, знакомому с ЯП, но не понятен, например, процессору, т.е. исходный код напрямую не может использоваться машиной.

Для того чтобы программа могла выполняться, её нужно преобразовать понятный процессору формат или передать другому исполнителю.

Преобразование программы из исходного кода в исполняемый процессором называется трансляцией в бинарный (двоичный) код или компиляцией.

Этот процесс осуществляется специальной программой-компилятором, она, как правило, создается высококвалифицированными разработчиками ЯП или разработчиками ПО. Многократно тестируются и оптимизируются для быстрой работы.

Перед компиляцией происходит проверка исходного кода с помощью программы-отладчика на наличие ошибок. Отладчика также создают авторы языка.

Отладчик указывает на типовые ошибки и требует их исправления в исходном коде до того, как программа будет компилироваться, но существуют ошибки, которые появляются только после исполнения программы, их отладчик поймать не сможет.

На этапе компиляции кроме преобразования исходного кода в исполняемый происходит еще ряд оптимизаций.

Исполняемый код, полученный по итогам компиляции, может выполняться на конкретной архитектуре – совокупности процессора и ОС.

Если требуется обеспечить работу программы другой архитектуры, то её необходимо повторно скомпилировать под новую архитектуру с использованием другого компилятора, т.е. необходимо, чтобы он существовал и чтобы в программе не использовались команды специфичные для старой архитектуры.

Перечисленный набор ограничений делает программы, создаваемые на некоторых языках, непереносимыми.

Например, непереносимы программы на ASSEMBLER, использующие команды конкретного процессора (другой процессор может эти команды частично или полностью не поддерживать).

Другие языки ограничивают переносимость, делая ее возможной только на уровне исходного кода.

Кроме наличия компьютеров и необходимости компиляции под все платформы, переносимость на уровне исходного кода требует публикации этого кода для третьих лиц, в чем не всегда заинтересованы коммерческие разработчики.

Переносимость на уровне исходного хода ограничивает такие языки, как С/С++.

Создатели Java изначально планировали разработку программы сразу под разную архитектуру, поэтому Java-программы решено было исполнять не на центральном процессоре, а на виртуальной машине.

Она сама является программой, созданной заранее для разных архитектур и умеет исполнять байт-код (это аналог исполнительного кода, содержащий не команды для конкретного физического процессора, а команды для виртуальной машины Java).

Java Virtual Machine (JVM) – основа исполняющей среды.

Java (JRE), который необходимо установить везде, где программа должна работать.

Поскольку виртуальная машина сама является программой, работающей в ОС, на исполнение машины необходимы такие дополнительные ресурсы, как память и вычислительная мощность процессора.

Эти ресурсы будут отниматься от программы.

К недостаткам виртуальной машины относят замедление вычислений из-за посредника в виде JVM(виртуальной машины).

Но описанная проблема решается за счет ряда усовершенствований, главной из которых стала технология JIT(Just In Time)- компиляция, которая предусматривает во время выполнения программы превращение отдельных её фрагментов не в байт-код, а в код исполняемый непосредственно процессором и ОС.

Также в рамках Java многие методы реализован таким образом, что она сразу же выполняются в ОС и на процессоре.

Программа, исполняемая в JVM, изолирована от ресурсов компьютера, что обеспечивает дополнительную безопасность. Есть несколько ограниченных уровней.

Например, для Java-программ, исполняемых внутри браузера по-умолчанию, запрещен доступ к файловой системе.

Уточненное определение JAVA:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: