IBM®
Skip to main content
    United States change      Terms of use
 
 
Select a scope:    
     Home      Products      Services & industry solutions      Support & downloads      My account     
alphaWorks  >  Java technology  >  

Asynchronous IO for Java

A Java Package providing Asynchronous IO capabilities for Sockets and Files.


Date Posted: June 18, 2004
OverviewRequirements Download FAQs Forum Reviews

What is Asynchronous IO for Java?

Asynchronous IO for Java™ (AIO4J) is a package that provides the capability to perform input and output (IO) on sockets and files asynchronously -- that is, where the Java application can request the operation but can continue doing useful work while the underlying system performs the operation. The application is informed of the operation's completion later.

This package provides Java applications with capabilities that are now available from most operating systems at the "C" API layer, such as IO Completion Ports on Windows. AIO4J provides Java application programmers with access to these capabilities, but in a way that is very much in keeping with Java idioms and styles of programming.

AIO4J can be used as a replacement for classic synchronous IO and also as an alternative to the New IO package introduced in Java 1.4. AIO4J aims to give performance and scalability that is better than either of these other packages. In particular, AIO4J aims to help Java server applications address what has been called the "C10K problem": building server applications that serve 10,000 clients simultaneously with good responsiveness and performance. This is very difficult with Java synchronous IO because most systems cannot sustain 10,000 threads, and Java New IO does not perform well with such a load.

How does it work?

AIO4J provides a standard Java package of function, layered above a native library that interfaces with the underlying capabilities of the operating system.

The package provides facilities that support a range of programming styles, including Blocking, Polling and Callbacks as techniques for getting notifications of the completion of Read or Write operations.

For Callbacks, the application can control the number and the type of threads that are used.


About the technology author(s):

Mike Edwards

Mike Edwards is a strategist in the IBM Java Technologies group in Hursley, England. He is responsible for technical strategy for future IBM products, including the IBM Java SDKs, and for Web service-related products. Before working on Asynchronous IO, Dr. Edwards was involved in Java SDK 1.4.0 and was a member of the Expert Groups that defined the specifications for J2SE 1.4.0 and for the New IO package. He received his Ph.D. in Elementary Particle Physics from Birmingham University.

Tim Ellison

Tim Ellison is a senior software engineer and strategic planner in the emerging technologies team at IBM Hursley Java Technologies group. He has contributed to the implementation of Smalltalk, IBM VisualAge Micro Edition, Eclipse, and the Java SDK over a period of twenty years. He is interested in new ways of applying object technology to difficult problems.


Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Other company, product, or service names may be trademarks or service marks of others.

Download now Download now

Related technologies

For platform(s):
Java

For topics:
asynchronous, IO, performance


Related resources

Press Articles

 

    About IBM Privacy Contact