What is glassfish?

GlassFish is an open‑source application server that runs Java programs on the web. Think of it as a “host” that takes the Java code you write (especially Java EE / Jakarta EE code) and makes it work over the internet, handling things like security, database connections, and communication between different parts of your app.

Let's break it down

  • Application Server: A piece of software that provides the environment for Java web applications to run.
  • Java EE / Jakarta EE: A set of standards (like Servlets, JSP, EJB, JPA) that define how enterprise‑level Java apps should be built.
  • GlassFish Core: The engine that reads your Java code, manages resources (threads, memory, connections), and serves responses to users.
  • Admin Console: A web‑based UI where you can start/stop apps, configure databases, set security rules, and monitor performance.
  • Plug‑in Architecture: You can add extra modules (e.g., for clustering, monitoring) to extend its capabilities.

Why does it matter?

  • Standard Compliance: It implements the official Java EE specifications, so code that works on GlassFish will usually work on other compliant servers.
  • Free & Open Source: No licensing fees, making it ideal for learning, prototyping, and small‑to‑medium projects.
  • Reference Implementation: It’s the “reference” server for the Java EE spec, meaning it shows the most up‑to‑date, correct way to use the standards.
  • Developer Friendly: Comes with tools like hot‑deploy (push changes without restarting) and a clear admin console, speeding up development cycles.

Where is it used?

  • Learning & Teaching: Universities and bootcamps use it to teach Java EE concepts.
  • Prototyping: Start‑up teams often spin up a quick GlassFish instance to test ideas before moving to a commercial server.
  • Small‑to‑Medium Enterprises: Companies that need a reliable Java EE server without paying for a commercial license.
  • Testing: QA teams use it to run integration tests for Java EE applications because it mirrors the production environment closely.

Good things about it

  • Full Java EE support - covers all major specifications out of the box.
  • Easy to install - a single download and a few commands get it running.
  • Robust admin console - visual management of resources, security, and monitoring.
  • Active community - plenty of forums, tutorials, and sample projects.
  • Hot‑deployment - change code and see results instantly, no server restart needed.

Not-so-good things

  • Performance - not as fast or lightweight as some newer microservice‑focused servers (e.g., Payara Micro, Tomcat).
  • Memory usage - can be heavy for very small deployments or low‑end hardware.
  • Slower release cycle - updates may lag behind the latest Java EE/Jakarta EE specs.
  • Enterprise features - advanced clustering, high‑availability, and support options often require the commercial Payara Server or other paid products.
  • Declining popularity - many developers now prefer lighter frameworks (Spring Boot, Quarkus), so community momentum is shifting away.