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.
Tim Greene
,
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
Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5