ломая барьеры ОС / Программное обеспечение

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

Одно из главных преимуществ таких приложений состоит в том, что они могут использоваться на разных платформах – Windows, Linux, Mac OS X и пр. Часто разработчики используют это свойство Java-программ при написании своих утилит.

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

⇡#Net-C 0.2.0 – чат для локальной сети

  • Разработчик: dgtalize
  • Распространение: бесплатно
  • Русский интерфейс: нет

Вот пример ситуации, когда наличие поддержки нескольких платформ играет решающую роль при выборе приложения. Допустим, имеется локальная сеть с компьютерами под управлением разных ОС, включая Mac OS X и Windows. Администратор такой сети ставит перед собой цель организовать чат для группы пользователей. Для этой цели ему необходимо найти универсальный клиент, которой бы имел версию и под одну, и под другую платформу. Вероятно, большинство программ, которые будут найдены, окажутся коммерческими разработками. Если же прибегнуть к помощи Java-приложения, проблема портирования функций (в нашем случае — локального чата) решается сама собой.

Так, например, небольшая программа Net-C может использоваться на любом компьютере, где работает Java. Это приложение представляет собой небольшой чат для локальной сети, который не требует специального сервера и обладает минимальным набором всех необходимых функций. Единственная функция программы, которую можно рассматривать как «необязательную» — поддержка смайлов. Net-C содержит целых пять больших библиотек всевозможных анимированных смайлов, которые можно вставлять в отправляемые послания.

При поступлении нового сообщения чат может уведомлять об этом пользователя с помощью всплывающего сообщения в системном трее Windows или в строке меню Mac OS X. В программе можно просматривать список установленных с помощью Net-C соединений, а также устанавливать один из трех статусов сообщения — «занят», «ушел» и «онлайн». Пользователей из контакт-листа можно объединять в группы. Отправлять сообщения можно в режиме приватной беседы или делать массовую рассылку всем членам указанной группы.

Если ваш список контактов в Net-C отображается пустым, проверьте IP-адрес в настройках клиента, по умолчанию он может не совпадать с используемым сетевым параметром на данном ПК.

⇡#aTunes 2.0.1 – удобный аудиопроигрыватель

  • Разработчик: The aTunes Team
  • Распространение: бесплатно
  • Русский интерфейс: есть

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

В этом смысле музыкальный проигрыватель aTunes является исключением из правил. Плеер не только ни в чем не уступает коммерческим аналогам, но и кое в чем может дать сто очков вперед конкурентным разработкам.

Один из козырей утилиты aTunes — высокая скорость работы. Программа не зависает при обращении к Интернету, быстро сканирует указанные директории для автоматического составления фонотеки, мгновенно сортирует файлы по выбранному пользователем методу.

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

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

Проигрыватель поддерживает все популярные аудиоформаты, включая mp3, ogg, wma, wav, flac, mp4, m4a, ra, rm. Кроме этого, утилита может считывать данные о файле разметки диска cue, который часто прилагается к образу целого диска. Плеер aTunes можно также использовать в качестве аудиориппера — программа позволяет копировать музыку с дисков CD-DA и сжимать ее в один из поддерживаемых форматов. Утилита может использоваться для чтения и редактирования ID3-тегов самых разных файлов, включая mp3, ogg, flac, wma, mp4, ra, rm. Программа считывает и отображает картинки, спрятанные в тегах версии ID3v2.

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

В aTunes имеется поддержка воспроизведения интернет-радио. Список радиостанций отображается на отдельной вкладке, все они отсортированы по категориям.

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

⇡#jEdit 4.3.2 — текстовый редактор

  • Разработчик: jEdit developer team
  • Распространение: бесплатно
  • Русский интерфейс: нет

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

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

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

Одна из наиболее важных функций текстового редактор для пользователя, который занимается разработкой кода — возможность проверки синтаксиса. В этом вопросе jEdit обходит даже некоторые коммерческие программы. Редактор позволяет использовать подсветку синтаксиса для более чем 130 типов кода:

  • Ruby;
  • Ruby-HTML;
  • UnrealScript;
  • Python;
  • S#;
  • SAS;
  • SHTML;
  • XML;
  • ActionScript;
  • Ada 95;
  • C++;
  • COBOL;
  • Inno Setup;
  • JavaScript;
  • Parrot;
  • Pascal;
  • Perl;
  • PHP;
  • Povray и др.

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

В jEdit большинство команд может быть выполнено с использованием горячих клавиш. Различные сложные действия, которые часто повторяются при работе над документом, могут быть автоматизированы с помощью записанных макросов. Если какой-то функции программе не хватает — не беда. К редактору прилагается более полутора сотен всевозможных дополнений, существенно расширяющих стандартные возможности jEdit.

⇡#muCommander 0.8.5 – файловый менеджер

  • Разработчик: Maxence Bernard
  • Распространение: бесплатно
  • Русский интерфейс: есть

Для операционной системы от Microsoft можно найти массу альтернативных файловых менеджеров — Total Commander, Far, XYplorer и т.д. В случае с другими платформами, такими как Linux или Mac OS X, выбор гораздо скромнее. Решение этой проблемы — файловый менеджер muCommander.

muCommander обладает двухпанельным интерфейсом, благодаря чему можно быстро копировать и переносить файлы из одной папки в другую. Программа поддерживает привычные для подобных программ «горячие» клавиши, благодаря чему основные операции с файлами и папками можно выполнять еще быстрее. Для тех, кто не привык работать с клавиатурой, в нижней части окна файлового менеджера предусмотрена настраиваемая область с кнопками, при помощи которых можно выполнять все те же действия: перемещать, копировать, удалять файлы, создавать папки и т.д. При этом набор команд можно настроить по своему усмотрению.

Возможности настройки интерфейса не ограничиваются изменением списка команд в нижней области. Так, можно изменять расположение и размеры панелей (например, ориентировать их не вертикально, а горизонтально), изменять цвета, которыми подсвечиваются файлы разных типов, редактировать списки «горячих» клавиш, менять фон окна и т.д.

Те, для кого одной из самых важных функций файлового менеджера является наличие FTP-клиента, будут рады обнаружить его в muCommander. Модуль поддерживает протоколы SFTP, SMB, HTTP/HTTPS, работает со службой Bonjour, с сервисами Amazon S3, Hadoop HDFS. Для обеспечения безопасности данных, которые используются при входе на защищённые сервера, muCommander шифрует их. Работая с файлами на сервере, можно изменять права доступа к ним. Кроме этого, для файлов можно менять атрибуты даты и времени, подсчитывать контрольную сумму.

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

В muCommander предусмотрена и возможность работы с самыми популярными типами архивов. В файловом менеджере можно просматривать содержимое архивов ZIP, RAR, 7z, TAR, GZip, BZip2, ISO/NRG, AR/Deb и LST без необходимости их распаковки, как при работе с обычными папками. Также имеется возможность обновления содержимого ZIP-архивов, не распаковывая их содержимого во временную директорию.

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

⇡#Pixelitor 1.1.1 – графический редактор

  • Разработчик: lbalazscs
  • Распространение: бесплатно
  • Русский интерфейс: нет

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

По внешнему виду Pixelitor очень напоминает упрощённый Photoshop, поэтому если вы хоть немного знакомы с графическим редактором от Adobe, интерфейс Pixelitor не покажется вам чем-то сложным. В программе доступно несколько вариантов выделения, несколько профилей кистей, разные варианты градиента.

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

Для обработки изображений можно использовать фильтры, которые для удобства разделены по категориям. Конечно, их количество не сравнить с числом фильтров в Photoshop, но все основные средства есть: Unsharp Mask, Motion Blur, добавление «шума», разные варианты искажения изображения, создание калейдоскопа и фотоколлажа.

К сожалению, у программы есть и некоторые недостатки. Так, например, сохранение файлов без сведения слоев поддерживается только во внутреннем формате pxc, а сохранять файлы с учетом прозрачности можно лишь в формате png (gif не поддерживается). Учитывая, впрочем, темпы разработки программы, можно предположить, что эти проблемы в скором времени будут решены.

⇡#TV-Browser 2.7.5 – электронный путеводитель по телеканалам

  • Разработчик:TV-Browser.org
  • Распространение: бесплатно
  • Русский интерфейс: нет

Количество телевизионных каналов выросло настолько, что в них легко можно запутаться, особенно если вы пользуетесь услугами кабельного телевидения или смотрите спутниковые передачи. Из сотен и даже тысяч каналов трудно быстро найти для себя интересную передачу или фильм. Чтобы не «плавать» в океане частот и безликих названий, нужно заглянуть в программу передач. Один из самых удобных способов узнать, какие передачи транслируются на том или ином канале — воспользоваться утилитой TV-Browser. Это приложение представляет собой удобную телевизионную программу, которая автоматически загружает расписание передач для выбранных теле- и радиостанций.

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

В программе очень удобно реализован поиск, причем искать можно все, что душе угодно — от телеканалов и жанров вещания до информации в Интернете по передачам, которые будут транслироваться в ближайшее время. Так, например, прямо из окна TV-Browser можно перейти к одной из наиболее авторитетных онлайновых баз IMDB, чтобы посмотреть рейтинг фильма, который будет транслироваться на одном из каналов, и почитать о нем отзывы.

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

⇡#Что делать, если не получается запустить Java-приложение?

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

Большинство приложений, написанных на Java, имеют расширение *.JAR. Некоторые программы, предназначенные для работы с мобильными устройствами, могут ассоциировать это расширение, вызывая тем самым системные ошибки. С подобной проблемой могут столкнуться, например, те, кто используют популярный пакет для телефонов Nokia – Nokia Ovi Suite. Если при запуске Java-приложения, у вас открывается совершенно иная программа, попробуйте восстановить исходные ассоциации. Например, можно в любом текстовом редакторе набрать следующий текст:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\.jar]

[-HKEY_CLASSES_ROOT\SystemFileAssociations\.jar]

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar]

После этого сохраните данный документ с расширением *.REG и импортируйте данные в системный реестр, запустив этот файл. После этого ассоциация с файлами *.JAR будет восстановлена, и Java-приложения заработают должным образом.

⇡#Заключение

Java-приложения удобно держать на USB-накопителе. Собрав свою коллекцию такого ПО, можно быть уверенным в том, что нужный инструмент для работы всегда окажется под рукой, независимо от того, какая операционная система установлена на компьютере. Надеемся, что приведенные нами примеры удачного использования платформы от корпорации Oracle не только пригодятся обычным пользователям, но и вдохновят разработчиков на создание новых полезных Java-приложений.

JavaOS for Business — операционная система от Sun и IBM | Java World

Компании Sun Microsystems и IBM выпустили совместно разработанную серверную платформу для централизованно управляемых объектов Java, получившую название JavaOS for Business. Эта платформа предназначена для связи используемых на предприятии сетевых компьютеров и различных устройств, ориентированных на работу с Java.

Выпускаемая сейчас только для систем Intel, платформа JavaOS for Business включает в себя средства разработки, инструментарии настройки для OEM-производителей, драйверы устройств, усовершенствованное серверное управляющее программное обеспечение и программы для тестирования и сертификации систем, рассчитанных на эту платформу.

Однако этот продукт сначала предлагается только для ПК с процессорами Intel x86, поэтому широкое его использование станет возможным не раньше чем через несколько месяцев. До начала следующего года JavaOS вряд ли сможет работать с такими устройствами, как JavaStation компании Sun и Network Station компании IBM. По словам официальных представителей компании, поддержка других платформ и наборов микросхем будет реализована несколько позже, хотя более подробные сведения не предоставляются.

Существующая версия JavaOS будет модернизирована после выпуска в ноябре версии JVM 1.2 и, как предполагается, ускорит разработку аппаратных устройств, драйверов и приложений для вертикальных рынков, в которых будут использованы преимущества Java и серверных платформ. Для работы клиентской части приложения на клиентском аппаратном обеспечении требуется память объемом не менее 8 Мбайт.

IBM и Sun, вместе с поддержавшими их BEA Systems, Lotus Development, Netscape Communications, Oracle, SAS Institute, Tivoli Systems, Informix Software, Computer Associates, Applix, Cloudscape, Nemasoft и Sybase, предполагают, что независимые производители аппаратного и программного обеспечения быстро и единодушно поддержат новую сетевую операционную систему.

Как считает один из аналитиков, выпуская инструментарий разработчика для OEM и подписывая лицензии, сейчас не относящиеся к производству NC, партнеры JavaOS расширяют возможности своей платформы, что позволяет ей непосредственно конкурировать с Windows CE компании Microsoft.

Другой аналитик — Дж. П. Моргентал, президент компании NC Focus, утверждает: «На самом деле речь идет не об офисных настольных системах, а касается производителей банковских автоматов, карманных компьютеров и торговых автоматов. Суть в том, что IBM и Sun не отказываются от корпоративных приложений, но поскольку, скорее всего, работа в этой области будет менее успешна, они стремятся разнообразить выпускаемые приложения».

По утверждениям представителей IBM и Sun, они не рассчитывают на то, что JavaOS for Business потеснит ПК в качестве офисных настольных систем, но предполагают, что она будет способствовать распространению терминальных устройств, ориентированных на интенсивную обработку транзакций, таких как NC, а также иных систем, используемых в вертикальных отраслях, в том числе устройств ввода/вывода, торговых автоматов и беспроводных карманных компьютеров.

«Идея состоит не в том, чтобы вытеснить ПК общего назначения с предприятия. Просто на некоторых очень интересных (и весьма крупных) вертикальных рынках существуют устройства, плохо вписывающиеся в эту модель», — подчеркнул Джим Хеберт, генеральный менеджер по потребительским и встроенным системам компании Sun.

Как отмечают представители IBM, новая платформа в первую очередь предназначена для розничной торговли, а также для киосков и систем Internet-коммерции, таких как билетные автоматы. Sun и IBM называют среди OEM-производителей подобных устройств компании Toshiba и Fujitsu.

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

Среди возможностей последней версии JavaOS for Business стоит упомянуть более простое системное управление, удаленное управление тонкими клиентами, инструментарий и API для серверного управления клиентами JavaOS (как ОС, так и приложениями), интерфейс драйверов устройств для создания драйверов, не зависящих от платформы, и использование на новом уровне интерфейсов JavaBeans для управления драйверами устройств.

Новые возможности управления позволяют, в частности, переконфигурировать системы JavaOS без перезагрузки.

KeyLabs, сотрудники которой сейчас тестируют и выдают сертификаты на Java-приложения, будет предлагать услуги тестирования и сертификации на соответствие JavaOS, в то время как IBM в семи своих центрах Java Solution Studio намерена проводить обучение и предварительное тестирование.

Маркетинговая стратегия JavaOS for Business предусматривает программы обучения и технической поддержки для вертикальных рынков.

JavaOS for Business совместима с версией Java Development Kit 1.1.4, а также поддерживает серверы Windows NT и Solaris и несколько языков.

Почему операционные системы не написаны на java?

спросил

Изменено 8 лет, 2 месяца назад

Просмотрено 17 тысяч раз

Все операционные системы до настоящего времени были написаны на C/C++, а на Java нет ни одной. Есть тонны Java-приложений, но нет ОС. Почему?

3

В основном потому, что у нас уже есть операционные системы. Java не предназначена для работы на «голом железе», но это не такое уж большое препятствие, как может показаться на первый взгляд. Поскольку компиляторы C предоставляют встроенные функции, которые компилируются в определенные инструкции, компилятор Java (или JIT, различие не имеет значения в данном контексте) может делать то же самое. Обработка взаимодействия GC и диспетчера памяти также будет несколько сложной. Но это можно было сделать. В результате получилось ядро ​​95% Java и готовые к запуску банки. Что дальше?

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

  1. Файловая система, которая должна найти место для файла, обновить его структуру каталогов, вести журнал и, наконец, решить, какие блоки диска нужно записать и в каком порядке.
  2. Блочный уровень, который должен планировать одновременные записи и чтения, чтобы максимизировать пропускную способность при максимальной справедливости.
  3. Драйвер устройства, который должен обеспечивать работоспособность устройства и направлять его в нужные места, чтобы все происходило. И конечно каждое устройство ломается по-своему, требует своего драйвера.

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

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

Есть одно место, где ОС для конкретного языка имеет смысл: виртуальные машины. Пусть основная операционная система справляется с трудными задачами запуска компьютера, а клиентская операционная система занимается превращением виртуальной машины в среду выполнения. BareMetal и MirageOS следуют этой модели. Зачем вам делать это вместо использования Docker? Это хороший вопрос.

Действительно есть JavaOS http://en.wikipedia.org/wiki/JavaOS

А здесь обсуждают почему мало ОС написано на java Можно ли сделать операционную систему на java?

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

ОС должна иметь дело с аппаратным обеспечением, которое невозможно выполнить с помощью java (кроме использования JNI). И это потому, что JVM предоставила только ограниченное количество команд, которые можно использовать в Java. Эти команды включают добавление, вызов метода и так далее. Но для работы с аппаратным обеспечением нужна команда для управления reg, памятью, процессором, аппаратными драйверами напрямую. Они не поддерживаются непосредственно в JVM, поэтому необходим JNI. То есть вернуться к началу — по-прежнему нужно писать ОС на C/ассемблере.

Надеюсь, это поможет.

3

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

Для операционных систем нужно работать очень низкоуровнево. И это боль в Java. Вам нужно, например. беззнаковые типы данных, а в Java есть только подписанные типы данных. Вам нужно объектов struct , которые имеют точно такое выравнивание памяти, которое ожидает драйвер (и заголовок объекта, как Java, не добавляется к каждому объекту).

Даже ключевые компоненты самой Java больше не пишутся на Java.

И это отнюдь не временное явление. Все больше и больше переписывается в нативном коде для повышения производительности. HotSpot VM добавляет «внутренние компоненты» для критически важного для производительности нативного кода, и ведется работа по снижению общей стоимости нативных вызовов.

Например, JavaFX : Причина, по которой он намного быстрее, чем когда-либо был AWT/Swing, заключается в том, что он содержит/использует огромное количество собственного кода. Он использует собственный код для рендеринга и, например. если вы добавите компонент браузера «webview», он фактически использует библиотеку webkit C для предоставления браузера.

Есть ряд вещей, которые Java делает действительно хорошо. Это красиво структурированный язык с фантастическим набором инструментов . Python намного компактнее для написания, но его инструментальная цепочка беспорядочна, например. инструменты рефакторинга разочаровывают. И где Java сияет, так это в оптимизации полиморфизма во время выполнения. Там, где компиляторам C++ пришлось бы выполнять дорогостоящие виртуальные вызовы — поскольку во время компиляции неизвестно, какая реализация будет использоваться — там Hotspot может агрессивно встраивать код для повышения производительности. Но для операционных систем вам столько не нужно. Вы можете позволить себе вручную оптимизировать сайты вызовов и встраивание.

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

Хотя теоретически возможно написать какую-то ОС на чистой Java, есть практические моменты, которые делают эту задачу действительно сложной. Основная проблема заключается в том, что не существует (в настоящее время актуального и надежного) java-компилятора, способного скомпилировать java в байтовый код. Таким образом, не существует инструмента, позволяющего написать всю ОС с нуля на Java, по крайней мере, насколько мне известно.

Java был разработан для работы в некоторых реализациях виртуальной машины Java. Существуют реализации для Windows, Mac, Linux, Android и т. д. Дизайн языка в значительной степени основан на предположении, что JVM существует и будет творить для вас волшебство во время выполнения (подумайте о сборке мусора, JIT-компиляторе, отражении и т. д.). ). Скорее всего, это одна из причин, по которой такого компилятора не существует: куда делись бы все эти функции? Скомпилировано в байт-код? Это возможно, но на данный момент я считаю, что это будет трудно сделать. Даже Android, чей SDK полностью основан на Java, запускает Dalvik (версию JVM, которая поддерживает подмножество языка) на ядре Linux.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Можно ли сделать операционную систему на java?

спросил

Изменено 3 года, 5 месяцев назад

Просмотрено 45 тысяч раз

Я хочу знать, возможно ли сделать операционную систему, подобную windows-xp, которая написана на языке C, например, могу ли я написать это на java, чтобы у меня были те же функции, что и на C

  • Java
  • операционная система
3

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

Из Википедии:

Учитывая, что Java от Sun Microsystems сегодня один из самых доминирующих объектно-ориентированные языки, это не удивительно, что операционная система на основе Java системы были предприняты попытки. В этом области, в идеале, ядро ​​должно состоит из необходимого минимума для поддержки JVM. Это единственный компонент такой операционной системы это должно быть написано в язык, отличный от Java. Построенный на что JVM и базовая аппаратная поддержка, можно было бы написать остальное операционной системы на Java; даже части системы, более традиционно пишется на более низком уровне язык, такой как C, например устройство драйверы, могут быть написаны на Java.

Примеры попыток такого операционная система включает JX, JNode и JavaОС.

1

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

3

Теоретически вы могли бы написать всю ОС на Java с процессором Java. В основном он использует байт-код Java в качестве набора инструкций для процессора 9. 0005 2

Это зависит от того, что вы считаете «особенностями». Если вы имеете в виду графический интерфейс, причудливые оконные эффекты и т. д., то да, хотя вам понадобится язык ассемблера или C для самых младших разрядов (т. е. взаимодействие с портами ввода-вывода и т. д.). Если вы также включите Windows ABI в качестве функции, это станет сложнее, поскольку они следуют соглашениям о вызовах Pascal.

1

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

Как упоминалось выше, это уже попытка. Jnode — единственный, который выдержал испытание временем и над которым активно работают, хотя они не выпускали новую сборку годами. Но если вы посмотрите на их коммиты Git, они работают над неизбежным релизом, когда я пишу это. Я фанат Java и с нетерпением жду релиза. Люди, которые ненавидят многословные императивные языки, такие как Java, съеживаются при одной идее, но это не для всех.