jclasslib

jclasslib bytecode editor is a tool that visualizes all aspects of compiled Java class files and the contained bytecode.

OTHER License

Stars
2.7K
Committers
7

Bot releases are hidden (Show)

jclasslib - 6.0.5 Latest Release

Published by ingokegel 10 months ago

New features

  • Support reading class files compiled by Java 21 and Java 22
  • When saving modified class files, ask whether to overwrite the original class files or to save to a different output directory with the option to remember the selection
jclasslib - 6.0.4

Published by ingokegel almost 2 years ago

New features

  • Show JVM spec for opcodes in Javadoc for Java 19
  • Support reading class files compiled by Java 19 and Java 20

Bug fixes

  • Fixed "class root not found" message in IntelliJ IDEA plugin
jclasslib - 6.0.3

Published by ingokegel almost 3 years ago

New features

  • Improved display of record attributes by displaying each record entry as a single node with nested attribute nodes
  • Support reading class files compiled by Java 18
  • Added a placeholder panel with instructions in the IDEA tool window

Bug fixes

  • Menu items with and without icons were not aligned on macOS
  • PermittedSubclassesAttribute and RecordAttribute were saved incorrectly and corrupted the class file
  • For Java 9+, the tree of JRE classes always showed the classes of the currently used JRE
jclasslib -

Published by ingokegel about 3 years ago

Bug fixes

Updated translations with new messages in 6.0

jclasslib -

Published by ingokegel over 3 years ago

New features

  • Editing functionality for constant pool, attributes and bytecode

You can edit constant pool entries:
Editing constant pool entries

Attribute values, like access flags:
Editing access flags

Bytecode instructions can be edited from the context menu:
Editing instructions

The opcode itself can be replaced with another compatible opcode:
Editing opcodes

The immediate values of instructions can be edited:
Editing immediate values

  • Attach mode: Connect to any locally running JVM and view and edit its loaded classes

Attach dialog

  • By setting -Djclasslib.locale=en (or another supported locale), the displayed language can be changed regardless of the default locale. In this way, the language can be overridden in the IDEA plugin
  • Links to JVM spec now show the document for Java 16 instead of Java 8

Bug fixes

  • Explicit language selection was broken in 5.8
  • UI fixes and improvements
  • Fixed error when writing the NestMembers attribute
jclasslib -

Published by ingokegel over 3 years ago

New features

  • Runs natively on macOS ARM (Apple Silicon)
  • Linux x64 archive with a bundled JetBrains Runtime that works with fractional HiDPI
  • Polish translation
  • Automatic detection of dark mode
  • Support for reading class files up to Java 17
jclasslib -

Published by ingokegel about 4 years ago

New features

  • Value labels and hyperlinks can be focused and text in value labels can be selected
  • Support the Record class file attribute new in Java 14
  • Support the PermittedSubclasses class file attribute new in Java 15

Bug fixes

  • Installer was not localized in Simplified Chinese
  • Checkbox and radio button menu items did not have the correct icon in the selected state
jclasslib -

Published by ingokegel about 4 years ago

New features

Localization to Simplified Chinese

  • Language detection is automatic by default but can be switched in the UI

Switch language

  • Native alerts and file choosers

Native file chooser

  • HiDPI icons

Bug fixes

  • Unattended installations and console installations were disabled
  • Classes that were opened by dragging files to the window had a leading slash in the title of their tab
jclasslib - 5.5.1

Published by ingokegel over 4 years ago

New features

Added class file versions for Java 14 and Java 15

jclasslib -

Published by ingokegel over 4 years ago

New features

  • Switched the look and feel to FlatLaf for a more modern appearance and better HiDPI support
  • Added a dark mode that can be activated persistently by selecting "File->Dark mode" in the main menu

Dark mode

Bug fixes

  • Constant pool and class member nodes in the class file structure tree were expanded when selected
jclasslib -

Published by ingokegel about 5 years ago

New features

  • Support NestHost and NestMembers attributes new in Java 11+
  • IDEA plugin: Improved method for finding class files, decompiled classes and Scala classes can now be shown
  • HiDPI on Windows is supported
  • Windows and macOS media files are now bundled with a JRE (as of 5.4 Java 13)
  • macOS DMG is now notarized
jclasslib -

Published by ingokegel over 5 years ago

New features

  • Added the ability to read truncated class files
  • Support class file version numbers for JDK 12 and 13
jclasslib - 5.3.1

Published by ingokegel almost 6 years ago

Bug fixes

  • Table row heights were too small in the IDEA plugin
jclasslib -

Published by ingokegel over 6 years ago

New Features

  • Support for reading class files with major versions 54 and 55 (Java 10 and 11)
  • Support for dynamic class file constants in Java 11
  • Added a "Save all open classes" action to the menu. This is useful for extracting class files from Java 9+ JDKs.

Bug fixes

  • Fixed exception when running the GUI from the IDE with Java 9
  • After adding a classpath entry in the classpath browser, the browser was empty.
  • When showing the classpath browser, the tree was re-scanned even if the classpath was unchanged
  • Fixed Java 9 warning for illegal reflective access when debug mode is enabled
  • Fixed wrong attribute length when writing ModuleTargetAttribute
  • Branch instructions were marked as invalid in code attributes if switch instructions were present in between the branch instruction and the target instruction
jclasslib -

Published by ingokegel almost 7 years ago

Bug fixes

Support running with Java 9 on macOS

jclasslib -

Published by ingokegel over 7 years ago

New features

  • The class browser now has a module path and a class path tab

module path

  • Support for CONSTANT_Module_Info and CONSTANT_Package_info structures in Java 9 class files
  • Support for all new class file attributes that occur in the Java 9 module-info.class file: ModulePackages, ModuleMainClass, ModuleTarget, ModuleHashes and ModuleResolution.

module-info.class

Bug fixes

  • Could not use relative path names as arguments for invoking jclasslib
  • Data for unknown attributes was not written
  • Auto-resize in table attribute details panels was broken (regression in 5.0)
  • Class path browser was not updated after changing the JRE home directory in the class path setup dialog
jclasslib -

Published by ingokegel over 7 years ago

Major changes

  • Added a plugin for IntelliJ IDEA that can be installed via the plugin manager. The action in the "View menu"
    can be invoked when a Java, Groovy or Kotlin file is open in the editor.

IntelliJ IDEA action

The bytecode will be shown in the "jclasslib" tool window on the right hand side. Multiple class files can be open at the same time.

IntelliJ IDEA window

Other changes

  • Added support for the SourceDebugExtension class file attribute
  • When opening a class file, select the "General Information" node

Bug fixes

  • Reload class file action did not work (regression in 5.0)
  • LocalVariableTable attribute: "Length" column always displayed "10" (Regression in 5.0)
  • System property jclasslib.io.skipAttributes did not work anymore (Regression in 5.0)
jclasslib -

Published by ingokegel over 8 years ago

Major changes

  • jclasslib's code base has been converted to the Kotlin programming language. Parts of the code base have been rewritten to better fit with Kotlin's programming paradigms. If used as a library, all classes continue to be usable from Java. However, many classes have been renamed and restructured.
  • The jclasslib UI now uses draggable tabs instead of the outdated internal frames in previous versions, a window can be split horizontally, vertically or in a 4-way split

constant pool filters

  • Multiple top-level windows with separate class path configurations are now supported
  • Browsing classes in the runtime library of Java 9 JREs is now supported
  • Drag and drop of class files and JAR files into a jclasslib window is now supported
  • Filtering for the constant pool

constant pool filters

Other changes

  • Inline links to the JVM spec in the bytecode display
  • Selectable text in the bytecode display
  • When reloading a class file, the current selection is always retained

Deployment changes

  • Java 8 is now required to run the jclasslib UI
  • Signed Windows installer and signed DMG for Mac OS X
jclasslib -

Published by ingokegel almost 9 years ago

Bug fixes

Regression: NOP opcodes broke the bytecode display

jclasslib -

Published by ingokegel almost 9 years ago

Features

Support for runtime type annotations. All Java 8 class file attributes are now displayed.

Bug fixes

When an opening a class file did not succeed, the internal frame was in an undefined state