In some cases, it's really useful to be able to compile a class at runtime using the java.compiler module. You can e.g. load a Java source file from the database, compile it on the fly, and execute its code as if it were part of your application. In the upcoming jOOR 0.9.8, this will be … Continue reading How to Compile a Class at Runtime with Java 8 and 9
Tag: Java 9
How to Ensure Your Code Works With Older JDKs
jOOQ is a very backwards compatible product. This doesn't only mean that we keep our own API backwards compatible as well as possible, but we also still support Java 6 in our commercial distributions. In a previous blog post, I've shown how we manage to support Java 6 while at the same time not missing … Continue reading How to Ensure Your Code Works With Older JDKs
Squeezing Another 10% Speed Increase out of jOOQ using JMC and JMH
In this post, we're going to discuss a couple of recent efforts to squeeze roughly 10% in terms of speed out of jOOQ by iterating on hotspots that were detected using JMC (Java Mission Control) and then validated using JMH (Java Microbenchmark Harness). This post shows how to apply micro optimisations to algorithms where the … Continue reading Squeezing Another 10% Speed Increase out of jOOQ using JMC and JMH
jOOQ Tuesdays: Nicolai Parlog Talks About Java 9
Welcome to the jOOQ Tuesdays series. In this series, we’ll publish an article on the third Tuesday every other month where we interview someone we find exciting in our industry from a jOOQ perspective. This includes people who work with SQL, Java, Open Source, and a variety of other related topics. I'm very excited to … Continue reading jOOQ Tuesdays: Nicolai Parlog Talks About Java 9
How to Support Java 6, 8, 9 in a Single API
With jOOQ 3.7, we have finally added formal support for Java 8 features. This opened the door to a lot of nice improvements, such as: Creating result streams try (Stream<Record2<String, String>> stream = DSL.using(configuration) .select(FIRST_NAME, LAST_NAME) .from(PERSON) .stream()) { List<String> people = stream.map(p -> p.value1() + " " + p.value2()) .collect(Collectors.toList()); } Calling statements asynchronously … Continue reading How to Support Java 6, 8, 9 in a Single API
JEP 277 “Enhanced Deprecation” is Nice. But Here’s a Much Better Alternative
Maintaining APIs is hard. We're maintaining the jOOQ API which is extremely complex. But we are following relatively relaxed rules as far as semantic versioning is concerned. When you read comments by Brian Goetz and others about maintaining backwards-compatibility in the JDK, I can but show a lot of respect for their work. Obviously, we … Continue reading JEP 277 “Enhanced Deprecation” is Nice. But Here’s a Much Better Alternative
What the sun.misc.Unsafe Misery Teaches Us
Oracle will remove the internal sun.misc.Unsafe class in Java 9. While most people are probably rather indifferent regarding this change, some other people - mostly library developers - are not. There had been a couple of recent articles in the blogosphere painting a dark picture of what this change will imply: Dripstat's Removal of sun.misc.Unsafe … Continue reading What the sun.misc.Unsafe Misery Teaches Us
Java 8 Friday: Language Design is Subtle
At Data Geekery, we love Java. And as we're really into jOOQ's fluent API and query DSL, we're absolutely thrilled about what Java 8 will bring to our ecosystem. Java 8 Friday Every Friday, we're showing you a couple of nice new tutorial-style Java 8 features, which take advantage of lambda expressions, extension methods, and … Continue reading Java 8 Friday: Language Design is Subtle