Imagine a bacon-wrapped Ferrari. Still not better than our free technical reports.
See all our reports

How to get Jenkins reports in HTML for managing multiple CI branches


Previously I’ve written about the Top 10 Must-Have Jenkins Plugins/Features and later about how to conquer job hell and multiple app branches using Jenkins & Mercurial. I showed how to use Jenkins views and a couple of plugins to manage multiple branches with continuous integration.

Today I thought I’ll share some more tips with you. Internally we’ve been using a plugin of Jenkins called Publish HTML Reports and a tool we made and open-sourced called Jenkins Reporter. Combine these two handy plugins and you get easy-to-grasp test reports for your branches. What more could you want in life?

Read more

10 Kick-Ass Technologies Modern Developers Love

Introduction to the geek love fest

Have you ever heard the question: “How do you know if you’re in love?”

Well, forget that. We’d rather know “How do you know when a technology is going to change your life?”

Read more

Testing the performance of 4 Java runtime code generators: cglib, javassist, JDK proxy & Byte Buddy


In the first post on runtime code generation in Java, we looked at Java’s strong and static type system. Then we learned about different libraries for code generation and we had a closer look at Byte Buddy, a library of my own efforts.

Today we want to compare the different libraries in a benchmark. In the end, a shiny API will not be the only criteria for a best choice in code generation library. A library’s runtime performance might be an even more important factor, especially if the generated code takes up a crucial position within the running application.

We generate a microbenchmark and see if the performance of the different frameworks will allow us to draw any conclusion about which approach is better.

Read more

Why it rocks to finally understand Java JIT with JITWatch


Performance is a complicated matter, especially if you take into account that your Java program gets through multiple rewrites during the compilation process. First, your source code is translated quite straightforwardly to bytecode, which is then compiled further, sometimes multiple times, to machine code.

By leveraging your knowledge of JVM internals and how the JIT compiler works, you can optimise (to a certain extent) your code to perform better. In this post we’ll talk about a tool called JITWatch that can give you some insight about how your application is handled by the JIT.

Read more

Why it’s challenging to make estimations about code (plus a developer puzzle)

Um, could you move that red dot over a little?

In our everyday lives, we constantly try to estimate things: How long do will it take me to get to work today? How much money do I need for my monthly expenses? Do I have enough food for this big party I’m throwing? How much salt should I put into my wine? And so on…

Read more

How my new friend Byte Buddy enables annotation-driven Java runtime code generation


Last week, we looked into Java’s strong and static type system. We stipulated that such types make our code more expressive, but at the same time limit third-party frameworks in offering POJO-centric APIs.

Today, we’ll look at some limitations of different Java runtime code generation libraries, including the well-known javassist. And the reasons why a typesafe domain specific language for code generation could be really useful.

Read more

Java Parallel Streams Are Bad for Your Health!

Today, we will look at the stream API, specifically parallel streams. Allegedly, it might speed up some tasks your application executes by utilizing multiple threads from the default ForkJoinPool.
In this post we’ll look closer at what happens when you process streams in parallel and which consequences can be expected.

Read more

How to make Java more dynamic with Runtime Code Generation


The ongoing POJO-revolution is a form of code generation that disseminates in the Java landscape. Many modern Java libraries and frameworks do their magic by defining on-demand classes during a Java application’s runtime.
With the goal to design a transparent library that won’t weaken the type system of our application, we look at a sample annotation based security framework and go over the typical approaches to runtime code generation on JVM.

Read more

Beyond the commit: 6 developer tools & technologies you should know

Screenshot 2014-06-26 17.43.45

We’re developers, so we love to code right? We’re happy when our code is running…but wait a minute: how are we supposed to ship our code?

I’m pretty sure your end-users won’t agree to start your project inside your favorite IDE, so this means assembling all the bricks to make your product as professional as we can, including coding, managing resources and building the app.

Read more

If you think Java development is already slow, just wait till you add a Java Web Framework

That's right, I'm slow. What of it?

That’s right, I’m slow. What of it?

In our last couple of blog posts in this series, ‘Why HotSwap wasn’t good enough in 2001… and still isn’t today’ and ‘My class loader hates me and wants to slow me down’, we’ve explored the problem that exists in Java around reloading classes and Java resources and we’ve seen why HotSwap doesn’t go far enough. But we haven’t yet talked about what happens when we build upon Java and use frameworks, such as Spring, Hibernate, JSF, Vaadin, Grails, etc.

Read more

1 2 3 4 5 6 30