Main Entry Point for the IPED Application: BootstrapUI and AppMain Architecture

The main entry point for the IPED application is the BootstrapUI.main() method located in iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java, which instantiates the bootstrap class and delegates execution to AppMain for the desktop UI initialization.

IPED is an open-source digital forensic platform developed by sepinf-inc. Understanding the main entry point for the IPED application is essential for developers customizing the platform or troubleshooting startup sequences. The application uses a two-stage bootstrap process where BootstrapUI acts as the launcher and AppMain handles the actual UI initialization.

BootstrapUI: The JAR Manifest Entry Point

The BootstrapUI class serves as the primary entry point referenced by the executable JAR's manifest. Located at iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java, this class extends the generic Bootstrap parent class to provide UI-specific startup behavior.

The main method at line 8 creates a new instance and immediately invokes the run(args) method:

// iped-app/src/main/java/iped/app/bootstrap/BootstrapUI.java
public class BootstrapUI extends Bootstrap {
    public static void main(String args[]) {
        // Starts the bootstrap process which eventually runs AppMain
        new BootstrapUI().run(args);
    }

    @Override
    protected String getMainClassName() {
        // The class that really runs the UI
        return AppMain.class.getCanonicalName();
    }
}

The getMainClassName() override returns AppMain.class.getCanonicalName(), directing the parent Bootstrap class to load and execute the real application bootstrap rather than handling UI initialization directly.

AppMain: Core UI Bootstrap Logic

While BootstrapUI handles the initial launch, the AppMain class at iped-app/src/main/java/iped/app/ui/AppMain.java contains the substantive startup sequence for the graphical interface. The main method here initializes the control client, checks the Java version, detects case paths, and finally initializes the main application window.

// iped-app/src/main/java/iped/app/ui/AppMain.java
public class AppMain {
    public static void main(String[] args) {
        // UI startup performed here
        startUpControlClient = new StartUpControlClient();
        startUpControlClient.start();
        UiScale.loadUserSetting();
        checkJavaVersion();
        new AppMain().detectCasePath();
        // …
        App.get().init(...);
    }
}

This separation allows BootstrapUI to perform classpath setup and system checks before handing control to AppMain for UI-specific tasks like scaling settings and window initialization.

Alternative Entry Point for Processing Mode

IPED also supports headless batch processing through a separate entry point. The Main class at iped-app/src/main/java/iped/app/processing/Main.java provides the entry point for non-UI processing mode, invoked by the parent Bootstrap class when running without a graphical interface.

Command Line Execution

When launching the application from the command line, the JAR manifest points directly to BootstrapUI:

java -jar iped-search-app.jar

This execution path follows the sequence: JAR manifest → BootstrapUI.main() → Bootstrap.run() → AppMain.main() → UI display.

Summary

Frequently Asked Questions

What is the difference between BootstrapUI and AppMain in IPED?

BootstrapUI acts as a launcher that sets up the environment and classpath before delegating to AppMain. While BootstrapUI determines which main class to run via getMainClassName(), AppMain contains the actual logic for initializing the graphical interface, including UI scaling configuration, case path detection, and window creation.

How does IPED handle headless or command-line processing?

For batch processing without a UI, IPED uses the Main class located at iped-app/src/main/java/iped/app/processing/Main.java. The parent Bootstrap class detects the execution context and routes to this alternative entry point instead of AppMain when running in headless mode.

Where is the executable JAR manifest configured to point to BootstrapUI?

The manifest is configured during the build process to point to iped.app.bootstrap.BootstrapUI as the Main-Class attribute. When you execute java -jar iped-search-app.jar, the JVM automatically invokes BootstrapUI.main(), starting the bootstrap chain that eventually loads the UI through AppMain.

Can I customize the IPED startup behavior?

Yes, developers can extend the Bootstrap class or modify AppMain.java to customize startup sequences. Since BootstrapUI uses the getMainClassName() method to determine the target class, overriding this method allows redirecting to custom bootstrap classes while maintaining the same JAR entry point structure.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →