record-builder
OpenJ9
record-builder | OpenJ9 | |
---|---|---|
35 | 7 | |
653 | 3,216 | |
- | 0.1% | |
7.3 | 9.9 | |
26 days ago | 6 days ago | |
Java | Java | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
record-builder
-
JEP Draft – Derived Record Creation (Preview) – Java
The problem with this approach is that the people will have to build crutches like https://github.com/Randgalt/record-builder and by the time Java adds missing features all the codebases will be forever polluted with legacy workarounds that nobody will dare to remove because of backwards compatibility.
It also hinders adoption of new features as people will prefer to maintain consistency in their codebases.
-
Any library you would like to recommend to others as it helps you a lot? For me, mapstruct is one of them. Hopefully I would hear some other nice libraries I never try.
Record builder is pretty good for making builders for your Java 17 records
-
Useful & Unknown Java Libraries - Piotr's TechBlog
I always have to bring up RecordBuilder simply because of the included Withers and it being a source generator instead of the Lombok weirdness.
-
How to use Java Records
The above is not particularly user-friendly. Luckily compiler plugins can provide the missing feature, most notably RecordBuilder:
-
Named Parameters in Java
For records, instead of lombok you can use https://github.com/Randgalt/record-builder which is a valid annotation processor and will not break on JDK changes
-
has anyone written custom annotations using Lombok ?
In this particular case you can generate the builder with something like https://github.com/Randgalt/record-builder that is both valid java and lombok-like enough
-
I made a java client for the todoist api
Records + Record Builder or immutables + the trick to hide the implementing class w/sealed are your friend. Both the mutability and naming conventions this generates are vomitus.
-
"With" for records -- Brian Goetz
Did you use https://github.com/Randgalt/record-builder ?
-
What's your top Java pet peeve?
Try my annotation processor. It generates withers. https://github.com/Randgalt/record-builder
-
Stay with Java(+Spring) or pivot towards Go/Python?
I personally don't use that one much, but you could use this library instead.
OpenJ9
-
I have been trying to make a second server but at the moment I am getting errors does anyone know how to fix?
Source
-
OpenJDK Proposes Project Galahad to Merge GraalVM Native Compilation
I keep forgetting about J9 but they're not doing themselves any branding favors since there actually is J17 on J9 :-/ https://github.com/eclipse-openj9/openj9/blob/openj9-0.35.0/... (Also that 0.35 versioning ...)
As best I can tell, these are the docker images: https://hub.docker.com/_/ibm-semeru-runtimes
$ docker run --rm ibm-semeru-runtimes:open-11-jdk java -version
-
IBM Semeru Runtimes (Eclipse OpenJ9 JVM)
On another note, I'm still not sure if there is a viable way to microbench code running on OpenJ9. It seems that there is still no official support from JMH, at least I'm getting warnings such as "This VM is not supported by JMH. The produced benchmark data can be completely wrong". Apparently it should work, however, my results for runs on OpenJ9 show (by a large margin) much higher variance compared to Hotspot which doesn't exactly inspire confidence.
-
Increasing Performance with OpenJ9 GC Tuning - a guide
-Xjit:disableGuardedStaticFinalFieldFoldingFlat out improves performance, working around a bug in -XaggressiveEnables performance optimizations and new platform exploitation that are expected to be the default in future releases of OpenJ9. -Xmns128M -Xmnx1024MSets minimum and maximum size of the nursery for the gencon (default) GC. Having a small nursery allows garbage collection to be really fast, especially with how many short lived objects Minecraft makes. These values shouldn't need to be changed.If you want to know more about the gencon GC and its nursery and tenure zones you can find something here. -XdisableexplicitgcDoesn't allow mods to force a full garbage collection. Removes some lagspikes from misbehaving mods. -Xgc:concurrentScavengeLets gencon GC collect garbage in the background, without stopping the game thread to do it. Gives a very noticeable boost to "smoothness". -Xgc:dnssExpectedTimeRatioMaximum=95 -Xgc:dnssExpectedTimeRatioMinimum=70Lets gencon GC know that it's gotta spend most of its time cleaning up the nursery, instead of the rest of the heap. Most of the garbage is in the nursery instead of the tenure zone so this works incredibly well on modded MC.
-
IBM joins Eclipse Adoptium and offers free certified JDKs with Eclipse OpenJ9
I like this part "We continue to employ dozens of developers that work directly and openly in the Eclipse OMR and Eclipse OpenJ9 projects at GitHub. IBM doesn’t produce a separate enterprise version of OpenJ9; we don’t hold back any of the innovation in our runtime."
-
Is there any other updated implementation of the Java class library?
OpenJ9 (heavily based on OpenJDK, especially later versions): https://github.com/eclipse/openj9/blob/master/jcl/src/java.base/share/classes/java/lang/Throwable.java
-
Is Lombok in danger of becoming incompatible with future JDK's?
In 1.18.16 they "added support for compiling projects with OpenJ9". Turns out the hack to access Hotspot's sun.misc.Unsafe doesn't quite work with OpenJ9 . Oh, really? So surprising. This is exactly the reason why the OpenJDK project pushes their encapsulation agenda so hard!
What are some alternatives?
MapStruct - An annotation processor for generating type-safe bean mappers
Avian - [INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
Lombok - Very spicy additions to the Java programming language.
ParparVM
awesome-annotation-processing - A curated list of resources related to the Java annotation processing API (JSR 269)
jmh - https://openjdk.org/projects/code-tools/jmh
core - An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...
Error Prone - Catch common Java mistakes as compile-time errors
Immutables - Annotation processor to create immutable objects and builders. Feels like Guava's immutable collections but for regular value objects. JSON, Jackson, Gson, JAX-RS integrations included
es4x - 🚀 fast JavaScript 4 Eclipse Vert.x
Jackson JSON Processor - Main Portal page for the Jackson project
jmurmel - A standalone or embeddable JVM based interpreter/ compiler for Murmel, a single-namespace Lisp dialect inspired by Common Lisp