What is Jetty and what are its top alternatives?
Jetty is a lightweight and highly scalable Java-based web server and servlet container. Key features of Jetty include support for the latest Java versions, WebSocket and HTTP/2 support, modular architecture, and low latency handling of dynamic content. However, some limitations of Jetty include complexity in configuration and setup for beginners and lack of extensive documentation compared to other web server options.
Apache Tomcat: Apache Tomcat is a widely used open-source web server and servlet container. Key features include easy integration with other Apache projects, extensive documentation, support for Java EE technologies, and a large active community. However, some may find Apache Tomcat to be less lightweight compared to Jetty.
Undertow: Undertow is a lightweight and high-performance web server designed for both blocking and non-blocking operations. Key features include flexible configuration options, WebSocket support, and seamless integration with JBoss AS. However, Undertow may have a steeper learning curve for beginners compared to Jetty.
NGINX: NGINX is a popular web server known for its high performance, scalability, and low resource consumption. Key features include reverse proxy capabilities, load balancing, and TLS/SSL termination. However, NGINX may require additional modules for certain functionality that Jetty offers out of the box.
WildFly: WildFly, formerly known as JBoss, is a robust and feature-rich Java application server. Key features include support for Java EE technologies, clustering capabilities, and a management console for easy administration. However, WildFly may be overkill for simpler web server needs compared to Jetty.
Resin: Resin is a fast and reliable Java-based application server and web container. Key features include clustering support, dynamic class reloading, and high-speed performance. However, Resin may have a smaller community and less extensive documentation compared to Jetty.
Caddy: Caddy is a modern web server with automatic HTTPS setup, HTTP/2 support, and easy configuration using Caddyfile. Key features include Let's Encrypt integration, reverse proxy capabilities, and on-the-fly TLS certificate generation. However, some advanced users may find Caddy's configuration options limiting compared to Jetty.
GlassFish: GlassFish is a robust and full-featured Java EE application server. Key features include support for the latest Java EE specifications, clustering capabilities, and a modular architecture. However, GlassFish may have higher resource requirements compared to Jetty for smaller-scale deployments.
Tomee: Apache TomEE is a lightweight and enterprise-ready Java EE application server built on top of Apache Tomcat. Key features include support for Java EE technologies, simplified configuration, and a small memory footprint. However, some users may find Apache TomEE to be less feature-rich compared to Jetty.
Grizzly: Grizzly is a lightweight framework for building scalable and performant web applications in Java. Key features include support for WebSocket, HTTP/2, and an event-driven architecture for high concurrency. However, Grizzly may require more manual configuration compared to the out-of-the-box functionality of Jetty.
Play Framework: Play Framework is a modern web framework for building reactive applications in Java and Scala. Key features include hot reloading, built-in testing support, and asynchronous request handling. However, Play Framework may have a different programming model compared to traditional web servers like Jetty.
Top Alternatives to Jetty
- Apache Tomcat
Apache Tomcat powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations. ...
- Netty
Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server. ...
- Wildfly
It is a flexible, lightweight, managed application runtime that helps you build amazing applications. It supports the latest standards for web development. ...
- JBoss
An application platform for hosting your apps that provides an innovative modular, cloud-ready architecture, powerful management and automation, and world class developer productivity. ...
- GlassFish
An Application Server means, It can manage Java EE applications You should use GlassFish for Java EE enterprise applications. The need for a seperate Web server is mostly needed in a production environment. ...
- Jersey
It is open source, production quality, framework for developing RESTful Web Services in Java that provides support for JAX-RS APIs and serves as a JAX-RS (JSR 311 & JSR 339) Reference Implementation. It provides it’s own API that extend the JAX-RS toolkit with additional features and utilities to further simplify RESTful service and client development. ...
- Undertow
It is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO. It has a composition based architecture that allows you to build a web server by combining small single purpose handlers. The gives you the flexibility to choose between a full Java EE servlet 4.0 container, or a low level non-blocking handler, to anything in between. ...
- NGINX
nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. According to Netcraft nginx served or proxied 30.46% of the top million busiest sites in Jan 2018. ...
Jetty alternatives & related posts
Apache Tomcat
- Easy79
- Java72
- Popular49
- Spring web1
- Blocking - each http request block a thread3
- Easy to set up2
related Apache Tomcat posts
I need some advice to choose an engine for generation web pages from the Spring Boot app. Which technology is the best solution today? 1) JSP + JSTL 2) Apache FreeMarker 3) Thymeleaf Or you can suggest even other perspective tools. I am using Spring Boot, Spring Web, Spring Data, Spring Security, PostgreSQL, Apache Tomcat in my project. I have already tried to generate pages using jsp, jstl, and it went well. However, I had huge problems via carrying already created static pages, to jsp format, because of syntax. Thanks.
- High Performance9
- Easy to use4
- Just like it3
- Easy to learn1
- Limited resources to learn from2
related Netty posts
We use GraphQL for the communication between our Minecraft-Proxies/Load-Balancers and our global Minecraft-Orchestration-Service JCOverseer.
This connection proved to be especially challenging, as there were so many available options and very specific requirements and we tried our hardest to put as little complexity into this interface as possible.
Initially we considered designing our very own Netty based Packet-Protocol. While the performance of this approach probably would've been noteworthy, we would have had to write a lot of packets as the individual payloads would differ a lot and for the protocol specification a new project would've been needed, so we scrapped that idea.
Our second idea was to use a combination of Redis Key/Value store (in particular the ability to write whole, complex sets as the values of keys) for existing data, Redis Pub-Sub for the synchronization of new/changed/deleted data and a Vert.x based REST API for the mutation requests of the clients. While this would certainly have been possible, we decided against it, as redis offers no real other data types than strings and typing was important to us.
So we finally settled for GraphQL as it would allow us to define dynamic queries and mutations and additionally has subscriptions in store, so we would only need one component instead of three separate. The proxies register as subscribers to the server changes channel and fetch the current data set in advance. If they need to request changes, this is done through a mutation in GraphQL aswell.
The status of the invidiual servers is fetched through Docker healthchecks and a Docker client in the orchestration service, that subscribes to changed HEALTHINESS values in docker. If a service becomes unhealthy it is unregistered and synchronized through GraphQL. The healthcheck is comparable to a ping packet that expects a response in a given time frame.
- Eclipse integration3
- Java3
related Wildfly posts
related JBoss posts
related GlassFish posts
- Lightweight4
- Fast Performance With Microservices1
- Java standard1
related Jersey posts
- Performance4
- Lower footprint1
- Smaller community1
- Less known1
related Undertow posts
NGINX
- High-performance http server1.4K
- Performance894
- Easy to configure730
- Open source607
- Load balancer530
- Free289
- Scalability288
- Web server226
- Simplicity175
- Easy setup136
- Content caching30
- Web Accelerator21
- Capability15
- Fast14
- High-latency12
- Predictability12
- Reverse Proxy8
- The best of them7
- Supports http/27
- Great Community5
- Lots of Modules5
- Enterprise version5
- High perfomance proxy server4
- Embedded Lua scripting3
- Streaming media delivery3
- Streaming media3
- Reversy Proxy3
- Blash2
- GRPC-Web2
- Lightweight2
- Fast and easy to set up2
- Slim2
- saltstack2
- Virtual hosting1
- Narrow focus. Easy to configure. Fast1
- Along with Redis Cache its the Most superior1
- Ingress controller1
- Advanced features require subscription10
related NGINX posts
Our whole DevOps stack consists of the following tools:
- GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
- Respectively Git as revision control system
- SourceTree as Git GUI
- Visual Studio Code as IDE
- CircleCI for continuous integration (automatize development process)
- Prettier / TSLint / ESLint as code linter
- SonarQube as quality gate
- Docker as container management (incl. Docker Compose for multi-container application management)
- VirtualBox for operating system simulation tests
- Kubernetes as cluster management for docker containers
- Heroku for deploying in test environments
- nginx as web server (preferably used as facade server in production environment)
- SSLMate (using OpenSSL) for certificate management
- Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
- PostgreSQL as preferred database system
- Redis as preferred in-memory database/store (great for caching)
The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:
- Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
- Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
- Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
- Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
- Scalability: All-in-one framework for distributed systems.
- Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
We chose AWS because, at the time, it was really the only cloud provider to choose from.
We tend to use their basic building blocks (EC2, ELB, Amazon S3, Amazon RDS) rather than vendor specific components like databases and queuing. We deliberately decided to do this to ensure we could provide multi-cloud support or potentially move to another cloud provider if the offering was better for our customers.
We’ve utilized c3.large nodes for both the Node.js deployment and then for the .NET Core deployment. Both sit as backends behind an nginx instance and are managed using scaling groups in Amazon EC2 sitting behind a standard AWS Elastic Load Balancing (ELB).
While we’re satisfied with AWS, we do review our decision each year and have looked at Azure and Google Cloud offerings.
#CloudHosting #WebServers #CloudStorage #LoadBalancerReverseProxy