Программирование arrow Программирование arrow Программа просмотра Java-классов (Java Class Viewer)

Программа просмотра Java-классов (Java Class Viewer)

Оглавление

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

Введение

Для начинающего не так легко понять спецификацию VM; программа просмотра Java-классов - это мощное приложение, которое может показать значение каждого байта в файле класса.

Программа просмотра Java-классов (Java Class Viewer) - Java - Программирование - Программирование, исходники, операционные системы

Основы

Вам стоит опустить данную часть статьи если вас не интересует история данного просмотрщика классов Java.

1. Причина создания программы просмотра Java-классов (jCV)

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

Итак, мы решили написать программу по просмотру Java-классов, которая может отображать визуально файл класса, а также отображать значение каждого байта данного файла класса. Это и является назначением приложения по просмотру Java-классов (Java Class Viewer - jCV).  

2. Библиотека файлов Java-классов (jCFL)  

При создании графического приложения было замечено, что данное приложение может быть разделено на две части:  

  1. Библиотеку файлов Java-классов (jCFL). Она анализирует файл массива байтов класса, предоставляет различные классы-помощники, которые могут помочь в получении информации обрабатываемого класса, а также предоставляет некоторые полезные элементы управления графическим интерфейсом UI для программы анализатора Java-классов. Она может предоставить больше полезной информации чем сообщения об ошибках Sun JDK javac в случае, если файл класса будет проблематичным.
  2. Программу просмотра Java-классов (Java Class Viewer). Это приложение, которое использует библиотеку jCFL для предоставления графического представления файла класса.   

Итак, на данный момент у нас две компоненты - библиотека jCFL и программа jCV.

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

Связанные библиотеки 

Существует еще одна библиотека, применяемая для проверки и сборки файла класса, такая как Byte Code Engineering Library (BCEL) из Apache. Основы разработки jCFL отличаются от BCEL. BCEL - это мощная библиотека для редактирования/изменения файлов Java-классов, а также в BCEL доступен просмотрщик файлов класса.   

Практически невозможно использовать BCEL для написания программы просмотра файлов класса, которая смогла бы показывать также значения каждого байта, поскольку она не записывает расположение при анализе файла класса. BCEL был разработан согласно авторской идее, при этом идея и соглашение об именах не следуют спецификации JVM, в частности структуре файлов класса (Class File Structure).  

jCFL может редактировать файлы классов, записывая смещение файла при анализе, при этом следуя структуре ClassFile согласно спецификации JVM.

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

 


 
« Предыдущая статья   Следующая статья »


  • Java, Программирование двухмерных игр на J2ME
    Вашу игру легко запустить на вашем собственном мобильном телефоне...
  • Java, Введение в JavaFX – Модель шахмат
    Данная статья описывает попытку изучить язык программирования JavaFX путем написания программы «Шахматы»....
  • Java, Особенности Java 5. Часть 2
    В первой части мы обсудили новые возможности Java 5 относительно функции auto-boxing и цикла foreach. В данной части мы обсудим поддержку функций с переменным числом аргументов и статическое импортирование (static import). Поскольку другие функции, такие как enum, annotation, и generics, заслуживают отдельной статьи, мы их не будет демонстрировать в данной....
  • Java, Особенности Java 5
    Java 5 обладает некоторыми полезными возможностями. В данной статье мы рассмотрим их и узнаем, как можно извлечь из них выгоду. В этой части мы рассмотрим auto-boxing foreach....
  • Java, Внезапное закрытие Java-приложения: как этого избежать?
    Во многих случаях у программистов возникает необходимость выполнить некоторые действия в момент, когда пользователь заканчивает работу с приложением. Но проблема состоит в том, что пользователи не всегда пользуются рекомендованными и правильными способами выхода из приложения. Java предоставляет элегантный подход к выполнению какого-либо кода в середине процесса выгрузки процесса вашего приложения, таким образом гарантируя, что этот код, который, например, занимается какими-либо "очиститель...
  • Java, Создание Java-апплета для отображения географических карт
    Многие начинающие Java-программисты, после знакомства с базовыми возможностями и методами создания Java-апплетов, пробуют применить полученные знания для написания уже собственных апплетов - небольших программ, добавляемых к веб-странице. Итак, если вы тоже один из них, то сегодня мы попробуем вместе создать свой несложный апплет для отображения географической карты. Целью создания данного приложения будет то, что часто требуется разместить план или карту того или иного объекта больших размеров....
  • Java, Восемь мифов про Java
    В статье будут рассмотрены восемь наиболее распространенных мифов и заблуждений о Java....