чем можно открыть class
Файл формата CLASS открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.
Чем открыть файл в формате CLASS
Расширение CLASS может быть представлено двумя основными исполнениями:
Выполняя команду javac, входящую в состав инсталляционного пакета JVM, можно получить расширение CLASS из Java-файлов. Некоторые интегрированные разновидности Java, например, Eclipse, поддерживают параллельную генерацию формата CLASS в процессе написания программного кода.
Ввиду того, что существует несколько модификаций JVM (включая версии 1.4-1.6), некоторые исполнения CLASS файлов могут не поддерживаться на определенных версиях JVM.
Отсутствие бинарного javac в комплексе Java Runtime Environment (JRE) не позволяет компилировать файлы CLASS, но не исключает возможности их фактического выполнения. JRE и JVM зачастую применяются как идентичные понятия, когда речь идет о платформе, запускающей Java приложения.
Методы и средства программирования, а также архитектура языка во многом схожа с представлением Java.
В основе Gambas следующие программные модули:
Программы для открытия CLASS файлов
Если CLASS расширение представляет собой категорию файлов, скомпилированную при помощи Java, для генерации и воспроизведения его на базе ОС Windows можно воспользоваться самыми разнообразными программными комплексами:
В данном представлении CLASS адаптирован и для платформы ОС Mac:
Расширение может быть открыто и на базе ОС Linux с применением все тех же программных плагинов JD-GUI и Eclipse IDE for Java Developers with JD-Eclipse plug-in.
Если CLASS – исходник к Gambas, то открыть его можно с применением одной из версий языка программирования BASIC.
Если при открытии расширения CLASS возникает ошибка, причины могут заключаться в следующем:
Конвертация CLASS в другие форматы
Уникальная структура и область применения CLASS для каждого конкретного случая не предоставляют возможностей для конвертации данного формата в другие расширения. Попытки конвертации расширения в другой формат могут не только не дать никаких практических результатов, но и повредить исходный файл. В этой связи трансляция данного формата не практикуется.
Почему именно CLASS и в чем его достоинства?
CLASS расширения нельзя назвать широко распространенным и востребованным форматом среди обычных пользователей, однако он нашел свое применение в некоторых узкоспециализированных областях:
Файлы CLASS можно компилировать из файлов JAVA при помощи команды javac, входящей в состав пакета инсталляции JVM. Многие интегрированные среды разработки Java, такие как Eclipse, могут компилировать файлы CLASS на ходу, пока разработчики пишут программный код.
Поскольку существует множество версий JVM (например, 1.4, 1.5 и 1.6), некоторые файлы CLASS могут быть несовместимы с определенными версиями JVM. Java Runtime Environment (JRE) может выполнять файлы CLASS, но не может компилировать их, поскольку не включает в себя бинарный javac.
Примечание: компания Oracle приобрела Sun Microsystems — изначального разработчика Java. JRE и JVM часто используются как синонимы для ссылок на платформу, запускающую приложения Java.
Чем открыть файл в формате CLASS (Java Class File)
CLASS – Файл класса Java (Java Class File)
Расширение CLASS
Чем открыть файл CLASS
В Windows: Oracle Java Runtime Environment, Eclipse IDE for Java Developers с плагином JD-Eclipse, dirtyJOE, JD-GUI, ClassEditor, DJ Java Decompiler
В Mac OS: Oracle Java Runtime Environment, Eclipse IDE for Java Developers с плагином JD-Eclipse, Apple Jar Launcher, ClassEditor, JD-GUI
В Linux: Oracle Java Runtime Environment, Eclipse IDE for Java Developers с плагином JD-Eclipse, ClassEditor, JD-GUI
Описание расширения CLASS
Популярность:
Разработчик: Oracle
Файлы CLASS могут быть скомпилированы из файлов JAVA, используя команду Javac, которая входит в состав установки JVM. Многие Java IDE, такие как Eclipse, могут компилировать файлы CLASS на лету, пока разработчики пишут код программы.
Поскольку существует несколько версий JVM (например, 1.4, 1.5, и 1.6), некоторые файлы классов могут быть не совместимы с определенными версиями JVM. Java Runtime Environment (JRE) может выполнять файлы класса, но он не может скомпилировать их, поскольку она не включает в себя бинарный файл javac.
ПРИМЕЧАНИЕ: Oracle приобрела Sun Microsystems, разработчиков Java. JRE и JVM часто используются как синонимы для обозначения платформы, которая запускает Java приложения.
MIME тип: application/java, application/java-byte-code, application/octet-stream, application/x-java-class, application/x-java.vm
HEX код: CA FE BA BE
ASCII код: ѕ
Другие программы, связанные с расширением CLASS
- Исходный файл Gambas
Gambas является полнофункциональным языком объекта и среды разработки, построен на интерпретаторе BASIC. Он выпущен под лицензией GNU Public.
Его архитектура во многом похожа на Java. Так Gambas состоит из:
* Компилятор
* Переводчик
* Архиватор
* Скриптов
* Среда разработки
* Многие компоненты расширения
Популярность:
Расширение файла CLASS
Java Class Format
Что такое файл CLASS?
Файл с расширением CLASS содержит скомпилированный исходный код, написанный на языке программирования Java. Файл CLASS генерируется компилятором из файла JAVA, который содержит классы. Таким образом, файл CLASS является результатом успешного процесса компиляции. Одиночный файл CLASS содержит байт-код, то есть двоичный код данной программы, который выполняется при запуске виртуальной машиной Java (JVM).
Процесс компиляции
Файлы CLASS генерируются автоматически в процессе компиляции файла JAVA. Файлы JAVA являются исходными файлами для любых приложений Java. Файл CLASS, с другой стороны, содержит байт-код, который не зависит от платформы. Файл JAVA может содержать один или несколько классов, и каждый класс получает свой собственный файл CLASS в процессе компиляции кода.
Дополнительная информация
Компиляция файлов JAVA в файлы CLASS выполняется с помощью команды javac, входящей в комплект программного обеспечения JVM.
Большинство сред программирования Java способны компилировать файлы CLASS на лету, когда программисты пишут код.
Java Runtime Environment поддерживает возможность выполнения файлов CLASS, но не разрешает его компиляцию, поскольку JRE не имеет команды javac.
ВНИМАНИЕ
Поскольку виртуальная машина Java доступна во многих версиях, следует иметь в виду, что не все файлы CLASS совместимы со всеми версиями механизма.
Программы, которые поддерживают CLASS расширение файла
Ниже вы найдете указатель программ, которые можно использовать для открытия файлов CLASS, разделенных на категории 4 в соответствии с поддерживаемой системной платформой. CLASS файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.
Программы, обслуживающие файл CLASS
Как открыть файл CLASS?
Проблемы с доступом к CLASS могут быть вызваны разными причинами. С другой стороны, наиболее часто встречающиеся проблемы, связанные с файлами Java Class Format, не являются сложными. В большинстве случаев они могут быть решены быстро и эффективно без помощи специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Установите Java Runtime Environment программное обеспечение
Наиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы CLASS, установленные в системе. Эта проблема может быть решена путем загрузки и установки # РЕКОМЕНДОВАННОЙ # или другой совместимой программы, такой как Eclipse, dirtyJOE, DJ Java Decompiler. Выше вы найдете полный список программ, которые поддерживают CLASS файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Java Runtime Environment и загрузите установщик.
Шаг 2. Проверьте версию Java Runtime Environment и обновите при необходимости
Вы по-прежнему не можете получить доступ к файлам CLASS, хотя Java Runtime Environment установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Если у вас установлена более старая версия Java Runtime Environment, она может не поддерживать формат CLASS. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Java Runtime Environment.
Шаг 3. Настройте приложение по умолчанию для открытия CLASS файлов на Java Runtime Environment
После установки Java Runtime Environment (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия CLASS файлов. Метод довольно прост и мало меняется в разных операционных системах.
Процедура изменения программы по умолчанию в Windows
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Убедитесь, что файл CLASS заполнен и не содержит ошибок
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл CLASS, о котором идет речь. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Убедитесь, что CLASS не заражен компьютерным вирусом
Если CLASS действительно заражен, возможно, вредоносное ПО блокирует его открытие. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если файл CLASS действительно заражен, следуйте инструкциям ниже.
2. Проверьте, не поврежден ли файл
Если вы получили проблемный файл CLASS от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением CLASS был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Иногда для доступа к файлам пользователю необходимы права администратора. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Java Class Format.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия Java Runtime Environment
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы CLASS. Закройте все работающие программы и попробуйте открыть файл CLASS.
5. Убедитесь, что ваша операционная система и драйверы обновлены
Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами Java Class Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами CLASS, влияющими на более старые версии данного программного обеспечения.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла CLASS мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле CLASS.
Внутренности JVM, Часть 2 — Структура class-файлов
Всем привет! Перевод статьи подготовлен специально для студентов курса «Разработчик Java».
Продолжаем разговор о том, как Java Virtual Machine работает внутри. В предыдущей статье (оригинал на анг.) мы рассмотрели подсистему загрузки классов. В этой статье мы поговорим о структуре class-файлов.
Рисунок — компиляция исходного кода Java
Давайте напишем простую программу.
Запуск javac для этого файла приведет к появлению следующих файлов.
Как видите, для каждого класса и интерфейса создается отдельный class-файл.
Что внутри class-файла?
Class-файл имеет бинарный формат. Информация в нем обычно записывается без отступов между последовательными частями информации, все выравнивается по границам байтов. Все 16-битные и 32-битные значения записываются с помощью двух или четырех последовательных 8-битных байтов.
Class-файл содержит следующую информацию.
Версия файла. Следующие четыре байта содержат мажорную и минорную версию файла. Вместе эти номера определяют версию формата class-файла. Если class-файл имеет основной мажорную версию M и минорную m, то мы обозначаем эту версию как M.m.
У каждой JVM есть ограничения по поддерживаемым версиям class-файлов. Например, Java 11 поддерживает major версию с 45 до 55, Java 12 — с 45 по 56.
Пул констант. Таблица структур, представляющих строковые константы, имена классов, интерфейсов, полей, методов и другие константы, которые есть в структуре ClassFile и ее подструктурах. Каждый элемент пула констант начинается с однобайтового тега, определяющего тип константы. В зависимости от типа константы следующие байты могут быть непосредственным значением константы или ссылкой на другой элемент в пуле.
This class. Ссылка на запись в пуле констант.
Super class. Ссылка на запись в пуле констант.
Интерфейсы. Количество интерфейсов, реализованных классом.
Количество полей. Количество полей в классе или интерфейсе.
Поля. После количества полей следует таблица структур переменной длины. По одной для каждого поля с описанием типа поля и названия (со ссылкой на пул констант).
Количество методов. Количество методов в классе или интерфейсе. Это число включает только методы, которые явно определены в классе, без методов, унаследованных от суперклассов.
Методы. Далее находятся сами методы. Для каждого метода содержится следующая информация: дескриптор метода (тип возвращаемого значения и список аргументов), количество слов, необходимых для локальных переменных метода, максимальное количество слов стека, необходимых для стека операндов метода, таблицу исключений, перехватываемых методом, байт-коды метода и таблица номеров строк.
Количество атрибутов. Количество атрибутов в этом классе, интерфейсе или модуле.
Атрибуты. После количества атрибутов следуют таблицы или структуры переменной длины, описывающие каждый атрибут. Например, всегда есть атрибут “SourceFile”. Он содержит имя исходного файла, из которого был скомпилирован class-файл.
Хотя class-файл напрямую не человекочитаемый, в JDK есть инструмент под названием javap, который выводит его содержимое в удобном формате.
Давайте напишем простую программу на Java, указанную ниже.
Здесь вы можете увидеть, что класс публичный ( public ) и у него в пуле констант 37 записей. Есть один атрибут (SourceFile внизу), класс реализует два интерфейса (Serializable, Cloneable), у него нет полей и есть два метода.
Больше почитать про javap вы можете здесь.
Совет: вы также можете использовать javap для того, чтобы увидеть, чем лямбды отличаются от анонимных внутренних классов.
Запускаем однофайловые программы в Java 11 без компилирования
Обычно для запуска этого класса требуется сначала скомпилировать его с помощью Java-компилятора (javac), который создаст файл HelloUniverse.class:
Затем нужно с помощью команды виртуальной машины Java (интерпретатора) запустить получившийся файл:
Тогда сначала запустится виртуалка, которая загрузит класс и исполнит код.
А если вам нужно быстро проверить фрагмент кода? Или вы новичок в Java (в данном случае это ключевой момент) и хотите поэкспериментировать с языком? Описанные два этапа могут всё усложнить.
В Java SE 11 можно напрямую запускать одиночные исходные файлы без промежуточной компиляции.
Эта возможность особенно полезна для новичков, которые хотят поработать с простыми программами. В сочетании с jshell получается прекрасный набор инструментов для обучения начинающих.
Профессионалы могут с помощью этих инструментов изучать нововведения в языке или тестировать незнакомые API. На наш взгляд, лучше автоматизировать многие задачи, вроде написания Java-программ в виде скриптов с последующим исполнением из оболочки ОС. В результате мы можем гибко работать с shell-скриптами и пользоваться всеми возможностями Java. Поговорим об этом подробнее во второй части статьи.
Эта прекрасная возможность Java 11 позволяет напрямую исполнять одиночный исходный файл без компилирования. Давайте обсудим.
Что вам потребуется
Для запуска кода, приведённого в статье, вам понадобится версия Java не ниже 11. На момент написания статьи текущим релизом был Java SE Development Kit 12.0.1 — финальная версия находится здесь, достаточно принять условия лицензии и кликнуть на ссылку для вашей ОС. Если хотите поэкспериментировать с самыми свежими возможностями, то можете скачать JDK 13 early access.
Обратите внимание, что сейчас также доступны релизы OpenJDK разных вендоров, в том числе AdoptOpenJDK.
В этой статье мы будем вместо Java IDE применять обычный текстовый редактор, чтобы избежать всякой магии IDE, и использовать командную строку Java прямо в терминале.
Однако эта функция ограничена кодом, который хранится в одном файле. Вы не можете исполнять сразу несколько исходных файлов.
Чтобы обойти это ограничение, все классы нужно определять в одном файле. Никаких ограничений на их количество нет. Кроме того, пока они находятся в одном файле, не имеет значения, являются ли они публичными или частными.
Первый класс, определённый в файле, будет считаться основным, и в него нужно поместить метод main. То есть важна очерёдность.
Первый пример
Начнём с классического простейшего примера — Hello Universe!
Мы продемонстрируем описываемую возможность на разных примерах, чтобы вы получили представление, как можно её использовать в повседневном программировании.
Создайте файл HelloUniverse.java с кодом из начала статьи, скомпилируйте и запустите получившийся class-файл. Затем удалите его, сейчас поймёте зачем:
Если теперь с помощью Java-интерпретатора вы запустите class-файл без компиляции:
то увидите тот же результат: файл будет исполнен.
То есть под капотом всё же выполняется компиляция. И в случае её ошибки мы получим уведомление об этом. Можете проверить структуру директорий и убедиться, что class-файл не генерируется, компиляция выполняется в памяти.
Теперь давайте разберёмся, как это всё устроено.
Как интерпретатор Java выполняет программу HelloUniverse
В JDK 10 модуль запуска Java может работать в трёх режимах:
Система определяет ваше намерение ввести исходный файл по двум признакам:
Во втором случае выбирается режим работы с исходным файлом, и первый элемент в командной строке, который не является опцией, считается исходным файлом, который нужно скомпилировать и запустить.
Это важно в случаях, когда исходный файл представляет из себя «скрипт», который нужно выполнить, а имя файла не соответствует обычным соглашениям о наименованиях исходных файлов с Java-кодом.
Можно ли передавать в командной строке аргументы?
Давайте расширим нашу программу Hello Universe, чтобы она выводила персональное приветствие любому пользователю, зашедшему на InfoQ Universe:
Сохраним код в файле Greater.java. Обратите внимание, что имя файла не соответствует имени публичного класса. Это нарушает правила спецификации Java.
Как видите, совершенно не важно, что имена класса и файла не совпадают. Внимательный читатель мог также заметить, что мы передали в код аргументы после обработки имени файла. Это означает, что любой аргумент в командной строке, идущий после имени файла, передаётся стандартному основному методу.
Давайте сначала рассмотрим второй сценарий. Переименуем Greater.java просто в greater без расширения и попробуем выполнить:
Всё просто. Теперь рассмотрим использование нескольких классов.
Работает ли этот подход с несколькими классами?
Рассмотрим пример с двумя классами. Код проверяет, является ли заданное строковое значение палиндромом.
Вот код, сохранённый в файле PalindromeChecker.java:
Запустим снова, подставив «RaceCar» вместо «MadAm»:
Теперь подставим «Mohamed» вместо «RaceCar»:
Как видите, можно добавлять в один исходный файл сколько угодно публичных классов. Следите только за тем, чтобы основной метод был определён первым. Интерпретатор будет использовать первый класс в качестве стартовой точки для запуска программы после компилирования кода в памяти.
Можно использовать модули?
То есть код может использовать разные модули без необходимости явно определять зависимости с помощью module-info.java.
Давайте рассмотрим код, делающий HTTP-вызов с помощью нового HTTP Client API, появившегося в JDK 11. Обратите внимание, что эти API были представлены в Java SE 9 в качестве экспериментальной возможности, но теперь они имеют статус полноценной функции модуля java.net.http.
В этом примере мы вызовем простой REST API с помощью метода GET, чтобы получить список пользователей. Обратимся к публичному сервису reqres.in/api/users?page=2. Код сохраним в файл с именем UsersHttpClient.java:
Запустим программу и получим результат:
Теперь вы можете быстро тестировать новые фичи, предоставляемые разными модулями, не создавая свой собственный модуль.
Почему скрипты так важны в Java?
Сначала давайте вспомним, что такое скрипты:
Скрипт — это программа, написанная для определённого runtime-окружения, которая автоматизирует исполнение задач или команд, которые человек может исполнять поочерёдно.
Из этого общего определения мы можем вывести простое определение скриптового языка — это язык программирования, использующий высокоуровневые конструкции для интерпретации и исполнения по одной команде (или команд) за раз.
Скриптовый язык использует серии команд, записанных в файле. Часто такие языки являются интерпретируемыми (а не компилируемыми) и придерживающимися процедурного стиля программирования (хотя некоторые скриптовые языки также обладают свойствами объектно-ориентированных языков).
В целом скриптовые языки легче в освоении и быстрее в наборе кода по сравнению с более структурированными компилируемыми языками вроде Java, C и С++. К серверным скриптовым языкам относятся Perl, PHP и Python, а на клиентской стороне — JavaScript.
Долгое время Java считался хорошо структурированным, сильно типизированным компилируемым языком, который интерпретируется виртуальной машиной для выполнения на любой вычислительной архитектуре. Однако Java не так прост в изучении и прототипировании по сравнению с другими скриптовыми языками.
Тем не менее, Java уже исполнилось 24 года, его использует около 10 млн разработчиков по всему миру. В последних релизах добавили ряд новых возможностей, чтобы молодым программистам было легче изучать этот язык, а также чтобы пользоваться функциями языка и API без компилирования и IDE. Например, в Java SE 9 появился инструмент JShell (REPL), который поддерживает интерактивное программирование.
В Java 11 есть два основных способа использования скриптов:
Shebang-файлы: запускаем Java как shell-скрипт
Итак, в Java SE 11 появилась поддержка скриптов, включая традиционные shebang-файлы из мира *nix. Для их поддержки не потребовалось спецификации языка.
В shebang-файле первые два байта должны быть 0x23 и 0x21. Это ASCII-кодировка символов #. Все последующие байты в файле читаются на основе действующей по умолчанию на данной платформе системы кодировки.
Таким образом, чтобы файл исполнился с помощью встроенного в ОС shebang-механизма, необходимо соблюсти лишь одно требование: чтобы первая строка начиналась с #. Это означает, что нам не нужна какая-то особенная первая строка, когда модуль запуска Java явно используется для запуска кода из исходного файла, как в случае с HelloUniverse.java.
Запустим следующий пример в терминале, работающем под macOS Mojave 10.14.5. Но сначала определим важные правила, которым нужно следовать при создании shebang-файла:
Запустим снова с помощью команды, которая передаёт родительскую директорию, и проверим результат.
Примечание: при оценке исходного кода интерпретатор игнорирует shebang-строку (первую строку). Таким образом, shebang-файл можно явно вызвать с помощью модуля запуска, например, с дополнительными опциями:
Также нужно отметить: если скриптовый файл лежит в текущей директории, то вы можете выполнить его так:
А если скрипт лежит в директории, путь которой указан в пользовательском PATH, то выполнить его можно так:
И в завершение дам несколько советов, о чём нужно помнить при использовании скриптов.
Советы
Обратите внимание на два файла java.java в пакете HelloUniverse и файл HelloUniverse.java в той же директории. Если вы попробуете выполнить:
то какой файл будет выполнен первым, а какой вторым? Модуль запуска больше не ссылается на class-файл в пакете HelloUniverse. Вместо этого он загрузит и выполнит исходный файл HelloUniverse.java, то есть будет запущен файл в текущей директории.
Shebang-файлы открывают массу возможностей по созданию скриптов для автоматизации всевозможных задач с использованием средств Java.
Резюме
Начиная с Java SE 11 и впервые в истории программирования вы можете напрямую исполнять скрипты с Java-кодом без компилирования. Это позволяет писать скрипты на Java и исполнять их из *nix-командной строки.
Поэкспериментируйте с этой функцией и поделитесь знанием с другими.