|Original author(s)||TechDivision GmbH|
|Stable release||1.1.0 / 11. November 2015|
|Written in||PHP, C, Shell|
|Operating system||Windows, Mac OS, Linux|
|License||OSL (open-source software)|
appserver.io is an implementation of an application server for PHP based web environments. Its goal is to bring the concept of application server middleware into the PHP market to enable and support enterprise application development and management. To ensure this, the project consists of a middleware which delivers classical PHP web applications and provides additional web services.
The basic idea of a WildFly equivalent for PHP was present within TechDivision quite some time but due to technical shortcomings of the PHP language it took until July 2013 before development on the project could start.
At that time the possibility of programming a non-blocking socket-based middleware in PHP was given by using an asynchronous event driven workflow or using forked processes. In parallel as of August 2012 a threading extension for PHP by Joe Watkins enabled true POSIX compatible multithreading. Even if controversially discussed threads were used as implementation base as they allow the programmer to account for hardware usage instead of relying on the used runtime environment and enable easier communication in between parallel working batches.
After deciding on the technical blueprint, development began on the GitHub platform and the project shaped fast. As of now As of 2015[update] the project consists of 36 separate repositories, around 80,000 lines of code and estimated effort of 18 years (COCOMO model).
Appserver.io is an open-source software under the OSL in version 3.0. It can be downloaded free of charge either as an installable package from the project page, or as a source from GitHub. The project aims at a freemium marketing approach splitting the software into a Community, Professional and an Enterprise Edition. As of 2015[update] the Community Edition contains all base features as listed below and is, and always will be, open source and free of charge.
The Enterprise Edition (currently in planning state) will offer a widely extended feature range unique to it. It can be tested free of charge but is bound to a license fee if used commercially.
appserver.io comes with its own runtime environment, containing PHP in a current version extended with several external libraries, PHP extensions and service daemons. This idea of a self-containing environment makes appserver.io an out-of-the-box runtime environment for PHP development but has a downside with the specific setup. Mainly the usage of a multithreading environment is seen critically, as it is considered to break the so-called shared nothing concept of PHP as it allows for inter-process communication on object level.
Together with the bundled runtime, appserver.io tries to bundle administration by offering an easy deployment. As of version 0.6.0 application management is implemented to the full extent and allows for easy file based deployment of applications. Additional features such as virtual host management, logging, dashboards and extended clustering and deployment options are planned for the future.
As another concept besides known sandboxed PHP applications appserver.io offers the usage of servlets, objects which are persistent in between client requests. These are able to, in theory, yield big performance gains as repeated bootstrapping of applications is avoided, but they need the wrapping of these bootstrap parts to make use of the servlet concept. In addition appserver.io offers an Enterprise Bean implementation based on the Enterprise Java Beans functionality.
As the project's Java role model, appserver.io offers several services which can be used individually by internal and external applications. As a core concept of application servers, these services are organized in a modular way.
Below is a list of features an appserver.io installation provides (some of them usable as standalone products):
- Persistence Container
- Message Queue
- Servlet Engine
- AOP support
- Design by Contract support
- Annotation based Dependency Injection
- Timer service
- Deployment API
- Integrated FastCGI client and backend
- Enterprise Beans similar to Enterprise Java Beans
Powered by this service based approach, appserver.io allows for component based scalability. Services and servers (e.g. an HTTP webserver) are easily scalable in size and number based on an XML configuration file. Additional components can also be configured as being remotely accessed, allowing for distributed systems and component replication.
The paid enterprise version of appserver.io will offer further features,this including:
As of 2014[update], appserver.io is in an early stage of development. However, it provided tested pre-release versions of its product over their GitHub project page. The following list contains versions released up to this date.
appserver.io beta versions
|Old version, no longer supported: 0.5.7||10. October 2013|
|Old version, no longer supported: 0.5.8||5. February 2014|
|Old version, no longer supported: 0.5.9||13. February 2014|
|Old version, no longer supported: 0.6.0||9. May 2014|
|Old version, no longer supported: 0.7.0||14. July 2014|
|Old version, no longer supported: 0.8.0||22. July 2014|
|Old version, no longer supported: 0.9.0||23. July 2014|
|Old version, no longer supported: 0.10.0||23. October 2014|
|Old version, no longer supported: 0.11.0||27. November 2014|
|Old version, no longer supported: 1.0.0rc||19. January 2015|
|Old version, no longer supported: 1.1.0rc||6. November 2015|
In addition, there are development releases regularly published over the homepage of the project.
Since the release of version 1.0.0, stable releases are made in a timely manner. Stables releases (not including bugfix releases) are shown in the table below.
appserver.io stable versions
|Old version, no longer supported: 1.0.0 "Iron Horse"||16. February 2015|
|Current stable version: 1.1.0 "Iron Knight"||11. November 2015|
appserver.io follows a naming convention based on the major and minor version number digits. The major digit does specify a certain context in which minor version names will exist. The 1.*.* major version is named Iron which stands for a mythological view on the medieval age. Every minor version 1.x.* within this major release consist of a noun describing something common to this major context.
The project had several big milestones within the versions above:
- As of version 0.5.8 appserver.io supports Windows with a guided installation procedure
- As of version 0.6.0 the built in web server and modules structure ensure compatibility with non-servlet applications
- As of version 0.10.0 applications do run in a separated context allowing for complete app independency
- As of version 0.10.0 enterprise beans similar to Enterprise Java Beans were introduced
- As of version 1.0.0 appserver.io offers a stable API defined by so-called PSRs (similar to Java Specification Requests)
- Meyen, Sebastian (2013): Software Development Trends. Frankfurt am Main: entwickler.press. S. 25-49.
- Piech, Guido (2014): Online plattform für den Einzelhandel. Das digitale Schaufenster ist erröffnet. In: IT MITTELSTAND, Ausgabe 1-2 (2014), S. 54-64.
- Sitepoint: An Interview with the Appserver.io Crew
- dev-metal: Postmodern PHP – appserver.io, a multithreaded application server for PHP, written in PHP
- SitePoint PHP Blog: An Interview with the Appserver.io Crew
- SuperbCrew: Interview with Josef Willkommer from Appserver.io Team
- ReactPHP project website
- PHP forking manual
- pthreads project homepage
- Benjamin Erb, Concurrent Programming for Scalable Web Architectures
- OpenHUB appserver.io project page
- appserver.io Community Edition
- appserver.io Professional Edition EULA
- appserver.io Enterprise Edition
- appserver.io runtime dependencies
- Multithreading in PHP with pthreads
- appserver.io specific PSRs