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
Design patterns, the big picture, Part 3: Beyond software design patterns
Find out how interaction designers, software architects, and agile development teams use design patterns to improve software
development processes and products.
Jeff Friesen,
March 2013
Design patterns, the big picture, Part 2: Gang-of-four classics revisited
Jeff Friesen revisits the Gang of Four Strategy and
Visitor patterns from a Java developer's perspective, first demonstrating the three components of a successful Strategy, then
unpacking Visitor's confounding (for many) double dispatch mechanism. He also offers tips for learning the GoF patterns and
discusses some of the reasons why design patterns shouldn't be applied to every programming problem.
Jeff Friesen,
December 2012
Design patterns, the big picture, Part 1: Design pattern history and classification
Jeff Friesen's three-part introduction takes a wide-angle view of design patterns. Part 1 introduces the concept and use
of design patterns and walks through a process of evaluating the Composite pattern for a particular Java use case. The article
concludes with a listing of software design patterns by classification and a complete index of design pattern tutorials on
JavaWorld.
Jeff Friesen,
November 2012
Learn Scala with Specs2 Spring
Using Specs2 Spring to test your Java apps is one way to start learning Scala's object-functional programming patterns, without
leaving the Spring framework or tossing out perfectly good Java code.
Jan Machacek,
December 2011
11 programming trends to watch
Whether you're banging out Cobol or hacking Node.js, keeping an eye on programming trends is key to staying competitive in
an ever-shifting job market. Peter Wayner sorts the debris from the diamonds in this look at 11 tools and techniques that
really are changing how developers work.
Peter Wayner,
November 2011
Tough tests flunk good programmer job candidates
Quizzes and brain-teasers are useful in evaluating potential software development hires, but don't take them too far.
Neil McAllister,
November 2011
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
Lean service architectures with Java EE 6
Thanks to Java EE 6's simplified development model, a few interfaces and annotated classes are all you need to implement the
facade, the service, and the domain structure that constitute a lean service-oriented architecture. Surprised? Read on.
Adam Bien,
April 2009
Lamport's one-time password algorithm (or, don't talk to complete strangers!)
The Lamport algorithm provides an elegant scheme for generating and applying one-time passwords, or OTP. Find out how Lamport
works, then see it in action with an OTP reference implementation for an extensible, Java-based library.
Louis J. Iacona,
March 2009
Building cloud-ready, multicore-friendly applications, Part 1: Design principles
Atomicity, statelessness, idempotence, and parallelism: that's your ticket to code that's ready for both modern multicore
chips and the future of distributed -- or cloud -- computing. Appistry engineer Guerry Semones introduces these four pillars
of distributed design.
Guerry Semones,
March 2009
The PathProxy pattern: Persisting complex associations
Matthew Tyson is back with another of his highly useful design patterns. Learn the ins and outs of the PathProxy pattern,
which makes it easier to persist complex relationships without a proliferation of lookup tables.
Matthew Tyson,
July 2008
Asynchronous HTTP and Comet architectures
There's a lot more to asynchronous, non-blocking HTTP than Comet. Get
an overview of the programming techniques and servlet container extensions that are breathing new life into HTTP on the server
side, with or without the support of the Java Servlet API.
Gregor Roth,
March 2008
Asynchronous HTTP Comet architectures
There's a lot more to asynchronous, non-blocking HTTP than Comet. Get
an overview of the programming techniques and servlet container extensions that are breathing new life into HTTP on the server
side, with or without the support of the Java Servlet API.
Gregor Roth,
March 2008
Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5