ONJava.com -- The Independent Source for Enterprise Java
oreilly.comO'Reilly NetworkXML.comONLamp.comONJava.comOpenP2P.com
 Newsletters | Events | Jobs | API Map | Daily Recipe | OS Java Directory | java.net


  JSP and Servlets
  EJB Components
  Web Services
  Open Source
  Best Practices
  Java Security
  Java IDE Tools
  Java SysAdmin


  Feature Articles
  Java API Map
  Web Logs
  Book Excerpts
  OS Java Directory


GGZ-Java  May. 12, 2006

JTrac  May. 8, 2006

Dao-zero: implement your DAO intefaces  Apr. 28, 2006

DualRpc easy bidirectional RPC for GUI client to server  Apr. 25, 2006

ColoradoFTP - The Open Source FTP Server  Apr. 19, 2006

More Resources

 Java API Map


Java Enterprise in a Nutshell, Third Edition

Head First Design Patterns Poster

Eclipse IDE Pocket Guide

JBoss: A Developer's Notebook

Maven: A Developer's Notebook

Swing Hacks

Killer Game Programming in Java

Learning Java, Third Edition

Ant: The Definitive Guide, Second Edition

Spring: A Developer's Notebook

Java in a Nutshell, Fifth Edition

Jakarta Struts Cookbook

Head First Java, Second Edition

QuickTime for Java: A Developer's Notebook

AspectJ Cookbook

More Java Books



Java SE (Standard)

Java SE is the client-side Java development platform for the PC. It was the first Java programming development platform (originally JDK). It includes the fundamental API such as Applets, Threads, Networking, RMI, Servlets, JDBC, JFC Swing, AWT, JFC 2D, Java Media API, JavaBeans and more.

Review/Preview: 2006 and 2007 in Java
By Chris Adamson
2006 will be remembered as the year that Sun open-sourced Java under the GPL, that EJB 3.0 finally shipped, and that Google surprised everyone with its Google Web Toolkit. But how will history record the results of these events? For the 2006 year-ender, ONJava editor Chris Adamson looks at the year's events through the lens of how they may play out in 2007. Dec. 20, 2006

Java Generics and Collections: Evolution, Not Revolution, Part 2
By Maurice Naftalin, Philip Wadler
In the second part of an excerpt from Java Generics and Collections, authors Maurice Naftalin and Philip Wadler continue their study of how to adopt Java 5.0 generics in a measured, sustainable fashion. Having shown how to genericize a library while leaving the library in legacy mode, they now present three approaches to the opposite scenario: genericizing a client that uses a non-genericized library. Nov. 29, 2006

Java Generics and Collections: Evolution, Not Revolution, Part 1
By Maurice Naftalin
In this excerpt from Java Generics and Collections, authors Maurice Naftalin and Philip Wadler show how to make the switch to Java 5.0 generics, not by expecting you to flip a switch across your whole code base, but by having you gradually work generics into your code while maintaining compatibility. Nov. 22, 2006

Eclipse RCP: A Platform for Building Platforms
By Wayne Beaton
Where do you start when building a Java desktop application? All Java gives you by default is public static void main (String[]); it's up to you from there. Eclipse's Rich Client Platform (RCP) offers a tested design, commonly-needed widgets, a standardized component model, pervasive extensibility, and more. Wayne Beaton has an introduction to get you up to speed with RCP-based development. Aug. 23, 2006

Ant 1.7: Using Antlibs
By Kev Jackson
Most Java developers use Ant to do builds and are familiar with its core tasks. But Ant's tasks tend toward an undesirable coupling: everything important had to be a core task because it was hard to distribute new plug-in tasks. Fortunately, Ant 1.7's new antlibs feature makes it much easier to distribute and use new Ant tasks. In this article, Kev Jackson shows you how to use, write, bundle, and test antlibs. Aug. 9, 2006

Hacking Swing: A JDBC Table Model
By Chris Adamson, Joshua Marinacci
Databases have tables, Swing has tables. Why should it be a hassle to bring the two together? In this excerpt from Swing Hacks, authors Joshua Marinacci and Chris Adamson show you how to put some JDBC behind your table model, and bring your database to life in Swing. Nov. 23, 2005

Hibernate for Java SE
By Jason Lee
For many, Hibernate goes hand in hand with Java EE as part of their enterprise development strategy. But what if you need access to your data access objects outside of the EE container? Jason Lee offers some strategy for getting and using a Hibernate session from Java SE code. Nov. 16, 2005

Hacking Swing: Translucent Windows
By Chris Adamson, Joshua Marinacci
All Java windows are absolutely rectangular, so you can forget about creating a nice Winamp-like window for your Swing app, right? Wrong. In this excerpt from Swing Hacks, authors Joshua Marinacci and Chris Adamson show how you can use some imaging trickery to create arbitrarily shaped windows with Swing. Nov. 9, 2005

JBoss Cache as a POJO Cache
By Ben Wang
Typical in-memory cache systems can trip you up in ways you don't expect, from mangled object relationships to overly expensive serialization operations. A POJO cache offers a simpler, lower-maintenance alternative. Ben Wang uses JBoss Cache to show how POJO caches work. Nov. 9, 2005

Diagnostic Tests with Ant
By Koen Vervloesem
Determining what's gone wrong with your software--source or binary--in a remote location is no simple task. Before taking a call and walking the user through error-prone troubleshooting, why not collect information about the user's system and the application files? Koen Vervloesem shows how you can do this with Ant.  Oct. 12, 2005

Introduction to the ASM 2.0 Bytecode Framework
By Eugene Kuleshov
J2SE 5.0 made major changes to the language, and version 2.0 of the ASM bytecode manipulation toolkit is well-suited to handle them. In this article, Eugene Kuleshov shows how ASM 2.0 makes working with bytecode easier, and even offers an example of how to map the external dependencies in an arbitrary .jar file. Aug. 17, 2005

Eclipse Plugins Exposed, Part 3: Customizing a Wizard
By Emmanuel Proulx
Emmanuel Proulx's series on Eclipse plugin development continues by showing how to put together a useful data model and a wizard GUI. Jul. 27, 2005

Domain Searching Using Visitors
By Paul Mukherjee
Modern applications typically require domain searching functionality--the ability to search for data within the context of the application domain. In this article, Paul Mukherjee describes an approach to domain searching using the Visitor pattern, and explains its advantages. Jun. 1, 2005

Managing Component Dependencies Using ClassLoaders
By Don Schwarz
Use of the Class-Path entry within a JAR file's manifest can help you manage external dependencies--to a point. Once you start using multiple JARs that need incompatible versions of external JARs, problems quickly ensue. As Don Schwarz shows, you can get out of this problem by using your own class loader to manage the dependencies. Apr. 13, 2005

Flexible Event Delivery with Executors
By Andrew Thompson
Event-handling is critical to any GUI application, and many developers know the hazards of making a method call to unknown or poorly behaved code from the event-dispatch thread. J2SE 5.0's concurrency utilities offer more fine-grained control over how code executes. Andrew Thompson applies that to offer better ways to handle events. Mar. 23, 2005

Building Modular Applications with Seppia
By Lorenzo Puccetti
Isn't object-oriented programming supposed to be about code reuse? The Seppia framework encourages reuse by allowing you to combine functionality collected in multiple .jar files, stitching the behavior together with JavaScript. Lorenzo Puccetti has an introduction to this interesting framework. Mar. 16, 2005

Reducing Upgrade Risk with Aspect Oriented Programming
By Stephen B. Morris
Upgrading code in the field is usually frowned upon, if not prohibited outright, because of the risk and expense of pushing code changes through a release cycle. But could you just insert the tiny bit of code you need with AOP? Stephen B. Morris looks at how careful design and separation of responsibilities can make this less risky. Mar. 16, 2005

Aspect-Oriented Annotations
By Bill Burke
Aspect-Oriented Programming (AOP) and attributes are two leading-edge programming concepts, each with typical applications. By combining them, using attributes to indicate where AOP code should execute, you can effectively declare new Java syntax. Bill Burke introduces this new technique. Mar. 2, 2005

Bitwise Optimization in Java: Bitfields, Bitboards, and Beyond
By Glen Pepicelli
Flipping bits on and off is the lowest level of computing, and most Java developers are totally isolated from it. But maybe they shouldn't be. In this article, Glen Pepicelli introduces the idea of bitsets--ints and longs whose bitwise representation are the data you're interested in--and how they can be used with mathematical and logical operators to write faster code. Feb. 2, 2005

Internals of Java Class Loading
By Binildas Christudas
When are two classes not the same? When they're loaded by different class loaders. This is just one of many curious side effects of Java's class-loading system. Binildas Christudas shows how different class loaders relate to one another and how (and why) to build your own custom class loader. Jan. 26, 2005

Validating Objects Through Metadata
By Jacob Hookom
Metadata, in the form of J2SE 5.0's annotation, allow you to mark up your your code with declarative information, and then use reflection to pull out those annotations at runtime and use them. Jacob Hookom shows how these techniques can be used to validate input to your application. Jan. 19, 2005

A Distributed Discussion with Elliotte Rusty Harold
By Chris Adamson
In this interview, Java Network Programming, 3rd Edition author Elliotte Rusty Harold discusses the improvements and hazards of networking in Java, as well as the evolution of Java itself. Dec. 15, 2004

URLs and URIs, Proxies and Passwords
By Elliotte Rusty Harold
Java networking is seldom as simple as it first seems. In this excerpt, one of a series from Java Network Programming, 3rd Edition, Elliotte Rusty Harold shows how to encode and decode URLs, work with URIs, use multiple proxy servers, query servers with HTTP GET, and use password-based authentication. Dec. 8, 2004

Dynamic Delegation and Its Applications
By Lu Jian
Proxy, introduced in Java 1.3, offers an interesting way to provide an interface's implementation at runtime, but there's more that can be done. Lu Jian shows how bytecode manipulation can be used to provide dynamic delegation, allowing you to provide runtime implementations of interfaces, abstract classes, and even concrete classes. Nov. 17, 2004

Create and Read J2SE 5.0 Annotations with the ASM Bytecode Toolkit
By Eugene Kuleshov
Continuing his examination of the ASM bytecode-manipulation toolkit, Eugene Kuleshov shows how ASM can be used to access J2SE 5.0 attributes, even from earlier JVM versions that don't support attributes. Oct. 20, 2004

Advanced Synchronization in Java Threads, Part 1
By Scott Oaks
J2SE 5.0 introduces sophisticated new options for coordinating multiple threads. In this excerpt from Java Threads, 3rd Edition, Scott Oaks and Henry Wong look at new scheduling strategies represented by the java.util.concurrent package. Oct. 20, 2004

Bridging the Gap: J2SE 5.0 Annotations
By Kyle Downey
Annotations, a means of providing your own metadata for your code, are among the major features of J2SE 5.0, but you don't have to move to 5.0 to use them. Kyle Downey introduces annotations and their implementation in several Java 1.4-compatible forms. Oct. 6, 2004

Reporting Application Errors by Email
By Sean C. Sullivan
Even if your application logs an error to a local file, the developer doesn't know there's a problem until a user notices it and sends the log file back. It can be more useful for apps to email their own error messages back. And as Sean C. Sullivan explains, it's not hard to do with either log4j or java.util.loggingSep. 29, 2004

Monitoring Local and Remote Applications Using JMX 1.2 and JConsole
By Russell Miles
The latest release of Java, J2SE 5.0 (codenamed Tiger), formally adds support for the Java Management Extensions (JMX) 1.2. Russ Miles walks you through how to use the JMX support in J2SE 5.0, including the new JConsole application, to monitor and manage your own applications both locally and remotely. Sep. 29, 2004

JDemo: Interactive Testing Refactored
By Markus Gebhard
The nature of GUI development doesn't lend itself to test-oriented methodologies very well. But that doesn't mean you shouldn't test your components! Markus Gebhard has an alternative: JDemo, a tool patterned after JUnit, for displaying and verifying GUI components. Sep. 8, 2004

Building Highly Scalable Servers with Java NIO
By Nuno Santos
For massive, high-performance systems, thread-per-client systems may not scale because of the expense in switching thread contexts. Sometimes, as Nuno Santos explains, you have to go lower-level. In this article, he shows how his team used multiplexing features in java.nio and a Swing-like event dispatcher to achieve extremely high performance. Sep. 1, 2004

An Introduction to IKVM
By Avik Sengupta
Java and .NET are two different worlds, but they can live within one process with IKVM. This "JVM for .NET" allows .NET (or Mono) to leverage Java code, and vice versa. Avik Sengupta provides an introduction to this important new environment. Aug. 18, 2004

Peeking Inside the Box: Attribute-Oriented Programming with Java 1.5, Part 2
By Don Schwarz
Continuing an investigation into generating update messages without explicitly coding them, Don Schwarz tries combining some new approaches, including thread sampling and bytecode manipulation. Jul. 21, 2004

A Generic MVC Model in Java
By Arjan Vermeij
The Model View Controller (MVC) pattern often leads to large blocks of essentially similar code in various classes; exactly the kind of detail that can be abstracted away with Java 1.5's generics. Arjan Vermeij shows how this can be accomplished. Jul. 7, 2004

Peeking Inside the Box: Attribute-Oriented Programming with Java 1.5, Part 1
By Don Schwarz
Don Schwarz wants to add a status indicator to his Swing application, but the straightforward way turns out to be inelegant and limiting. In this first part of "Peeking Inside the Box," he considers code generation and bytecode manipulation as alternatives. Jun. 30, 2004

Data Models for Desktop Apps
By Andrei Cioroianu
Andrei Cioroianu shows how to develop data models for Java desktop applications and how JavaBeans and the Model-View-Controller (MVC) pattern can make your code more maintainable and reusable. Jun. 2, 2004

Template-Based Code Generation with Apache Velocity, Part 2
By Giuseppe Naccarato
Giuseppe Naccarato's investigation of code generation continues with a look at using a language-agnostic model to represent the relationships of classes, attributes, and operations in the code to be generated. Does it work better than something platform-specific? The answer is surprising. Jun. 2, 2004

SSS (Small, Simple, Safe)
By Alper Coskun
Teaching Java is complicated both by the language's syntax and the huge number of classes in its standard libraries. According to Alper Coskun, one solution might be "Small Simple Safe" (SSS), which tries to alleviate this by giving the user an opportunity to create and relate objects in a very simple GUI. May. 26, 2004

Prototyping Desktop Applications
By Andrei Cioroianu
Does J2SE provide the functionality your application needs? A great way to find out is by developing a prototype, tackling the hard parts first to see if they can be made to work. Andrei Cioroianu employs Java2D and Swing in developing a prototype image-annotation application. Apr. 28, 2004

Declarative Programming in Java
By Narayanan Jayaratchagan
JSR-175 introduces Java annotations, a means of attaching metadata to your Java classes. Narayanan Jayaratchagan looks at how annotations work in J2SE 1.5 and the many ways in which they can be used. Apr. 21, 2004

BlackMamba: A Swing Case Study
By Ashwin Jayaprakash
It's one thing to learn the bits and pieces of a Swing GUI -- how to create a model and wire it up to a JTable or JTree. It's quite another to think through and develop a full-blown application. Ashwin Jayaprakash uses an email client, BlackMamba, to show how the pieces of a Swing application fit together. Mar. 10, 2004

Java Desktop Development
By Andrei Cioroianu
Java developers can choose between three primary GUI toolkits for desktop applications: AWT, Swing, and SWT. Andrei Cioroianu looks at the history, pros, and cons of each in this first article in a series on standalone Java development. Feb. 18, 2004

Introduction to Aspect-Oriented Programming
By Graham O'Regan
Aspect-oriented programming (AOP) offers the ability to overlay new functionality atop existing code not by rewriting and recompiling, but by adding "aspects" to the compiled code. Graham O'Regan has an introduction. Jan. 14, 2004

Regular Expressions in J2SE
By Hetal C. Shah
Java applications that perform text searching and manipulation using String and StringTokenizer classes often result in complex code, leading to a maintenance nightmare. Another alternative is regular expressions. Hetal Shah explains how to implement regular expressions using the java.util.regex package, and how it can make your code easier to write and maintain. Nov. 26, 2003

Best Practices for Exception Handling
By Gunjan Doshi
Java's concept of exceptions and how they're used has led to controversy and, in some cases, bad programming practices. Gunjan Doshi seeks to lay down some best practices for using exceptions in Java. Nov. 19, 2003

Subverting Java Access Protection for Unit Testing
By Ross Burton
Ross Burton describes how to use reflection to subvert Java class-member access protection to improve unit testing, by accessing private and protected members as required. Nov. 12, 2003

SearchAssist: A Portable Search Engine in Java
By Ashwin Jayaprakash
While server-side Java solves many problems, it's not always available. Besides, there's more to a good UI than HTML can provide. Sometimes an applet can fit the bill. Ashwin Jayaprakash demonstrates a search engine applet designed for portability and power. Oct. 1, 2003

Readable Java 1.5
By Stephen Jungels
Java 1.5 promises several exciting new features: an improved for loop, generics, and improved typing through variance. The proposed syntax doesn't impress everyone, though. Stephen Jungels proposes alternate syntaxes for the new features. Sep. 24, 2003

Making Media from Scratch, Part 2
By Chris Adamson
QuickTime is a media creation API. It supports far more than just editing and playing movies -- you can create them, one frame at a time. Chris Adamson demonstrates how to build movies, frame by frame, and even animate still images. Aug. 27, 2003

Memoization in Java Using Dynamic Proxy Classes
By Tom White
Memoization, or caching previously computed values of functions, can speed up certain classes of problems. Java 1.3's dynamic proxy classes make it possible to write generic memoization routines. Tom White explores this technique and explains when and how it can improve your performance. Aug. 20, 2003


JFreeChart  Apr. 30, 2002

Java 2SE 1.4 (Merlin) I/O  Oct. 25, 2001

Java Application Objects  Oct. 9, 2001

JavaBeans in JSP Pages  Sep. 27, 2001

Multithreaded Swing Applications  Sep. 18, 2001

More Resources

More Events

About ONJava.comContact UsPrivacy PolicyMedia Kit
Copyright © 2000-2006 O’Reilly Media, Inc. All Rights Reserved.
All trademarks and registered trademarks appearing on the O'Reilly Network are the property of their respective owners.
For problems or assistance with this site, email