You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+16-9Lines changed: 16 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,15 @@
1
1
## FusionAuth HTTP client and server [](https://github.com/FusionAuth/java-http/actions/workflows/test.yml)
2
2
3
-
**NOTE:** This project is in progress. Version `0.3.0` is production ready, version `0.4.0` which will likely become `1.0.0` is still in development.
3
+
### Latest versions
4
+
5
+
* Latest stable version: `0.3.0`
6
+
* Latest release candidate: `1.0.0-RC.1`
7
+
* Using Java Virtual Threads
4
8
5
9
The goal of this project is to build a full-featured HTTP server and client in plain Java without the use of any libraries. The client and server will use Project Loom virtual threads and blocking I/O so that the Java VM will handle all the context switching between virtual threads as they block on I/O.
6
10
7
-
For more information about Project Loom and virtual threads, here is a good article to read: https://blogs.oracle.com/javamagazine/post/java-virtual-threads
11
+
For more information about Project Loom and virtual threads, please review the following link.
The HTTP server implements TLS 1.0-1.3 using the Java SSLEngine. To enable TLS for your server, you need to create an `HTTPListenerConfiguration` that includes a certificate and private key. Most production use-cases will use a proxy such as Apache, Nginx, ALBs, etc. In development, it is recommended that you set up self-signed certificates and load those into the HTTP server.
118
+
The HTTP server implements TLS `1.0-1.3` using the Java SSLEngine. To enable TLS for your server, you need to create an `HTTPListenerConfiguration` that includes a certificate and private key. Most production use-cases will use a proxy such as Apache, Nginx, ALBs, etc. In development, it is recommended that you set up self-signed certificates and load those into the HTTP server.
114
119
115
-
To set up self-signed certificates on macOS, you can use the program `mkcert`. Here is an example:
120
+
To set up self-signed certificates on macOS, you can use the program `mkcert` with the following example.
Note, if you are using Linux, once you install `mkcert` the instructions should be the same.
130
+
124
131
In production environments, your certificate will likely be signed by one or more intermediate Certificate Authorities. In addition to the server certificate, ensure that all intermediate CA certificates in the chain are included in your pem file.
125
132
126
133
Now you can load these into the HTTP server like this:
@@ -171,7 +178,7 @@ The load test configuration is set to `100` clients with `100,000` requests each
171
178
172
179
All the servers were HTTP so that TLS would not introduce any additional latency.
173
180
174
-
Here are the current test results:
181
+
Here are the current test results: (in progress...)
175
182
176
183
| Server | Avg requests per second | Failures per second | Avg latency in ms | Normalized Performance (%) |
@@ -257,7 +264,7 @@ Let's face it, NIO is insanely complex to write and maintain. The first 3 versio
257
264
258
265
## Helping out
259
266
260
-
We are looking for Java developers that are interested in helping us build the client and server. If you know a ton about networks and protocols and love writing clean, high-performance Java, contact us at [email protected].
267
+
We are looking for Java developers that are interested in helping us build the client and server. If you know a ton about networks and protocols and love writing clean, high-performance Java, contact us at `[email protected]`.
0 commit comments