Java Development
We help our clients develop secure, performant, and scalable Java applications.Recent Java Education
Developers need a deeper understanding of Java language features and capabilities in order to truly use it to its fullest extent. Check out the following Keyhole Software Java-based tutorials to get up-to-speed:
- So you’re a Java programmer, and you want to take your skills to a higher level. I’m going to suggest you take a project and...
- In this blog post, I will demonstrate a technique to query the status of a SQL Server Agent job that executes the SSIS package. SQL...
- This one is just for fun. I’ve been using FreeBSD off and on since the late 90’s when a good friend, who has since passed,...
- In this tutorial for Spring Batch, we're going to take a look at Programmatic Flow decisions in a Spring Batch job using Spring's JobExecutionDecider. Spring...
- In my last blog post Back in the Groovy 4, I briefly mentioned Groovy-Integrated Query (GINQ). I've been wanting to write about how I would...
- When I heard that Groovy 4 is coming out, I decided to get ahead of it. I went online to explore what new features we...
- Back in 2015 and 2016, I wrote two blogs that went step by step to develop a microservice/Netty architecture with fully working code called Whirlpool.A...
- In one of my previous Spring Batch blog articles, I wrote about the need to read a set of data, process the data, and export...
- This article is going to introduce you to Spring Boot with GraphQL. We’ll walk through a simple beer app to show you what it can...
- While working with a client recently, my team was given the task to retrieve the held securities and account data from the system and export...
- I was recently tasked with summarizing the data of a several-million-row table, and the task proved to be a bit grueling at first. Eventually, I...
- This article will set up a basic Spring Boot app that incorporates Apache Camel to move some sample files around.If you are like me, you...
- Social logins using Oauth2 have become a industry standard. It has revolutionized the way sites share data and has allowed users to quickly access new...
- Why should one care about new JDK releases? As most Java developers are acutely aware, most of the industry is still dominated by JDK 8,...
- Some of us take for granted the newer features in Java, but, being a software consultant, I get to be involved in projects that are...
- In this blog, we’ll present a simple arithmetic expression parser implemented through an Antlr4 parser generator. It will be able to take in an input...
- The last few years have seen a lot of movement to bring applications that don't require manual intervention from the mainframe to Unix, Linux, Windows...
- The Keyhole Software team is excited to announce that we are sponsoring and speaking at the upcoming Kansas City Java User Group on Thursday, January...
- When the Microservices approach became popular a few years ago, many companies rushed to build their own microservices or to convert their legacy applications into...
- Several years ago, 2012 to be precise, I wrote an article on an approach to unit testing Spring Batch Jobs. My editors tell me that...
- The big three cloud providers (AWS, Azure, and Google Cloud, in that order) have their various strengths and areas of expertise. Most large organizations though...
- AWS SQS (Simple Queue Service) can provide developers with flexibility and scalability when building microservice application(s). In this quick start tutorial, we will demonstrate how...
- So you have mastered Spring Boot and started toying around with React. Now you want React to talk to your Boot app as your back-end...
- While working on a recent project at a client, we had the opportunity to refactor some data extracts that were using a commercial Excel writing...
- Have you ever received endless notifications from the latest application you just downloaded? For example, a bank application that tells you your balance is less...
- Over the last few years, I have worked on several .NET and JavaScript projects. My go-to IDE for Angular, Node, and (in starting to learn)...
- In today’s development environment, there is an abundance of frameworks that we can choose from for front-end or user interface (UI) work.I was recently talking...
- ProblemI was pushing a new Docker image tag for each application code commit, and the admins of the private registry were getting annoyed at how...
- Spring Boot is a framework designed to simplify the bootstrapping and development of a new Spring application. The framework takes an opinionated approach to configuration,...
- I am assisting a client that is migrating from a monolithic legacy application to a modern Microservice stack with Spring REST. We are helping to...
- We are proud to announce the new release of a Hyperledger Fabric Blockchain Browser open source web application. This application utility allows developers and operators...
- Has your project gotten to the point when big data sets and/or time-consuming calculations have begun to affect performance? Or are you struggling to optimize...
- From some of my previous posts, you can get the idea that I promote the idea of developing maintainable code rapidly. So I was pretty...
- In general terms, a blockchain is an immutable transaction ledger in a distributed network of participating peers. Its data includes a string of transaction records...
- JDK 10, an implementation of Java Standard Edition, was released in March 2018. It brought with it Local-Variable Type Inference to help simplify the writing...
- TL;DR: Add OWASP Dependency-Check to your build process to get insight into your dependency vulnerabilities.Recent major data losses and security vulnerabilities in open source frameworks *(and...
- We have discussed many different ways to read and write data in Spring Batch. The framework comes with quite an assortment of Readers and Writers...
- The JUnit team continues to make great progress in adding new features and enhancements to the JUnit 5 framework. We already have a second significant...
- The typical deployment scenario for a Spring Boot application in AWS involves running the Java application on an EC2 instance 24 hours a day. Of...
- One issue that we face day to day as developers is speed of development. One of the coolest things to me in the ever-changing landscape...
- Most applications use properties as variables or parameters that have been extracted from the main logic and injected into the application at runtime. Traditionally, these...
- Bitcoin is hot -- and what an understatement that is. While the future of cryptocurrency is somewhat uncertain, blockchain, the technology used to drive Bitcoin,...
- With the evolution of microservices and the scalable nature of modern distributed architectures, batch processing seems to be falling out of favor. In fact, the...
- If you know Spring, chances are pretty good that you’ve also worked with RowMappers and everyone’s #1 favorite BeanPropertyRowMapper. Okay, maybe not EVERYONE. But EVERYONE...
- I recently gave a presentation to my Keyhole team members about JUnit 5. I started off the presentation by covering the importance of automated testing,...
- The Keyhole team is proud to announce the publishing of a new white paper: Blockchain For The Enterprise. While Bitcoin is on the minds of the...
- It is hard to believe that JUnit 5 has been out for five months! Already we have our first feature release. There are quite a...
- I’m in the middle of several talks on JUnit 5, so it’s safe to say that JUnit has been on my mind lately. In the...
- JUnit 5, released in September of 2017, is the first major release for the popular JUnit testing framework in a little over a decade. I...
- This article is part of my blog series on automated testing promoting my new Pluralsight course Effective Automated Testing with Spring.Automated testing is an essential...
- Apache JMeter is an open source application tool designed to load test functional behavior and measure performance on static pages, dynamic resources, and web applications....
- It seems that quite often we read stories in the news about computer systems being cracked and data being compromised. It’s a growing concern that...
- When I heard that the Struts Open Source framework played a role in the recent Equifax hack, I wanted to do some research to understand...
- I recently worked to develop a software platform that relied on Spring Boot and Docker to prop up an API. Being the only developer on...
- One of my most recent projects involved helping a client move many decades of code from a mainframe environment to a distributed Java web environment....
- Recently I was working on a development project for a client focused on Spring Batch. The program required a pull of the SFTP directory for...
- Java 9, after many delays and failed votes, looks to be finally arriving this September.Java 9 will bring several new features: enhancements to Streams, a...
- When developing web applications, we sometimes need to push server events down to connected clients. However, HTTP was not designed to allow this. To get...
- While acknowledging that I still have much to learn about Spring Batch, I’d like to share my well-learned lessons in the world of restartability, including...
- If you are heading down the path of a Microservices style of architecture, one tenant you will need to embrace is automation. Many moving parts...
- We have consultants who specialize in moving old to new, renovating dilapidated code bases, and designing brighter futures for enterprises who have been vendor-locked for...
- Need a little spring in your step? Tired of all those heavy web servers and deploying WAR files? Well you’re in luck.Spring Boot takes...
- The Keyhole Labs team is excited to announce the release of a Spring Boot starter for auto-configuration of Trouble Maker.This new auto-configuration allows Spring Boot...
- Welcome back to this JHipster tutorial series! In part one we covered creating a monolithic application. In part two, we walked through creating a microservice...
- In part two of this series, we create a microservice architecture using JHipster’s available options for doing so. There is quite a bit more work...
- I introduce the process I went through to diagnose the bug and determine the correct integration test solution to fix it the right way. In...
- So, you want to stay on the leading edge of technology, but feel overwhelmed by all the moving parts. You’re in luck! jHipster aims to...
- Being a strong advocate of Spring Batch, I've always talked about the notion of Spring Batch providing developers with a framework that allows them to...
- I recently wrapped up attending the SpringOne Platform conference in Las Vegas. If you didn't attend SpringOne, you'll definitely want to read this post. We'll...
- At Keyhole, we have published several blogs about Microservices. We've talked about architectural patterns used in a Microservices environment such as service discovery and circuit...
- Introduction Update! Whirlpool now uses the "just released" Netty version 4.1.3. The great news about this is the upgrade required zero code changes, just update the...
- In the much belated conclusion to my series on HATEOAS, we will be diving into how to implement HATEOAS using Spring-Data-REST and Spring-HATEOAS. It is springtime...
- I am a huge Android fanboy, and have been one ever since the Nexus One came out. The Android OS has evolved so much and...
- Delegate: a person who is chosen or elected to vote or act for others - Merriam-Webster. Delegate pattern: In software engineering, the delegation pattern is a design...
- Or How I Learned to Stop Worrying and Love the HATEOASREST has become the defacto, or at least vogue, solution to implementing web services. This...
- Your application just launched into production after 6+ months of development and bug fixes. In true Agile fashion, you and the team released your MVP...
- On a recent project, I was faced with an interesting problem: take a service method that was given a single object and reuse the same...
- As software developers, we all have our favorite tools for making us successful. Many are perfect for the job when getting started but are soon...
- To say that n-grams are a massive topic would be an understatement. Do a quick search and you will find yourself staring down volumes of...
- What is Spring Integration? The popular definition (via Google), JavaWorld.com says: “Spring Integration is an enterprise integration framework that provides out-of-the-box implementation of the patterns in the now-classic...
- Here at Keyhole, we are very fond of Spring Batch. In many Java Enterprise environments, there is still a big need for automating moving data...
- I recently assisted a client in getting up and running with a Spring Batch implementation. The team had decided to move forward with a JavaConfig-based configuration for...
- When I made the switch from .NET to Java, I naturally had to switch IDEs. With moving to Java, I chose Eclipse. I was fortunate...
- Netty is used today in all kinds of applications, all over the Internet, to handle thousands (if not millions) of chat conversations, multiplayer games including Minecraft,...
- I am currently working on an enterprise application using JSF as the view technology and JPA for the persistence layer. It may have been something...
- My local development feedback loop between code change and runnable container was annoyingly long on a Maven-based project I was recently working on. I wanted...
- When you have been developing in Java for 15 years and a co-worker asks you to help them debug a null pointer exception, you don't...
- The state of web application cryptography has changed, and each development language provides its own way of working with it. I will touch on the...
- In my previous article covering Java Annotations, I outlined a recent use case and provided you with some examples of custom annotations and how they might...
- In Part 1 of this series, I discussed the basics of loading data from an XML file into a database using JAXB and JPA. (If...
- I know what a lot of you are already thinking, so let’s get this out of the way: “JAXB? As in XML? Come on, all...
- If you've been programming in Java and using any one of the popular frameworks like Spring and Hibernate, you should be very familiar with using annotations. When...
- Although I studied and experimented with different development technologies and tools throughout my college and graduate careers, my full-time professional career began with development in...
- While pulling down an existing Backbone.js project that I was helping with, I felt confident enough with JavaScript that I figured I could start cranking...
- As I sat down to write this blog post, I thought through how many years I’ve been developing, and how many great people I have...
- I wanted to take some time to put together a summary of some popular dependency injection (DI) frameworks for Java. This is a high-level overview...
- Single Page Applications are quickly gaining traction as a way to implement rich, robust, and mobile friendly web-based applications. Essentially, this requires a shift in...
- In my time with Keyhole, I've been involved in a number of projects where the client was asking us to rewrite a legacy system while...
- We have talked about how to get up and running with Spring Batch in a few of previous articles. Now, we’re going to start discussing...
- The term Rapid Application Development, or RAD, has been around for a few years. From the way it's avoided in all sensible software development shops,...
- In the early days of Java development, we either didn't see much of a need for build tools, or used what we had from other...
- The de-facto “easy” primary key for ages has been the auto-incrementing integer. Upon insertion of a new record, the database simply increments a counter for...
- We previously published a brief tutorial showing how to set up a Spring RabbitMQ Template. Now, let’s take a step back for a broader view...
- In this quick tutorial, we will create a RabbitMQ Template to send messages to an exchange.The exchange we are working to send a message to...
- As a part of the “lazy" programmer club, I try to find and use things that have solved problems similar to mine. In Java, we...
- The Keyhole team has had recent engagements that involve applying HTML5 technology to create rich client web applications. In order to explore and validate application...
- Most software development teams spend all of their time and efforts gathering requirements, planning, testing, implementing and supporting large systems to be able to do...
- We often model interconnected data by cramming it in and out of table structures. Why don’t we simply model interconnected data as … interconnected data? I...
- This is a continuation of my previous entry on component based java frameworks. In this post, I would like to give a couple of examples...
- Keyhole Software has opened access to the example application presented during the recent, successful Spring Batch Breakfast Boost educational seminar.The Spring Batch Breakfast Boost event...
- Keyhole Software has scheduled its next educational event open to the public. Keyhole is hosting a free Spring Batch Breakfast Boost event to educate the...
- While working for a client recently, I was given a small project to produce a report that would help reconcile differences in data that existed...
- PREFACE In January, I wrote a blog post about the need to partition HttpSession across multiple browser tabs or windows. In that blog, the client was...
- jqGrid is an Ajax-enabled JavaScript control that provides solutions for representing and manipulating tabular data on the web. Since the grid is a client-side solution loading...
- Recently, I was working on a project in which the users needed to see a list of files available for download. While it wasn't a specific requirement, I...
- I have recently had the opportunity to work on an application utilizing ICEFaces ICE components and have been learning more about the product. This was...
- Now that we’ve had a high level overview of some of the simple and basic features of Spring Batch, let’s dive into what it takes...
- Have you ever heard someone say “Man I wish we had a toy like that when I was a kid! That would have been awesome!”...
- During one of my engagements, a requirement arose for the production of numerous financial audit reports in PDF format. These reports currently existed and were...
- I have a huge fascination with reality TV shows in which something is created. My favorite of this genre is the Chip Foose-led “Overhaulin” series...
- Overview This is the second post in a series written on Dependency Injection for Android Development. In this blog, I will discuss how to take advantage of...
- Overview For many years now, Object Oriented developers have relied on various Dependency Injection frameworks while developing anything form desktop to web applications. For both Java...
- As a software consultant, I very rarely end up in a situation where I am asked to implement something new from scratch, and even rarer...
- Scenario You are working on a project and you have two objects. You want to know if, according to the business, they are the same item....
- At Keyhole Software, we are huge proponents of the benefits of open source software. Our team members enjoy contributing their creations to the development community....
- My last article was entitled Joda-Time: The Future of Java Date/Time and I was pleased to see a lot of discussion on the topic. However,...
- A wide variety of parsers exist for use with JSON and can be viewed on the JSON website. One great option for use with Java objects...
- Most Java applications interact with a relational data source through a POJO object model that is mapped with an object relational (OR) mapping framework. Developers...
- So how often have you had to work with date/time functions in Java? I mean really WORK with them? I'm not talking about simply setting...
- If you want to go surfing but you live smack dab in Kansas, it could be a challenge. (Unless you want to go paddle in...
- Recently I've been working on a project that is centered around batch processes that leverage the Spring Batch project and also uses hibernate's JPA implementation. ...
As the industry gradually shifts from JDK 8 to the latest LTS release and becomes more accustomed to the new, 6-month release cadence, we should start seeing faster adoption rates of new releases.
As a result, the need to continually sharpen your sword and stay up to date will increase.
This tutorial takes a look at three of the more significant enhancements that come with JDK 14: Records, NullPointExceptions, and instanceof. We’ll also briefly discuss JDK 15 and its promised JEPs.
Get more info: What’s New in JDK 14 and Beyond.


We are passionate about knowledge transfer and expansion. Our team shares its consulting expertise via blogs, learning resources, and open-source utilities that benefit the larger software development community.
View All Blogs
Java Consulting Services
Advisory & Consulting
Strategic analysis and tailored advice to most efficiently develop with and utilize Java technologies.
Java Development
Using Java technologies to build server-side or serverless enterprise applications to specification.
Education & Training
Technical education through hands on learning to equip your team for effective Java development.
Proof-of-Concepts
Ensure that your solution will be viable for the needs and requirements of your industry.
Development Project Augmentation
Proven Java practitioners from our team join your project to bring specific initiative, skill, and leadership.
Java Application Enhancement
Building onto your existing Java application to add new features, enhancements, and optimization.
Java Competencies
Keyhole consultants are tool agnostic— we use the right tool or technology for the unique project requirements. We have expertise with a wide variety of Java frameworks and tools.
Recent Java Applications
Keyhole's consulting experience with clients allows us to boast a wide range of competencies and proven success with Java technologies in a variety of industries, configurations, and environments.
- A team of Keyhole Software consultants helped a multi-national company to develop an application focused on full automation of the insurance claims workflow process after...
- A team of Keyhole Software Consultants built a customer-facing analytics dashboard for an international leader in automotive data and software services. This project was performed...
- Keyhole consultant was engaged in an effort to implement a push notification solution for an existing mobile banking application.To begin, Keyhole reviewed the application requirements...
- Under an aggressive 6-week deadline, a four-person Keyhole Software Consulting team was charged with delivering functionality to the first phase of a capital asset planning...
- Keyhole Consultants are currently leading an initiative at a large financial services firm to move a large, monolithic, legacy application running in the organization's "on-premise"...
- Client Snapshot: Privately controlled and independent investment management firm.A cross-functional team of Keyhole Software consultants assisted a long-term client of Keyhole Software on various, concurrent...
- Keyhole consultants engaged with a local small business to create a web application for its monthly subscription service.The business domain was custom embroidery designs available...
- This project initiative was staffed by 15 Keyhole consultants including a project lead. The Keyhole consulting team converted and migrated a jQuery-based financial web application...
- Keyhole Enterprise Architects assisted two main change initiatives which included the Architectural Analysis of a large application domain in addition to an Analysis of Alternatives....
- The ultimate goal of this project was to improve the stability of the application suite as the organization made the transition to a Microservices-style platform....
- In this project, almost 1,000 existing Model 204 batch applications were converted to Java Spring and Spring Batch-based applications.The goal of this engagement was for...
- The Keyhole team worked to modernize the organization’s enterprise batch processing applications. This project included converting a long list of COBOL batch processing applications into...
- Sr. Keyhole Software Consultants engaged with a national provider of vision insurance to strategically improve the company's Payment Claim batch processes. The client's existing batch processes...
- Different Keyhole Software teams have been involved in the creation, enhancement, and maintenance of a complete insurance management system for one of the principal companies in...
- A Keyhole team developed a green-field point-of-sale system with inventory management.The project involved extensive work in portals, portlets, and mobile technologies on both the Android...
- A Keyhole team focused on developing home automation (Internet of Things - IoT) application. The application would allow users to control different actions in their home to...
- This custom solution handles the management of information pertaining, but not limited to: accounts, broker relationships, policies, claims, and documents. The origins of this custom...
- The Keyhole Software Feature Team utilized a JSF scope (new in 2.0) called Custom Scope. As the name implies, this scope had the ability to...
- A team of Keyhole Software consultants achieved the client's goal in building this application, which was to validate that robust enterprise applications can be built...
