Java tip: Orthogonality by example

Orthogonality is a concept often used to describe modular and maintainable software, but it's also a design principle found (and broken) in some of our most popular Java utilities. With this short article you'll wrap your head around orthogonality once and for all -- by seeing how it is implemented, and violated, in Log4j. Workarounds are also discussed.
Jens Dietrich, May 2013

Java 101: The next generation: It's time for a change
Find out how the Java Date and Time API addresses the need for a more robust date and time infrastructure in Java SE, then familiarize yourself with the java.time classes you're most likely to use, in this inaugural installment of "Java 101: The next generation."
Jeff Friesen, April 2013

Java Tip 144: When to use ForkJoinPool vs ExecutorService
This Java Tip demonstrates the performance impact of replacing the Java 6 <code>ExecutorService</code> class with Java 7's <code>ForkJoinPool</code>.
Madalin Ilie, October 2011

Harness Offsprings to divide, parallelize and conquer
Reinventing the wheel over and over again can be fun, but you are probably going to end up with squeaky ones that fall off the axle. When developers address the scalability and performance of their applications, they often reinvent a solution where each request is split into batches which are processed concurrently and merged for delivery to the client.
Edward Salatovka, Neal Lester, August 2009

Nortel wants to unload application-delivery unit to Radware
Nortel wants to sell off its application-delivery gear to Radware, but to keep on selling it under an OEM agreement.
, February 2009

Sizeof for Java
December 26, 2003
Vladimir Roubtsov, December 2003

Does an object exist if you can't test its identity?
December 12, 2003
Vladimir Roubtsov, December 2003

Java Tip 143: Utilize the Database Schema Browser
The Database Schema Browser utility eases the task of database lookup by providing users with a consolidated list of tables and their definitions with one simple hit to the servlet. What's more, you can use the browser's print options to print out a handy database reference. This tip highlights how you can use Java Database Connectivity (JDBC) APIs to create a simple database utility. It's a first step towards building more complex utilities like code generators and SQL browsers.
Saurabh Singh, October 2003

Adopt Adapter
Software usually consists of a mixture of in-house and purchased software that must work together to produce a seamless user interface. But disparate software packages are not aware of each other's object models, so they can't work together—without adapters. Adapters let objects from unrelated software packages collaborate by adapting one interface to another. Learn how the Adapter design pattern can save you a lot of time and effort by combining disparate software systems.
David Geary, September 2003

Java Tip 142: Pushing JButtonGroup
Swing's ButtonGroup class allows radio button grouping to ensure single selection; however, the implementation raises many question marks. You cannot retrieve a reference to the currently selected button in the group, and the class lets you select or deselect any button accessible through a reference, not just those belonging to the group. This tip describes how JButtonGroup subclasses ButtonGroup to offer a more solid implementation, while providing convenience methods that make JButtonGroup much simpler to use.
Daniel Tofan, September 2003

Follow the Chain of Responsibility
The Chain of Responsibility (CoR) pattern decouples the sender and receiver of a request by interposing a chain of objects between them. In this installment of Java Design Patterns, David Geary discusses the CoR pattern and two implementations of that pattern in the Java APIs—one from client-side Java and the other from server-side Java.
David Geary, August 2003

URLs: Smart resource identifiers
What convenient pluggability patterns exist for loading resources via custom URLs?
Vladimir Roubtsov, August 2003

Java Tip 141: Fast math with JNI
Java 2 Platform, Standard Edition (J2SE) 1.4x uses a new StrictMath package to perform mathematical calculations, but many of these math routines are much slower than the corresponding routines in J2SE 1.3. Luckily, Java Native Interface (JNI) enables you to circumvent this serious performance bottleneck.
Jeff S. Smith, August 2003

Smartly load your properties
August 8, 2003
Vladimir Roubtsov, August 2003

Make your apps fly
Allocating numerous objects can be detrimental to your application's performance. In this installment of Java Design Patterns, David Geary shows you how to implement the Flyweight design pattern to greatly reduce the number of objects your application creates, which decreases your application's memory footprint and increases performance.
David Geary, July 2003

Find more >

Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld