Resin is a
web server
A web server is computer software and underlying Computer hardware, hardware that accepts requests via Hypertext Transfer Protocol, HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, co ...
and
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
application server developed by
Caucho Technology. Currently, only two versions are available: Resin (
GPL), which is free for production use, and Resin Pro, designed for enterprise and production environments with a licensing fee. Resin supports the Java EE standard and features a mod_php/
PHP-like engine called Quercus.
Resin (GPL) offers essential functionalities for web and application serving, while Resin Pro includes additional optimizations, such as:
*Built-in Caching: Resin Pro incorporates built-in caching mechanisms to improve performance.
*Clustering: Resin Pro supports public, private, or hybrid clustering, enhancing scalability and redundancy.
*Advanced Administration and Health System: It provides an advanced administration system and health monitoring for efficient server management.
*HTTP Session Replication: Ensures high availability by replicating
HTTP sessions across multiple server instances.
*Distributed Cache Replication: Enhances application performance by replicating cached data across a distributed environment.
*Auto-Recovery and Diagnostic Reports: Resin Pro offers automatic recovery mechanisms and detailed diagnostic reports to help
troubleshoot
Troubleshooting is a form of problem solving, often applied to repair failed products or processes on a machine or a system. It is a logical, systematic search for the source of a problem in order to solve it, and make the product or process ope ...
.
While Resin is primarily Java-based, critical components of its
networking infrastructure are written in optimized C, providing a balance of features and performance. Released in 1999, Resin has a long history, making it one of the most mature and well-established application servers and web servers.
Product features
Resin Pro has been engineered to include:
* Dynamic Clustering: Locking was replaced with non-locking atomic operations, clearing contention bottlenecks, improving the async/epoll performance, and reducing thread overhead to handle 100,000 requests per second.
* Cloud Support: A single command can add or remove Elastic cluster members. Cluster topology, load balancing, caching, messaging, and management automatically adapt to dynamic servers.
* Compiled PHP on the JVM: Improves performance, scalability, and security of PHP applications by allowing PHP code to call Java Objects directly.
* Security through OpenSSL integration: A comprehensive security framework for application authentication, authorization, and transport level SSL-based security;
* Smart Software Load balancer: Application load is shared among resources automatically to balance them.
* Proxy cache: Java caching can improve application performance by saving the results of long calculations and reducing database load and application response time
Scalability
* Elastic Clustering / Cloud support
**3rd generation clustering optimized for Virtualization 2.0, EC2 and OpenStack deployments
* Session Replication
* Load balancing
* Distributed Cache
**
Memcached
Memcached (pronounced variously /mɛmkæʃˈdiː/ ''mem-cash-dee'' or /ˈmɛmkæʃt/ ''mem-cashed'') is a general-purpose distributed memory-caching system. It is often used to speed up dynamic database-driven websites by caching data and object ...
wire protocol for
Couchbase Server like caching
Development
* Class compilation
* JIT Profiling and heap analysis
* No required
*
JUnit
JUnit is a test automation framework for the Java programming language. JUnit is often used for unit testing, and is one of the xUnit frameworks.
JUnit is linked as a JAR at compile-time. The latest version of the framework, JUnit 5, resides ...
support
* Web Admin
* DevOps support via CLI and REST control of Resin
* Apache
Ant
Ants are Eusociality, eusocial insects of the Family (biology), family Formicidae and, along with the related wasps and bees, belong to the Taxonomy (biology), order Hymenoptera. Ants evolved from Vespoidea, vespoid wasp ancestors in the Cre ...
/
Maven/
Ivy integration
* IDE integration
* Flexible project management
* Logging
Production Ready
* Reliability
* Server Monitoring
* Deployment / Cloud deployment
* Versioned deployment
* Merge paths
* Troubleshooting aids
* Server health reports, baselining and post mortem reporting
* Throttling
App Server
* Java EE Web Profile certified,
* Java CDI
** standard Java
dependency injection
In software engineering, dependency injection is a programming technique in which an object or function receives other objects or functions that it requires, as opposed to creating them internally. Dependency injection aims to separate the con ...
similar to Guice and Spring, part of Java EE
* Transaction support
Web Server
* Static files/
JSP/
Servlet/
JSF
* Extensible access logging
* URL rewriting
* Proxy caching (similar to Squid)
* Gzip compression
*
* Virtual Hosts
*
Comet
A comet is an icy, small Solar System body that warms and begins to release gases when passing close to the Sun, a process called outgassing. This produces an extended, gravitationally unbound atmosphere or Coma (cometary), coma surrounding ...
/Server push
*
WebSocket
WebSocket is a computer communications protocol, providing a full-duplex, simultaneous two-way communication channel over a single Transmission Control Protocol (TCP) connection. The WebSocket protocol was standardized by the Internet Engineering ...
* mod-php like support via Quercus
*
FastCGI
Usage
Resin's market share is small in the grand scheme of Java Application Servers, but some high-traffic sites use it, such as the Toronto Stock Exchange, Salesforce.com, Condé Nast (parent company of Wired, Vogue, GQ) and CNET. NetCraft's February 2012 Survey stated Resin grew to 4,700,000 sites; Resin was the only Java-based web server mentioned.
A 2012 page on a Caucho wiki site describes a test procedure, with results showing that Resin tested 0k (empty HTML page), 1K, 8K, and 64K byte files. At every level, Resin matched or exceeded
Nginx web server performance.
Quercus
Quercus is a Java-based implementation of the PHP language included with Resin. According to a slideshow presented by Emil Ong (from Caucho) to a San Francisco Java Meetup Group in April 2008 pertaining to Resin 3.1, an essential difference in the operation of Quercus between the Resin Open Source and the Resin Professional editions is that in Resin Professional, the PHP is
compiled to Java
bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
. In contrast, in the open-source version, PHP is executed by an
interpreter.
Caucho stated in 2007 that Quercus was faster than standard PHP 5 (PHP 8 with JIT is much faster than older PHP versions; PHP 5 is no longer supported),
although this is only true for the JIT-compiled version in Resin Professional.
Quercus ships with Resin.
Licensing
One license covers all components of the Resin architecture.
Resin is provided in both an open-source GPL license and a Pro version with enhancements for enterprises.
See also
*
Comparison of application servers
References
External links
Resin Features
{{PHP
Cross-platform software
Java enterprise platform
Web server software programmed in Java