Recent from talks
Nothing was collected or created yet.
GlassFish
View on Wikipedia| GlassFish | |
|---|---|
| Original author | Sun Microsystems |
| Developer | Eclipse Foundation |
| Initial release | 6 June 2005 |
| Stable release | 7.0.25[1]
/ 28 May 2025 |
| Repository | https://github.com/eclipse-ee4j/glassfish |
| Written in | Java |
| Operating system | Cross-platform |
| Platform | Java |
| Available in | English |
| Type | Application server |
| License | Eclipse Public License 2.0 and GPL2 with GNU Classpath Exception |
| Website | glassfish |
GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by OmniFish, Fujitsu and Payara.[2] The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).[3]
Overview
[edit]GlassFish is the Eclipse implementation of Jakarta EE (formerly the reference implementation from Oracle) and as such supports Jakarta REST, Jakarta CDI, Jakarta Security, Jakarta Persistence, Jakarta Transactions, Jakarta Servlet, Jakarta Faces, Jakarta Messaging, etc. This allows developers to create enterprise applications that are portable and scalable, and that integrate with legacy technologies. Optional components can also be installed for additional services.
Built on a modular kernel powered by OSGi, GlassFish runs straight on top of the Apache Felix implementation. It also runs with Equinox OSGi or Knopflerfish OSGi runtimes. HK2 abstracts the OSGi module system to provide components, which can also be viewed as services. Such services can be discovered and injected at runtime.
GlassFish is based on source code released by Sun and Oracle Corporation's TopLink persistence system. It uses a derivative of Apache Tomcat as the servlet container for serving web content, with an added component called Grizzly which uses Java non-blocking I/O (NIO) for scalability and speed.
History
[edit]Epoch of Sun
[edit]- October 2003 - Sun Microsystems released Sun ONE Application Server 7 [4][5] that supports the J2EE 1.3 specification. It is based on the iPlanet Application Server and the J2EE reference implementation[6] A basic version is free to download, but not open source.
- March 2004 - Sun Microsystems released Sun Java System Application Server 8[7] that supports the J2EE 1.4 specification. In June 2004 update 1 is released.[8] A basic version is free to download, but not open source.
- 8 February 2005 - Sun Microsystems released Sun Java System Application Server 8.1 that supports the J2EE 1.4 specification. This version introduced a major update to web services security (a precursor to the later JASPIC and Jakarta Authentication), Admin Console GUI enhancements, JavaServer Faces 1.1 Support (at this point not yet part of J2EE), performance enhancements, and support for Java SE 5.0.[9] A basic version is free to download, but not open source.
- 6 June 2005 - Sun Microsystems launched the GlassFish project by publishing the vetted source of Sun Java System Application Server.[10][11] Builds of this early version identity themselves in the log as "sun-appserver-pe9.0".[12]
- 31 January 2006 - Sun Microsystems released Sun Java System Application Server 8.2.[13] This version introduced bundling of the Derby database and Fast Infoset for web services.[14] A basic version is free to download, but not open source.
- 4 May 2006 - Project GlassFish released the 1.0 version (a.k.a. Sun Java System Application Server 9.0) that supports the Java EE 5 specification.
- 15 May 2006 - Sun Java System Application Server 9.0, derived from GlassFish 1.0, is released.[15]
- 8 May 2007 - Project SailFin was announced at JavaOne as a sub-project under Project GlassFish. Project SailFin aims to add Session Initiation Protocol (SIP) servlet functionality to GlassFish.[16]
- 17 September 2007 - the GlassFish community released version 2.0 (a.k.a. Sun Java System Application Server 9.1) with full enterprise clustering capabilities, Microsoft-interoperable Web Services.
- 21 January 2009 - Sun Microsystems and the community released version GlassFish 2.1 (a.k.a. Sun GlassFish Enterprise Server 2.1) which serves as the basis for the Sailfin 1.0 (a.k.a. Sun Communication Application Server 1.0).
- 28 October 2009 - SailFin 2.0 (a.k.a. Sun Communication Application Server 2.0) was released which leverages GlassFish 2.1.1 (a.k.a. Sun GlassFish Enterprise Server 2.1.1) and adds a number of features including high availability, rolling upgrade, flexible network topology, better overload protection, Diameter support, improved diagnosability, Java based DCR files for the load balancer, and more.
- 10 December 2009 - GlassFish 3.0 (a.k.a. Sun GlassFish Enterprise Server 3.0) was released. Being the Java EE reference implementation, this was the first application server to completely implement Java EE 6 JSR 316. JSR 316 was however approved with reservations.[17] In this version GlassFish adds new features to ease migration from Tomcat to GlassFish.[18] The other main new features are around modularity (GlassFish v3 Prelude already shipped with an Apache Felix OSGi runtime), startup time (a few seconds), deploy-on-change (provided by NetBeans and Eclipse plugins), and session preservation across redeployments.[19]
Epoch of Oracle
[edit]The commercially supported version of GlassFish was known as Oracle GlassFish Server,[20] formerly Sun GlassFish Enterprise Server, and previously Sun Java System Application Server (SJSAS) has a history, along with other iPlanet software, going back to Netscape Application Server. This includes code from other companies such as Oracle Corporation for TopLink Essentials. Ericsson's SIP Servlet support is included, the opensource version of it is SailFish, developing towards JSR-289.[21] In 2010, the difference between the commercial and open source edition was already quite small.[21]
- 25 March 2010 - Soon after the acquisition of Sun Microsystems, Oracle issued a Roadmap for versions 3.0.1, 3.1, 3.2 and 4.0 with themes revolving around clustering, virtualization and integration with Coherence and other Oracle technologies. The open source community remains otherwise unaffected.
- 28 February 2011 - Oracle Corporation released GlassFish 3.1. This version introduced support for ssh-based provisioning, centralized admin, clustering and load-balancing. It maintains its support for both the Web Profile and full Java EE 6 Platform specifications.
- 28 July 2011 - Oracle Corporation released GlassFish 3.1.1. This is fix release for GlassFish 3.1 with multiple component updates (Weld, Mojarra, Jersey, EclipseLink, ...), JDK 7 support, AIX support and more.
- 29 February 2012 - Oracle Corporation released GlassFish 3.1.2. This release includes bug fixes and new features including administration console enhancements, transaction recovery from a database and new thread pool properties.
- 17 July 2012 - Oracle Corporation released GlassFish 3.1.2.2. This is a "micro" release to address some exceptional issues in the product.[22]
- 12 June 2013 - Oracle Corporation released GlassFish 4.0. This major release brings Java Platform, Enterprise Edition 7 support.[23]
- 4 November 2013, Oracle announced the future roadmap for Java EE and Glassfish Server, with a 4.1 open-source edition planned and continuing open-sources updates to GlassFish but with an end to commercial Oracle support.[24][25] Commercial customers have instead been encouraged to transition to Oracle's alternative product, Oracle WebLogic Server.
- 9 September 2014 - Oracle Corporation released GlassFish 4.1. This release includes many bug fixes (over a thousand) and the latest MR releases of CDI and WebSockets.[26]
- 7 October 2015 - Oracle Corporation released GlassFish 4.1.1. This release includes many bug fixes and security fixes as well as updates to many underlying components.[27]
- 31 March 2017 - Oracle Corporation released GlassFish 4.1.2. This release includes bug fixes.[28]
- 21 September 2017 - Oracle Corporation released GlassFish 5.0. This release includes Java EE 8 Open Source Reference Implementation and that the Java EE 8 umbrella specification and all the underlying specifications (JAX-RS 2.1, Servlet 4.0, CDI 2.0, JSON-B 1.0, Bean Validation 2.0, etc.) are finalized and approved.[29]
Epoch of Eclipse
[edit]- 2017 Oracle donated the source code to the Eclipse Foundation.[30][31] At Eclipse, Payara was leading the GlassFish project, with support from Oracle and Red Hat.[2]
- 29 January 2019 - the Eclipse Foundation released GlassFish 5.1. This release is technically identical to Oracle's GlassFish 5.0 but is fully build from the source code that Oracle transferred to the Eclipse Foundation and which was subsequently relicensed to EPL 2.0. Like GlassFish 5.0, 5.1 is Java EE 8 certified, but does not have any RI status. The main goal of this release is to prove that all source code has been transferred and can indeed be built into a fully compliant product.[32] A GlassFish 5.2 release was planned as a Jakarta EE 8 compatible implementation, but was never released. Jakarta EE 8 is functionally identical to Java EE 8, but was created via the Eclipse Foundation Specification Process (EFSP).[33]
- 31 December 2020 - the Eclipse Foundation released GlassFish 6.0.0. This version is functionally largely identical to GlassFish 5.1 but implements Jakarta EE 9.[34] Jakarta EE 9 is functionally identical to Jakarta EE 8 (which is functionally identical to Java EE 8) but has its package and various constants changed from javax.* to jakarta.*
- 5 May 2021 - the Eclipse Foundation released GlassFish 6.1.0. This version is functionally identical to GlassFish 6.0.0 but implements Jakarta EE 9.1. Jakarta EE 9.1 is functionally identical to Jakarta EE 9 (which is functionally identical to Jakarta EE 8 and Java EE 8) but has support for JDK 11. This release requires JDK 11.
- 28 August 2021 - the Eclipse Foundation released GlassFish 6.2.1. This version has improved support for JDK 17 and includes a new component Eclipse Exousia, the standalone Jakarta Authorization implementation. GlassFish 6.2.1 compiles with JDK 11 to JDK 17
- 14 December 2022 - the Eclipse Foundation released GlassFish 7.0.0. This is the first version containing larger refactoring and code cleanup, large amount of bugfixes and also new features.[35] Implements new Jakarta Concurrency specification, and supports JDK 11 but recommends usage of JDK17. The GlassFish 7 development is sponsored to a large degree[36] by the Estonian company OmniFish, which also provides commercial support for GlassFish once again.[37][38]
Forks
[edit]Over the years several companies forked the GlassFish project and created their own distribution:
Payara Services
[edit]| Payara | |
|---|---|
| Developer | Payara Services Ltd (initial code from Oracle Corporation) |
| Initial release | October 31, 2014 |
| Stable release | 6.2025.4
/ April 22, 2025 |
| Repository | |
| Written in | Java |
| Available in | English |
| Type | Application server |
| License | Common Development and Distribution License & GNU General Public License |
| Website | www |
In response to Oracle’s announcement to end commercial support for GlassFish,[39][40][41] a fork called Payara Server was created and released in October 2014. Payara Server is open source under the same licenses as the original Oracle GlassFish (combined GPL2 + CDDL) and has optional commercial support from Payara Services Ltd., via the Payara Enterprise project.[40]
See also
[edit]References
[edit]- ^ "Release 7.0.25". 28 May 2025. Retrieved 15 June 2025.
- ^ a b "Eclipse GlassFish". projects.eclipse.org.
- ^ Beaton, Wayne (10 May 2018). "Eclipse GlassFish". projects.eclipse.org.
- ^ "Sun ONE Application Server 7 Release Notes".
- ^ "Sun ONE Application Server 7 Debuts". 28 October 2002.
- ^ "Java Live | July 30, 2002". developer.java.sun.com. Archived from the original on 4 February 2003. Retrieved 11 January 2022.
- ^ "Sun Java System Application Server Platform Edition 8 Release Notes".
- ^ "Sun Java System Application Server Platform Edition 8 Update 1 Release Notes". docs.oracle.com. Retrieved 14 April 2023.
- ^ Sharples, Rich (5 February 2005). "Sun Java System Application Server 8.1 2005Q1 Announced". TheServersSide.com. Archived from the original on 19 April 2021.
- ^ "FishEye: Browsing glassfish/". fisheye5.cenqua.com. Archived from the original on 3 February 2006. Retrieved 11 January 2022.
- ^ "Developing and Building Project GlassFish with NetBeans". netbeans.org. Archived from the original on 28 October 2005. Retrieved 11 January 2022.
- ^ "Server startup".
- ^ Ottinger, Joseph (31 January 2006). "Sun Java System Application Server PE 8.2 has been released". TheServerSide.com. Archived from the original on 19 April 2021.
- ^ "What's New in the 8.2 Release (Sun Java System Application Server Platform Edition 8.2 Release Notes)".
- ^ Lynch, Regina (15 May 2006). "Sun Java System Application Server PE 9.0 has been released". TheServerSide.com. Archived from the original on 19 September 2020.
- ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 289". jcp.org.
- ^ "O'Reilly Media - Technology and Business Training". www.oreillynet.com. Retrieved 2018-11-22.
- ^ "GlassFish v3 adds support for Tomcat-style valves". Archived from the original on 2008-09-06. Retrieved 2008-09-07.
- ^ Eduardo Pelegri-Llopart (5 November 2008). "Saved Session State in GlassFish v3 Prelude".
- ^ "Oracle GlassFish Server: Frequently Asked Questions" (PDF).
- ^ a b "Welcome - Oracle Community". community.oracle.com.
- ^ Author, Guest. "GlassFish Server 3.1.2.2 Now Available". blogs.oracle.com.
{{cite web}}:|last1=has generic name (help) - ^ "Java EE 7 / GlassFish 4.0 Launch Coverage". blogs.oracle.com.
- ^ Author, Guest. "Java EE and GlassFish Server Roadmap Update". blogs.oracle.com.
{{cite web}}:|last1=has generic name (help) - ^ McAllister, Neil (2013-11-04). "Want a support contract for GlassFish 4.0? Tough luck, says Oracle". The Register.
- ^ Author, Guest. "GlassFish Server Open Source Edition 4.1 Released!". blogs.oracle.com.
{{cite web}}:|last1=has generic name (help) - ^ Delabassee, David. "GlassFish 4.1.1 is now available!". blogs.oracle.com.
- ^ Kalyandurga, Yamini. "GlassFish 4.1.2 Released". blogs.oracle.com.
- ^ Delabassee, David. "Java EE 8 and GlassFish 5.0 Released!". blogs.oracle.com.
- ^ Lyons, Will. "Moving Forward with Eclipse GlassFish at Jakarta EE". blogs.oracle.com.
- ^ "Oracle Donating Java EE to the Eclipse Foundation » Linux Magazine".
- ^ Guindon, Christopher. "Eclipse GlassFish 5.1 is Released - The Eclipse Foundation". www.eclipse.org.
- ^ "Jakarta EE 8 Status". 18 March 2019.
- ^ "TCK Results".
- ^ "GlassFish 7.0 Delivers Support for JDK 17 and Jakarta EE 10". InfoQ. Retrieved 2023-01-10.
- ^ "Contributors to eclipse-ee4j/glassfish". GitHub. Retrieved 14 April 2023.
- ^ "OmniFish on Providing Support for Jakarta EE 10 and GlassFish 7". InfoQ. Retrieved 14 April 2023.
- ^ "Eclipse GlassFish". 31 March 2023. Retrieved 14 April 2023 – via GitHub.
- ^ "Home". Payara Services Ltd. Retrieved 2023-11-27.
- ^ a b "Java EE and GlassFish Server Roadmap Update (The Aquarium)".
- ^ "GlassFish Became The Killer AppServer And Then Changed The Name : Adam Bien's Weblog".
GlassFish
View on GrokipediaOverview
Definition and Purpose
GlassFish is an open-source application server that serves as a complete implementation of the Jakarta EE platform, enabling developers to build, deploy, and manage scalable web applications in enterprise environments. It provides a production-ready runtime that supports the full spectrum of Jakarta EE APIs, ensuring compatibility and adherence to open standards without proprietary dependencies. This implementation facilitates the creation of robust, distributed systems capable of handling high loads while maintaining reliability and flexibility.[1] Originally developed as a reference implementation for Java EE, GlassFish evolved into a Jakarta EE-compatible server following its transition to the Eclipse Foundation, where it continues to align with the platform's specifications under the governance of the Eclipse EE4J project. This shift marked a broader migration of Java EE technologies to the open-source Jakarta EE ecosystem, preserving backward compatibility while incorporating updates to the specification namespace and APIs. The evolution underscores GlassFish's role in supporting the community's ongoing standardization efforts for enterprise Java.[13] In enterprise Java development, GlassFish supports key use cases such as implementing web services for interoperability, messaging systems for asynchronous communication, and persistence mechanisms for data management in mission-critical applications. These features enable the deployment of complex, transaction-oriented systems like financial platforms or e-commerce backends, where scalability and fault tolerance are essential. By integrating these capabilities, GlassFish empowers organizations to develop applications that meet demanding performance requirements in production settings.[1] Unlike general-purpose servers such as Apache Tomcat, which primarily function as servlet containers for web applications, GlassFish offers full-stack enterprise capabilities as a comprehensive Jakarta EE server, including support for enterprise JavaBeans (EJBs), Java Message Service (JMS), and Java Persistence API (JPA). This distinction makes GlassFish particularly suited for full-fledged enterprise needs, whereas Tomcat is often chosen for lighter, web-tier-only deployments.[1]Licensing and Availability
GlassFish is released under a dual licensing model, comprising the Eclipse Public License version 2.0 (EPL 2.0) and the GNU General Public License version 2 with the Classpath Exception (GPL2 w/CPE).[14] The EPL 2.0 provides a permissive open-source framework that permits commercial use, modification, and redistribution of the software, provided that source code is made available for any modifications and the license is preserved in distributions.[15] Complementing this, the GPL2 w/CPE allows integration with independent modules under varying licenses, facilitating compatibility in Java environments while maintaining copyleft protections for derivative works.[14] This dual structure ensures flexibility for both open-source and proprietary applications, with no royalties or fees required for usage.[15] The open-source Eclipse GlassFish is freely available for download and access through multiple official channels maintained by the Eclipse Foundation. Binary distributions and nightly builds can be obtained from the Eclipse Foundation's download portal via glassfish.org.[11] Source code is hosted on GitHub under the eclipse-ee4j organization, enabling developers to clone the repository at github.com/eclipse-ee4j/glassfish for building from source using tools like Maven.[16] Additionally, it is accessible through Eclipse's project repositories, supporting contributions and version control integration.[1] Eclipse GlassFish represents the community-driven, open-source continuation of the project following Oracle's 2017 donation of the codebase to the Eclipse Foundation, distinguishing it from the historical commercial variant known as Oracle GlassFish Server.[17] The Oracle version, which included enterprise support contracts and additional proprietary features, reached end-of-life for commercial updates in 2013, after which Oracle ceased providing paid support for new releases.[18] In contrast, Eclipse GlassFish operates without such commercial obligations, emphasizing collaborative development under Eclipse governance.[17] Under its licensing terms, Eclipse GlassFish grants users significant freedoms for commercial deployment, including the right to modify the source code for internal use or create derivative products, as long as compliance with EPL 2.0 or GPL2 w/CPE attribution and distribution rules is maintained.[14] This model supports enterprise adoption by allowing redistribution in bundled software or cloud services without licensing fees, though users must ensure patent and warranty disclaimers are honored.[15] Organizations seeking extended support can leverage community resources or third-party providers, but the core codebase remains unencumbered for broad commercial utilization.[14]Technical Features
Core Architecture
GlassFish employs a modular kernel architecture centered on the OSGi framework, utilizing Apache Felix as its default OSGi implementation to enable dynamic loading and management of components as bundles. This design allows for selective installation of modules, reducing startup times, memory usage, and disk footprint by activating only necessary functionalities on demand. Components interact through a lightweight, extensible kernel that supports add-on extensions via public interfaces and dependency declarations, ensuring seamless integration without recompiling the core server.[19] At the heart of this architecture are core components that facilitate deployment, administration, and scalability. Server instances serve as the runtime environments for Jakarta EE applications, each capable of operating standalone or as part of a larger configuration. Administrative domains, managed by a dedicated Domain Administration Server (DAS), encapsulate these instances and provide centralized control over configurations and resources. Clusters group multiple server instances to deliver high availability through features like failover and load balancing, while node agents—representing physical hosts—enable remote management of instances across distributed environments via protocols such as SSH.[20] Network traffic handling in GlassFish relies on the Grizzly NIO framework, which implements non-blocking I/O to process HTTP and HTTPS requests efficiently, supporting scalable server operations for high-concurrency scenarios. Grizzly's asynchronous processing model minimizes thread overhead, allowing the server to manage thousands of simultaneous connections without blocking, and integrates directly with GlassFish's HTTP service layer for protocol decoding and response generation.[21] Extensibility is further enhanced by the HK2 (Hundred-Kilobyte Kernel) dependency injection framework, which implements Jakarta Dependency Injection standards to manage services and their lifecycles dynamically. HK2 enables add-on components to declare dependencies on core services using annotations like@Service and @Inject, supporting scopes such as singleton or per-lookup to control instantiation. This allows developers to extend GlassFish's functionality—such as custom administration commands or monitoring providers—by packaging them as OSGi bundles that the kernel automatically discovers and injects.[22]
The relationships among domains, clusters, and instances form a hierarchical structure optimized for scalability. A domain acts as the top-level container, housing the DAS and one or more clusters or standalone instances, all sharing a common configuration repository. Within a domain, clusters aggregate instances across hosts, enabling horizontal scaling by distributing load and replicating session state via the Group Management Service for fault tolerance. Each instance belongs exclusively to one domain and inherits cluster-level settings if assigned, allowing seamless addition of instances to expand capacity without disrupting ongoing operations. This setup supports elastic growth, where clusters can dynamically incorporate new instances managed through node agents to handle increasing workloads.[20]
