Home » Java » Core Java

Core Java

Java Micro-Benchmarking: How to write correct benchmarks

Several months ago, I wrote an article to compare the performances of short indexes for loops. I asked myself of the performances using shorts as loop indexes for loop with few iterations. In Java language, all the operations on integers are made in int. Thus, if we use a short as loop index, at each iterations, a typecasting will be ...

Read More »

Logging exceptions root cause first

The 0.9.30 release of Logback logging library brings new awesome feature: logging stack traces starting from root (innermost) exception rather than from the outermost one. Of course my excitement has nothing to do with the fact that I contributed this feature… To paraphrase Cecil B. de Mille: “The way to make a blog post is to begin with a stack ...

Read More »

Database schema navigation in Java

An important part of jOOQ is jooq-meta, the database schema navigation module. This is used by the code generator to discover relevant schema objects. I was asked several times why I rolled my own instead of using other libraries, such as SchemaCrawler or SchemaSpy, and indeed it’s a pity I cannot rely on other stable third party products. Here are ...

Read More »

Java Concurrency Tutorial – CountDownLatch

Some concurrency utilities in Java naturally get more attention than others just because they serve general purpose problems instead of more specific ones. Most of us encounter things like executor services and concurrent collections fairly often. Other utilities are less common, so sometimes they may escape us, but it’s good to keep them in mind. CountDownLatch is one of those ...

Read More »

Java Concurrency Tutorial – Blocking Queues

As discussed in Part 3, the thread pools introduced in Java 1.5 provided core support that was quickly a favourite of many java developers. Internally, the implementations make smart use of another concurrency feature introduced in java 1.5 – Blocking Queues. Queue First, a brief review of what a standard queue is. In computer science, a queue is simply a ...

Read More »

Java Concurrency Tutorial – Callable, Future

One of the beautiful things about Java from its very first release was the ease with which we could write multi-threaded programs and introduce asynchronous processing into our designs. The Thread class and Runnable interface combined with Java’s memory management model meant for straightforward thread programming. But as discussed in Part 3, neither the Thread class nor the Runnable interface ...

Read More »

Java Concurrency Tutorial – Thread Pools

One of the most generally useful concurrency enhancements delivered in Java 1.5 was the introduction of customizable thread pools. These thread pools give you quite a bit of control over things such as number of threads, reuse of threads, scheduling and thread construction. Let’s review these. First, thread pools. Let’s dive right into java.util.concurrent.ExecutorService, which provides us the basic interface ...

Read More »

Java Concurrency Tutorial – Reentrant Locks

Java’s synchronized keyword is a wonderful tool – it allows us a simple and reliable way to synchronize access to critical sections and it’s not too hard to understand. But sometimes we need more control over synchronization. Either we need to control types of access (read and write) separately, or it is cumbersome to use because either there is no ...

Read More »

Mapping Objects to Multiple XML Schemas – Weather Example

I have written previous posts on EclipseLink JAXB (MOXy)‘s @XmlPath and external binding file extensions. In this post I will demonstrate how powerful these extensions are by mapping a single object model to two different XML schemas. To make the example more “real”, the XML data will come from two different services that provide weather information: Google and Yahoo. Java ...

Read More »