Javalobby - The heart of the Java developer community
JUnit, 4, 5, Jupiter, Vintage | Mark As Read |
After JUnit 5 was released, a lot of developers just added this awesome new library to their projects, because unlike other versions, in this new version, it is not necessary to migrate from JUnit 4 to 5, you just need to include the new library in your project, and with all the engine of JUnit 5 you can do your new tests using JUnit 5, and the old...
Building a Performant Application Using Netty Framework in Java | Mark As Read |
Netty is a powerful, asynchronous, event-driven networking framework for building high-performance, scalable applications. It simplifies the development of network applications by providing an easy-to-use API and robust abstractions for handling various networking protocols and data formats. Key features and benefits of Netty include:
Optimizing Robotics Applications Performance | Mark As Read |
In this post, we would like to share our real-world experience in optimizing a Java application that was controlling the robots in a warehouse. This application would give instructions to the robots in the warehouse on what actions to perform. Based on those instructions, robots carry out their job in the warehouse. Occasionally, this application w...
Test Parameterization With JUnit 5.7: A Deep Dive Into @EnumSource | Mark As Read |
Parameterized tests allow developers to efficiently test their code with a range of input values. In the realm of JUnit testing, seasoned users have long grappled with the complexities of implementing these tests. But with the release of JUnit 5.7, a new era of test parameterization enters, offering developers first-class support and enhanced capab...
CRUDing NoSQL Data With Quarkus, Part Two: Elasticsearch | Mark As Read |
In Part 1 of this series, we looked at MongoDB, one of the most reliable and robust document-oriented NoSQL databases. Here in Part 2, we'll examine another quite unavoidable NoSQL database: Elasticsearch. More than just a popular and powerful open-source distributed NoSQL database, Elasticsearch is first of all a search and analytics engine. It is...
Mastering Exception Handling in Java Lambda Expressions | Mark As Read |
Effective exception management is pivotal for maintaining the integrity and stability of software applications. Java's lambda expressions offer a concise means of expressing anonymous functions, yet handling exceptions within these constructs presents unique challenges. In this article, we'll delve into the nuances of managing exceptions within Jav...
Feature Flags and Canary Releases in Microservices | Mark As Read |
Feature flags are commonly used constructs and have been there for a while. But in the last few years, things have evolved and feature flags are playing a major role in delivering continuous risk-free releases. In general, when a new feature is not fully developed and we still want to branch off a release from the mainstream, we can hide our new fe...
COBOL to JOBOL? A Poor Choice for Modernization | Mark As Read |
The enduring prevalence of COBOL (Common Business-Oriented Language) in mission-critical applications poses a challenge for modernization efforts, particularly in the transition to Java. This paper explores the intricacies of converting COBOL to Java, emphasizing the avoidance of JOBOLa term coined for Java code that retains procedural characterist...
Streaming Real-Time Data From Kafka 3.7.0 to Flink 1.18.1 for Processing | Mark As Read |
Over the past few years, Apache Kafka has emerged as the leading standard for streaming data. Fast-forward to the present day: Kafka has achieved ubiquity, being adopted by at least 80% of the Fortune 100. This widespread adoption is attributed to Kafka's architecture, which goes far beyond basic messaging. Kafka's architecture versatility makes it...
Debugging Using JMX Revisited | Mark As Read |
Debugging effectively requires a nuanced approach, similar to using tongs that tightly grip the problem from both sides. While low-level tools have their place in system-level service debugging, today's focus shifts towards a more sophisticated segment of the development stack: advanced management tools. Understanding these tools is crucial for dev...
Harnessing the Power of SIMD With Java Vector API | Mark As Read |
In the world of high-performance computing, utilizing SIMD (Single Instruction, Multiple Data) instructions can significantly boost the performance of certain types of computations. SIMD enables processors to perform the same operation on multiple data points simultaneously, making it ideal for tasks like numerical computations, image processing, a...
Java Thread Dump Analysis | Mark As Read |
Thread dump analysis is a traditional approach followed to analyze the performance bottlenecks in Java-based applications. In the modern era, we have APM tools that provide various metrics and screens to drill down and identify performance issues, even at the code level. But for some of the performance issues or occasions, thread dump analysis stil...
Automatic Snapshots Using Snapshot Manager | Mark As Read |
Overview AWS has a Lambda function that can be leveraged to take automatic snapshots of the KDA (Kinesis Data Analytics) applications that are running in a specific region. Refer the Lambda function source code here. Users can modify the Lambda function to their needs. Note: As of August 30, 2023, Amazon Kinesis Data Analytics (KDA) has been rename...
Spring RestTemplate to WebClient Causes OutOfMemoryError | Mark As Read |
Spring Boot is a highly popular framework for Java enterprise applications. One common method of integration with internal or external applications is through HTTP REST connections. We were upgrading from RestTemplate to the Java NIO-based WebClient, which can significantly enhance application performance by allowing concurrency when calling REST s...
Journey Through Java Execution: From Loader to Memory Model | Mark As Read |
Ever wondered what happens behind the scenes when you hit that "run" button on your Java program? The process involves a series of complex steps, from compiling and loading the code into memory to managing data in data structures like the heap and stack. Here, we'll explore the steps of running a basic Java program, highlighting the roles of the lo...
Dapr For Java Developers | Mark As Read |
In this article, learn how the Dapr project can reduce the cognitive load on Java developers and decrease application dependencies. Coding Java applications for the cloud requires not only a deep understanding of distributed systems, cloud best practices, and common patterns but also an understanding of the Java ecosystem to know how to combine ma...
Foreign Function and Memory API: Modernizing Native Interfacing in Java 17 | Mark As Read |
Java 17 heralds a new era in Java's evolution, bringing forth the Foreign Function and Memory API as part of its feature set. This API, a cornerstone of Project Panama, is designed to revolutionize the way Java applications interact with native code and memory. Its introduction is a response to the long-standing complexities and inefficiencies asso...
Unlocking the Power of Oracle NoSQL With Quarkus: Seamless Integration for Cloud-Age Applications | Mark As Read |
In todays digital landscape, the demand for scalable, high-performance databases that can seamlessly integrate with modern application frameworks is ever-growing. While reliable, traditional relational databases often need help keeping pace with the dynamic requirements of cloud-native applications. It has led to the rise of NoSQL databases, offeri...
Code Complexity in Practice | Mark As Read |
Imagine entering a bustling workshop - not of whirring machines, but of minds collaborating. This is the true essence of software programming at its core: a collective effort where code serves not just as instructions for machines, but as a shared language among developers. However, unlike spoken languages, code can often become an obscure dialect,...
A Financial Anti-Fraud Solution Based on the Apache Doris Data Warehouse | Mark As Read |
Financial fraud prevention is a race against time. Implementation-wise, it relies heavily on the data processing power, especially under large datasets. Today, I'm going to share with you the use case of a retail bank with over 650 million individual customers. They have compared analytics components, including Apache Doris, ClickHouse, Greenplum, ...
Are We There Yet? When Do We Move to GraalVM? | Mark As Read |
This is the perfect time to raise this point just as Spring Native is coming to the forefront. Is it time to move to GraalVM? Spoiler: it depends. Yes, if youre building serverless, probably no if youre building pretty much anything else with a few exceptions for some microservices. Before I begin, I want to qualify that Im talking about native i...
How To Validate JSON Request Body in Spring Boot | Mark As Read |
We sometimes encounter server errors caused by a user providing input that's longer than the database column size or even a non-existent ENUM value. Do not trust user input is a popular cliche that, if implemented, will save a lot of time and resources down the line. That is why, in this article, we will be looking at the request-validator library,...
Business Process Modeling: The Practice of Using Camunda BPM in Java Development | Mark As Read |
Today, I'd like to share with you the application of Camunda BPM in Java development. In this article, Ill talk about the key components of the Camunda Business Process Management system. Also, Ill show the system's deployment, modeling, and deployment of a simple process. Let's first understand the terminology and find out what BPM, BPMS, and BPMN...
Data Type Conversions in Java | Mark As Read |
Unlike PHP or JavaScript, Java is a strongly typed programming language. It essentially means that each variable must be declared with a pre-defined data type that can not be changed afterwards. There are two data types in Java: Primitive data types - int, double, float, byte, long, boolean, etc. Reference data types - Integer, Double, Float, ...
Gradle: Push to Maven Repository | Mark As Read |
If you are a developer sharing your artefacts is a common task, that needs to be in place from the start. In most teams and companies a Maven repository is already set up, this repository would be used mostly through CI/CD tasks enabling developers to distribute the generated artefacts.
Troubleshooting App Unresponsiveness Due to Oracle DB | Mark As Read |
Recently we encountered a production in an application. This application was connecting to multiple systems of records (SOR). Oracle RAC cluster is one of the primary systems of record. This Oracle RAC cluster was slowing down due to resource constraints. This slowdown in the Oracle RAC cluster degraded the entire applications response time. In thi...
Java Records Etched in Finality | Mark As Read |
This article uses a story format to show the concept of records in Java. It shows the different concepts and parts that make up the records, including a restricted identifier, java.lang.Record, Components, Canonical, Compact, Normal constructors, and more. The Minimalist A Resolution Working from home has taught some of us to think of being ...
Event Stream Programming Unplugged Part 1 | Mark As Read |
Welcome to event streaming unplugged; this is the first in a series of articles covering the topic of real-time event stream processing. This is a practical programming series with resources at unplugged part 1. What you will learn in these articles: The basics of unbounded event processing. Functional reactive programming introducing con...
Mock gRPC Services for Unit Testing | Mark As Read |
In our day-to-day work, we develop applications that include interactions with software components through I/O. They can be a database, a broker, or some form of blob storage. Take, for example, the cloud components you interact with: Azure Storage Queue, SQS, Pub/Sub. The communication with those components usually happens with an SDK. From the st...
JavaOne 2022: Java Continues to Evolve | Mark As Read |
I met with Georges Saab, Senior Vice President, Java Platform Group, Oracle Chair, OpenJDK Governing Board following his keynote at JavaOne. This was the first JavaOne conference since 2017 and was held in conjunction with Oracle Cloud World. Java has been around for 27 years. It continues to be an important language for enterprises and developers....
Great Time at JavaZone 2022 | Mark As Read |
I had a pretty awful travel experience trying to reach Oslo, but its all worth it for what is possibly my favorite conference: JavaZone. I absolutely love this conference. It has everything: Sense of humor, craziness, heavy metal, continuous integration of food and amazing talks with great people. This years conference has a fantasy theme which fit...
Exceptions in Lambdas | Mark As Read |
Java introduced the concept of checked exceptions. The idea of forcing developers to manage exceptions was revolutionary compared to the earlier approaches. Nowadays, Java remains the only widespread language to offer checked exceptions. For example, every exception in Kotlin is unchecked.
Trick the JVM for Maximum Performance With Megamorphic Call Sites | Mark As Read |
The JVM does great stuff to let our Java applications run the fastest way possible. Most of the time, you don't have to care about the internals, but if you really need to get the best performance, you need to take into account how JVM works. It's not the goal of this article to give a detailed introduction to this topic but merely to show how our ...
How To Create Asynchronous and Retryable Methods With Failover Support | Mark As Read |
While developing an application, we need to make some processing more robust and less fault-tolerant, especially when requesting remote services that may remain down for a long duration. In this article, we will introduce a new framework that aims to provide a declarative non-blocking retry support for methods in Spring-based applications using ann...
Querydsl vs. JPA Criteria, Part 2: Metamodel | Mark As Read |
This is the second article in my series dedicated to the Querydsl framework. I planned to shed light on the custom queries, as promised in the first article, but I decided to explain the metamodel usage first in order to simplify the explanation later on. So far, this series contains these articles:
Java Is Very Fast if You Dont Create Many Objects | Mark As Read |
This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire (open source) and why we aim to avoid object allocations. One of the key optimizations is creating almost no garbage. Allocation is supposed to be a very cheap operation, and garbage col...
Infrastructure as Code (IaC) for Java-Based Apps on Azure | Mark As Read |
The Evolution of Java Over the past several years, the Java ecosystem landscape has evolved from monolith Java EE applications running on application servers and the Spring Framework to modern smaller-footprint Spring Boot, MicroProfile, and Jakarta EE microservices. Today, more Java developers are looking at how they can bring their existing Java ...
High Availability with MySQL Fabric: Part II | Mark As Read |
Originally written by Fernando Ipar and Martin Arrieta This is the third post in our MySQL Fabric series. If you missed the previous two, we started with an overall introduction, and then a discussion of MySQL Fabrics high-availability (HA) features. MySQL Fabric was RC when we started this series, but it went GA recently. You can read the press re...
Heres how Bell was Hacked: SQL Injection Blow-by-Blow | Mark As Read |
OWASPs number one risk in the Top 10 has featured prominently in a high-profile attack this time resulting in the leak of over 40,000 records from Bell in Canada. It was pretty self-evident from the original info leaked by the attackers that SQL injection had played a prominent role in the breach, but now we have some pretty conclusive evidence of ...
Five Ways of Synchronising Multithreaded Integration Tests | Mark As Read |
A few weeks ago I wrote a blog on synchronizing multithreaded integration tests, which was republished on DZone Javalobby from where it received a comment from Robert Saulnier who quite rightly pointed out that you can also use join() to synchronize a worker thread and its unit tests. This got me thinking, just how many ways can you synchronise mul...
Easily Find & Kill MongoDB Operations from MongoLabs UI | Mark As Read |
A few months ago, we wrote a blog post on finding and terminating long-running operations in MongoDB. To help make it even easier for MongoLab users* to quickly identify the cause behind database unresponsiveness, weve integrated the currentOp() and killOp() methods into our management portal. * currentOp and killOp functionality is not available o...
The Difference Between TokuMX Partitioning and Sharding | Mark As Read |
In my last post, I described a new feature in TokuMX 1.5partitioned collectionsthats aimed at making it easier and faster to work with time series data. Feedback from that post made me realize that some users may not immediately understand the differences between partitioning a collection and sharding a collection. In this post, I hope to clear tha...
Designing Search (part 3): Keeping on track | Mark As Read |
Part 1 In the previous post we looked at techniques to help us create and articulate more effective queries. From auto-complete for lookup tasks to auto-suggest for exploratory search, these simple techniques can often make the difference between success and failure. But occasionally things do go wrong. Sometimes our information journey is more co...
In Defense of Scala. Response to "I Dont Like Scala" | Mark As Read |
There were several posts lately critical of Scala language, specifically this onehttps://dzone.com/articles/i-dont-scala. It is a well written, critical of Scala post by someone who clearly prefers other languages (i.e. Java) at this point.
What Is Transaction Management in Java? | Mark As Read |
In this tutorial, we will discuss transaction management in Java using examples. But before moving to transaction management, we should know what a transaction is. Therefore, the following are some important points about transactions for better understanding: A transaction is a segment of program execution that accesses and can alter different pi...
Top Commonly Used JavaScript Functions | Mark As Read |
Functions are one of the most important aspects of JavaScript. Without JavaScript functions, it would be very limited. Functions in JavaScript are used to perform a certain action or task. They can be written into the code, or they can be created using the Function constructor.
Designing and Querying JSON in Databend | Mark As Read |
JSON (JavaScript Object Notation) is a commonly used semi-structured data type. With the self-describing schema structure, JSON can hold all data types, including multi-level nested data types, such as Array, Object, etc. JSON takes advantage of high flexibility and easy dynamic expansion compared with the structured data types that must strictly f...
Develop a Full-Stack Java Application With Kafka and Spring Boot | Mark As Read |
What You Will Build You will build a full-stack reactive web app that sends and receives messages through Kafka. The app uses Spring Boot and Java on the server, Lit and TypeScript on the client, and the Hilla framework for components and communication. What You Will Need 20 minutes Java 11 or newer Node 16.14 or newer An IDE that supports...
Inspect the Contents of the Java Metaspace Region | Mark As Read |
JVM Memory has the following regions: Young Generation Old Generation Metaspace Others region
Top Posts of 2013: 10 Subtle Best Practices when Coding Java | Mark As Read |
this is a list of 10 best practices that are more subtle than your average josh bloch effective java rule. while josh blochs list is very easy to learn and concerns everyday situations, this list here contains less common situations involving api / spi design that may have a big effect nontheless. i have encountered these things while ...
- Welcome!
- OnlyJava aggregates blogs for the Java industry.
- Custom Feeds
- Add any RSS feed to the information you read daily.
- Blocked Feeds
- Block feeds to remove blogs you’re not interested in.
- Account Settings
- Customize the site by adding or removing feeds.
Don’t have an account yet?
- Customize your settings
- Edit how your blog displays
- Add or remove blogs you read. Sign Up.
About Us
OnlyJava is your source for all your Java news.
Know of a Java blog that we're missing? Let us know! |