If you like this project, please consider supporting me ❤️
The main goal was to take an out of the box Faces (formerly JSF) application (PrimeFaces Showcase) and run it in both a Java EE Server and in Quarkus. Some addition goals:
See QuarkusFaces Showcase running live on a free cloud hosting using 0.1 VCPU and 512MB RAM. Its an underpowered machine but it gets the point across.
The following client and server metrics were captured while hitting the exact same page /datatable/crud.xhtml
Using Incognito Mode
and pressing CTRL+F5 so it forced the browser to load all resources from the server with nothing cached.
Metric | WildFly EE | Quarkus (DEV) | Quarkus (JVM) | Quarkus (GraalVM) |
---|---|---|---|---|
Package Size | 48.5 MB WAR | N/A | 91 MB | 206 MB |
Cold Startup | 10.3 s | 8.092 s | 3.847 s | 0.035 s |
Memory Used | 140 MB | 113 MB | 21 MB | 13.6 MB |
HTTP Requests | 80 | 80 | 61 | 61 |
Resource Size | 2.4 MB | 2.4 MB | 2.4 MB | 2.4 MB |
Transferred Size | 2.4 MB | 2.4 KB | 888 KB | 888 KB |
DOM Loaded | 1150 ms | 1750 ms | 918 ms | 580 ms |
Lighthouse Score | 59/100 | 72/100 | 97/100 | 98/100 |
First Paint | 2.4 s | 2.3 s | 0.8 s | 0.8 s |
Speed Index | 2.4 s | 2.3 s | 1.0 s | 0.8 s |
Time To Interactive | 3.9 s | 2.3 s | 0.9 s | 0.8 s |
Largest Paint | 2.7 s | 2.6 s | 1.1 s | 1.0 s |
To run the example in Dev mode:
git clone https://github.com/melloware/quarkus-faces
cd quarkus-faces
mvn quarkus:dev
Then open your web browser to http://localhost:8000/
To run the example in HotSpot Production mode:
git clone https://github.com/melloware/quarkus-faces
cd quarkus-faces
mvn clean package
java -jar target/quarkus-app/quarkus-run.jar
Then open your web browser to http://localhost:8000/
Builds a Docker image running as a standard JVM application.
mvn clean package -Ddocker
docker run -i --rm -p 8000:8000 melloware/quarkus-faces:latest
Builds a native Docker image running as a GraalVM (Mandrel) application.
mvn -Pnative
docker run -i --rm -p 8000:8000 melloware/quarkus-faces:${version}
We have a WIKI page where we are keeping track of known issues while developing with Quarkus/MyFaces/PrimeFaces. Please feel free to contribute to that page if you find anything you think others should know!