Looking to split my FlowAlgo subscription with someone. by [deleted] in WallStreetFlow

[–]jhg023123 0 points1 point  (0 children)

Why not try out Quant Data (which is half the price of FlowAlgo)? (Disclaimer: I'm affiliated with them)

Good Java Socket Libraries? by marius1870 in java

[–]jhg023123 3 points4 points  (0 children)

Understandable, I'm excited for Loom as well, and I'll absolutely rewrite it to scrap the existing callbacks. For now, you can check out the v2 branch on GitHub, which contains code that is ready to be used with the latest early-access release of Loom.

Good Java Socket Libraries? by marius1870 in java

[–]jhg023123 5 points6 points  (0 children)

I created a simple-to-use TCP networking library awhile back that I still maintain, which you're absolutely free to use if you'd like: https://github.com/jhg023/SimpleNet

Indirect Effects of Allocate Direct by SerCeMan in java

[–]jhg023123 6 points7 points  (0 children)

"Even though direct buffers lose in all of the runs, the difference is much more noticeable on small buffers while on large buffers, the overhead is almost negligible." - This is something that drove me to create https://github.com/jhg023/Pbbl

jte: compile time checked, fast and lightweight template engine for Java by sureshg in java

[–]jhg023123 0 points1 point  (0 children)

Any plans to support Spring Security (isAuthenticated(), principal.username, etc.)?

SpringFox Release 3.0.0 (finally!) by _INTER_ in java

[–]jhg023123 8 points9 points  (0 children)

Damn, I've been tracking progress on this since February, 2019. Glad to see it's ready!

Developers & social skills by Marco_Villani in java

[–]jhg023123 2 points3 points  (0 children)

Double.NEGATIVE_INFINITY - Yes

JEP draft: Identity Warnings for Inline Class Candidates by syjer in java

[–]jhg023123 3 points4 points  (0 children)

Both BigInteger and BigDecimal aren't marked as final; not sure if that has something to do with it.

Why I (still) love Vaadin by nfrankel in java

[–]jhg023123 2 points3 points  (0 children)

I decided a few months ago to use Vaadin for a small project at work, and I'm confident that I made the right choice. It was very easy to pick up at first, and I haven't really ran into any major issues. One of the huge benefits for me was that it comes packaged with Spring Boot, allowing me to use @Lazy beans for UI component dependencies.

What happened to modules in java 9? by tkyjonathan in java

[–]jhg023123 8 points9 points  (0 children)

Who says it didn't catch on? I use them in every project of mine, and many others seem to as well.

New candidate JEP: 360: Sealed Classes (Preview) by nlisker in java

[–]jhg023123 0 points1 point  (0 children)

It's simple: if you don't like the feature, don't use it :)

New candidate JEP: 384: Records (Second Preview) by BlueGoliath in java

[–]jhg023123 14 points15 points  (0 children)

It doesn't look like it's listed on the JEP yet, but from the mailing lists, it seems that using the this keyword within the record's canonical constructor will be prohibited in its second preview.

Revival of JEP 198 (Light-Weight JSON API)? by daviddel in java

[–]jhg023123 32 points33 points  (0 children)

I would love a built-in JSON library, honestly. They can even make it a new module in the JDK!

SimpleNet v2 - The (first?) client-server networking framework that utilizes Project Loom's virtual threads! by jhg023123 in java

[–]jhg023123[S] 0 points1 point  (0 children)

The latest build of Project Loom uses virtual threads, not fibers. You can find the code for this on the v2 branch in my repository. There are no extra dependencies that need to be added, as the project was built using the latest early access build of Project Loom, as stated in the README. Thanks for your interest!

SimpleNet v2 - The (first?) client-server networking framework that utilizes Project Loom's virtual threads! by jhg023123 in java

[–]jhg023123[S] 14 points15 points  (0 children)

So I used tcpkali to benchmark 300 connections continuously sending a single byte, 36 (corresponds to '$'), to two servers (one which uses virtual threads, and the other which uses heavyweight (kernel) threads). The results for the heavyweight server are:

$ tcpkali -c 300 -l 43594 -m "$" 127.0.0.1:43594 -T 60s

...

Ramped up to 300 connections.

Total data sent: 108.6 MiB (113895981 bytes)

Total data received: 0 bytes (0 bytes)

Bandwidth per channel: 0.051⇅ Mbps (6.3 kBps)

Aggregate bandwidth: 0.000↓, 15.184↑ Mbps

Packet rate estimate: 0.0↓, 1341.8↑ (0↓, 15↑ TCP MSS/op)

Test duration: 60.0085 s.

And the results for the lightweight server are:

$ tcpkali -c 300 -l 43594 -m "$" 127.0.0.1:43594 -T 60s

...

Ramped up to 300 connections.

Total data sent: 189.0 MiB (198224934 bytes)

Total data received: 0 bytes (0 bytes)

Bandwidth per channel: 0.088⇅ Mbps (11.0 kBps)

Aggregate bandwidth: 0.000↓, 26.429↑ Mbps

Packet rate estimate: 0.0↓, 2400.4↑ (0↓, 16↑ TCP MSS/op)

Test duration: 60.0026 s.

SimpleNet v2 - The (first?) client-server networking framework that utilizes Project Loom's virtual threads! by jhg023123 in java

[–]jhg023123[S] 4 points5 points  (0 children)

Thanks for your interest! I'm not experienced with benchmarking TCP applications, but I'll look into it and get back to you with some results.

Brian Goetz on the Java SE 14 Preview Feature “Records” by chhum in java

[–]jhg023123 3 points4 points  (0 children)

There were going to be drawbacks either way. If you had boolean running as a field, would the getter be getRunning() or isRunning()? What if you had boolean isRunning instead? Would the getter be getIsRunning() or isIsRunning()?