IBM Premier Business Partner

IBM Premier Business Partner


Privacy Policy

Resources for the Professional WebSphere Developer

Portlet: Using an Action Interface to Improve Portlet Code - Portlet How-To: Using an Action Interface to Improve Portlet Code. As developers work on various projects over time, certain best practices that work are kept alive and improved upon, and practices that don?t work very well are discarded

Understanding JCA transactions - 19 Oct 2004 Transaction processing is a vital part of most real-world J2EE application development. In this article, IBM Solution Architect Mikhail Genkin explains how different enterprise information systems (EIS) can participate in transactions via the J2EE Connector Architecture. Using an example e-commerce application, Mikhail demonstrates the various levels of transaction support provided by different EISs and resource adapters and shows how these factors can affect application design. The article concludes with Mikhail's tips for choosing the right transaction demarcation strategy and EJB deployment descriptor settings for your enterprise development scenario

Taming Tiger: Ocean and Synth meet Metal - Now that Tiger is an official release, it's time to explore even more exciting differences between the 1.4 version of the Java 2 Standard Edition platform and 5.0 of the Java 2 Development Kit. In this installment of Taming Tiger, UI expert John Zukowski explores the newly available Ocean and Synth look and feels. Now, even non-programmers can develop custom look and feels without writing code or having the benefit of a good eye!

XML Security: Control information access with XACML - 18 Oct 2004 Providing the right people with the right access to information is as important as (if not more important than) having the information in the first place. eXtensible Access Control Markup Language -- or XACML -- provides a mechanism to create policies and rules for controlling access to information. In this article, author Manish Verma continues his series on XML security issues by showing you how to incorporate XACML into your own applications.

XML Matters: OASIS Election Markup Language - The Organization for the Advancement of Structured Information Standards (OASIS) has developed many XML standards in use within government, law, and business. Election Markup Language (EML) is OASIS' foray into the world of elections -- with an emphasis on voting within governmental jurisdictions. In this installment, David gives readers an introductory look at the structure and purpose of EML, with an eye toward how this standard, which is now used largely in Europe, will substantially influence future data standards in the United States.

XML in localisation: Use XLIFF to translate documents - The first article in this series briefly explained the most relevant XML standards used in the localisation industry. This second part focuses on XML Localisation Interchange File Format (XLIFF) and explains with practical examples how to use it for translating different kinds of documents. This article presents a step-by-step guide to translating multilingual documents using XLIFF as an intermediary file format, and provides useful resources for localizing Java applications.

Java theory and practice - Java theory and practice: More flexible, scalable locking in JDK 5.0 JDK 5.0 offers developers some powerful new choices for developing high-performance concurrent applications. For example, the ReentrantLock class in java.util.concurrent.lock is offered as a replacement for the synchronized facility of the Java language -- it has the same memory semantics, the same locking semantics, better performance under contention, and features not offered by synchronized. Does this mean that we should forget about synchronized, and instead use ReentrantLock exclusively? Concurrency expert Brian Goetz returns from his summer hiatus to supply the answer.

Portlet: Cooperative Portlets and the Property Broker Serv. - Portlet How-To: Cooperative Portlets and the Property Broker Service This article will describe various methods for accomplishing inter-portlet communication via the Property Broker Service. It will be presented in two parts. The first part will introduce the concepts and terminology related to cooperative portlets and will discuss the most basic implementation of cooperative portlets. The second part (to be delivered in next month?s newsletter) will address additional approaches for implementing cooperative portlets as well as some advanced topics related to the Property Broker Service.

Resource-oriented vs. activity-oriented Web services - The recent release of the Bloglines API has spurred yet another round of discussion of Representational State Transfer (REST) versus Simple Object Access Protocol (SOAP) Web services. Contrary to what some might believe; however, these distinct Service-Oriented Architecture (SOA) design patterns are not mutually exclusive. Nor is one generally superior to the other. Each have their relative strengths and weaknesses in relation to different application scenarios, and both are valid approaches to solving real problems faced by real customers. The trick is in being able to decide which approach to use. The answer is probably easier than you might think.

Ease Swing development with the TableModel Free framework - This article introduces the TableModel Free (TMF) framework which eliminates the need to use TableModels with Swing JTables. The TMF framework allows for more configurable JTables by moving all of table-specific data outside of the compiled code and into a configurable XML file. Framework developer and Java UI enthusiast Michael Abernethy walks you through TMF framework, helping you reduce the size of a TableModel from hundreds of lines of code to just a single line, making management a snap.

IBM security providers: An overview - The 1.4.2 release of the IBM® developer kit for the Java? platform provides the most comprehensive security offering for the Java 2 platform to date. It includes several IBM-specific security providers with new features and great enhancements. IBM security experts Yanni Zhang, Audrey Timkovich, and John Peck introduce the IBM security providers, review their functionality, and explain how they differ from Sun's providers.

Eliminate caching in service locator implementations in J2EE - Eliminate caching in service locator implementations in J2EE 1.3. This article shows how implementations of the Service Locator pattern that include a resource cache can cause code to run incorrectly in J2EE 1.3 and later versions. While the Service Locator pattern itself is still useful, this article will show how caching with this pattern is harmful rather than helpful, why it should be eliminated from service locator implementations, and offer some practical alternatives.

Developing JavaServer Faces portlets using WebSphere Studio - Developing JavaServer Faces portlets using WebSphere Studio and the IBM Portal Toolkit -- Part 3 This three-part article series shows how the latest JavaServer? Faces and portlet specifications can be used together to rapidly build and assemble Web sites to help achieve your business objectives. Part 1 explained how to build an EJB client portlet, Part 2 used the JSF Web service component to build a Web service client portlet, and this conclusion shows how to deploy both portlets on the same page using WebSphere® Portal.

What is EGL and the relationship to J2EE? - The EGL language is similar to COBOL, but has elements that are reminiscent of Java? syntax, and some concepts that might remind you of objects. That is why EGL, included with WebSphere® Studio, is viewed as a path to adopting Java; the difficulty of moving a COBOL developer to the object oriented world and Java is well-known, and EGL helps the transition by being geared toward developers without Java skills.

Develop a SMF -bundled Web services client - This tutorial guides you through the steps to generate a Web services client and develop code to integrate the client into a Service Management Framework (SMF) as a SMF-bundled application. The example built in this tutorial is a stock quote client application. Using WebSphere Studio Device Developer (Device Developer) Version 5.7 Web services tooling, you can generate a client stub as a SMF-bundled application that takes a stock symbol as input and retrieves the most current price (time delayed, of course). Finally, it guides you through the steps necessary to run the sample application in a SMF runtime.

alt.lang.jre: Twice as Nice - Nice is a JRE compatible, object-oriented language that brings tremendous expressiveness to the Java platform. Nice also lets you implement many of the cutting edge features found in Java 5 on any Java virtual machine. In this fourth installment of the alt.lang.jre series, regular contributor and all around "Nice" guy Andrew Glover walks you through some of the most exciting features of Nice.

Practical data binding: Who uses this stuff, anyway? - Brett takes a brief respite from talking about JaxMe, and examines why you would want to use data binding -- and why you wouldn't. He explores when data binding makes sense, and details some common programming practices and pitfalls. Share your thoughts on this article with the author and other readers in the "XML and Java technology" discussion forum.

Taming Tiger: Get environment variables - Accessing platform-specific information hasn't always been easy. While you could certainly create processes with Runtime.exec(), dealing with differences across platforms to build parameter sets often led to headaches. In addition, the getenv() method of System has been deprecated since the beginning of Java programming time. Now, as columnist John Zukowski shows you, the new ProcessBuilder class makes accessing platform-specific information easier than ever.

Migrating to Eclipse - If you're considering a move to Eclipse and are currently programming with Netbeans, IntelliJ IDEA, or Borland JBuilder, these developer's guides will help you compare your current IDE to Eclipse. Each guide starts with a brief comparison of Eclipse and the other IDEs' features, ease of use, and stability, and then covers the essential Eclipse features -- and how they differ from those in the other IDE -- so you can decide if Eclipse is right for you.

Implement/access stateful Web services with WebSphere Studio - The Web Services Resource Framework (see Resources) proposes a model for accessing state using Web services. The WS-Resource Properties specification (see Resources) defines how you can query and change the data associated with a stateful resource using Web services technologies. This article shows how changes in the values of resource properties of a WS-Resource can be sent to a client that has subscribed to it in an IBM® WebSphere® Application Server environment using WebSphere Studio Application Developer V5.1.1.

WebSphere Studio Application Developer Integration Edition - Award-winning IBM® WebSphere® Studio Application Developer Integration Edition is part of a family of integrated development environments for Web, JavaT, J2EE, Web Services, XML and data applications and is a key element of the IBM Software Development Platform for automating and integrating the software development process. Built on Eclipse and optimized for building composite applications that deploy to IBM WebSphere Business Integration Server Foundation, WebSphere Studio Application Developer Integration Edition provides a next generation integration development environment for extending and integrating your existing IT assets within a service oriented architecture.

Developing Web applications using RAD tools, IBM extended JS - Developing Web applications using RAD tools, IBM extended JSF components, and WebSphere Studio V.5.1.2 Sep 2004 This article describes the Fileupload/Download features of the IBM Extended JavaServer Faces components that are integrated into WebSphere Studio V5.1.2. You can use these components and complementary rapid application development (RAD) tools.to build a Web application that uploads content and then displays it. The article shows how the Faces components work with data using WebSphere Service Data Object (SDO) technology.

Maximizing Java Performance on AIX - Read the conclusion of the commonly used tips and techniques series for tuning Java applications on AIX.

Java Technology Concept Map - The Java Technology Concept Map 1.0 is an interactive diagram, a web of linked terms, to show the relationships among and uses of the Java technologies. You can use the Map to get an overview of the Java landscape as well as learn more about the details of its components.

Build Linux apps with complimentary new trial code from IBM - The latest IBM developerWorks® Software Evaluation Kit (SEK) from Speed-start your Linux app program is now available. You can now build and deploy Linux apps using IBM WebSphere®, DB2® and Tivoli trial code compatible with current enterprise distributions from Red Hat and SUSE.

Steps to getting support for WebSphere Application Server - Both new users looking for basic information and experts looking for specific fixes and workarounds can benefit immediately from IBM's extensive Web-based support. Download fixes, search on keywords, find how-to information, and solve your problem -- before going through the formal support process.

DeveloperWorks - Forums - Along with the great content you've come to expect, you'll also find active user forums full of developers who may have already solved the problems you're currently facing. Visit the forums page today to see for yourself.

WebSphere, SOA, Web services, Integration, and all that - Dr. Bob Sutor is IBM's Director of WebSphere Foundation Software as well as its Web services and SOA efforts. Check out the new blog by Bob Sutor , IBM's Director of WebSphere Foundation Software. Bob is considered one of today's most influential voices in XML Web Services.

Access stateful Web services using WebSphere Studio, Part 4 - The Web Services Resource Properties specification defines how you can use Web services to access data associated with a stateful WS-Resource. This article gives you the details, using WebSphere Business Integration Server Foundation V5.1 and WebSphere Studio Application Developer Integration Edition V5.1.0. Learn how Web services front-ending for dynamic WS-Resources can interact with the actual physical resources in a WebSphere BI Server Foundation V5.1 environment.

Generating Java using EGL and JSF with WebSphere Studio Site - This article describes how to use JSF and WebSphere Studio Site Developer V5.1.2 to deploy Enterprise Generation Language (EGL) applications to WebSphere Application Server V5.1. It shows you how to code, test, generate, and deploy a three-tier application consisting of a Web interface, WebSphere Application Server V5.1, and a server program that accesses DB2. JSF supports an event-driven model in which each request is handled by a page handler that acts on information submitted with the request or forwards it to another handler for processing. The event-driven model greatly simplifies Web application development. We will use EGL to implement this model, which means you won't need Java skills, since all Java code will be generated from the EGL code.

Accessing an EJB Web service using SOAP - IBM WebSphere Application Server V5.1 supports both SOAP over HTTP and SOAP over JMS. These two transport protocols enable Web services clients and servers to communicate using either HTTP or JMS queues and topics. This article shows you how to use WebSphere Studio to make a Web service accessible using either SOAP/HTTP or SOAP/JMS.

Implement web application security using Struts - Most business applications need to have stringent security regulations where there are different roles in the application and each role has a predetermined set of access allocated for the role. In this article I try to explain the use of Struts, taglibs and servlet filters to develop a powerful and flexible security model that can be used directly by almost any web based business application.

Java theory and practice: Kill bugs dead - Inspection tools like FindBugs provide a second layer of defense against common coding errors.

Describe open source projects with XML, Part 4 - In this installment of XML Watch, Edd Dumbill concludes the development of a vocabulary for describing open source software projects, exploring the documentation, tools, and community that are required for the successful launch of the DOAP vocabulary. The steps taken are drawn from the author's experience with both open source projects and vocabularies such as FOAF and RSS.

Improve performance in your XML applications, Part 1 - Write your application to get the best possible performance, plus learn which SAX or DOM operations and features affect application performance. In this first of a three-part article, authors Elena Litani and Michael Glavassevich describe best practices for writing XML apps and documents, and for developing applications with the standard SAX and DOM APIs.

Solution design - The following roadmaps focus on developing and enhancing IBM desktop, server, storage and printing product knowledge, critical to the development of a total solution.

Webcasts focuses on the IBM Software Development Platform - The IBM Software Development Platform is a set of tools and a shared set of proven best practices that development teams can use to build, extend, integrate, modernize, and deploy on demand applications. These Webcasts explore the tools that make up the IBM Software Development Platform and the benefit they can bring to your development efforts

Using WebSphere Studio Device Developer - This IBM Redbook is a self-study guide for the WebSphere Studio Device Developer (WSDD) application development tool. WebSphere Studio Device Developer is the IBM tool for Java development for client (embedded) applications.

Supplementary Characters in the Java Platform - This article describes how supplementary characters are supported in the Java platform. Supplementary characters are characters in the Unicode standard whose code points are above U+FFFF, and which therefore cannot be described as single 16-bit entities such as the char data type in the Java programming language. Such characters are generally rare, but some are used, for example, as part of Chinese and Japanese personal names, and so support for them is commonly required for government applications in East Asian countries.

XML for DB2 Information Integration - In many organizations, relational databases are the backbone for data storage and retrieval. Over the last couple of years, XML has become the de facto standard to exchange information between organizations, as well as between departments or applications within the same organization. Since data tends to live in databases, it needs to be converted from a relational format into an XML format when involved in those data exchanges, as well as converted (back) from XML into a relational format for storage, or for handling by other applications.

Use XForms to send and receive Web services messages - One of the great strengths of XForms is the fact that an XForms client can send its data as XML, and that it receives XML in return. This capability can be exceptionally useful in the field of Web services, where that's exactly what gets sent and received: XML messages. In this tip, I'll look at how to use an XForms browser as a Web services client, sending a SOAP request and displaying the results directly in the browser.

Functional programming in the Java language - If you work on large-scale development projects, then you're familiar with the advantages of writing modular code. Well-structured, modular code is easier to write, debug, understand, and reuse. The problem for Java developers is that the functional programming paradigm has long been implemented only via specialized languages such as Haskell, Scheme, Erlang, and Lisp. In this article, author Abhijit Belapurkar shows you how to use functional programming constructs such as closures and higher order functions to write well-structured, modular code in the Java language.

A Conversation about Web Communication with an XML Pioneer - Consumers find themselves with a wide array of communications options: snail mail, phone, email, instant messenger, video phone, web publishing, fax, and, increasingly, Really Simple Syndication (RSS) feeds, driven by everything from newspapers to weblogs.

hashCodes Uncovered - First of all, what the heck are hashcodes for? Well, oddly enough, they're used heavily in Hashtables. Hashtables, along with the other classes that extend the Map interface, are discussed in this Journal article For the purposes of this article, I'm going to assume you know what a Hashtable is and how useful it can be.

UML, XMI, and code generation, Part 3 - In the third article on UML modeling and XML, Benoît further refines the conversion stylesheet with the introduction of stereotypes and tags. These are extension mechanisms for UML that are used to store implementation information in the model.

Web services Programming Tips and Tricks: WSDL - This tip explains the nuances of the two types of import statements found in a Web Services Description Language (WSDL) file.

JaxMe - The new kid on the block - The previous installments of this column gave you a thorough overview of JAXB, so you're now ready to study varying data binding implementations. This article begins an in-depth look at JaxMe, an open source implementation of JAXB. In addition to offering several enhancements to the basic JAXB specification, JaxMe offers integration with databases and Enterprise JavaBeans, both significant extensions to basic data binding behavior.

Designing the Business Service Layer - Follow this article and learn a design technique that identifies the business service layers of a Web application through use cases. This identification opens the way to an uncluttered development process while also enabling simplified testing and maintenance.

Java theory and practice: Kill bugs dead - Most advice on programming style is aimed at creating high-quality, maintainable code, which makes sense because the easiest time to fix a bug is before the bug is created (an ounce of prevention . . .). Unfortunately, prevention is not always enough, and while some fine tools exist to help you create good code, fewer tools are available to help you analyze, maintain, or improve the quality of existing code. This month, columnist Brian Goetz builds on Chris Grindstaff's earlier Introduction to FindBugs and shows you how this static analysis tool can help you analyze your code for compliance with design principles that have been discussed in past issues of this column. Share your thoughts on this article with the author and other readers in the accompanying discussion forum. (You can also click Discuss at the top or bottom of the article to access the forum.)

Tuning garbage collection - you're part of the current blogging craze, then you've likely heard of Blog-City, a blogging site owned and operated by Blog-City Ltd., a small company in Scotland. When some unexpected performance issues cropped up, Java performance experts Jack Shirazi and Kirk Pepperdine were asked to assist in a technical tuning of Blog-City. Their detective work was complicated by hardware constraints and communication channels (IRC, ftp, and the occasional e-mail) used throughout the project.

Developerworks - Java Technology - IBM's Java resources homepage for developerworks.

Do you know what your Garbage Collector is up to? - Does your application generate out-of-memory errors on a regular basis? Do your users experience response times that are somewhat erratic? Does your application become unresponsive for fairly lengthy durations? Does your application performance appear sluggish? If you answered yes to any of these questions, then you could very well have a problem with garbage collection.

Java theory and practice: Kill bugs dead - This month, columnist Brian Goetz builds on Chris Grandstaff's earlier Introduction to FindBugs and shows you how this static analysis tool can help you analyze your code for compliance with design principles.

Stretch your Java programming skills - You can rule your own kingdom while refining your Java programming skills and mastering the Eclipse development environment all at the same time. It's all in a hard day's work for a supreme CodeRuler. Simulation-gaming enthusiast Sing Li puts you on the fast track to ultimate kingdom domination.

Design XML vocabularies with UML tools - This article is the first in a new series for the Working XML column that will explore the use of UML modeling tools, such as IBM Rational Rose and XSLT, to design XML applications. In this introductory article, I will discuss the basics of data modeling and introduce the techniques that I will cover in the next three articles.

Using WASD V5.1.2 to develop JavaServer Faces apps - JavaServer? Faces (JSF) technology is one of the most exciting technologies for Web application developers who are using J2EE. The WebSphere Studio family of tools allows you to build JSF technology-based Web applications, and provides a set of powerful visual tools to help simplify the process. Using a simple messaging center example, this tutorial teaches you how to use JavaServer Faces technology to build Web applications using WebSphere Studio V5.1.2.

SOA expands the vision of Web services part 1 - SOA presents the big picture of what you can do with Web services. Web services specifications define the details needed to implement services and interact with them. However, SOA is an approach to build distributed systems that deliver application functionality as services to end-user applications or to build other services.

Standardize annotations with Web services - Annotation is the process of associating metadata with data. This article presents a Web services API intended as an industry standard for client-server systems designed to facilitate the structured annotation of heterogeneous data. The author presents the goals of the Annotation Web services API and then discusses how those goals motivate the data model around which the API operates. The author also discusses 29 methods that comprise the API including two examples of possible sequences of API calls to create and retrieve annotations.

XML Parser for Java - XML Parser for Java is a validating XML parser and processor written in 100% pure Java; it is a library for parsing and generating XML documents. This parser easily enables an application to read and write XML data.

JDBC: Using Database MetaData Methods Appropriately - This series of articles presents some general guidelines for improving JDBC application performance that have been compiled by examining the JDBC implementations of numerous shipping JDBC applications.

Developers Favor Java for Web Services - It's far too early to crown a victor in the showdown between the Java 2 Platform Enterprise Edition (J2EE) and .NET application frameworks, but if feedback from developers is any indication, J2EE is already out in front.

Developing remote portal Web services - Web services typically provide raw data or single business functions that require rendering on the portal side, however, remote portlet web services are visual web services which include presentation and application logic. In this tutorial we take you through the portlet development process Location.

What is the Document Object Model? - The Document Object Model (DOM) is an application programming interface (API) for valid HTML and well-formed XML documents. It defines the logical structure of documents and the way a document is accessed and manipulated.

What is Java - A Word Definition From the Webopedia Computer - Webopedia's definition of what java is and some accompanying links.

Designing Performance Testing Metrics - In ancient computing times, a wise system architect once said, "you can?t manage an application you can?t monitor." In many cases, documenting the design for a new application, let alone how it might be monitored, is typically beyond the scope of the project. This article describes a reusable mechanism for capturing application-bound, performance statistics for highly distributed J2EE applications.

Inheritance & EJBs - In this article I'm going to show how to implement entity bean inheritance with three CMP EJBs: a "base class" PARTY EJB and two "derived class" EJBs: PERSON and CORPORATION. (This is a common design in relational database schemas.) Furthermore, I'll demonstrate a polymorphic finder query and a couple of polymorphic method calls. The beans I produce will be absolutely portable according to the EJB 2.0 specification.

New Features of the WebSphere Web Services Gateway - The WebSphere Web Services Gateway is a feature in WebSphere Application Server Network Deployment Version 5 that lets you make your internal Web services available externally, and external Web services available to your internal systems. This article discusses the new gateway features available in Version 5.1 that support improved performance, standard mechanisms for mediation of Web services messages, and improved flexibility.

Robust Web Services clients with Java Web Start and WAS - The goal of this tutorial is to reveal the nitty-gritty details of using Java 2 Standard Edition (J2SE) clients deployed with Java Web Start (JWS) to access Web services running on IBM Websphere Application Server.

Securing wireless communications with WebSphere - Despite advances in wireless data networks, companies face mounting pressure to manage costs, coverage, and security for their mobile workforce. IBM® WebSphere® EveryplaceTM Connection Manager equips enterprises with secure, always-on connectivity across divergent networks, extending e-business and other line of business applications to their mobile workforce at lower cost and higher data rates. This paper focuses on the many security options in the WebSphere Everyplace Connection Manager components.

Web Services Education Overview - This document describes three different roles associated with designing, creating and maintaining Web services: Web Services Architect, Web Services Developer, Web Services Systems Management.

Manipulating XML data using the JSP Standard Tag Library - JavaServer Pages provides a very flexible and powerful tool for presenting data in a Web environment. Java code, called scriplets, can be used in the JSP to provide added flexibility for the page designer. Tag libraries provide a way to shield the complexity of the Java programming language from the page designer. With Extensible Markup Language (XML), data can be represented in a structured format and presented to different targets with the use of XML Stylesheet Language (XSL) Templates (XSLT). The JSP Standard Tag Library provides a very simple and easy interface that allows the JSP page designer to manipulate XML documents and transform them using XSL templates.

JSPs in WAS Technology for Developers V6 - Part 2 - The JavaServer Pages (JSP) engine in WebSphere Application Server Technology for Developers (TD) V6 can be configured for optimal performance in both a production server environment and a development environment. This article, the second in a three-part series, explores the performance-related configuration options available in the WebSphere Application Server V6 TD JSP engine.

BlackMamba: A Swing Case Study - 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.

Java APIs for Bioinformatics - An introduction to Java APIs for bioinformatics. This article includes usage information, examples, and current design challenges for API developers in the life sciences field.

Job Scheduling in Java - Scheduling recurring execution of a piece of code is a common task for Java developers. The Timer class has its place, but as Dejan Bosanac explains, developers with more sophisticated requirements might want to check out the Quartz API.

Read And Write Microsoft Excel Spreadsheets with Jakarta POI - The Jakarta POI project consists of APIs for manipulating various file formats based upon Microsoft's OLE 2 Compound Document format using pure Java. OLE 2 Compound Document Format based files include most Microsoft Office files such as XLS and DOC as well as MFC serialization API based file formats. This article provides an introduction on how to get started with the HSSF API. No prior knowledge other than an understanding of core Java is assumed.

JMS Enables Concurrent Processing in EJB - JMS provides an elegant solution for overcoming the restrictions you face when developing concurrent applications with EJB. Learn how its asynchronous model and its support for the MessageDrivenBean can enable a client to use EJB asynchronously.

Facing Forward with JSF - JavaServer Faces (JSF) is a new technology for rapidly building Web applications using Java technologies. JSF expedites the development process by providing the following features: standard and extensible user interface (UI) components, easily configurable page navigation, components for input validation, automatic bean management, event-handling, easy error handling, and embedded support for internationalization.

Plug and Play with Java - In anticipation of requirements that continue to evolve, we need software architectures that are designed to minimize the impact of future changes. [This article] looks at several techniques that promote a forward-thinking approach to designs. These techniques can enhance designs as well as enable rapid, custom software configurations that mitigate the impact of evolving requirements.

Language Features of Java Generics - This is the first of two installments presenting an overview of Java Generics, a new language feature that will be supported in the upcoming release of Java 2 Platform, Standard Edition 1.5. This first installment discusses Java collections and generic treatment of types and classes.

Make SOAP and Web servers cohabit peacefully - SOAP's strength is that it builds on the familiar and widely deployed Web infrastructure. That can also be a weakness because Web servers can make assumptions about Web services that are simply not true. In this installment, Benoît discusses some issues with error handling in Web services.

What Is Web Services Reality? - If you believe the hype inundating the IT industry, every man, woman, and child across the globe is doing heads-down development of Web services. The hype has reached such a fever pitch that a major television broadcasting network is developing a reality show based on Web services. Tentatively called "Survivor: Web Services," this reality series pits two teams of programmers against one another in a series of complex coding games while they live together on a deserted island.

Capitalize on J2EE Debugging Tools - This article discusses how to better debug your J2EE applications using the J2EE debugger instead of the all-too-common System.out.println()'s.

Debugging Servlets - Debug Servlets in Tomcat by running it as a debuggee that a debugger can attach to?and then do it remotely.

Application, Heal Thyself - The debugger architecture?and the trend to make Java more dynamic?means that programs could analyze and manipulate themselves as they execute.

Middleware Architecture Series - Over a series of 9 articles, learn from top customer experts as they cover the top middleware challenges?everything from security to integration and present innovative uses of middleware technology to solve real world customer problems.

Explorations: Googleminer, Part 1 - Bill Grosso begins exploring an Internet application built for the "Internet Operating System" on top of the Google APIs: Googleminer.

A First Look at JSR 166: Concurrency Utilities - Java's support for multithreading and concurrency has often perplexed developers by only exposing the low-level details of wait(), notify(), synchronized blocks, et. al. But as Brian Goetz describes, JSR 166 will bring a number of concurrency conveniences to J2SE.

MVC Heresy with SQLTags - When the "right" way is more than you need, is it wrong to do what works? Steve A. Olson introduces the SQLTags toolkit, which takes database access out of its traditional tier and puts it directly into JSP tags.

Java/.NET Interop: Bridging Muddled Waters - Check your politics at the door. Java and .NET can coexist in your application environment, saving you time and money over rewriting apps to fit a hard-wired platform choice. Get a modern education in how to capitalize on existing code by using Java to communicate with .NET or vice versa.

JMS Enables Concurrent Processing in EJB - JMS provides an elegant solution for overcoming the restrictions you face when developing concurrent applications with EJB. Learn how its asynchronous model and its support for the MessageDrivenBean can enable a client to use EJB asynchronously.

Another Servlet Filter Most Web Applications Should Have - Adding to his previous must-have servlet filters, Jayson Falkner introduces another: one to activate client-side caching, so browsers won't re-request items they can just cache.

Developing Web Services with Java 2 Enterprise Edition 1.4 - This article provides a tutorial and step-by-step instructions on how to develop, deploy, and use web services, using the J2EE 1.4 SDK, with little programming required.

Client and server-side templating with Velocity - Velocity is a versatile, open source templating solution that can be used standalone in report generation/data transformation applications, or as a view component in MVC model frameworks. In this article, Sing Li introduces Velocity and reveals how you can integrate its template-processing capabilities into your own client-side standalone application, server-side Web application, or Web services.

J2EE fundamentals for .NET developers - This article is the first installment in Getting on the open road, a three-part series of roadmaps designed to assist developers of .NET, Windows client/server, and ASP applications make the jump to the Java platform. In Getting on the open road, the authors help you leverage your existing development knowledge to ease the way onto the path of open-standards-based programming. In this article, veteran enterprise architects David Carew and Jeff Wilson provide a high-level guide for .NET developers who want to migrate their e-business applications to J2EE or build J2EE applications from the ground up.

Fixing the Java Memory Model, Part 1 - JSR 133, which has been active for nearly three years, has recently issued its public recommendation on what to do about the Java Memory Model (JMM). Several serious flaws were found in the original JMM, resulting in some surprisingly difficult semantics for concepts that were supposed to be simple, like volatile, final, and synchronized. In this installment of Java theory and practice, Brian Goetz shows how the semantics of volatile and final will be strengthened in order to fix the JMM. Some of these changes have already been integrated in JDK 1.4; others are slated for inclusion in JDK 1.5.

Using Swing's Pluggable Look and Feel - Swing allows a Java application to present a GUI that resembles the underlying platform's appearance, present a common cross-platform look, or offer a completely new look. Thomas Künneth looks at how this works and addresses the question, "What should your app look like?"

Java vs. .NET Security, Part 4 - Java and .NET address similar code security issues, but which one offers the best security implementation? Denis Piliptchouk's series concludes with a look at user authentication and permissions, and a final wrap-up.

Seeing Your Systems Through a Hacker's Eyes - Computer security is an important aspect of any IT architecture. The requirement for security vigilance is especially critical, given the widespread availability of technology that potentially enables novice hackers to penetrate corporate IT defenses simply by using a tool available on the Internet.

J2SE for the Enterprise Developer - In this series, Java expert Jason Hunter introduces you to the most important new J2SE 1.4 capabilities, explains the purpose of each new feature, walks you through examples so you can start using the features right away in your projects.

Does UML Make Sense? - Unified Modeling Language (UML) has been around for several years, but UML-based modeling tools use is still at only around 10 percent. And among companies that use UML today, most employ only three of the 12 available model types: use case, class, and interaction (see the sidebar, "UML 101"). A combination of poor developer-tool support and rapidly changing technology has created barriers to UML adoption. In this article, I'll look at the challenges facing UML, the role of modeling in the enterprise, and potential market directions.

Java and the Model Driven Architecture - Often in software development, we seem destined to repeat errors made by programmers in the past. One significant error that has long-term ramifications, especially for large distributed applications, is that the application architecture is often written with a specific hardware and operating system set in mind. This situation may present no problem initially, but over time both hardware and operating systems change, often in unpredictable ways.

What UML Is and Isn't - Craig Larman discusses how to apply the UML during object-oriented analysis and design to build beautiful Java applications.

WebSphere Brings Stronger Java Support to Palm OS - The company in charge of the Palm operating system has licensed IBM's WebSphere Micro Environment J2ME certified runtime environment and WebSphere Studio Device Developer WSDD toolset for integration into the Palm OS platform.

This software tool lets Java applications build XML document - This software tool lets Java applications build XML documents directly as the result of SQL queries.

Sun Gives a Preview of J2SE 1.5 - Available in beta release, J2SE 1.5 brings language updates, monitoring and management support, and a focus on rich clients for the desktop.

A Secure Portal Using Portal 5 and Tivoli Access Manager 4.1 - This IBM redbook will focus on the security aspect of Portal?s single access point. It is intended to help IT architects, IT specialists, security architects and security administrators understand and implement portal security using a secure portal solution. This solution will be built on WebSphere Portal Server V5.0.1 and Tivoli Access Manager V4.1.

Deploying J2EE clients using Java Web Start and WSAD - New in JRE 1.4, Java Web Start lets you administer and deploy client-side J2EE applications from a server such as WebSphere Application Server. This article describes how to use Java Web Start with WebSphere Studio to enable J2EE applications to be distributed through a browser HTTP connection so that they can be run locally on a client.

Java Desktop Development: Comparing AWT, Swing, and SWT - 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.

Practical Implementations of Patterns for Customization - This article will discuss how to apply specific design patterns when building a configurable billing product. The product is implemented as a stack of components that could be employed across the different segments of the telecommunication industry. The main technical goals are to have a single code base, reduce maintenance costs, and ensure functional extensibility. The ability to configure the components at the top end of the stack allows for flexible customization as required by the diverse customer needs.

Security in Struts: User Delegation Made Possible - Struts may not have an all-encompassing security scheme, but what it does offer is extensibility. Werner Raemakers looks at how to extend Struts' security by allowing one group of users to delegate permissions to others.

TSS Presents The J2EE Project Survival Guide - This guide gives you an in-depth view of strategies for successful J2EE projects, illustrating architectural and design concepts to address various issues. Chapters on Practical J2EE, Classloading, and Deployment are available for download.

Developing JSF Applications with WebSphere Studio V5.1.1 - Part 2 of this 5-part series on Java Server Faces builds upon Part 1, continuing with the creation of JSF submission forms, and showing some of the dynamic controls that can be used for visually developing J2EE Web applications.

Application modeling with WebSphere Studio V5.1 - An application model is analogous to a construction project blueprint, and is an important ingredient in application development. This article shows the steps for developing a Java application based on a Rational Rose class diagram using the Eclipse Modeling Framework, and also shows how to develop the same Java application using the Universal Modeling Language visualization tool.

Server targeting explained in WebSphere Studio V5.1.1 - Server targeting takes the guesswork out of figuring out which JDK is supported by the server on which you intend to install your application, and which JAR files should be added to the build path for a given server. This article explains the details of server targeting.

Building database applications with WebSphere Studio and DB2 - Using parts of a simple commodity trading system, this tutorial teaches you how to select from, insert into, and update a DB2 database from WebSphere Studio and from a Java application. You will then convert this application to a Web service with the help of WebSphere Studio. The tutorial also discusses DB2 user-defined functions and stored procedures.

Simplify Web services testing with Web Services Gateway - This article describes how to shorten the development cycle for Web services, and how to make testing a breeze using a Web Services Gateway running inside WebSphere Studio Application Developer (Application Developer). The article provides step-by-step instructions for installing and configuring the Web Services Gateway in Application Developer. The Web Services Gateway runs in the Application Developer unit test environment, an environment where you can test your distributed applications end-to-end.

Integrating applications with Web services - This tutorial looks at making your application Web-services ready using WebSphere Studio's tools to wrap an existing application as a Web service, announce it using a UDDI directory, and to discover and use Web services within your applications. It also looks at how to deploy your application to a WebSphere Application Server.

Developing CICS/COBOL programs using WSED - This article is a basic "cheat-sheet" for those who are new to WebSphere Studio Enterprise Developer and want to use it to write COBOL/CICS mainframe applications. It assumes no prior knowledge of the products involved.

VMware ESX Server 2: Performance and Scalability Evaluation - IBM's High-Volume Web Sites team joined with representatives of VMware, Inc. to determine the suitability of applying VMware's virtualization technology, ESX Server 2, to the IBM Server Allocation for WebSphere Application Server, a limited IBM offering that enables customers of WebSphere Application Server Version 5 to balance workloads and allocate resources on demand. The joint team conducted experiments to evaluate ESX Server 2 in terms of overhead, scalability, and priority handling. The evaluation determined that ESX Server 2 is sound technology that has significant potential in on demand environments and is an effective tool for virtualization.(pdf, 124KB, 13 pages)

WebSphere Web Services Handbook - This IBM Redbook describes the new concept of Web services from various perspectives. It presents the major building blocks Web services rely on. Here, well-defined standards and new concepts are presented and discussed.

Explore the advanced coding features of JDK 1.5 - In this article, we'll discuss several of the new language features of JDK 1.5, including generics, enhanced for loop, autoboxing/unboxing, typesafe enums, static imports, and metadata.

Exceptions to exceptions - In our first installment of this column, we discussed the cost of throwing exceptions. This [time], we revisit the subject from a different point of view -- how the JVM handles thrown exceptions -- and we ponder whether optimal exception coding should be considered a premature optimization or a best practice.

Java and GIS, Part 1: Intro to GIS - "Geospatial" data -- that which has to do with location or space -- is at the core of all kinds of interesting applications, particularly in the GPS-powered mobile space. In Part 1 of a series on Geographic Information Systems (GIS), Sue Spielman and Tom Whitehill introduce the concepts of this problem domain.

Six Cool New JSP and Servlet Features - Bruce Perry describes six cool new features Java developers using Tomcat 5.x and other Servlet-API-2.4- and JSP-2.0-compliant containers will want to use in their projects.

Approaches to Mocking - Conceptually, you know what mock objects are, but practically speaking, how do you create and use them? Do you write mocks by hand or generate them automatically? Simon Stewart considers these possibilities and others, such as AOP-based mocking.

Deploying Java client apps using Java Web Start - New in JRE 1.4, Java Web Start lets you administer and deploy client-side J2EE applications from a server such as WebSphere Application Server. This article describes how to use Java Web Start with WebSphere Studio to enable J2EE applications to be distributed through a browser HTTP connection so that they can be run locally on a client.

Database authentication in WebSphere Application Server V5 - This article describes the relationship between the container-managed alias or a component-managed alias and the res-auth element in the deployment descriptor, and also describes how the WebSphere Application Server run time associates these two aliases with a data source under different res-auth settings.

Building a JMS Web service using SOAP over JMS and WSAD - This article describes the basics of JMS Web services and shows you how to develop a two-way request and response JMS Web service using WebSphere Studio V5.1 and SOAP/JMS. It explains the advantages and disadvantages of using SOAP/JMS, and shows you how to create and deploy an EJB Web service using SOAP/JMS to a WebSphere Application Server V5 unit test environment with the V5.0.2 Web service run time.

Near-Real-Time Debugging for Java - A free utility from IBM extends developers' debugging capabilities.

Integrate Web Services Gateway with WSAD - This article describes how to shorten the development cycle for Web services, and how to make testing a breeze using a Web Services Gateway running inside WebSphere Studio Application Developer (Application Developer). The article provides step-by-step instructions for installing and configuring the Web Services Gateway in Application Developer. The Web Services Gateway runs in the Application Developer unit test environment, an environment where you can test your distributed applications end-to-end.

UDDI & User-Defined Taxonomies - Part I - UDDI plays the pivotal role of matchmaking between service provider and service requester. Sophisticated publish and inquiry capabilities allow providers to describe their offerings, and seekers to locate them. The quality and depth of a service description is critical to how easily that service can be found by interested parties. This article will show you how to create and test a user-defined taxonomy in the Unit Test environment in IBM WebSphere Studio 5.1.

Managing Your Dependencies with JDepend - In this article, I'll introduce you to JDepend, a freely available tool that can provide insight into several qualities of your software architecture. JDepend analyzes the relationships between Java packages using the class files. Since packages represent cohesive building blocks of your architecture, maintaining a well-defined package structure provides insight into architectural qualities of maintainability, flexibility, and modularity.

What's New in Tomcat 5 - In this article, we'll take a look at the latest features in Tomcat 5. To start things off, we'll offer some insight into the goals established for version 5.0, which in many cases impacted the development of these new additions. In reviewing 5.0's new features, we found it helpful to look back at how they evolved, so we'll very often provide a nod to their roots in versions 4.1 and earlier.

A Brief Introduction to IoC - This article aims to introduce the notion of Inversion Of Control (IoC) and how it can streamline application design. We will look at the different types of IoC frameworks. By showing how IoC can result in simpler, more flexible code, you'll also be able to see why IoC has attracted so much interest of late.

The Naked Object Architecture Series - The Naked Object Architecture Series discusses the nature of the Naked Objects Framework and it's place in business systems architecture.

Introducing JFig - Java applications are typically deployed in multiple environments and platforms, each requiring some unique configuration. Additionally, many applications consist of many component applications, all sharing common configuration data. JFig gives developers a simple yet powerful tool to manage their applications? configuration.

Java Message Service (JMS) - This article examines messaging concepts in general, why one might consider using message services, introduces the Java Message Service API v1.02 for interacting with messaging systems, and illustrates Java-based messaging with a simple example application.

Intro to Cryptography and the Java Cryptography Extension - The Java Cryptography Extension (JCE) provides APIs for performing cryptographic operations in Java code. It lets us scramble and unscramble data, annotate code and data with information that lets others verify it came from us, verify the integrity of data sent from others, and perform administrative operations associated with cryptographic primitives like ciphers, secret keys, etc.

Introduction to XQuery - XQuery is a strongly typed functional language for processing real or virtual XML data. Its rich data model and ergonomic expressions provide an environment where most programmers would feel at home taking apart and piecing together XML.

Groovy - Scripting for Java - Groovy is an open-source scripting language that is implemented in Java and is tightly integrated with it. It requires Java's JDK 1.4. Groovy adds some features of the Ruby and Python scripting languages to Java. Features of Groovy include dynamic typing, closures, easy object navigation and more compact syntax for working with Lists and Maps. These features and more are described in detail in this article.

Interrupting Java threads - Writing multithreaded programs in Java, with its built-in support for threads, is fairly straightforward. However, multithreading presents a whole set of new challenges to the programmer that, if not correctly addressed, can lead to unexpected behavior and subtle, hard-to-find errors. In this article, we address one of those challenges: how to interrupt a running thread.

J2EE for the DBA - If you're a database administrator (DBA) working with Java developers, it's likely you've had differences of opinion with them. You may, for example, have been surprised when they wanted to change the database schema to better store their objects, or you might have become confused when they discussed WARs and EARs. To better help you communicate with J2EE developers, let's take a quick look at J2EE and examine some of the challenges J2EE developers face.

The Ox Documentation Tool - Ox is a simple documentation tool for people who regularly work at the shell or command-prompt level. It's a command-line Java program that accepts a keyword or term as input and then returns documentation for that term. It's free, open source software (BSD license), and because it uses Java properties, it's easily extensible by non-programmers. This article shows you how to get and use Ox, as well as detail on how the Ox code works and how you can extend it.

How To Color Alternate Lines in JSP Databound Table - With long lists of read only data presented in tabular form, it is a common requirement that alternate lines on a table are colored differently to help users read the output. This article describes how to add alternating row colors to your rows.

Take Your Web Pages to the Next Dimension with FastScript3D - FastScript3D is a Web-friendly extensible scripting interface to Java3D. It allows you to quickly harness the power of 3D Web graphics using JavaScript or VBScript to add interactive 3D applets to your pages. There are a number of free examples on the JPL Web site. But in essence FastScript is an applet to which you can pass simple script commands in order to make it generate 3D Web objects automatically.

J2SE 1.5 in a Nutshell - With so many exciting changes in [the J2SE v1.5] release you may be wondering where you should start. As in previous releases, the comprehensive list of all changes is available in the Release notes guide. This article, from the J2SE team, will take you through the major changes so that you have a grasp of what J2SE 1.5 has to offer, before diving into the api docs.

Validating Custom Tags at Translation Time - This article explains how to use these two validation techniques: using Tag Extra Info for extra validation and using the Tag Library Validator for validation of the JSP document.

Integrating applications with Web services - This tutorial looks at making your application Web-services ready using WebSphere Studio's tools to wrap an existing application as a Web service, announce it using a UDDI directory, and to discover and use Web services within your applications. It also looks at how to deploy your application to a WebSphere Application Server.

Caching EJB Home Objects - For the sake of performance - The Java Naming and Directory Interface (JNDI) is an Application Programming Interface (API) used to locate resources registered in the naming service of a Java 2 Platform Enterprise Edition (J2EE) server such as IBM WebSphere Application Server version 5. The JNDI lookup process is an expensive operation and should be performed judiciously.

Five rules for Notes/Domino developers moving to WebSphere - It's no revolutionary statement to say that learning to program in a new language involves more than just learning the syntax. It does resonate, however, with those of you who have just been through learning to code in a new language, are currently learning a new language, or are thinking about investigating a new language. You're probably still poring over how you might have done this piece or that piece of the application differently, or you're wondering how to tackle a particular part of your program.

Flex Plug-in for WebSphere Studio - Flex Plug-in for WebSphere Studio is a technology preview of a WebSphere Studio plug-in for creating Macromedia Flex applications. Macromedia Flex (previously code-named Royale) extends the Macromedia MX platform with a programming method for building the presentation tier of Rich Internet Applications.

Kyle Brown on building and deploying J2EE applications - This question and answer article features Kyle Brown, J2EE architecture and Web services expert, who answers top questions about deploying applications on WebSphere Application Server ND and building applications with J2EE technologies using WebSphere Studio.

Prevent a cross-site scripting attack - Cross-site scripting (XSS) occurs when an attacker introduces malicious scripts to a dynamic form that allows the attacker to capture the private session information. In this article, Anand K. Sharma casts light on the areas vulnerable to XSS exploitation, explains how the user can protect himself, and details what the webmaster can do to secure a site from this type of malicious intrusion.

Build your own Servlet-based Web server with nonblocking I/O - Think it's impossible to combine NIO and the Servlet API? Think again. In this article, Java developer Taylor Cowan shows you how to apply the producer/consumer model to consumer nonblocking I/O, thus easing the Servlet API into a whole new compatibility with NIO. In the process, you'll see what it takes to build an actual Servlet-based Web server that implements NIO; and you'll find out how that server stacks up against a standard Java I/O server (Tomcat 5.0) in an enterprise environment.

Creating a Framework - J2EE pattern frameworks - Many patterns have been published for J2EE applications. By developing and connecting multiple patterns, developers can create a framework that improves the stability, performance, and scalability of their J2EE application architectures. Because the number of patterns continues to expand, it can be difficult for developers to select the best combination of patterns to create frameworks that optimize J2EE applications and fulfill specific IT or business requirements.

Effective Unit Testing with DbUnit - Writing unit and component tests for objects with external dependencies, such as databases or other objects, can prove arduous, as those dependencies may hinder isolation. Ultimately, effective white-box tests isolate an object by controlling outside dependencies, so as to manipulate its state or associated behavior.

Garbage collection and performance - The past two installments of Java theory and practice have discussed various techniques for garbage collection and the basics of the JDK 1.4.1 garbage collectors. This month, columnist Brian Goetz looks at the performance impact of the choice of collector, how various coding idioms interact with the garbage collector, and how allocation and other related costs have changed in Java virtual machines over the past several years. Share your thoughts on this article with the author and other readers in the accompanying discussion forum.

Inversion of Control Containers and the Dependency Injection - In the Java community there's been a rush of lightweight containers that help to assemble components from different projects into a cohesive application. Underlying these containers is a common pattern to how they perform the wiring, a concept they refer under the very generic name of "Inversion of Control". In this article I dig into how this pattern works, under the more specific name of "Dependency Injection", and contrast it with the Service Locator alternative. The choice between them is less important than the principle of separating configuration from use.

Supercharge Your Java Web Applications with Translets - Translets, a brand new addition to Java, can improve your Web application performance multiple fold. This article walks through the creation of translets, discusses translet functionality, and demonstrates how to use them from within a Java application.

Java vs. .NET Security, Part 3 - Java and .NET address similar code security issues, but which one offers the best security implementation? Denis Piliptchouk's series continues with a look at how each platform handles code protection and code access.

Using Data Sources the Right Way - Description:Data sources let app servers manage pools of database connections. Learn to set up a version 5.0 data source through the IBM WebSphere Application Server.

J2EE Design Strategies That Boost Performance - Learn how the application of a few key design strategies can alleviate your J2EE application performance problems.

XML and WebSphere Studio Application Developer -- Part 9 - This article explores the XML-to-SQL feature, provided with WebSphere Studio Application Developer, that lets you update relational database tables from XML documents.

Building dynamic Web sites with WebSphere Studio V5.1.1 - This tutorial demonstrates how to use WebSphere Studio V5.1.1 for building dynamic Web sites. The tutorial walks you through a simple example that makes use of Java servlets and JavaServer Pages in order to implement a simple messaging center. Using WebSphere Studio, you learn how to develop dynamic Web sites and then how to test and debug your code.

Interfacing WebSphere Extended Messaging w/ Existing Apps - This article shows you how to use the Extended Messaging Service (EMS) of WebSphere Application Server V5 to interface with existing messaging applications in cases where the message format is already defined and the internal Extended Messaging format is not suitable. This will enable new applications to use the tooling and run-time artifacts provided by Extended Messaging, as well as exchange messages with existing applications that cannot have their message formats modified.

Array gotcha -- null array vs. empty array - Some programs depend on a distinction between a null array and an empty array. What is often used to represent arrays in XML schemas does not have any such distinction. Is there anything you can do to get around this feature of XML? This article will show you.

Use XML directly over HTTP for Web services - SOAP technologies usually exchange XML over HTTP, but SOAP has its pros and cons, and a lot of discussion has focused on how to use XML more directly to communicate between applications. This tip describes the direct approach, and discusses where it is most appropriate. It also discusses how to use WSDL to describe such services.

XML programming in Java technology, Part 1 - This updated tutorial covers the basics of manipulating XML documents using Java technology. Doug Tidwell looks at the common APIs for XML and discusses how to parse, create, manipulate, and transform XML documents.

Handle Your JAX - Though frequently misunderstood, the handlers classes of JAX-RPC can be plugged dynamically into Web services.

Grasping Handlers - Define a complete service that demonstrates just how useful JAX-RPC handlers can be for you.

Write and Configure JAX-RPC Handlers - Avoid the limitations of an interceptor model to provide services. See how to write and configure handler components for generic and specific implementations.

Testing Java Classes with JUnit - Most software applications today are written in tiers: the presentation tier, the logic tier (where business logic is kept), and the data tier. The logic tier is the meat of the application and comprises all of the rules and actions of the application. The business logic usually resides in JAR files containing libraries of Java class files. People often think of testing as trying out a product. With a car, it's easy: start the ignition and drive. With desktop software, it's also easy: start up the application, then click around and type to test the functions that interest you. How do you test a JAR file filled with Java classes?

Which Distributed Edition of DB2 Version 8 is Right for You? - This popular article is updated with the latest news in product features, editions, and pricing for Version 8 and DB2 Express. This article lays out the options and includes a quick reference that maps typical user environments to the suggested DB2 edition.

Using JavaCC to Build a Boolean Query Language against DB2 - JavaCC is a very powerful "compiler compiler" tool that can be used to formulate context-free grammars. This article demonstrates how JavaCC can be used to allow end users to formulate simple boolean queries against a DB2 UDB database.

Object Caching in a Web Portal Application Using JCS - One way to improve server-side performance is to cache data instead of generating it over and over again. Srini Penchikala takes a look at how the Java Caching System makes this possible.

Hibernate Your Data - Hibernate can persist any kind of Java object, manipulate a hierarchy of objects, handle collections, and work with transactions. Davor Cengija shows you how.

Introduction to Aspect-Oriented Programming - 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.

Three Rules for Effective Exception Handling - Exceptions in Java provide a consistent mechanism for identifying and responding to error conditions. Effective exception handling will make your programs more robust and easier to debug. Exceptions are a tremendous debugging aid because they help answer three important questions.

Make Your Swing App Go Native, Part 1 - Java applications, in particular those written with the Swing toolkit, have a reputation for feeling clunky and out of place, as if they don't belong on your computer. This is the first of a three part article series in which we will build a simple application from the ground up and make it look and feel native.

Make Your Swing App Go Native, Part 2 - In the first installment, we created a simple chat program with OS-specific menus and alerts. In this installment, we will create native executables for Mac OS X and Windows, then add another native feature: file type associations.

Sun's Javapedia - The Javapedia has been created and is being maintained by the community as a resource of all things Java.

The Effective Use of Joins in Select Statements - For some of the finer points in retrieving data from relational databases, check out Satya Komatineni's The Effective Use of Joins in Select Statements. He presents eleven principles on using joins for those that are familiar with them.

Secure Java Web-Apps by Exploiting HttpSession in WAS - Using a test automation application as an example, this article demonstrates how WebSphere Application Server's HttpSession capabilities can be exploited to secure Java servlet Web applications, at a level of granularity lower than that of the J2EE programmatic security model.

Back End Code Generation Techniques for Java - In this article, Jack Herrington looks at what constitutes a high quality code generator. He compares code generation tools for both traditional and extreme programming approaches such as ModelJ and XDoclet, and gives a synopsis of various MDA generators such as AndroMDA, ArcStyler and OptimalJ. He also provides tips'n'tools on how to build custom generators.

Micro performance benchmarking - Java performance enthusiasts Jack Shirazi and Kirk Pepperdine, Director and CTO of JavaPerformanceTuning.com, follow performance discussions all over the Internet to see what's troubling developers. While surfing the Usenet newsgroup comp.lang.java, they came across some interesting low-level performance tuning questions. In this installment of Eye on performance, they dive into some bytecode analysis to try and answer some of these questions.

Build user interfaces without getters and setters - This article expands on the previous article ("Why Getter and Setter Methods Are Evil,") by providing one of several possible programmatic solutions to the get/set-elimination problem. In particular, Allen demonstrates how to use the Gang of Four Builder design pattern to construct both Web-based and client-side user interfaces without exposing your object's implementation to the entire program.

Developing Web Interfaces with JSF - JavaServer Faces offers a competitive alternative to visual Web development tools and promotes a teamwork approach to application development.

Building Layered Architectures for EJB Systems - This article describes how to take an OO design developed in terms of Java classes (Java beans) and map it to a persistence architecture based on entity beans, factories, session facades, and data beans. With the help of a realistic example, you learn how to reduce the total number of EJB remote method calls, while still allowing for the display and manipulation of complex data.

What's it going to take to get you to go with EJB components - How do you know if the application you're designing would benefit from using Enterprise JavaBeans (EJBs)? Two experienced developers from IBM take you through the criteria that can help you decide.

Step-by-Step EJB 2.0 Inheritance in WebSphere - One of the vital principles of object-oriented programming is inheritance. Although not formally supported by the EJB specification, the need for inheritance in the EJB world has real importance.

Understanding and Optimizing Java Management Extensions - Developers are capitalizing on Java's open and dynamic properties to use the technology for seemingly limitless applications across the computing spectrum. To ensure that developers and businesses optimize Java performance in a variety of deployments, organizations must use an organized, standardized approach to looking inside - and sometimes even modifying - Java-based devices or processes.

Swing Data Transfer in Java 2 Platform v1.4 - Just one of the many advantages of Java[tm] 2 Platform, Standard Edition v1.4 is the new support for Swing to be able to transfer data between applications, native or the Java programming language.

Buffers API Fundamentals - In this article we will be looking at the new APIs and functionality that were introduced in the java.nio (New I/O) package of the Java[tm] 2 Platform, Standard Edition (J2SE[tm]) version 1.4. The New I/O package came about as a result of Java Specification request #51 (JSR-51), which was raised as part of the Java Community Process.

Maven Magic - Maven is a high-level, intelligent project management, build and deployment tool from the Apache project. There is nothing that Maven does that Ant cannot do. Ant gives the ultimate power and flexibility in build and deployment to the developer. Why do you need Maven then? Maven adds a layer of abstraction above Ant (and uses Jelly). Maven can be used to build any Java application, but [...] this article [...] will investigate the applicability of Maven from a J2EE standpoint.

Aspect Oriented Refactoring: Part 1 - Aspect-oriented refactoring offers many benefits. Initially, the attractive part of aspect-oriented refactoring is implementation of the same functionality with fewer lines of code. However, after a short duration of continued use, aspect-oriented refactoring shows its real benefit in code that is easy to understand, highly consistent, and simple to change. This article series assumes familiarity with AspectJ syntax.

Aspect Oriented Refactoring: Part 2 - In the previous article of this series, [..] the fundamentals of aspect-oriented refactoring (AO refactoring) were examined with the general schemes and considerations involved and the process through a simple example. In this second and concluding part of the series, several AO refactoring techniques are presented.

Understanding JAXB: Java Binding Customization - Java Architecture for XML Binding (JAXB) is a specification (or standard) that automates the mapping between XML documents and Java objects and vice versa. One of the primary components of JAXB is the schema compiler. The schema compiler is the tool used to generate Java bindings from an XML schema document. If used in its default mode (for non-trivial applications), the compiler usually generates bindings that are awkward to work with. This article will look at various methods you can use to customize the generated bindings.

Java vs. .NET Security, Part 2 - This is the second article in a series on Java vs. .NET security comparisons. It deals with the issues of cryptography support and the mechanisms of communication protection on those platforms. The previous article in this series, Part 1, covered configuration and code containment.

Working with Large Object Datatypes - This article discusses how BLOBs and CLOBs let you manage large, nontraditional datatypes ? such as images, video, and documents ? using servlets and JavaMail.

Call on extensible RMI - Remote Method Invocation (RMI) has become a standard communication mechanism between remote Java objects. In spite of that popularity, the lack of a robust security framework has hindered RMI's acceptance for wide-area distributed computing. The latest RMI framework, Jini Extensible Remote Invocation (JERI), introduced as part of the Jini 2.0 release, features a powerful, highly configurable RMI security mechanism. This article presents an extensible RMI overview and demonstrates JERI's configuration features.

J2EE pathfinder: Java security with JAAS and JSSE - In this installment of J2EE pathfinder, enterprise Java developer and educator Kyle Gabhart introduces the Java Authentication and Authorization Service (JAAS) and the Java Secure Socket Extension (JSSE). Follow along to find out how these two APIs combine to provide the core functions of the J2EE Web application security framework: authentication, authorization, and transport-level security.

Scripting for XML- Scripting for XML combines an interpreter that processes an easily-learned XML tag set with an integrated editor to provide a programming environment that is especially appealing to new and occasional programmers.

Release of Sun Java Studio Creator- Sun Microsystems has announced a technology preview release of Sun Java Studio Creator (code-named Project Rave), a revolutionary, easy-to-use tool for Java technology developers.

Succeeding With Struts: Dynaforms - Once you've been using Struts for a while, you'll begin to notice that you spend a lot of time creating ActionForm classes. While these classes are critical to the MVC architecture of Struts (as they implement the view portion), they are usually simply a collection of bean properties and a validate method (also sometimes a reset method.) With the Struts 1.1 release, developers have a new set of options to create their view objects, based around DynaBeans.

Code Spelunking: Exploring Cavernous Code Bases - In this ACM Queue article Code Spelunking: Exploring Cavernous Code Bases, George V. Neville-Neil writes " Debugging is a highly focused task: You have a program, it runs, but not correctly. You must find out why it does this, where it does this, and then repair it. What's wrong with the program is usually your only known quantity. Finding the needle buried in the haystack is your job, so the first question must be, 'Where does the program make a mistake?'"

Complete the MVC Puzzle with Struts - In this article, we'll take a brief trip into the world of the Model-View-Controller (MVC) design pattern, and, in particular, we'll look at how it is implemented using the Struts framework. We will start by describing the MVC pattern at a theoretical level, then move on to describe how we might 'roll-our-own' MVC framework. Once we've looked at this, we'll describe Struts and show how this technology helps us quickly and simply build MVC-based Web applications.

Practical JSTL, Part 2 - In part 2 of Practical JSTL, we'll take a look at some of the functionality provided for us, such as the available standard actions contained within the JSTL in the XML, I18N, and SQL libraries.

Introduction to the Peer-to-Peer Sockets Project - The Peer-to-Peer Sockets project reimplements Java's standard Socket, ServerSocket, and InetAddress classes to work on the JXTA peer-to-peer network rather than on the standard TCP/IP network. Brad Neuberg shows how to configure and set up the P2P Socket libraries to run on your system, how to create and run P2P server and client sockets, and how to work with the P2P InetAddress class, and discusses security issues and limitations in the framework.

JSP 2.0: The New Deal, Part 2 - The wait is almost over: the latest version of the JavaServer Pages (JSP) specification, JSP 2.0, is about to be released. Hans Bergsten shows how the new changes make using JSP and its expression language cleaner and more powerful.

Regular Expressions in J2SE - 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.

Isolate server includes' runtime context - Dynamically included JavaServer Pages (JSP) pages and servlets offer simple, but limited means for frontend code encapsulation and reuse. A dynamically included resource often relies on runtime data (request parameters, JSP-scoped attributes), and this restricts the runtime context from which it can be included. This article shows how to achieve true black-box reuse of frontend logic in the form of JSP pages or Java servlets, by wrapping the servlet request object and effectively creating a local runtime context for an included resource.

Identify Problems with Testing Multithreaded Code - This article is the first of three installments about using a testing framework for concurrent testing of Java code in a multithreaded environment. This installment discusses the three primary problems with creating and maintaining thread-safe code.

Unit Testing to the Rescue - This article is the second of three installments about using a testing framework for concurrent testing of Java code in a multithreaded environment. In this installment, Robert Nettleton offers test-first coding as a solution, discusses how it can aid developers in rapid development environments, and then looks at developing a simple unit test library for concurrent testing.

Defensive coding and unit testing "rules of the road"- This article discusses some basic "defensive" coding and unit testing practices to make it easier for developers to find defects -- and, more importantly, help to prevent them in the first place.

Using Local and Remote EJB Interfaces- This article shows the design approach, the implementation and the test results for a sample J2EE application that provides a basic comparison of the local and remote interface usage for Enterprise Java Beans.

Change Password in WAS Configuration After Installation- Use this tool to change username and password information in any properties file on-the-fly, while still preserving the security of your installation.

J2EE Application Profiling in WebSphere Studio- This article explains the concepts behind the WebSphere Studio Profiler and shows you step-by-step how to configure it and use it to monitor the performance of a sample application.

Core Java Tech Tips- Create a 3D virtual world through the Java 3D API. Control Drag and Drop between Swing components through the TransferHandler class.

Prepare for Java Language Changes- Could another J2SE release rekindle the debate over Java's increasing complexity?

Using LDAP to Secure J2EE Applications in WebSphere StudioV5- This article will show you how to use Application Developer to create, configure, and test a simple enterprise application to use LDAP for security.

JBoss and Apache to Certify App Servers- J2EE 1.4 Spec Approved, JBoss and Apache to Certify App Servers

Bug Patrol- A few years ago everyone was obsessed with Quality software. The Q in Quality was capitalized to emphasize the word's importance. Hours of procedures and inspection processes were introduced, along with reams of paperwork, in an attempt to make software less buggy. More recently, the trend has moved towards more lightweight processes with agile software and extreme programming. This is still a positive move since ensuring software quality remains important. Some analysts estimate that up to 60 percent of software faults can be automatically detected. Is there, then, anything we can do to build a bridge between yesterday's dinosaur of quality fixation with today's obsession to get things done quickly and cheaply? Joe Walker examines different types of bugs and seven tools to help you uncover them.

Configuration Blues- Configuring an application should be painless for a user. It requires careful design on the developers part. This article looks at three techniques: properties, preferences, and JMX.

Two Servlet Filters Every Web Application Should Have- This article details the process of building and using a caching filter and a compression filter that are suitable for use with just about any web application. After reading this article, you will understand caching and compressing, have code to do both, and be able to apply caching and compression to any of your future (or existing!) web applications.

Best Practices for Exception Handling- One of the problems with exception handling is knowing when and how to use it. In this article, I will cover some of the best practices for exception handling. I will also summarize the recent debate about the use of checked exceptions.

Rethinking Swing Threading- Dealing with potentially slow actions like network activity or database access in Swing GUIs generally leads to an unresponsive GUI or unreadable code. Jonathan Simon presents a new event-driven approach that can fix both.

Easy Custom Tags with Tag Files, Part 1- Tag Files in JSP 2.0 make creating custom tags much easier, automating away previous annoyances like manually compiling and writing descriptors. Budi Kurniawan offers an introduction to creating and using tag files.

Securing the Wire- In this excerpt from his book J2EE Security: For Servlets, EJBs, and Web Services, author Pankaj Kumar describes Java APIs for securing items that are sent over the network where others may be snooping.

Taglibs: Designing Web APIs for the Non-Programmer- Designing a tag library for programmers is one thing; designing it for non-programmers is quite another. Joshua Marinacci shows off three tag library redesigns and how they make life easier for his target audience.

Inside Class Loaders- In this part [of a series of articles], I want to lay the groundwork on which we can start a discussion about dynamic and modular software systems. Class loaders may seem to be a dry topic, but I think it is one of the topics that separate the junior from the senior software engineer, so bear with me for an exciting journey into the darker corners of Java.

Apache Jakarta Commons: DbUtils- Apache Jakarta has released DbUtils, a small set of classes designed to make working with JDBC easier. JDBC resource cleanup code is mundane, error prone work so these classes abstract out all of the cleanup tasks from your code leaving you with what you really wanted to do with JDBC in the first place: query and update data.

WebSphere Portal Server Development with IBM Rational Rapid- See how IBM Rational Rapid Developer can help you create and deploy portlets onto WebSphere Portal Server -- even if you're not familiar with the technical details of portlet development.

Using LDAP security with WebSphere Studio- This article describes how to use WebSphere Studio to configure a simple enterprise application to use LDAP as its security mechanism. The article covers some LDAP design issues, and describes how LDAP security works in the real world and how it can simplify Websphere security.

Speeding up builds for large WebSphere Studio Apps- When using WebSphere Studio on large applications with many large projects, you can speed up builds for your ongoing changes build by selecting different build in different situations.

Using the Struts Framework with WebSphere Studio V5: Part 1- Struts is one of the best-known open-source embodiments of the Model-View-Controller (MVC) framework, which provides a convenient way for modular applications to cleanly separate logic, presentation, and data. This article reviews how struts applications can be built within WebSphere Studio.

Internet Commerce Design Issues and Solutions- Whether you're a manager, designer, or down-in-the-bits developer, we hope this paper will help you understand the issues involved in building large, scalable JavaT 2 Enterprise Edition (J2EE) e-commerce systems, and that it will familiarize you with some design patterns to address those issues. We'll start at a high level and spiral down, so on any section, just read for as much detail as you need.

JavaServer Faces, redux- JavaServer Faces (JSF), poised to become the preeminent Java Web application framework, has undergone many changes since it was introduced as an early access (EA) release in September 2002. In this article, JavaServer Faces expert group member David Geary explores JSF's EA4 release (launched in June 2003) and illustrates how JSF has matured since its debut last year.

The xJen Architecture- While there is some convergence around the bigger developement frameworks, one of the advantages of Java is that developers can still roll their own tools. In the description of his xJen Architecture , Michel Katz discusses using XML and JDOM. Michel concludes that the idea "of a code generator is that it pushes code re-use much further without contravening the OOP approach; the templates must follow proper OOP structure. We are trying to create better code, not more bad code faster."

Optimizing Java Applications- Without the right tools and techniques, tuning for performance can be unbearably difficult, yet you can't afford to turn your back on the process. It's absolutely critical. With the size and complexity of most Java applications, it's getting much more important to get an early handle on performance. Gartner estimates that only 14% of applications meet "all measured and tested response time estimates." In this paper, we'll talk about some ways to move performance out of an inefficient box at the end of the cycle, and into the fabric of your everyday routine.

Advanced Classloading in J2EE- This article will describe an especially sophisticated classloading system that combines ease of use with efficiency and compliant behaviour in order to deal with the mentioned questions. This classloading approach also contains a mechanism to separate internally used libraries from user-installable libraries that could potentially conflict with each other.

Why Prepared Statements are important and how to use them- Databases have a tough job. They accept SQL queries from many clients concurrently and execute the queries as efficiently as possible against the data. Processing statements can be an expensive operation but databases are now written in such a way so that this overhead is minimized. However, these optimizations need assistance from the application developers if we are to capitalize on them. This article shows you how the correct use of PreparedStatements can significantly help a database perform these optimizations.

Building Web sites with WebWork2- WebWork is a Model 2 MVC web framework created by the OpenSymphony team which includes folks like Jason Carreira, Pat Lightbody, Mike Cannon-Brookes, Hani Suleiman and many more. Having already gained considerable reputation with their current 1.x release the team broke out and has been working on a 2.x version which already has a beta release out. This article will take you through the development of the wafer weblog application using the WebWork 2.x release and will cover many of the basic features of WW2.

Message Driven Beans and Encapsulated Business Rules- This article discusses the Encapsulated Business Rules design pattern and shows how rule-based components can be implemented as message-driven beans to provide flexible, sophisticated business services. The example package demonstrates how encapsulated business rules can be used in a real world application and shows the ease with which you can turn a distributed component such as an EJB into a rule-based component.

TheServerSide.com Application Server Matrix- The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.

Give your DB a Break: Caching for Speed and Availability- Learn how caching data in front of the database can allow for faster running, and more available applications. In this article, Dion Almaer looks at clustering and caching strategies, using a distributed cache, read-through/write-behind caching, and technologies that integrate nicely into a distributed caching architecture such as JDO, JMS, and JNDI.

Jameleon - An Automated Testing Tool- Jameleon is an acceptance-level automated testing tool that separates applications into features and allows those features to be tied together independently, creating test-cases. These test-cases can then be data-driven and executed against different environments. Even though it would be possible to write unit tests using Jameleon, Jameleon was designed with integration and acceptance-level testing in mind.

Simpler Java - Combating the complexity of J2EE- J2EE, EJB, and XML are complex technologies, and although there's a tradeoff between simplicity and power, people are moving away from monolithic frameworks back toward cleaner, simpler ones. In this article, Bruce Tate examines the basic principles behind a few simple yet successful frameworks and looks at how vendors are creating smarter tools to insulate developers from the complexity of J2EE.

Support for J2EE Web Services in WSAD: Client Environment- This series of articles examines the support for J2EE Web services available in Application Developer V5.1 through a number of examples, with emphasis on the new level of support. Part 1 examined support for the server environment, while this article, Part 2, examines support for the client environment.

Support for J2EE Web Services in WSAD: Server Environment- This series of articles examines the support for J2EE Web services available in Application Developer V5.1 through a number of examples, with emphasis on the new level of support. Part 1 (this article) examines support for the server environment, while Part 2 examines support for the client environment.

Strictly Struts- Are you past the Struts Basics? This month Samudra covers some of the more common problems with form based web application development.

Speeding up code documentation- It is not a secret that documentation is a crucial part of a software project. It is used throughout the project and should outlast it to allow adequate maintenance. Unfortunately, a documentation process can be time consuming and complex, becoming a burden for developers that leads to documentation which is both incomplete and unsynchronized with ongoing modifications.

Servlets and JSP Step Up- The upcoming J2EE 1.4 includes the new Servlet 2.4 and JavaServer Pages (JSP) 2.0 technologies for Web application development in Java. This article offers a look at the new features in both specifications and provides sample code for each feature where appropriate.

Page Navigation in JavaServer Faces- Any web application with more than one page needs some sort of navigation. Where does the user go when he logs in? Where does he go if his password is incorrect? JSF provides an easy-to-update page navigation model in its Application Configuration file. Budi Kurniawan explains how it works.

JSP 2.0: The New Deal, Part 1- The wait is almost over: the latest version of the JavaServer Pages (JSP) specification, JSP 2.0, is about to be released, along with all of the other J2EE 1.4 specifications. This article goes over some of the improvements to the language.

Firewall Port Assignments in WebSphere Application Server V5- WebSphere® Application Server V5 introduces a number of run time configuration changes that impact not only the proces