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 →