Write once, run anywhere ( WORA ) или иногда Write once, run anywhere ( WORE ) — слоган, созданный Sun Microsystems в 1995 году [1] для иллюстрации кроссплатформенных преимуществ языка Java . [2] [3] В идеале это означало, что программа Java могла быть разработана на любом устройстве, скомпилирована в стандартный байт-код и, как ожидается, будет работать на любом устройстве, оснащенном виртуальной машиной Java (JVM). Установка JVM или интерпретатора Java на чипы, устройства или программные пакеты стала стандартной практикой в отрасли.
Программист мог разрабатывать код на ПК и ожидать, что он будет работать на мобильных телефонах с поддержкой Java , а также на маршрутизаторах и мэйнфреймах, оснащенных Java, без каких-либо настроек. Это было сделано для того, чтобы сэкономить разработчикам программного обеспечения усилия по написанию различных версий своего программного обеспечения для каждой платформы или операционной системы , на которой они намеревались развернуться.
Эта идея возникла не позднее 1960-х годов с IBM M44/44X , а в конце 1970-х годов была разработана система UCSD Pascal для создания и интерпретации p-кода . UCSD Pascal (вместе с виртуальной машиной Smalltalk) оказал ключевое влияние на дизайн JVM, как цитирует Джеймс Гослинг . [ необходима цитата ]
Загвоздка в том, что поскольку существует множество реализаций JVM, помимо широкого спектра различных операционных систем, могут быть тонкие различия в том, как программа выполняется на каждой комбинации JVM/OS, что может потребовать тестирования приложения на каждой целевой платформе. Это породило шутку среди разработчиков Java: Write Once, Debug Everywhere . [4]
Для сравнения, язык программирования и среда Squeak Smalltalk могут похвастаться тем, что их можно написать один раз и запустить где угодно [5], поскольку они запускают побитно идентичные образы на своей широкой переносимой базе. [6]
Как и Squeak, MicroEJ предоставляет виртуальную среду выполнения, которая гарантирует единую уникальную политику потоков Java для всех реализаций, обеспечивая настоящую семантику WORA на миллионах устройств.
Возможность Java "записать один раз - запустить везде" вместе с его легкой доступностью побудили сообщества разработчиков программного обеспечения и Интернета принять его как фактический стандарт для написания приложений для сложных сетей.
Пока что обещание Java "Write-once, run-everywhere" не сбылось. Основная часть приложения Java будет мигрировать между большинством реализаций Java, но использование преимуществ специфичной для виртуальной машины функции вызывает проблемы портирования.