A project of The Apache Software Foundation

Apache Wicket™

Java web applications
that stand the test of time.

Component-oriented. Type-safe. Production-proven across thousands of applications for over twenty years. No JavaScript framework required.

Photo by Mario La Pergola on Unsplash

The Wicket Pattern

Each component: one Java class + one HTML template

TaskPanel.java
public class TaskPanel extends Panel {
    @Inject
    private TaskService taskService;

    public TaskPanel(String id) {
        super(id);
        Task task = new Task();

        Form<Task> form = new Form<>("form");
        form.add(new TextField<>("title",
            LambdaModel.of(task::getTitle, task::setTitle)));
        form.add(new AjaxButton("save") {
            @Override
            protected void onSubmit(AjaxRequestTarget target) {
                taskService.save(task);
                success("Saved!");
                target.add(feedback);
            }
        });
        add(form);
    }
}
TaskPanel.html
<wicket:panel>
  <form wicket:id="form">
    <input wicket:id="title"
           type="text"
           placeholder="Task title" />
    <button wicket:id="save">Save</button>
  </form>
  <div wicket:id="feedback"></div>
</wicket:panel>

A type-safe AJAX form with lambda model binding and CDI injection. No JavaScript. Just Java.

Why Wicket

Crafted for the long run

{ }

For Java devs, by Java devs

No transpiler. No bundler. No framework-of-the-month. Write Java and HTML — the same tools you'll use next year, and the year after that.

🛡

Secure by Default

Full Content Security Policy support without unsafe directives. Automatic nonce injection. XSS protection built into the framework, not bolted on.

↗

Scales with your ambition

From prototype to millions of lines of code. Java's packages, classes, and dependency injection are your architecture — no framework-specific scaffolding required.

The Wicket Community

860+
GitHub Stars
2.1M+
Maven Downloads
22
Years in Production
10
Major Versions
See who's building with Wicket →

Up and running in
thirty seconds

One Maven command gives you a working Wicket application with embedded Jetty. Edit, refresh, repeat.

Quickstart Guide →
$ mvn archetype:generate \
  -DarchetypeGroupId=org.apache.wicket \
  -DarchetypeArtifactId=wicket-archetype-quickstart \
  -DarchetypeVersion=10.8.0 \
  -DgroupId=com.example \
  -DartifactId=myapp
10.8.0
Latest Release
Dec 2025
Released
Java 17+
Baseline
Jakarta EE
Compatible

From the Blog

View all posts →