← Back to netty/netty

How to Deploy & Use netty/netty

Netty Project - Deployment and Usage Guide

1. Prerequisites

Runtime Requirements

  • Java Development Kit (JDK): Latest stable OpenJDK 8 (required for building)
  • Java Runtime: JDK 5 (for Netty 3.x) or JDK 6 (for Netty 4.0+ / 4.1+) is sufficient to run Netty-based applications

Build Tools

  • Apache Maven: Latest stable version (required for building)
  • Native Development Packages (Linux/MacOS only): Required for building native transports

Development Environment

  • Git (for cloning the repository)
  • IDE with Java support (IntelliJ IDEA, Eclipse, or VS Code)

2. Installation

Clone the Repository

git clone https://github.com/netty/netty.git
cd netty

Build the Project

# Navigate to the project root
cd netty

# Build using Maven
mvn clean install

Verify the Build

# Run tests to verify the build
mvn test

3. Configuration

Environment Variables

No specific environment variables are required for basic usage. However, for advanced configurations:

  • Java Options: You may need to set JVM options depending on your application requirements
  • Native Transport: On Linux/MacOS, ensure development packages are installed (see troubleshooting section)

Maven Dependencies

Add Netty to your Maven project by including the appropriate dependencies in your pom.xml:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.115.Final</version>
</dependency>

API Keys and Authentication

Netty itself doesn't require API keys. However, when building network applications with Netty, you'll need to handle authentication based on your specific protocol requirements.

4. Build & Run

Development Build

# Clean and build the project
mvn clean compile

# Run tests
mvn test

Running Examples

Netty includes various examples in the example directory. To run an example:

# Navigate to an example
cd example/src/main/java/io/netty/example/http/helloworld

# Compile and run (adjust classpath as needed)
javac *.java
java HelloWorldServer

Production Build

# Create a shaded JAR with all dependencies
mvn clean compile assembly:single

# Or create a standard JAR
mvn clean package

Running Your Application

# Run your Netty-based application
java -jar target/your-app.jar

5. Deployment

Platform Recommendations

For Java Applications:

  • Cloud Platforms: Heroku, AWS Elastic Beanstalk, Google App Engine
  • Container Platforms: Docker, Kubernetes
  • PaaS: OpenShift, Cloud Foundry

Docker Deployment Example:

FROM openjdk:8-jdk-alpine
WORKDIR /app
COPY target/your-app.jar /app/
EXPOSE 8080
CMD ["java", "-jar", "your-app.jar"]

Kubernetes Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: netty-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: netty-app
  template:
    metadata:
      labels:
        app: netty-app
    spec:
      containers:
      - name: netty-app
        image: your-registry/netty-app:latest
        ports:
        - containerPort: 8080

Module System (JDK 9+)

For applications using Java Platform Module System (JPMS), refer to the Modular Netty guide.

6. Troubleshooting

Common Issues and Solutions

1. Build Failures on Linux/MacOS

Issue: Native transport build failures Solution: Install required development packages:

# Ubuntu/Debian
sudo apt-get install build-essential

# CentOS/RHEL
sudo yum groupinstall "Development Tools"

# macOS (using Homebrew)
brew install autoconf automake libtool

2. Maven Dependency Issues

Issue: Missing dependencies or version conflicts Solution: Clean the local Maven repository:

mvn dependency:purge-local-repository
mvn clean install

3. Java Version Compatibility

Issue: Build fails due to incorrect Java version Solution: Ensure you're using OpenJDK 8 for building:

# Check Java version
java -version
javac -version

# If needed, install OpenJDK 8
# Ubuntu/Debian
sudo apt-get install openjdk-8-jdk

# macOS
brew install openjdk@8

4. Native Transport Issues

Issue: Native transport classes not found Solution: Ensure native libraries are properly loaded:

// In your application
System.loadLibrary("netty_transport_native_epoll");

5. Memory Issues

Issue: OutOfMemoryError during build or runtime Solution: Increase heap size:

# For Maven builds
export MAVEN_OPTS="-Xmx2g -Xms1g"

# For running applications
java -Xmx2g -Xms1g -jar your-app.jar

6. Module System Issues (JDK 9+)

Issue: Module resolution errors Solution: Follow the Modular Netty guide for proper module configuration.

Getting Help

Performance Considerations

  • Use appropriate buffer sizes for your network conditions
  • Configure proper thread pool sizes based on your hardware
  • Monitor and tune garbage collection settings for production deployments
  • Consider using native transports (epoll, kqueue) for better performance on Linux/macOS

This guide provides a comprehensive overview of deploying and using Netty. For more specific use cases and advanced configurations, refer to the official documentation and examples provided with the project.