Java. The journey continues.
I've been using this blog to write about my hobby projects for some time now but I'm going to now start posting occasionally about Java-related subjects, since I spend most of my time doing this in my day job. I'm not going to specifically talk about the day job, since its mostly confidential or would at least need to go through marketing first, but I can talk generally about some of the skills I'm learning and any cool products or libraries that I find.
I've been using Java since the 1.0 release way back when (late 90's as far as I remember). Until very recently I have been working in Java 7 since that is the version supported by the main product I have been working on, but I am now starting to work with Java 8 and getting up to speed with lambda functions and the stream processing APIs. I like what I see but need to get more experience with these new features.
Before I start trying to apply these new features to the day job I will apply them to a simple project first. I'm planning on re-writing my JPerf library (a performance and scalability testing framework for java) to use these new features. JPerf is a very small library and won't take long to re-implement, so it's an ideal playground.
I'm also learning more about the java concurrency packages. I've been using some of the classes from this package for a while now but haven't been fully utilizing them. These are generally far more efficient than using the 'synchronized' keyword since that actually serves two purposes: 1) providing concurrency control, and 2) synchronizing the local thread's memory with the main memory, which is an expensive operation. If you just need concurrency control then the classes in the concurrency package, such as Semaphore and ConcurrentHashMap are much better suited.
I'll post an update here soon when I get a chance to re-implement JPerf. If you are interested in seeing the current, old-school implementation, then you can get it from github:
I wrote this library around 7 years ago now, so it is long overdue an update.