HOME

TheInfoList



OR:

appserver.io is an
application server An application server is a server that hosts applications or software that delivers a business application through a communication protocol. An application server framework is a service layer model. It includes software components available to a ...
for
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group ...
based web environments. The project consists of
middleware Middleware is a type of computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue". Middleware makes it easier for software developers to implement co ...
which delivers classical PHP web applications and provides additional services.


History

The basic idea of a
WildFly WildFly, formerly known as JBoss AS, or simply JBoss, is an application server written by JBoss, now developed by Red Hat. WildFly is written in Java and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on multip ...
equivalent for PHP was present within TechDivision well before July 2013 when development on the project began, due to technical shortcomings of the PHP language . At that time the possibility of a non-blocking,
socket Socket may refer to: Mechanics * Socket wrench, a type of wrench that uses separate, removable sockets to fit different sizes of nuts and bolts * Socket head screw, a screw (or bolt) with a cylindrical head containing a socket into which the hexag ...
-based PHP middleware was given by using an asynchronous event driven workflow or forked processes. In parallel, as of August 2012, a threading extension for PHP by Joe Watkins enabled true
POSIX The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming interf ...
compatible multithreading. Controversially threads were used because they allow the programmer to account for hardware usage instead of relying on the used runtime environment and enable easier communication between parallel working batches. After deciding on the technical blueprint, development began on the
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...
platform. , the project consisted of 36 separate repositories, around 80,000 lines of code and estimated effort of 18 years (
COCOMO The Constructive Cost Model (COCOMO) is a procedural software cost estimation model developed by Barry W. Boehm. The model parameters are derived from fitting a regression formula using data from historical projects (63 projects for COCOMO 81 ...
model).


Licensing

Appserver.io is
open-source software Open-source software (OSS) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Op ...
under the OSL in version 3.0. It can be downloaded either as an installable package from the project page, or as a source from GitHub. The project aims at a
freemium Freemium, a portmanteau of the words "free" and "premium," is a pricing strategy by which a basic product or service is provided free of charge, but money (a premium) is charged for additional features, services, or virtual (online) or physical (o ...
marketing approach splitting the software into a Community, Professional and an Enterprise Edition. , the Community Edition contained all base features and is open source and free of charge. , the Professional Edition could only be used within the
Microsoft Azure Microsoft Azure, often referred to as Azure ( , ), is a cloud computing platform operated by Microsoft for application management via around the world-distributed data centers. Microsoft Azure has multiple capabilities such as software as a ...
cloud service and offers additional developer support.


Product features

Appserver.io includes a runtime environment, containing PHP extended with external libraries, PHP extensions and service daemons. It is an out-of-the-box runtime environment for PHP development. The use of a multithreading environment 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 bundles administration. As of version 0.6.0 application management is implemented with file-based application deployment. Appserver.io offers
servlet A Jakarta Servlet (formerly Java Servlet) is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web application ...
s, objects that persist between client requests. These can eliminate repeated bootstrapping of applications, but require the wrapping of bootstrap parts. Appserver.io offers an Enterprise Bean implementation similar to
Enterprise Java Beans Jakarta Enterprise Beans (EJB; formerly Enterprise JavaBeans) is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web c ...
functionality. Appserver.io offers modular services that can be used individually by internal and external applications. Features:
Webserver

Persistence Container

Message Queue

Servlet Engine
* AOP support * Design by Contract support * Annotation based Dependency Injection * Timer service * Deployment API * Integrated
FastCGI FastCGI is a binary protocol A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. The protocol defines the rules, s ...
client and backend * Enterprise Beans similar to
Enterprise Java Beans Jakarta Enterprise Beans (EJB; formerly Enterprise JavaBeans) is one of several Java APIs for modular construction of enterprise software. EJB is a server-side software component that encapsulates business logic of an application. An EJB web c ...
Appserver.io allows component-based scalability. Services and servers (e.g. an
HTTP The Hypertext Transfer Protocol (HTTP) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, ...
webserver) are adjustable in size and number based on an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable ...
configuration file. Additional components can be configured for remote access, allowing for
distributed systems A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
and component replication.


Versions

, appserver.io was in an early stage of development. The project provided tested, pre-release versions over GitHub. Development releases are regularly published over the homepage. Appserver.io follows a
naming convention A naming convention is a convention (generally agreed scheme) for naming things. Conventions differ in their intents, which may include to: * Allow useful information to be deduced from the names based on regularities. For instance, in Manhatta ...
based on major and minor version numbers. The major digit specifies a context for minor version names exist. The 1.*.* major version is named Iron which stands for a mythological view on the
medieval age In the history of Europe, the Middle Ages or medieval period lasted approximately from the late 5th to the late 15th centuries, similar to the post-classical period of global history. It began with the fall of the Western Roman Empire an ...
. Every minor version 1.x.* within this major release consist of a noun describing something common to this major context.


Project milestones

* 0.5.8
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
support with a guided installation procedure * 0.6.0 web server and modules structure ensured compatibility with non-servlet applications * 0.10.0 separate application context allowing complete independence * 0.10.0 enterprise beans * 1.0.0 stable API defined by so-called PSRs (similar to JSRs)


Footnotes


Books

* * 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.


References


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


External links

* {{Official website Free software Middleware PHP software Software using the Open Software License