RFR: 8245095: Implementation of JEP 408: Simple Web Server
dfuchs at openjdk.java.net
Tue Sep 14 13:41:03 UTC 2021
On Tue, 14 Sep 2021 13:19:17 GMT, Andrey Turbanov <github.com+741251+turbanoff at openjdk.org> wrote:
>> This change implements a simple web server that can be run on the command-line with `java -m jdk.httpserver`.
>> This is facilitated by adding an entry point for the `jdk.httpserver` module, an implementation class whose main method is run when the above command is executed. This is the first such module entry point in the JDK.
>> The server is a minimal HTTP server that serves the static files of a given directory, similar to existing alternatives on other platforms and convenient for testing, development, and debugging.
>> Additionally, a small API is introduced for programmatic creation and customization.
>> Testing: tier1-3.
> src/jdk.httpserver/share/classes/com/sun/net/httpserver/Headers.java line 106:
>> 104: var h = headers.entrySet().stream()
>> 105: .collect(Collectors.toUnmodifiableMap(
>> 106: Entry::getKey, e -> new LinkedList<>(e.getValue())));
> I wonder, what the reason of `LinkedList` usages here?
> As I know ArrayList is faster in all real-world scenarios.
Hi Andrey, IIRC from when I reviewed this code the current implementation of `Headers` already uses `LinkedList` in other places - so this preserves the concrete list implementation class that `Headers` uses (see `Headers::add`). Not that it matters much - but if we wanted to replace `LinkedList` with `ArrayList` I believe we should do it consistently in this class - and probably outside of the realm of this JEP.
More information about the core-libs-dev